diff --git a/Mage.Client/src/main/java/mage/client/dialog/ShowCardsDialog.java b/Mage.Client/src/main/java/mage/client/dialog/ShowCardsDialog.java index b240b3addec..37232816418 100644 --- a/Mage.Client/src/main/java/mage/client/dialog/ShowCardsDialog.java +++ b/Mage.Client/src/main/java/mage/client/dialog/ShowCardsDialog.java @@ -34,20 +34,22 @@ package mage.client.dialog; -import java.awt.Dimension; -import java.awt.Rectangle; +import java.awt.*; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.util.UUID; -import javax.swing.JLayeredPane; +import javax.swing.*; +import com.sun.deploy.panel.ITreeNode; import mage.cards.CardDimensions; import mage.cards.MageCard; import mage.client.MageFrame; import mage.client.cards.BigCard; import mage.client.plugins.impl.Plugins; import mage.client.util.Config; +import mage.client.util.SettingsManager; +import mage.client.util.gui.GuiDisplayUtil; import mage.view.AbilityView; import mage.view.CardView; import mage.view.CardsView; @@ -79,10 +81,24 @@ public class ShowCardsDialog extends MageDialog implements MouseListener { MageFrame.getDesktop().add(this, JLayeredPane.POPUP_LAYER); } pack(); + this.revalidate(); this.repaint(); this.setModal(modal); - this.setVisible(true); + + SwingUtilities.invokeLater(new Runnable() { + @Override + public void run() { + int width = ShowCardsDialog.this.getWidth(); + int height = ShowCardsDialog.this.getWidth(); + if (width > 0 && height > 0) { + Point centered = SettingsManager.getInstance().getComponentPosition(width, height); + ShowCardsDialog.this.setLocation(centered.x, centered.y); + GuiDisplayUtil.keepComponentInsideScreen(centered.x, centered.y, ShowCardsDialog.this); + } + ShowCardsDialog.this.setVisible(true); + } + }); } private void loadCardsFew(CardsView showCards, BigCard bigCard, UUID gameId) { diff --git a/Mage.Client/src/main/java/mage/client/game/FeedbackPanel.java b/Mage.Client/src/main/java/mage/client/game/FeedbackPanel.java index a38522ae3df..0ef0f6c0b41 100644 --- a/Mage.Client/src/main/java/mage/client/game/FeedbackPanel.java +++ b/Mage.Client/src/main/java/mage/client/game/FeedbackPanel.java @@ -46,6 +46,7 @@ import javax.swing.*; import mage.client.MageFrame; import mage.client.components.MageTextArea; import mage.client.components.arcane.GlowText; +import mage.client.dialog.MageDialog; import mage.remote.Session; import org.apache.log4j.Logger; @@ -66,12 +67,13 @@ public class FeedbackPanel extends javax.swing.JPanel { private UUID gameId; private Session session; private FeedbackMode mode; + private MageDialog connectedDialog; - /** Creates new form FeedbackPanel */ - public FeedbackPanel() { - //initComponents(); - customInitComponents(); - } + /** Creates new form FeedbackPanel */ + public FeedbackPanel() { + //initComponents(); + customInitComponents(); + } public void init(UUID gameId) { this.gameId = gameId; @@ -143,6 +145,9 @@ public class FeedbackPanel extends javax.swing.JPanel { this.btnRight.setText((String)options.get("UI.right.btn.text")); this.helper.setRight((String)options.get("UI.right.btn.text"), true); } + if (options.containsKey("dialog")) { + connectedDialog = (MageDialog) options.get("dialog"); + } } } @@ -342,10 +347,14 @@ public class FeedbackPanel extends javax.swing.JPanel { private void btnRightActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnRightActionPerformed this.selected = true; clear0(); - if (mode == FeedbackMode.SELECT && (evt.getModifiers() & ActionEvent.CTRL_MASK) == ActionEvent.CTRL_MASK) + if (connectedDialog != null) { + connectedDialog.hideDialog(); + } + if (mode == FeedbackMode.SELECT && (evt.getModifiers() & ActionEvent.CTRL_MASK) == ActionEvent.CTRL_MASK) { session.sendPlayerInteger(gameId, 0); - else + } else { session.sendPlayerBoolean(gameId, false); + } }//GEN-LAST:event_btnRightActionPerformed private void btnLeftActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnLeftActionPerformed diff --git a/Mage.Client/src/main/java/mage/client/game/GamePanel.java b/Mage.Client/src/main/java/mage/client/game/GamePanel.java index 5afd2b13a7c..268e9e932ca 100644 --- a/Mage.Client/src/main/java/mage/client/game/GamePanel.java +++ b/Mage.Client/src/main/java/mage/client/game/GamePanel.java @@ -448,10 +448,13 @@ public class GamePanel extends javax.swing.JPanel { public void pickTarget(String message, CardsView cardView, GameView gameView, Set targets, boolean required, Map options) { updateGame(gameView); - this.feedbackPanel.getFeedback(required?FeedbackMode.INFORM:FeedbackMode.CANCEL, message, false, gameView.getSpecial(), options); + Map options0 = options == null ? new HashMap() : options; if (cardView != null && cardView.size() > 0) { - showCards(message, cardView, required); + ShowCardsDialog dialog = showCards(message, cardView, required); + options0.put("dialog", dialog); } + this.feedbackPanel.getFeedback(required?FeedbackMode.INFORM:FeedbackMode.CANCEL, message, false, gameView.getSpecial(), options0); + } public void inform(String information, GameView gameView) { @@ -502,9 +505,10 @@ public class GamePanel extends javax.swing.JPanel { // showCards.loadCards(name, cards, bigCard, Config.dimensions, gameId, false); // } // - private void showCards(String title, CardsView cards, boolean required) { + private ShowCardsDialog showCards(String title, CardsView cards, boolean required) { ShowCardsDialog showCards = new ShowCardsDialog(); showCards.loadCards(title, cards, bigCard, Config.dimensions, gameId, required); + return showCards; } public void getAmount(int min, int max, String message) {