diff --git a/Mage.Client/pom.xml b/Mage.Client/pom.xml
index 07a946e2d38..5297f3b8ab9 100644
--- a/Mage.Client/pom.xml
+++ b/Mage.Client/pom.xml
@@ -38,7 +38,7 @@
log4j
log4j
- 1.2.9
+ 1.2.14
com.mortennobel
diff --git a/Mage.Client/src/main/java/mage/client/MageFrame.java b/Mage.Client/src/main/java/mage/client/MageFrame.java
index 83a272131c8..4ea04ce9577 100644
--- a/Mage.Client/src/main/java/mage/client/MageFrame.java
+++ b/Mage.Client/src/main/java/mage/client/MageFrame.java
@@ -110,6 +110,7 @@ public class MageFrame extends javax.swing.JFrame implements Client {
private Rectangle titleRectangle;
private final static MageVersion version = new MageVersion(0, 7, 3);
private UUID clientId;
+ private static MagePane activeFrame;
private static Map chats = new HashMap();
private static Map games = new HashMap();
@@ -368,21 +369,15 @@ public class MageFrame extends javax.swing.JFrame implements Client {
MagePaneMenuItem menuItem;
for (int i = 0; i < windows.length; i++) {
- JInternalFrame window = windows[i];
+ MagePane window = (MagePane) windows[i];
if (window.isVisible()) {
menuItem = new MagePaneMenuItem(window);
menuItem.setState(i == 0);
menuItem.addActionListener(new ActionListener() {
+ @Override
public void actionPerformed(ActionEvent ae) {
- JInternalFrame frame = ((MagePaneMenuItem) ae.getSource()).getFrame();
- frame.toFront();
- frame.setVisible(true);
- //frame.moveToFront();
- try {
- frame.setSelected(true);
- } catch (PropertyVetoException e) {
- e.printStackTrace();
- }
+ MagePane frame = ((MagePaneMenuItem) ae.getSource()).getFrame();
+ setActive(frame);
}
});
menuItem.setIcon(window.getFrameIcon());
@@ -418,69 +413,96 @@ public class MageFrame extends javax.swing.JFrame implements Client {
}
}
+ public static void setActive(MagePane frame) {
+ if (frame == null)
+ return;
+ logger.debug("Setting " + frame.getTitle() + " active");
+ if (activeFrame != null)
+ activeFrame.deactivated();
+ activeFrame = frame;
+ activeFrame.toFront();
+ try {
+ activeFrame.setSelected(true);
+ } catch (PropertyVetoException ex) {}
+ activeFrame.activated();
+ }
+
+ public static void deactivate(MagePane frame) {
+ frame.setVisible(false);
+ MagePane topmost = getTopMost(frame);
+ if (activeFrame != frame)
+ frame.deactivated();
+ setActive(topmost);
+ }
+
+ private static MagePane getTopMost(MagePane exclude) {
+ MagePane topmost = null;
+ int best = Integer.MAX_VALUE;
+ for (JInternalFrame frame: desktopPane.getAllFramesInLayer(JLayeredPane.DEFAULT_LAYER)) {
+ if (frame.isVisible()) {
+ int z = desktopPane.getComponentZOrder(frame);
+ if (z < best) {
+ best = z;
+ topmost = (MagePane) frame;
+ }
+ }
+ }
+ return topmost;
+ }
+
public void showGame(UUID gameId, UUID playerId) {
try {
GamePane gamePane = new GamePane();
- desktopPane.add(gamePane, javax.swing.JLayeredPane.DEFAULT_LAYER);
+ desktopPane.add(gamePane, JLayeredPane.DEFAULT_LAYER);
gamePane.setMaximum(true);
gamePane.setVisible(true);
- gamePane.toFront();
gamePane.showGame(gameId, playerId);
- } catch (PropertyVetoException ex) {
- logger.fatal(null, ex);
- }
+ setActive(gamePane);
+ } catch (PropertyVetoException ex) {}
}
public void watchGame(UUID gameId) {
try {
GamePane gamePane = new GamePane();
- desktopPane.add(gamePane, javax.swing.JLayeredPane.DEFAULT_LAYER);
+ desktopPane.add(gamePane, JLayeredPane.DEFAULT_LAYER);
gamePane.setMaximum(true);
gamePane.setVisible(true);
- gamePane.toFront();
gamePane.watchGame(gameId);
- } catch (PropertyVetoException ex) {
- logger.fatal(null, ex);
- }
+ setActive(gamePane);
+ } catch (PropertyVetoException ex) {}
}
public void replayGame(UUID gameId) {
try {
GamePane gamePane = new GamePane();
- desktopPane.add(gamePane, javax.swing.JLayeredPane.DEFAULT_LAYER);
+ desktopPane.add(gamePane, JLayeredPane.DEFAULT_LAYER);
gamePane.setMaximum(true);
gamePane.setVisible(true);
- gamePane.toFront();
gamePane.replayGame(gameId);
- } catch (PropertyVetoException ex) {
- logger.fatal(null, ex);
- }
+ setActive(gamePane);
+ } catch (PropertyVetoException ex) {}
}
public void showDraft(UUID draftId) {
try {
DraftPane draftPane = new DraftPane();
- desktopPane.add(draftPane, javax.swing.JLayeredPane.DEFAULT_LAYER);
+ desktopPane.add(draftPane, JLayeredPane.DEFAULT_LAYER);
draftPane.setMaximum(true);
draftPane.setVisible(true);
- draftPane.toFront();
draftPane.showDraft(draftId);
- } catch (PropertyVetoException ex) {
- logger.fatal(null, ex);
- }
+ setActive(draftPane);
+ } catch (PropertyVetoException ex) {}
}
public void showTournament(UUID tournamentId) {
try {
TournamentPane tournamentPane = new TournamentPane();
- desktopPane.add(tournamentPane, javax.swing.JLayeredPane.DEFAULT_LAYER);
+ desktopPane.add(tournamentPane, JLayeredPane.DEFAULT_LAYER);
tournamentPane.setMaximum(true);
tournamentPane.setVisible(true);
- tournamentPane.toFront();
tournamentPane.showTournament(tournamentId);
- } catch (PropertyVetoException ex) {
- logger.fatal(null, ex);
- }
+ setActive(tournamentPane);
+ } catch (PropertyVetoException ex) {}
}
public static boolean connect(Connection connection) {
@@ -722,8 +744,8 @@ public class MageFrame extends javax.swing.JFrame implements Client {
private void btnGamesActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnGamesActionPerformed
this.tablesPane.setVisible(true);
- this.tablesPane.toFront();
this.tablesPane.showTables();
+ setActive(tablesPane);
}//GEN-LAST:event_btnGamesActionPerformed
private void btnExitActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnExitActionPerformed
@@ -743,7 +765,7 @@ public class MageFrame extends javax.swing.JFrame implements Client {
private void btnAboutActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnAboutActionPerformed
AboutDialog aboutDialog = new AboutDialog();
- desktopPane.add(aboutDialog);
+ desktopPane.add(aboutDialog, JLayeredPane.POPUP_LAYER);
aboutDialog.showDialog(version);
}//GEN-LAST:event_btnAboutActionPerformed
@@ -773,7 +795,7 @@ public class MageFrame extends javax.swing.JFrame implements Client {
}
public void hideGames() {
- JInternalFrame[] windows = desktopPane.getAllFramesInLayer(javax.swing.JLayeredPane.DEFAULT_LAYER);
+ JInternalFrame[] windows = desktopPane.getAllFramesInLayer(JLayeredPane.DEFAULT_LAYER);
for (JInternalFrame window: windows) {
if (window instanceof GamePane) {
GamePane gamePane = (GamePane) window;
@@ -785,11 +807,11 @@ public class MageFrame extends javax.swing.JFrame implements Client {
public void showDeckEditor(DeckEditorMode mode, Deck deck, UUID tableId, int time) {
try {
DeckEditorPane deckEditorPane = new DeckEditorPane();
- desktopPane.add(deckEditorPane, javax.swing.JLayeredPane.DEFAULT_LAYER);
+ desktopPane.add(deckEditorPane, JLayeredPane.DEFAULT_LAYER);
deckEditorPane.setMaximum(true);
deckEditorPane.setVisible(true);
- deckEditorPane.toFront();
deckEditorPane.show(mode, deck, tableId, time);
+ setActive(deckEditorPane);
} catch (PropertyVetoException ex) {
logger.fatal(null, ex);
}
@@ -797,7 +819,7 @@ public class MageFrame extends javax.swing.JFrame implements Client {
public void showCollectionViewer() {
this.collectionViewerPane.setVisible(true);
- this.collectionViewerPane.toFront();
+ setActive(collectionViewerPane);
}
static void renderSplashFrame(Graphics2D g) {
@@ -932,14 +954,14 @@ public class MageFrame extends javax.swing.JFrame implements Client {
}
class MagePaneMenuItem extends JCheckBoxMenuItem {
- private JInternalFrame frame;
+ private MagePane frame;
- public MagePaneMenuItem(JInternalFrame frame) {
+ public MagePaneMenuItem(MagePane frame) {
super(frame.getTitle());
this.frame = frame;
}
- public JInternalFrame getFrame() {
+ public MagePane getFrame() {
return frame;
}
}
\ No newline at end of file
diff --git a/Mage.Client/src/main/java/mage/client/MagePane.java b/Mage.Client/src/main/java/mage/client/MagePane.java
index 29fd9d2657e..4a672d33a9f 100644
--- a/Mage.Client/src/main/java/mage/client/MagePane.java
+++ b/Mage.Client/src/main/java/mage/client/MagePane.java
@@ -34,19 +34,16 @@
package mage.client;
-import java.beans.PropertyVetoException;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-import javax.swing.JLayeredPane;
-import javax.swing.event.InternalFrameEvent;
-import javax.swing.event.InternalFrameListener;
import javax.swing.plaf.basic.BasicInternalFrameUI;
+import org.apache.log4j.Logger;
/**
*
* @author BetaSteward_at_googlemail.com
*/
-public class MagePane extends javax.swing.JInternalFrame implements InternalFrameListener {
+public abstract class MagePane extends javax.swing.JInternalFrame {
+
+ private final static Logger logger = Logger.getLogger(MagePane.class);
/** Creates new form MagePane */
public MagePane() {
@@ -65,6 +62,17 @@ public class MagePane extends javax.swing.JInternalFrame implements InternalFram
hideTitle();
}
+ public void hideFrame() {
+ MageFrame.deactivate(this);
+ }
+
+ public void activated() {
+
+ }
+
+ public void deactivated() {
+
+ }
/** This method is called from within the constructor to
* initialize the form.
@@ -95,36 +103,4 @@ public class MagePane extends javax.swing.JInternalFrame implements InternalFram
// Variables declaration - do not modify//GEN-BEGIN:variables
// End of variables declaration//GEN-END:variables
- @Override
- public void internalFrameOpened(InternalFrameEvent e) {
- }
-
- @Override
- public void internalFrameClosing(InternalFrameEvent e) {
- }
-
- @Override
- public void internalFrameClosed(InternalFrameEvent e) {
- try {
- MageFrame.getDesktop().getAllFramesInLayer(JLayeredPane.DEFAULT_LAYER)[0].setSelected(true);
- } catch (PropertyVetoException ex) {
- }
- }
-
- @Override
- public void internalFrameIconified(InternalFrameEvent e) {
- }
-
- @Override
- public void internalFrameDeiconified(InternalFrameEvent e) {
- }
-
- @Override
- public void internalFrameActivated(InternalFrameEvent e) {
- }
-
- @Override
- public void internalFrameDeactivated(InternalFrameEvent e) {
- }
-
}
diff --git a/Mage.Client/src/main/java/mage/client/deckeditor/DeckEditorPanel.java b/Mage.Client/src/main/java/mage/client/deckeditor/DeckEditorPanel.java
index 5fe5657feb8..c46ad00828f 100644
--- a/Mage.Client/src/main/java/mage/client/deckeditor/DeckEditorPanel.java
+++ b/Mage.Client/src/main/java/mage/client/deckeditor/DeckEditorPanel.java
@@ -266,7 +266,7 @@ public class DeckEditorPanel extends javax.swing.JPanel {
c = c.getParent();
}
if (c != null)
- c.setVisible(false);
+ ((DeckEditorPane)c).hideFrame();
}
private BigCard getBigCard() {
diff --git a/Mage.Client/src/main/java/mage/client/dialog/AboutDialog.form b/Mage.Client/src/main/java/mage/client/dialog/AboutDialog.form
index 68504fc0ae2..a1925f9b74c 100644
--- a/Mage.Client/src/main/java/mage/client/dialog/AboutDialog.form
+++ b/Mage.Client/src/main/java/mage/client/dialog/AboutDialog.form
@@ -49,7 +49,7 @@
-
+
diff --git a/Mage.Client/src/main/java/mage/client/dialog/AboutDialog.java b/Mage.Client/src/main/java/mage/client/dialog/AboutDialog.java
index 1c3fc33f2ad..cb67915e879 100644
--- a/Mage.Client/src/main/java/mage/client/dialog/AboutDialog.java
+++ b/Mage.Client/src/main/java/mage/client/dialog/AboutDialog.java
@@ -34,7 +34,6 @@
package mage.client.dialog;
-import mage.client.MageFrame;
import mage.utils.MageVersion;
/**
@@ -123,7 +122,7 @@ public class AboutDialog extends MageDialog {
}// //GEN-END:initComponents
private void btnOkActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnOkActionPerformed
- this.setVisible(false);
+ this.hideDialog();
}//GEN-LAST:event_btnOkActionPerformed
// Variables declaration - do not modify//GEN-BEGIN:variables
diff --git a/Mage.Client/src/main/java/mage/client/dialog/AddLandDialog.java b/Mage.Client/src/main/java/mage/client/dialog/AddLandDialog.java
index 0adeaa7b189..6763ec60044 100644
--- a/Mage.Client/src/main/java/mage/client/dialog/AddLandDialog.java
+++ b/Mage.Client/src/main/java/mage/client/dialog/AddLandDialog.java
@@ -189,7 +189,7 @@ public class AddLandDialog extends MageDialog {
}// //GEN-END:initComponents
private void btnCancelActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnCancelActionPerformed
- this.setVisible(false);
+ this.hideDialog();
}//GEN-LAST:event_btnCancelActionPerformed
private void btnAddActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnAddActionPerformed
@@ -213,7 +213,7 @@ public class AddLandDialog extends MageDialog {
for (int i = 0; i < nSwamp; i++) {
deck.getCards().add(Sets.findCard("Swamp", true));
}
- this.setVisible(false);
+ this.hideDialog();
}//GEN-LAST:event_btnAddActionPerformed
diff --git a/Mage.Client/src/main/java/mage/client/dialog/CombatDialog.java b/Mage.Client/src/main/java/mage/client/dialog/CombatDialog.java
index b4fa56dbb5b..46380de5c02 100644
--- a/Mage.Client/src/main/java/mage/client/dialog/CombatDialog.java
+++ b/Mage.Client/src/main/java/mage/client/dialog/CombatDialog.java
@@ -111,10 +111,11 @@ public class CombatDialog extends MageDialog {
}
}
+ @Override
public void hideDialog() {
this.lastX = this.getX();
this.lastY = this.getY();
- this.setVisible(false);
+ super.hideDialog();
}
/** This method is called from within the constructor to
diff --git a/Mage.Client/src/main/java/mage/client/dialog/ConnectDialog.form b/Mage.Client/src/main/java/mage/client/dialog/ConnectDialog.form
index 79454f5ef1a..032fa5bda80 100644
--- a/Mage.Client/src/main/java/mage/client/dialog/ConnectDialog.form
+++ b/Mage.Client/src/main/java/mage/client/dialog/ConnectDialog.form
@@ -204,7 +204,7 @@
-
+
diff --git a/Mage.Client/src/main/java/mage/client/dialog/ConnectDialog.java b/Mage.Client/src/main/java/mage/client/dialog/ConnectDialog.java
index 65e21509d04..98287f80b40 100644
--- a/Mage.Client/src/main/java/mage/client/dialog/ConnectDialog.java
+++ b/Mage.Client/src/main/java/mage/client/dialog/ConnectDialog.java
@@ -41,6 +41,8 @@ import java.net.URL;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
+import java.util.concurrent.CancellationException;
+import java.util.concurrent.ExecutionException;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JOptionPane;
@@ -383,7 +385,7 @@ public class ConnectDialog extends MageDialog {
if (task != null && !task.isDone())
task.cancel(true);
else
- this.setVisible(false);
+ this.hideDialog();
}//GEN-LAST:event_btnCancelActionPerformed
private void btnConnectActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnConnectActionPerformed
@@ -443,22 +445,28 @@ public class ConnectDialog extends MageDialog {
@Override
protected void done() {
- setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
- btnConnect.setEnabled(true);
- if (result) {
- lblStatus.setText("");
- connected();
- }
- else {
- lblStatus.setText("Could not connect");
- }
+ try {
+ get();
+ setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
+ btnConnect.setEnabled(true);
+ if (result) {
+ lblStatus.setText("");
+ connected();
+ }
+ else {
+ lblStatus.setText("Could not connect");
+ }
+ } catch (InterruptedException ex) {
+ logger.fatal("Update Players Task error", ex);
+ } catch (ExecutionException ex) {
+ logger.fatal("Update Players Task error", ex);
+ } catch (CancellationException ex) {}
}
-
}
private void connected() {
this.saveSettings();
- this.setVisible(false);
+ this.hideDialog();
}
diff --git a/Mage.Client/src/main/java/mage/client/dialog/ExileZoneDialog.java b/Mage.Client/src/main/java/mage/client/dialog/ExileZoneDialog.java
index 9200625990b..3bc0dcc54f0 100644
--- a/Mage.Client/src/main/java/mage/client/dialog/ExileZoneDialog.java
+++ b/Mage.Client/src/main/java/mage/client/dialog/ExileZoneDialog.java
@@ -69,7 +69,7 @@ public class ExileZoneDialog extends MageDialog {
}
}
else {
- hide();
+ this.hideDialog();
}
}
diff --git a/Mage.Client/src/main/java/mage/client/dialog/JoinTableDialog.java b/Mage.Client/src/main/java/mage/client/dialog/JoinTableDialog.java
index cc9a2fbb582..9837fbd4d26 100644
--- a/Mage.Client/src/main/java/mage/client/dialog/JoinTableDialog.java
+++ b/Mage.Client/src/main/java/mage/client/dialog/JoinTableDialog.java
@@ -130,7 +130,7 @@ public class JoinTableDialog extends MageDialog {
private void btnCancelActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnCancelActionPerformed
this.joined = false;
- this.setVisible(false);
+ this.hideDialog();
}//GEN-LAST:event_btnCancelActionPerformed
private void btnOKActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnOKActionPerformed
@@ -140,7 +140,7 @@ public class JoinTableDialog extends MageDialog {
} catch (Exception ex) {
handleError(ex);
}
- this.setVisible(false);
+ this.hideDialog();
}//GEN-LAST:event_btnOKActionPerformed
/**
diff --git a/Mage.Client/src/main/java/mage/client/dialog/MageDialog.form b/Mage.Client/src/main/java/mage/client/dialog/MageDialog.form
index 3330abd8752..5c101bde938 100644
--- a/Mage.Client/src/main/java/mage/client/dialog/MageDialog.form
+++ b/Mage.Client/src/main/java/mage/client/dialog/MageDialog.form
@@ -24,7 +24,7 @@
-
+
diff --git a/Mage.Client/src/main/java/mage/client/dialog/MageDialog.java b/Mage.Client/src/main/java/mage/client/dialog/MageDialog.java
index f9ea56e5c3b..5b8e3ee493e 100644
--- a/Mage.Client/src/main/java/mage/client/dialog/MageDialog.java
+++ b/Mage.Client/src/main/java/mage/client/dialog/MageDialog.java
@@ -73,7 +73,8 @@ public class MageDialog extends javax.swing.JInternalFrame {
@Override
public void setVisible(boolean value) {
super.setVisible(value);
- this.toFront();
+ if (value)
+ this.toFront();
if (modal) {
this.setClosable(false);
if (value) {
@@ -151,6 +152,10 @@ public class MageDialog extends javax.swing.JInternalFrame {
return this.modal;
}
+ public void hideDialog() {
+ this.setVisible(false);
+ }
+
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
diff --git a/Mage.Client/src/main/java/mage/client/dialog/NewTableDialog.java b/Mage.Client/src/main/java/mage/client/dialog/NewTableDialog.java
index 34e8a773ae6..4ecc346a460 100644
--- a/Mage.Client/src/main/java/mage/client/dialog/NewTableDialog.java
+++ b/Mage.Client/src/main/java/mage/client/dialog/NewTableDialog.java
@@ -301,7 +301,7 @@ public class NewTableDialog extends MageDialog {
private void btnCancelActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnCancelActionPerformed
this.table = null;
this.playerId = null;
- this.setVisible(false);
+ this.hideDialog();
}//GEN-LAST:event_btnCancelActionPerformed
private void btnOKActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnOKActionPerformed
@@ -332,7 +332,7 @@ public class NewTableDialog extends MageDialog {
}
}
}
- this.setVisible(false);
+ this.hideDialog();
return;
}
} catch (FileNotFoundException ex) {
@@ -421,7 +421,7 @@ public class NewTableDialog extends MageDialog {
this.setModal(true);
setGameOptions();
this.setLocation(150, 100);
- this.setVisible(true);
+ this.setVisible(true);
}
public TableView getTable() {
diff --git a/Mage.Client/src/main/java/mage/client/dialog/NewTournamentDialog.java b/Mage.Client/src/main/java/mage/client/dialog/NewTournamentDialog.java
index 322260b5fe5..fa9e930424b 100644
--- a/Mage.Client/src/main/java/mage/client/dialog/NewTournamentDialog.java
+++ b/Mage.Client/src/main/java/mage/client/dialog/NewTournamentDialog.java
@@ -322,7 +322,7 @@ public class NewTournamentDialog extends MageDialog {
}
}
}
- this.setVisible(false);
+ this.hideDialog();
return;
}
JOptionPane.showMessageDialog(MageFrame.getDesktop(), "Error joining tournament.", "Error", JOptionPane.ERROR_MESSAGE);
@@ -333,7 +333,7 @@ public class NewTournamentDialog extends MageDialog {
private void btnCancelActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnCancelActionPerformed
this.table = null;
this.playerId = null;
- this.setVisible(false);
+ this.hideDialog();
}//GEN-LAST:event_btnCancelActionPerformed
private void spnNumPlayersStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_spnNumPlayersStateChanged
diff --git a/Mage.Client/src/main/java/mage/client/dialog/PickChoiceDialog.java b/Mage.Client/src/main/java/mage/client/dialog/PickChoiceDialog.java
index 2c9acfd4b48..73d47275bc2 100644
--- a/Mage.Client/src/main/java/mage/client/dialog/PickChoiceDialog.java
+++ b/Mage.Client/src/main/java/mage/client/dialog/PickChoiceDialog.java
@@ -132,11 +132,11 @@ public class PickChoiceDialog extends MageDialog {
}// //GEN-END:initComponents
private void btnOkActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnOkActionPerformed
- this.setVisible(false);
+ this.hideDialog();
}//GEN-LAST:event_btnOkActionPerformed
private void btnCancelActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnCancelActionPerformed
- this.setVisible(false);
+ this.hideDialog();
}//GEN-LAST:event_btnCancelActionPerformed
// Variables declaration - do not modify//GEN-BEGIN:variables
diff --git a/Mage.Client/src/main/java/mage/client/dialog/PickNumberDialog.java b/Mage.Client/src/main/java/mage/client/dialog/PickNumberDialog.java
index cd9cd977f17..a93909ecff4 100644
--- a/Mage.Client/src/main/java/mage/client/dialog/PickNumberDialog.java
+++ b/Mage.Client/src/main/java/mage/client/dialog/PickNumberDialog.java
@@ -145,12 +145,12 @@ public class PickNumberDialog extends MageDialog {
private void btnOkActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnOkActionPerformed
this.cancel = false;
- this.setVisible(false);
+ this.hideDialog();
}//GEN-LAST:event_btnOkActionPerformed
private void btnCancelActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnCancelActionPerformed
this.cancel = true;
- this.setVisible(false);
+ this.hideDialog();
}//GEN-LAST:event_btnCancelActionPerformed
// Variables declaration - do not modify//GEN-BEGIN:variables
diff --git a/Mage.Client/src/main/java/mage/client/dialog/QuestionDialog.java b/Mage.Client/src/main/java/mage/client/dialog/QuestionDialog.java
index 89e080ab10d..7dc9836337b 100644
--- a/Mage.Client/src/main/java/mage/client/dialog/QuestionDialog.java
+++ b/Mage.Client/src/main/java/mage/client/dialog/QuestionDialog.java
@@ -119,12 +119,12 @@ public class QuestionDialog extends MageDialog {
private void btnYesActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnYesActionPerformed
this.answer = true;
- this.setVisible(false);
+ this.hideDialog();
}//GEN-LAST:event_btnYesActionPerformed
private void btnNoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnNoActionPerformed
this.answer = false;
- this.setVisible(false);
+ this.hideDialog();
}//GEN-LAST:event_btnNoActionPerformed
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 6b0c80bf476..ae65cbceff0 100644
--- a/Mage.Client/src/main/java/mage/client/dialog/ShowCardsDialog.java
+++ b/Mage.Client/src/main/java/mage/client/dialog/ShowCardsDialog.java
@@ -172,24 +172,19 @@ public class ShowCardsDialog extends MageDialog implements MouseListener {
@Override
public void mouseClicked(MouseEvent e) {
- this.setVisible(false);
+ this.hideDialog();
}
- public void mousePressed(MouseEvent e) {
-
- }
+ @Override
+ public void mousePressed(MouseEvent e) {}
- public void mouseReleased(MouseEvent e) {
-
- }
+ @Override
+ public void mouseReleased(MouseEvent e) {}
- public void mouseEntered(MouseEvent e) {
-
- }
-
- public void mouseExited(MouseEvent e) {
-
- }
+ @Override
+ public void mouseEntered(MouseEvent e) {}
+ @Override
+ public void mouseExited(MouseEvent e) {}
}
diff --git a/Mage.Client/src/main/java/mage/client/dialog/TableWaitingDialog.java b/Mage.Client/src/main/java/mage/client/dialog/TableWaitingDialog.java
index 9cc9e6b3824..2e9a084e31f 100644
--- a/Mage.Client/src/main/java/mage/client/dialog/TableWaitingDialog.java
+++ b/Mage.Client/src/main/java/mage/client/dialog/TableWaitingDialog.java
@@ -37,6 +37,8 @@ package mage.client.dialog;
import mage.client.*;
import java.util.List;
import java.util.UUID;
+import java.util.concurrent.CancellationException;
+import java.util.concurrent.ExecutionException;
import javax.swing.SwingWorker;
import javax.swing.table.AbstractTableModel;
import mage.client.components.MageComponents;
@@ -134,7 +136,7 @@ public class TableWaitingDialog extends MageDialog {
public void closeDialog() {
if (updateTask != null) updateTask.cancel(true);
this.chatPanel.disconnect();
- setVisible(false);
+ this.hideDialog();
}
@@ -379,4 +381,15 @@ class UpdateSeatsTask extends SwingWorker {
dialog.update(view.get(0));
}
+ @Override
+ protected void done() {
+ try {
+ get();
+ } catch (InterruptedException ex) {
+ logger.fatal("Update Seats Task error", ex);
+ } catch (ExecutionException ex) {
+ logger.fatal("Update Seats Task error", ex);
+ } catch (CancellationException ex) {}
+ }
+
}
\ No newline at end of file
diff --git a/Mage.Client/src/main/java/mage/client/draft/DraftPanel.java b/Mage.Client/src/main/java/mage/client/draft/DraftPanel.java
index b15ebc471f4..ee4351dc6a6 100644
--- a/Mage.Client/src/main/java/mage/client/draft/DraftPanel.java
+++ b/Mage.Client/src/main/java/mage/client/draft/DraftPanel.java
@@ -133,8 +133,9 @@ public class DraftPanel extends javax.swing.JPanel {
while (c != null && !(c instanceof DraftPane)) {
c = c.getParent();
}
- if (c != null)
- c.setVisible(false);
+ if (c != null) {
+ ((DraftPane)c).hideFrame();
+ }
}
protected void setMessage(String message) {
diff --git a/Mage.Client/src/main/java/mage/client/game/GamePane.java b/Mage.Client/src/main/java/mage/client/game/GamePane.java
index 457726c3b8c..7708f68e180 100644
--- a/Mage.Client/src/main/java/mage/client/game/GamePane.java
+++ b/Mage.Client/src/main/java/mage/client/game/GamePane.java
@@ -36,8 +36,6 @@ package mage.client.game;
import mage.client.*;
import java.util.UUID;
-import javax.swing.event.InternalFrameEvent;
-import javax.swing.event.InternalFrameListener;
/**
*
@@ -48,39 +46,11 @@ public class GamePane extends MagePane {
/** Creates new form GamePane */
public GamePane() {
initComponents();
- addInternalFrameListener(new InternalFrameListener()
- {
-
- @Override
- public void internalFrameOpened(InternalFrameEvent e) { }
-
- @Override
- public void internalFrameClosing(InternalFrameEvent e) {
- gamePanel.cleanUp();
- }
-
- @Override
- public void internalFrameClosed(InternalFrameEvent e) { }
-
- @Override
- public void internalFrameIconified(InternalFrameEvent e) { }
-
- @Override
- public void internalFrameDeiconified(InternalFrameEvent e) { }
-
- @Override
- public void internalFrameActivated(InternalFrameEvent e) { }
-
- @Override
- public void internalFrameDeactivated(InternalFrameEvent e) { }
-
- });
}
public void showGame(UUID gameId, UUID playerId) {
this.setTitle("Game " + gameId);
gamePanel.showGame(gameId, playerId);
- this.toFront();
}
public void hideGame() {
@@ -90,13 +60,11 @@ public class GamePane extends MagePane {
public void watchGame(UUID gameId) {
this.setTitle("Watching " + gameId);
gamePanel.watchGame(gameId);
- this.toFront();
}
public void replayGame(UUID gameId) {
this.setTitle("Replaying " + gameId);
gamePanel.replayGame(gameId);
- this.toFront();
}
/** This method is called from within the constructor to
@@ -133,4 +101,9 @@ public class GamePane extends MagePane {
private javax.swing.JScrollPane jScrollPane1;
// End of variables declaration//GEN-END:variables
+ @Override
+ public void deactivated() {
+ gamePanel.cleanUp();
+ }
+
}
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 762af4a87f7..5f6856d460a 100644
--- a/Mage.Client/src/main/java/mage/client/game/GamePanel.java
+++ b/Mage.Client/src/main/java/mage/client/game/GamePanel.java
@@ -139,13 +139,17 @@ public class GamePanel extends javax.swing.JPanel {
}
public void cleanUp() {
+ this.chatPanel.disconnect();
+ this.players.clear();
+ logger.debug("players clear.");
+ this.pnlBattlefield.removeAll();
combat.hideDialog();
- pickNumber.hide();
+ pickNumber.hideDialog();
for (ExileZoneDialog exile: exiles.values()) {
- exile.hide();
+ exile.hideDialog();
}
for (ShowCardsDialog reveal: revealed.values()) {
- reveal.hide();
+ reveal.hideDialog();
}
}
@@ -160,7 +164,6 @@ public class GamePanel extends javax.swing.JPanel {
this.btnConcede.setVisible(true);
this.pnlReplay.setVisible(false);
this.btnStopWatching.setVisible(false);
- this.setVisible(true);
this.chatPanel.clear();
this.chatPanel.connect(session.getGameChatId(gameId));
if (!session.joinGame(gameId))
@@ -177,7 +180,6 @@ public class GamePanel extends javax.swing.JPanel {
this.btnConcede.setVisible(false);
this.btnStopWatching.setVisible(true);
this.pnlReplay.setVisible(false);
- this.setVisible(true);
this.chatPanel.clear();
this.chatPanel.connect(session.getGameChatId(gameId));
if (!session.watchGame(gameId))
@@ -193,24 +195,19 @@ public class GamePanel extends javax.swing.JPanel {
this.btnConcede.setVisible(false);
this.btnStopWatching.setVisible(false);
this.pnlReplay.setVisible(true);
- this.setVisible(true);
this.chatPanel.clear();
if (!session.startReplay(gameId))
hideGame();
}
public void hideGame() {
- this.chatPanel.disconnect();
- this.players.clear();
- logger.debug("players clear.");
- this.pnlBattlefield.removeAll();
- combat.hideDialog();
+ cleanUp();
Component c = this.getParent();
while (c != null && !(c instanceof GamePane)) {
c = c.getParent();
}
if (c != null)
- c.setVisible(false);
+ ((GamePane)c).hideFrame();
}
public synchronized void init(GameView game) {
diff --git a/Mage.Client/src/main/java/mage/client/table/TablesPane.java b/Mage.Client/src/main/java/mage/client/table/TablesPane.java
index 5ba76524799..c212841153e 100644
--- a/Mage.Client/src/main/java/mage/client/table/TablesPane.java
+++ b/Mage.Client/src/main/java/mage/client/table/TablesPane.java
@@ -127,4 +127,13 @@ public class TablesPane extends MagePane {
private mage.client.table.TablesPanel tablesPanel;
// End of variables declaration//GEN-END:variables
+ @Override
+ public void activated() {
+ tablesPanel.startTasks();
+ }
+
+ @Override
+ public void deactivated() {
+ tablesPanel.stopTasks();
+ }
}
diff --git a/Mage.Client/src/main/java/mage/client/table/TablesPanel.java b/Mage.Client/src/main/java/mage/client/table/TablesPanel.java
index 6ed44234a08..a350199d608 100644
--- a/Mage.Client/src/main/java/mage/client/table/TablesPanel.java
+++ b/Mage.Client/src/main/java/mage/client/table/TablesPanel.java
@@ -58,6 +58,8 @@ import java.awt.event.ActionEvent;
import java.beans.PropertyVetoException;
import java.util.*;
import java.util.List;
+import java.util.concurrent.CancellationException;
+import java.util.concurrent.ExecutionException;
/**
@@ -171,32 +173,49 @@ public class TablesPanel extends javax.swing.JPanel {
}
}
+ public void startTasks() {
+ if (session != null) {
+ if (updateTask == null || updateTask.isDone()) {
+ updateTask = new UpdateTablesTask(session, roomId, this);
+ updateTask.execute();
+ }
+ if (updatePlayersTask == null || updatePlayersTask.isDone()) {
+ updatePlayersTask = new UpdatePlayersTask(session, roomId, this.chatPanel);
+ updatePlayersTask.execute();
+ }
+ }
+ }
+
+ public void stopTasks() {
+ if (updateTask != null)
+ updateTask.cancel(true);
+ if (updatePlayersTask != null)
+ updatePlayersTask.cancel(true);
+ }
+
public void showTables(UUID roomId) {
this.roomId = roomId;
session = MageFrame.getSession();
- updateTask = new UpdateTablesTask(session, roomId, this);
- updatePlayersTask = new UpdatePlayersTask(session, roomId, this.chatPanel);
if (session != null) {
btnQuickStart.setVisible(session.isTestMode());
}
if (newTableDialog == null) {
newTableDialog = new NewTableDialog();
- MageFrame.getDesktop().add(newTableDialog);
+ MageFrame.getDesktop().add(newTableDialog, JLayeredPane.MODAL_LAYER);
}
if (newTournamentDialog == null) {
newTournamentDialog = new NewTournamentDialog();
- MageFrame.getDesktop().add(newTournamentDialog);
+ MageFrame.getDesktop().add(newTournamentDialog, JLayeredPane.MODAL_LAYER);
}
if (joinTableDialog == null) {
joinTableDialog = new JoinTableDialog();
- MageFrame.getDesktop().add(joinTableDialog);
+ MageFrame.getDesktop().add(joinTableDialog, JLayeredPane.MODAL_LAYER);
}
UUID chatRoomId = session.getRoomChatId(roomId);
if (chatRoomId != null) {
this.chatPanel.connect(chatRoomId);
- updateTask.execute();
- updatePlayersTask.execute();
+ startTasks();
this.setVisible(true);
this.repaint();
}
@@ -213,10 +232,7 @@ public class TablesPanel extends javax.swing.JPanel {
((TableWaitingDialog)component).closeDialog();
}
}
- if (updateTask != null)
- updateTask.cancel(true);
- if (updatePlayersTask != null)
- updatePlayersTask.cancel(true);
+ stopTasks();
this.chatPanel.disconnect();
Component c = this.getParent();
@@ -224,7 +240,7 @@ public class TablesPanel extends javax.swing.JPanel {
c = c.getParent();
}
if (c != null)
- c.setVisible(false);
+ ((TablesPane)c).hideFrame();
}
private void showTableWaitingDialog(UUID roomId, UUID tableId, boolean isTournament) {
@@ -349,8 +365,6 @@ public class TablesPanel extends javax.swing.JPanel {
}//GEN-LAST:event_btnQuickStartActionPerformed
private void btnNewTournamentActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnNewTournamentActionPerformed
- newTournamentDialog = new NewTournamentDialog();
- MageFrame.getDesktop().add(newTournamentDialog);
newTournamentDialog.showDialog(roomId);
if (newTournamentDialog.getTable() != null) {
showTableWaitingDialog(roomId, newTournamentDialog.getTable().getTableId(), true);
@@ -483,6 +497,18 @@ class UpdateTablesTask extends SwingWorker> {
protected void process(List> view) {
panel.update(view.get(0));
}
+
+ @Override
+ protected void done() {
+ try {
+ get();
+ } catch (InterruptedException ex) {
+ logger.fatal("Update Tables Task error", ex);
+ } catch (ExecutionException ex) {
+ logger.fatal("Update Tables Task error", ex);
+ } catch (CancellationException ex) {}
+ }
+
}
class UpdatePlayersTask extends SwingWorker> {
@@ -512,4 +538,16 @@ class UpdatePlayersTask extends SwingWorker> {
protected void process(List> players) {
chat.setPlayers(players.get(0));
}
+
+ @Override
+ protected void done() {
+ try {
+ get();
+ } catch (InterruptedException ex) {
+ logger.fatal("Update Players Task error", ex);
+ } catch (ExecutionException ex) {
+ logger.fatal("Update Players Task error", ex);
+ } catch (CancellationException ex) {}
+ }
+
}
\ No newline at end of file
diff --git a/Mage.Client/src/main/java/mage/client/tournament/TournamentPanel.java b/Mage.Client/src/main/java/mage/client/tournament/TournamentPanel.java
index 8247afc2d6f..20e8f4e1ba9 100644
--- a/Mage.Client/src/main/java/mage/client/tournament/TournamentPanel.java
+++ b/Mage.Client/src/main/java/mage/client/tournament/TournamentPanel.java
@@ -115,7 +115,13 @@ public class TournamentPanel extends javax.swing.JPanel implements Observer {
}
public void hideTournament() {
- this.setVisible(false);
+ Component c = this.getParent();
+ while (c != null && !(c instanceof TournamentPane)) {
+ c = c.getParent();
+ }
+ if (c != null) {
+ ((TournamentPane)c).hideFrame();
+ }
}
@Override