* UI: fixed wrong server reconnect on multiple apps runs (#5495);

This commit is contained in:
Oleg Agafonov 2019-04-12 12:15:48 +04:00
parent 978f35a6ca
commit f81142459d
5 changed files with 43 additions and 15 deletions

View file

@ -246,8 +246,7 @@ public class MageFrame extends javax.swing.JFrame implements MageClient {
SessionHandler.startSession(this);
callbackClient = new CallbackClientImpl(this);
connectDialog = new ConnectDialog();
try
{
try {
whatsNewDialog = new WhatsNewDialog();
} catch (NoClassDefFoundError e) {
// JavaFX is not supported on old MacOS with OpenJDK
@ -760,10 +759,10 @@ public class MageFrame extends javax.swing.JFrame implements MageClient {
private boolean performConnect(boolean reconnect) {
if (currentConnection == null || !reconnect) {
String server = MagePreferences.getServerAddress();
int port = MagePreferences.getServerPort();
String userName = MagePreferences.getUserName(server);
String password = MagePreferences.getPassword(server);
String server = MagePreferences.getLastServerAddress();
int port = MagePreferences.getLastServerPort();
String userName = MagePreferences.getLastServerUser();
String password = MagePreferences.getLastServerPassword();
String proxyServer = PREFS.get("proxyAddress", "");
int proxyPort = Integer.parseInt(PREFS.get("proxyPort", "0"));
ProxyType proxyType = ProxyType.valueByText(PREFS.get("proxyType", "None"));
@ -1423,7 +1422,7 @@ public class MageFrame extends javax.swing.JFrame implements MageClient {
hideTables();
SessionHandler.disconnect(false);
if (askToReconnect) {
UserRequestMessage message = new UserRequestMessage("Connection lost", "The connection to server was lost. Reconnect?");
UserRequestMessage message = new UserRequestMessage("Connection lost", "The connection to server was lost. Reconnect to " + MagePreferences.getLastServerAddress() + "?");
message.setButton1("No", null);
message.setButton2("Yes", PlayerAction.CLIENT_RECONNECT);
showUserRequestDialog(message);

View file

@ -88,6 +88,9 @@ public class ConnectDialog extends MageDialog {
MagePreferences.setUserName(serverAddress, txtUserName.getText().trim());
MagePreferences.setPassword(serverAddress, String.valueOf(txtPassword.getPassword()).trim());
MageFrame.getPreferences().put(KEY_CONNECT_AUTO_CONNECT, Boolean.toString(chkAutoConnect.isSelected()));
// last settings for reconnect
MagePreferences.saveLastServer();
}
/**

View file

@ -2,6 +2,7 @@ package mage.client.preference;
import com.google.common.collect.Sets;
import mage.client.MageFrame;
import mage.client.util.Config;
import java.util.Set;
import java.util.prefs.BackingStoreException;
@ -16,9 +17,13 @@ public final class MagePreferences {
private static final String KEY_PASSWORD = "password";
private static final String KEY_EMAIL = "email";
private static final String KEY_AUTO_CONNECT = "autoConnect";
private static final String NODE_KEY_IGNORE_LIST = "ignoreListString";
private static String lastServerAddress = "";
private static int lastServerPort = 0;
private static String lastServerUser = "";
private static String lastServerPassword = "";
private static Preferences prefs() {
// TODO: Move MageFrame.prefs to this class.
return MageFrame.getPreferences();
@ -138,4 +143,26 @@ public final class MagePreferences {
return prefs().node(NODE_KEY_IGNORE_LIST).node(serverAddress);
}
public static void saveLastServer() {
lastServerAddress = getServerAddressWithDefault(Config.serverName);
lastServerPort = getServerPortWithDefault(Config.port);
lastServerUser = getUserName(lastServerAddress);
lastServerPassword = getPassword(lastServerAddress);
}
public static String getLastServerAddress() {
return lastServerAddress.isEmpty() ? getServerAddress() : lastServerAddress;
}
public static int getLastServerPort() {
return lastServerPort == 0 ? getServerPort() : lastServerPort;
}
public static String getLastServerUser() {
return lastServerUser.isEmpty() ? getUserName(getLastServerAddress()) : lastServerUser;
}
public static String getLastServerPassword() {
return lastServerPassword.isEmpty() ? getPassword(getLastServerAddress()) : lastServerPassword;
}
}