diff --git a/Mage.Client/src/main/java/mage/client/MageFrame.java b/Mage.Client/src/main/java/mage/client/MageFrame.java index 7217f2672e8..2408b06cea2 100644 --- a/Mage.Client/src/main/java/mage/client/MageFrame.java +++ b/Mage.Client/src/main/java/mage/client/MageFrame.java @@ -101,6 +101,8 @@ import net.java.truevfs.kernel.spec.FsAccessOption; */ public class MageFrame extends javax.swing.JFrame implements MageClient { + private static final String TITLE_NAME = "XMage"; + private static final Logger logger = Logger.getLogger(MageFrame.class); private static final String liteModeArg = "-lite"; private static final String grayModeArg = "-gray"; @@ -115,7 +117,7 @@ public class MageFrame extends javax.swing.JFrame implements MageClient { private static final Preferences prefs = Preferences.userNodeForPackage(MageFrame.class); private JLabel title; private Rectangle titleRectangle; - private static final MageVersion version = new MageVersion(1, 3, 0, MageVersion.MAGE_VERSION_INFO); + private static final MageVersion version = new MageVersion(MageVersion.MAGE_VERSION_MAJOR, MageVersion.MAGE_VERSION_MINOR, MageVersion.MAGE_VERSION_PATCH, MageVersion.MAGE_VERSION_MINOR_PATCH, MageVersion.MAGE_VERSION_INFO); private UUID clientId; private static MagePane activeFrame; private static boolean liteMode = false; @@ -169,8 +171,8 @@ public class MageFrame extends javax.swing.JFrame implements MageClient { * Creates new form MageFrame */ public MageFrame() { - - setTitle("XMage, version " + version); + setWindowTitle(); + clientId = UUID.randomUUID(); EDTExceptionHandler.registerExceptionHandler(); addWindowListener(new WindowAdapter() { @@ -324,6 +326,10 @@ public class MageFrame extends javax.swing.JFrame implements MageClient { } } + public void setWindowTitle() { + setTitle(TITLE_NAME + " Client: " + version.toString() + " Server: " + ((session != null && session.isConnected()) ? session.getVersionInfo():"")); + } + private void addTooltipContainer() { final JEditorPane cardInfoPane = (JEditorPane) Plugins.getInstance().getCardInfoPane(); if (cardInfoPane == null) { @@ -674,7 +680,9 @@ public class MageFrame extends javax.swing.JFrame implements MageClient { } public static boolean connect(Connection connection) { - return session.connect(connection); + boolean result = session.connect(connection); + MageFrame.getInstance().setWindowTitle(); + return result; } public static boolean stopConnecting() { @@ -905,7 +913,8 @@ public class MageFrame extends javax.swing.JFrame implements MageClient { if (JOptionPane.showConfirmDialog(this, "Are you sure you want to disconnect?", "Confirm disconnect", JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION) { session.disconnect(false); tablesPane.clearChat(); - showMessage("You have disconnected"); + setWindowTitle(); + showMessage("You have disconnected"); } } else { connectDialog.showDialog(); diff --git a/Mage.Client/src/test/java/mage/client/game/MultiConnectTest.java b/Mage.Client/src/test/java/mage/client/game/MultiConnectTest.java index fb5a82c46b6..3207e33122d 100644 --- a/Mage.Client/src/test/java/mage/client/game/MultiConnectTest.java +++ b/Mage.Client/src/test/java/mage/client/game/MultiConnectTest.java @@ -30,7 +30,7 @@ public class MultiConnectTest { private static final CountDownLatch latch = new CountDownLatch(USER_CONNECT_COUNT); - private static final MageVersion version = new MageVersion(1, 3, 0, MageVersion.MAGE_VERSION_INFO); + private static final MageVersion version = new MageVersion(MageVersion.MAGE_VERSION_MAJOR, MageVersion.MAGE_VERSION_MINOR, MageVersion.MAGE_VERSION_PATCH, MageVersion.MAGE_VERSION_MINOR_PATCH, MageVersion.MAGE_VERSION_INFO); private static volatile int connected; diff --git a/Mage.Common/src/mage/remote/SessionImpl.java b/Mage.Common/src/mage/remote/SessionImpl.java index cfe02faa432..de10ba2fc35 100644 --- a/Mage.Common/src/mage/remote/SessionImpl.java +++ b/Mage.Common/src/mage/remote/SessionImpl.java @@ -1386,7 +1386,15 @@ public class SessionImpl implements Session { } return false; } + + @Override + public String getVersionInfo() { + return serverState.getVersion().toString(); + } + } + + class MageAuthenticator extends Authenticator { private final String username; diff --git a/Mage.Common/src/mage/remote/interfaces/ServerState.java b/Mage.Common/src/mage/remote/interfaces/ServerState.java index 7ef21e29d4a..8e8ea6398b3 100644 --- a/Mage.Common/src/mage/remote/interfaces/ServerState.java +++ b/Mage.Common/src/mage/remote/interfaces/ServerState.java @@ -27,16 +27,14 @@ */ package mage.remote.interfaces; -import mage.remote.MageRemoteException; -import mage.view.MatchView; -import mage.view.TableView; -import mage.view.UserView; - import java.util.Collection; import java.util.List; import java.util.UUID; +import mage.remote.MageRemoteException; +import mage.view.MatchView; import mage.view.RoomUsersView; -import mage.view.UsersView; +import mage.view.TableView; +import mage.view.UserView; /** * @author noxx @@ -55,4 +53,6 @@ public interface ServerState { Collection getFinishedMatches(UUID roomId) throws MageRemoteException; + String getVersionInfo(); + } diff --git a/Mage.Common/src/mage/utils/MageVersion.java b/Mage.Common/src/mage/utils/MageVersion.java index 4d165b9db25..a6831be59eb 100644 --- a/Mage.Common/src/mage/utils/MageVersion.java +++ b/Mage.Common/src/mage/utils/MageVersion.java @@ -1,85 +1,98 @@ -/* -* Copyright 2011 BetaSteward_at_googlemail.com. All rights reserved. -* -* Redistribution and use in source and binary forms, with or without modification, are -* permitted provided that the following conditions are met: -* -* 1. Redistributions of source code must retain the above copyright notice, this list of -* conditions and the following disclaimer. -* -* 2. Redistributions in binary form must reproduce the above copyright notice, this list -* of conditions and the following disclaimer in the documentation and/or other materials -* provided with the distribution. -* -* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED -* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND -* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR -* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF -* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -* -* The views and conclusions contained in the software and documentation are those of the -* authors and should not be interpreted as representing official policies, either expressed -* or implied, of BetaSteward_at_googlemail.com. -*/ - -package mage.utils; - -import java.io.Serializable; - -/** - * - * @author BetaSteward_at_googlemail.com - */ -public class MageVersion implements Serializable, Comparable { - - public final static String MAGE_VERSION_INFO = ""; - - private final int major; - private final int minor; - private final int patch; - - private String info = ""; - - public MageVersion(int major, int minor, int patch, String info) { - this.major = major; - this.minor = minor; - this.patch = patch; - this.info = info; - } - - public int getMajor() { - return major; - } - - public int getMinor() { - return minor; - } - - public int getPatch() { - return patch; - } - - @Override - public String toString() { - return major + "." + minor + "." + patch + info; - } - - @Override - public int compareTo(MageVersion o) { - if (major != o.major) { - return major - o.major; - } - if (minor != o.minor) { - return minor - o.minor; - } - if (patch != o.patch) { - return patch - o.patch; - } - return info.compareTo(o.info); - } - -} +/* +* Copyright 2011 BetaSteward_at_googlemail.com. All rights reserved. +* +* Redistribution and use in source and binary forms, with or without modification, are +* permitted provided that the following conditions are met: +* +* 1. Redistributions of source code must retain the above copyright notice, this list of +* conditions and the following disclaimer. +* +* 2. Redistributions in binary form must reproduce the above copyright notice, this list +* of conditions and the following disclaimer in the documentation and/or other materials +* provided with the distribution. +* +* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED +* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND +* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR +* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +* +* The views and conclusions contained in the software and documentation are those of the +* authors and should not be interpreted as representing official policies, either expressed +* or implied, of BetaSteward_at_googlemail.com. +*/ + +package mage.utils; + +import java.io.Serializable; + +/** + * + * @author BetaSteward_at_googlemail.com + */ +public class MageVersion implements Serializable, Comparable { + + /** + * + */ + public final static int MAGE_VERSION_MAJOR = 1; + public final static int MAGE_VERSION_MINOR = 3; + public final static int MAGE_VERSION_PATCH = 0; + public final static String MAGE_VERSION_MINOR_PATCH = ""; + public final static String MAGE_VERSION_INFO = ""; + + private final int major; + private final int minor; + private final int patch; + private final String minorPatch; // doesn't matter for compatibility + + private String info = ""; + + public MageVersion(int major, int minor, int patch, String minorPatch, String info) { + this.major = major; + this.minor = minor; + this.patch = patch; + this.minorPatch = minorPatch; + this.info = info; + } + + public int getMajor() { + return major; + } + + public int getMinor() { + return minor; + } + + public int getPatch() { + return patch; + } + + public String getMinorPatch() { + return minorPatch; + } + + @Override + public String toString() { + return major + "." + minor + "." + patch + info + minorPatch; + } + + @Override + public int compareTo(MageVersion o) { + if (major != o.major) { + return major - o.major; + } + if (minor != o.minor) { + return minor - o.minor; + } + if (patch != o.patch) { + return patch - o.patch; + } + return info.compareTo(o.info); + } + +} diff --git a/Mage.Server.Console/src/main/java/mage/server/console/ConsoleFrame.java b/Mage.Server.Console/src/main/java/mage/server/console/ConsoleFrame.java index bcb83d536e5..346e98260cd 100644 --- a/Mage.Server.Console/src/main/java/mage/server/console/ConsoleFrame.java +++ b/Mage.Server.Console/src/main/java/mage/server/console/ConsoleFrame.java @@ -63,7 +63,7 @@ public class ConsoleFrame extends javax.swing.JFrame implements MageClient { private static Session session; private ConnectDialog connectDialog; private static final Preferences prefs = Preferences.userNodeForPackage(ConsoleFrame.class); - private static final MageVersion version = new MageVersion(1, 3, 0, MageVersion.MAGE_VERSION_INFO); + private static final MageVersion version = new MageVersion(MageVersion.MAGE_VERSION_MAJOR, MageVersion.MAGE_VERSION_MINOR, MageVersion.MAGE_VERSION_PATCH, MageVersion.MAGE_VERSION_MINOR_PATCH, MageVersion.MAGE_VERSION_INFO); private static final ScheduledExecutorService pingTaskExecutor = Executors.newSingleThreadScheduledExecutor(); /** diff --git a/Mage.Server/src/main/java/mage/server/Main.java b/Mage.Server/src/main/java/mage/server/Main.java index 605fdfb7b2a..46b61e6b235 100644 --- a/Mage.Server/src/main/java/mage/server/Main.java +++ b/Mage.Server/src/main/java/mage/server/Main.java @@ -73,7 +73,7 @@ import org.jboss.remoting.transport.bisocket.BisocketServerInvoker; public class Main { private static final Logger logger = Logger.getLogger(Main.class); - private static final MageVersion version = new MageVersion(1, 3, 0, MageVersion.MAGE_VERSION_INFO); + private static final MageVersion version = new MageVersion(MageVersion.MAGE_VERSION_MAJOR, MageVersion.MAGE_VERSION_MINOR, MageVersion.MAGE_VERSION_PATCH, MageVersion.MAGE_VERSION_MINOR_PATCH, MageVersion.MAGE_VERSION_INFO); private static final String testModeArg = "-testMode="; private static final String fastDBModeArg = "-fastDbMode="; diff --git a/Mage.Tests/src/test/java/org/mage/test/load/SimpleMageClient.java b/Mage.Tests/src/test/java/org/mage/test/load/SimpleMageClient.java index 448ba279224..88f0532070a 100644 --- a/Mage.Tests/src/test/java/org/mage/test/load/SimpleMageClient.java +++ b/Mage.Tests/src/test/java/org/mage/test/load/SimpleMageClient.java @@ -16,7 +16,7 @@ import org.apache.log4j.Logger; public class SimpleMageClient implements MageClient { private final UUID clientId; - private static final MageVersion version = new MageVersion(1, 3, 0, MageVersion.MAGE_VERSION_INFO); + private static final MageVersion version = new MageVersion(MageVersion.MAGE_VERSION_MAJOR, MageVersion.MAGE_VERSION_MINOR, MageVersion.MAGE_VERSION_PATCH, MageVersion.MAGE_VERSION_MINOR_PATCH, MageVersion.MAGE_VERSION_INFO); private static final transient Logger log = Logger.getLogger(SimpleMageClient.class);