* 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;
}
}

View file

@ -1,11 +1,9 @@
package mage.interfaces;
import mage.interfaces.callback.CallbackClient;
import mage.utils.MageVersion;
/**
*
* @author BetaSteward_at_googlemail.com
*/
public interface MageClient extends CallbackClient {
@ -14,7 +12,7 @@ public interface MageClient extends CallbackClient {
void connected(String message);
void disconnected(boolean errorCall);
void disconnected(boolean askToReconnect);
void showMessage(String message);

View file

@ -1,6 +1,5 @@
package org.mage.test.load;
import java.util.UUID;
import mage.interfaces.MageClient;
import mage.interfaces.callback.ClientCallback;
import mage.remote.Session;
@ -8,6 +7,8 @@ import mage.utils.MageVersion;
import mage.view.GameView;
import org.apache.log4j.Logger;
import java.util.UUID;
/**
* For tests only
*
@ -38,7 +39,7 @@ public class SimpleMageClient implements MageClient {
}
@Override
public void disconnected(boolean errorCall) {
public void disconnected(boolean askToReconnect) {
// do nothing
}
@ -62,11 +63,11 @@ public class SimpleMageClient implements MageClient {
}
public void setSession(Session session) {
((LoadCallbackClient) callbackClient).setSession(session);
callbackClient.setSession(session);
}
public boolean isGameOver() {
return ((LoadCallbackClient) callbackClient).isGameOver();
return callbackClient.isGameOver();
}
public void setConcede(boolean needToConcede) {