diff --git a/Mage.Client/src/main/java/mage/client/MageFrame.java b/Mage.Client/src/main/java/mage/client/MageFrame.java index 5e4e984d72..d020624dc5 100644 --- a/Mage.Client/src/main/java/mage/client/MageFrame.java +++ b/Mage.Client/src/main/java/mage/client/MageFrame.java @@ -190,10 +190,7 @@ public class MageFrame extends javax.swing.JFrame implements MageClient { initComponents(); setSize(1024, 768); SettingsManager.getInstance().setScreenWidthAndHeight(1024, 768); - DialogManager.getManager().setScreenWidth(1024); - DialogManager.getManager().setScreenHeight(768); - DialogManager.getManager().setBounds(0, 0, 1024, 768); - DialogManager.getManager().setVisible(false); + DialogManager.updateParams(768, 1024, false); this.setExtendedState(JFrame.MAXIMIZED_BOTH); session = new SessionImpl(this); diff --git a/Mage.Client/src/main/java/mage/client/components/ext/dlg/DialogManager.java b/Mage.Client/src/main/java/mage/client/components/ext/dlg/DialogManager.java index e067050676..1e47b00543 100644 --- a/Mage.Client/src/main/java/mage/client/components/ext/dlg/DialogManager.java +++ b/Mage.Client/src/main/java/mage/client/components/ext/dlg/DialogManager.java @@ -10,6 +10,8 @@ import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.awt.event.MouseMotionListener; import java.awt.event.MouseWheelEvent; +import java.util.HashMap; +import java.util.Map; import java.util.UUID; /** @@ -18,15 +20,23 @@ import java.util.UUID; public class DialogManager extends JComponent implements MouseListener, MouseMotionListener { - private static DialogManager dialogManager = null; + private static Map dialogManagers = new HashMap(); //private static final Logger log = Logger.getLogger(DialogManager.class); - public static DialogManager getManager() { - if (dialogManager == null) { - dialogManager = new DialogManager(); - dialogManager.setVisible(true); + public static DialogManager getManager(UUID gameId) { + if (!dialogManagers.containsKey(gameId)) { + synchronized (dialogManagers) { + if (!dialogManagers.containsKey(gameId)) { + DialogManager dialogManager = new DialogManager(); + dialogManager.setScreenWidth(768); + dialogManager.setScreenHeight(1024); + dialogManager.setBounds(0, 0, 768, 1024); + dialogManager.setVisible(false); + dialogManagers.put(gameId, dialogManager); + } + } } - return dialogManager; + return dialogManagers.get(gameId); } public enum MTGDialogs { @@ -59,6 +69,16 @@ public class DialogManager extends JComponent implements MouseListener, this.screen_width = screen_width; } + public static void updateParams(int width, int height, boolean isVisible) { + synchronized (dialogManagers) { + for (DialogManager dialogManager : dialogManagers.values()) { + dialogManager.setScreenWidth(width); + dialogManager.setScreenHeight(height); + dialogManager.setBounds(0, 0, width, height); + } + } + } + public void setScreenHeight(int screen_height) { this.screen_height = screen_height; } diff --git a/Mage.Client/src/main/java/mage/client/components/ext/dlg/impl/ChoiceDialog.java b/Mage.Client/src/main/java/mage/client/components/ext/dlg/impl/ChoiceDialog.java index 1e727b0f51..63fd727e69 100644 --- a/Mage.Client/src/main/java/mage/client/components/ext/dlg/impl/ChoiceDialog.java +++ b/Mage.Client/src/main/java/mage/client/components/ext/dlg/impl/ChoiceDialog.java @@ -37,6 +37,7 @@ public class ChoiceDialog extends IDialogPanel { private JButton jButtonSort = null; private CardsView cards; + private UUID gameId; private int page = 1; private int maxPages; @@ -57,6 +58,7 @@ public class ChoiceDialog extends IDialogPanel { public ChoiceDialog(DlgParams params) { super(params); this.params = params; + this.gameId = params.gameId; cards = params.getCards(); isOptional = params.isOptional(); @@ -171,7 +173,7 @@ public class ChoiceDialog extends IDialogPanel { jButtonOK.setObserver(new Command() { public void execute() { - DialogManager.getManager().fadeOut((DialogContainer) getParent()); + DialogManager.getManager(gameId).fadeOut((DialogContainer) getParent()); } }); } @@ -328,7 +330,7 @@ public class ChoiceDialog extends IDialogPanel { private static final long serialVersionUID = -567322540616089486L; public void execute() { - DialogManager.getManager().fadeOut((DialogContainer) getParent()); + DialogManager.getManager(gameId).fadeOut((DialogContainer) getParent()); /* try { ConnectionManager.sendAddChosenCard(null); diff --git a/Mage.Client/src/main/java/mage/client/components/ext/dlg/impl/StackDialog.java b/Mage.Client/src/main/java/mage/client/components/ext/dlg/impl/StackDialog.java index ab8507de5e..9a8f65f618 100644 --- a/Mage.Client/src/main/java/mage/client/components/ext/dlg/impl/StackDialog.java +++ b/Mage.Client/src/main/java/mage/client/components/ext/dlg/impl/StackDialog.java @@ -33,6 +33,8 @@ public class StackDialog extends IDialogPanel { private JLayeredPane jLayeredPane; private FeedbackPanel feedbackPanel; + + private UUID gameId; private class CustomLabel extends JLabel { @@ -57,6 +59,7 @@ public class StackDialog extends IDialogPanel { public StackDialog(DlgParams params) { super(params); this.feedbackPanel = params.feedbackPanel; + this.gameId = params.gameId; initialize(); displayStack(params.getCards(), params.gameId, params.bigCard); } @@ -145,7 +148,7 @@ public class StackDialog extends IDialogPanel { jButtonAccept.setObserver(new Command() { @Override public void execute() { - DialogManager.getManager().fadeOut((DialogContainer)getParent()); + DialogManager.getManager(gameId).fadeOut((DialogContainer)getParent()); //GameManager.getInputControl().getInput().selectButtonOK(); StackDialog.this.feedbackPanel.doClick(); } @@ -168,7 +171,7 @@ public class StackDialog extends IDialogPanel { jButtonResponse.setObserver(new Command() { @Override public void execute() { - DialogManager.getManager().fadeOut((DialogContainer)getParent()); + DialogManager.getManager(gameId).fadeOut((DialogContainer)getParent()); } private static final long serialVersionUID = 1L; }); 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 b5a6b67857..5ebd36f0e0 100644 --- a/Mage.Client/src/main/java/mage/client/game/GamePanel.java +++ b/Mage.Client/src/main/java/mage/client/game/GamePanel.java @@ -225,9 +225,9 @@ public class GamePanel extends javax.swing.JPanel { int height = pnlBattlefield.getHeight(); phasesContainer.setPreferredSize(new Dimension(X_PHASE_WIDTH, height)); - DialogManager.getManager().setScreenWidth(rect.width); - DialogManager.getManager().setScreenHeight(rect.height); - DialogManager.getManager().setBounds(0, 0, rect.width, rect.height); + DialogManager.getManager(gameId).setScreenWidth(rect.width); + DialogManager.getManager(gameId).setScreenHeight(rect.height); + DialogManager.getManager(gameId).setBounds(0, 0, rect.width, rect.height); } public synchronized void showGame(UUID gameId, UUID playerId) { @@ -597,13 +597,13 @@ public class GamePanel extends javax.swing.JPanel { public void playMana(String message, GameView gameView) { updateGame(gameView); - DialogManager.getManager().fadeOut(); + DialogManager.getManager(gameId).fadeOut(); this.feedbackPanel.getFeedback(FeedbackMode.CANCEL, message, gameView.getSpecial(), null); } public void playXMana(String message, GameView gameView) { updateGame(gameView); - DialogManager.getManager().fadeOut(); + DialogManager.getManager(gameId).fadeOut(); this.feedbackPanel.getFeedback(FeedbackMode.CONFIRM, message, gameView.getSpecial(), null); } @@ -612,7 +612,7 @@ public class GamePanel extends javax.swing.JPanel { } public void pickAbility(AbilityPickerView choices) { - DialogManager.getManager().fadeOut(); + DialogManager.getManager(gameId).fadeOut(); this.abilityPicker.show(choices, MageFrame.getDesktop().getMousePosition()); } @@ -1143,7 +1143,7 @@ public class GamePanel extends javax.swing.JPanel { public void installComponents() { jLayeredPane.setOpaque(false); jLayeredPane.add(abilityPicker); - jLayeredPane.add(DialogManager.getManager(), JLayeredPane.MODAL_LAYER, 0); + jLayeredPane.add(DialogManager.getManager(gameId), JLayeredPane.MODAL_LAYER, 0); abilityPicker.setVisible(false); } diff --git a/Mage.Client/src/main/java/mage/client/game/PlayerPanelExt.java b/Mage.Client/src/main/java/mage/client/game/PlayerPanelExt.java index 6fff40b735..3414b1ac56 100644 --- a/Mage.Client/src/main/java/mage/client/game/PlayerPanelExt.java +++ b/Mage.Client/src/main/java/mage/client/game/PlayerPanelExt.java @@ -42,7 +42,6 @@ import mage.client.cards.BigCard; import mage.client.components.HoverButton; import mage.client.components.MageRoundPane; import mage.client.components.ext.dlg.DialogManager; -import mage.client.dialog.ShowCardsDialog; import mage.client.plugins.adapters.MageActionCallback; import mage.client.plugins.impl.Plugins; import mage.client.util.CardsViewUtil; @@ -82,7 +81,7 @@ public class PlayerPanelExt extends javax.swing.JPanel { private Session session; private PlayerView player; - private ShowCardsDialog graveyard; + //private ShowCardsDialog graveyard; private BigCard bigCard; private static final int AVATAR_COUNT = 77; @@ -512,11 +511,11 @@ public class PlayerPanelExt extends javax.swing.JPanel { } private void btnGraveActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnGraveActionPerformed - if (graveyard == null) { + /*if (graveyard == null) { graveyard = new ShowCardsDialog(); - } + }*/ //graveyard.loadCards(player.getName() + " graveyard", player.getGraveyard(), bigCard, Config.dimensions, gameId, false); - DialogManager.getManager().showChoiceDialog(CardsViewUtil.convertSimple(player.getGraveyard()), bigCard, gameId); + DialogManager.getManager(gameId).showChoiceDialog(CardsViewUtil.convertSimple(player.getGraveyard()), bigCard, gameId); } private void btnCheatActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnCheatActionPerformed