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 4b0dae2a96c..3b146fe8bc0 100644
--- a/Mage.Client/src/main/java/mage/client/dialog/ConnectDialog.form
+++ b/Mage.Client/src/main/java/mage/client/dialog/ConnectDialog.form
@@ -324,10 +324,12 @@
-
-
-
-
+
+
+
+
+
+
@@ -347,6 +349,7 @@
+
@@ -360,8 +363,7 @@
-
-
+
@@ -372,32 +374,29 @@
-
-
+
-
-
-
+
@@ -414,7 +413,7 @@
-
+
@@ -424,29 +423,51 @@
-
-
-
+
-
+
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -463,7 +484,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 3fb22126d24..1b5b9645f8a 100644
--- a/Mage.Client/src/main/java/mage/client/dialog/ConnectDialog.java
+++ b/Mage.Client/src/main/java/mage/client/dialog/ConnectDialog.java
@@ -92,6 +92,119 @@ public class ConnectDialog extends MageDialog {
// last settings for reconnect
MagePreferences.saveLastServer();
}
+
+ private void setServerSettings(String address, String port, boolean needRegistration) {
+ this.txtServer.setText(address);
+ this.txtPort.setText(port);
+ if (needRegistration) {
+ this.txtUserName.setText(MagePreferences.getUserName(address));
+ this.txtPassword.setText(MagePreferences.getPassword(address));
+ } else {
+ this.txtUserName.setText("");
+ this.txtPassword.setText("");
+ }
+ }
+
+ private void chooseAndSetServerSettingsFromOther() {
+ BufferedReader in = null;
+ Writer output = null;
+ try {
+ String serverUrl = PreferencesDialog.getCachedValue(KEY_CONNECTION_URL_SERVER_LIST, "http://xmage.de/files/server-list.txt");
+ if (serverUrl.contains("xmage.info/files/")) {
+ serverUrl = serverUrl.replace("xmage.info/files/", "xmage.de/files/"); // replace old URL if still saved
+ PreferencesDialog.saveValue(KEY_CONNECTION_URL_SERVER_LIST, serverUrl);
+ }
+ URL serverListURL = new URL(serverUrl);
+
+ Connection.ProxyType configProxyType = Connection.ProxyType.valueByText(PreferencesDialog.getCachedValue(PreferencesDialog.KEY_PROXY_TYPE, "None"));
+ Proxy p = null;
+ Proxy.Type type = Proxy.Type.DIRECT;
+ switch (configProxyType) {
+ case HTTP:
+ type = Proxy.Type.HTTP;
+ break;
+ case SOCKS:
+ type = Proxy.Type.SOCKS;
+ break;
+ case NONE:
+ default:
+ p = Proxy.NO_PROXY;
+ break;
+ }
+
+ if (p == null || !p.equals(Proxy.NO_PROXY)) {
+ try {
+ String address = PreferencesDialog.getCachedValue(PreferencesDialog.KEY_PROXY_ADDRESS, "");
+ Integer port = Integer.parseInt(PreferencesDialog.getCachedValue(PreferencesDialog.KEY_PROXY_PORT, "80"));
+ p = new Proxy(type, new InetSocketAddress(address, port));
+ } catch (Exception ex) {
+ throw new RuntimeException("Gui_DownloadPictures : error 1 - " + ex);
+ }
+ }
+
+ if (p == null) {
+ JOptionPane.showMessageDialog(null, "Couldn't configure Proxy object!", "Error", JOptionPane.ERROR_MESSAGE);
+ return;
+ }
+
+ boolean URLNotFound = false;
+ try {
+ in = new BufferedReader(new InputStreamReader(serverListURL.openConnection(p).getInputStream()));
+ } catch (SocketTimeoutException | FileNotFoundException | UnknownHostException ex) {
+ logger.warn("Could not read serverlist from: " + serverListURL.toString());
+ File f = new File("serverlist.txt");
+ if (f.exists() && !f.isDirectory()) {
+ logger.info("Using buffered serverlist: serverlist.txt");
+ URLNotFound = true;
+ in = new BufferedReader(new FileReader("serverlist.txt"));
+ }
+ }
+ List servers = new ArrayList<>();
+ if (in != null) {
+
+ if (!URLNotFound) {
+ // write serverlist to be able to read if URL is not available
+ File file = new File("serverlist.txt");
+ if (file.exists() && !file.isDirectory()) {
+ file.delete();
+ }
+ output = new BufferedWriter(new FileWriter(file));
+ }
+
+ String inputLine;
+ while ((inputLine = in.readLine()) != null) {
+ logger.debug("Found server: " + inputLine);
+ servers.add(inputLine);
+ if (output != null) {
+ output.append(inputLine).append('\n');
+
+ }
+ }
+ }
+ if (servers.isEmpty()) {
+ JOptionPane.showMessageDialog(null, "Couldn't find any server.");
+ return;
+ }
+
+ String selectedServer = (String) JOptionPane.showInputDialog(null,
+ "Choose XMage Public Server:", "Input",
+ JOptionPane.INFORMATION_MESSAGE, null, servers.toArray(),
+ servers.get(0));
+ if (selectedServer != null) {
+ String[] params = selectedServer.split(":");
+ if (params.length == 3) {
+ setServerSettings(params[1], params[2], true);
+ } else {
+ JOptionPane.showMessageDialog(null, "Wrong server data format.");
+ }
+ }
+ } catch (Exception ex) {
+ logger.error(ex, ex);
+ } finally {
+ StreamUtils.closeQuietly(in);
+ StreamUtils.closeQuietly(output);
+ }
+ }
/**
* This method is called from within the constructor to initialize the form.
@@ -127,6 +240,7 @@ public class ConnectDialog extends MageDialog {
btnFindBeta = new javax.swing.JButton();
btnFindUs = new javax.swing.JButton();
btnFindOther = new javax.swing.JButton();
+ btnFindEU = new javax.swing.JButton();
panelServer = new javax.swing.JPanel();
txtServer = new javax.swing.JTextField();
txtPort = new javax.swing.JTextField();
@@ -242,31 +356,27 @@ public class ConnectDialog extends MageDialog {
btnFindMain.setIcon(new javax.swing.ImageIcon(getClass().getResource("/flags/de.png"))); // NOI18N
btnFindMain.setText("X");
- btnFindMain.setToolTipText("Connect to xmage.de (Europe, most popular, registration needs)");
- btnFindMain.setActionCommand("connectXmageDe");
+ btnFindMain.setToolTipText("Connect to xmage.de (first Europe server, most popular, registration needs)");
btnFindMain.setAlignmentY(0.0F);
btnFindMain.setMargin(new java.awt.Insets(2, 2, 2, 2));
btnFindMain.setMaximumSize(new java.awt.Dimension(42, 23));
btnFindMain.setMinimumSize(new java.awt.Dimension(42, 23));
- btnFindMain.setName("connectXmageDeBtn"); // NOI18N
btnFindMain.setPreferredSize(new java.awt.Dimension(23, 23));
btnFindMain.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
- connectXmageDe(evt);
+ btnFindMainActionPerformed(evt);
}
});
btnFindLocal.setText("LOCAL, AI");
btnFindLocal.setToolTipText("Connect to localhost, AI enabled (run local server from launcher)");
- btnFindLocal.setActionCommand("connectLocalhost");
btnFindLocal.setAlignmentY(0.0F);
btnFindLocal.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
btnFindLocal.setMargin(new java.awt.Insets(2, 2, 2, 2));
- btnFindLocal.setName("connectLocalhostBtn"); // NOI18N
btnFindLocal.setPreferredSize(new java.awt.Dimension(23, 23));
btnFindLocal.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
- connectLocalhost(evt);
+ btnFindLocalActionPerformed(evt);
}
});
@@ -278,31 +388,42 @@ public class ConnectDialog extends MageDialog {
btnFindBeta.setPreferredSize(new java.awt.Dimension(23, 23));
btnFindBeta.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
- btnFindBetaconnectLocalhost(evt);
+ btnFindBetaActionPerformed(evt);
}
});
btnFindUs.setIcon(new javax.swing.ImageIcon(getClass().getResource("/flags/us.png"))); // NOI18N
btnFindUs.setText("US");
btnFindUs.setToolTipText("Connect to us.xmage.today (USA, use any username without registration)");
- btnFindUs.setActionCommand("connectXmageus");
btnFindUs.setAlignmentY(0.0F);
btnFindUs.setMargin(new java.awt.Insets(2, 2, 2, 2));
- btnFindUs.setName("connectXmageusBtn"); // NOI18N
btnFindUs.setPreferredSize(new java.awt.Dimension(23, 23));
btnFindUs.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
- connectXmageus(evt);
+ btnFindUsActionPerformed(evt);
}
});
- btnFindOther.setText("Other servers...");
+ btnFindOther.setText("Other...");
btnFindOther.setToolTipText("Choose server from full servers list");
btnFindOther.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
- btnFindOther.setName("findServerBtn"); // NOI18N
btnFindOther.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
- findPublicServerActionPerformed(evt);
+ btnFindOtherActionPerformed(evt);
+ }
+ });
+
+ btnFindEU.setIcon(new javax.swing.ImageIcon(getClass().getResource("/flags/europeanunion.png"))); // NOI18N
+ btnFindEU.setText("EU");
+ btnFindEU.setToolTipText("Connect to eu.xmage.today (second Europe server, use any username without registration)");
+ btnFindEU.setAlignmentY(0.0F);
+ btnFindEU.setMargin(new java.awt.Insets(2, 2, 2, 2));
+ btnFindEU.setMaximumSize(new java.awt.Dimension(42, 23));
+ btnFindEU.setMinimumSize(new java.awt.Dimension(42, 23));
+ btnFindEU.setPreferredSize(new java.awt.Dimension(23, 23));
+ btnFindEU.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ btnFindEUActionPerformed(evt);
}
});
@@ -312,9 +433,11 @@ public class ConnectDialog extends MageDialog {
panelFastLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(panelFastLayout.createSequentialGroup()
.addGap(0, 0, 0)
- .addComponent(btnFindMain, javax.swing.GroupLayout.PREFERRED_SIZE, 90, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(btnFindMain, javax.swing.GroupLayout.PREFERRED_SIZE, 80, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addComponent(btnFindUs, javax.swing.GroupLayout.PREFERRED_SIZE, 90, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(btnFindEU, javax.swing.GroupLayout.PREFERRED_SIZE, 80, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(btnFindUs, javax.swing.GroupLayout.PREFERRED_SIZE, 80, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(btnFindBeta, javax.swing.GroupLayout.PREFERRED_SIZE, 90, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
@@ -332,7 +455,8 @@ public class ConnectDialog extends MageDialog {
.addComponent(btnFindLocal, javax.swing.GroupLayout.PREFERRED_SIZE, 30, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(btnFindUs, javax.swing.GroupLayout.PREFERRED_SIZE, 30, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(btnFindBeta, javax.swing.GroupLayout.PREFERRED_SIZE, 30, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addComponent(btnFindOther, javax.swing.GroupLayout.PREFERRED_SIZE, 30, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addComponent(btnFindOther, javax.swing.GroupLayout.PREFERRED_SIZE, 30, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(btnFindEU, javax.swing.GroupLayout.PREFERRED_SIZE, 30, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(0, 0, 0))
);
@@ -368,7 +492,7 @@ public class ConnectDialog extends MageDialog {
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(txtPort, javax.swing.GroupLayout.PREFERRED_SIZE, 75, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addComponent(btnCheckStatus, javax.swing.GroupLayout.DEFAULT_SIZE, 205, Short.MAX_VALUE)
+ .addComponent(btnCheckStatus, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGap(0, 0, 0))
);
panelServerLayout.setVerticalGroup(
@@ -615,110 +739,7 @@ public class ConnectDialog extends MageDialog {
}//GEN-LAST:event_chkAutoConnectActionPerformed
private void findPublicServerActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed
- BufferedReader in = null;
- Writer output = null;
- try {
- String serverUrl = PreferencesDialog.getCachedValue(KEY_CONNECTION_URL_SERVER_LIST, "http://xmage.de/files/server-list.txt");
- if (serverUrl.contains("xmage.info/files/")) {
- serverUrl = serverUrl.replace("xmage.info/files/", "xmage.de/files/"); // replace old URL if still saved
- PreferencesDialog.saveValue(KEY_CONNECTION_URL_SERVER_LIST, serverUrl);
- }
- URL serverListURL = new URL(serverUrl);
-
- Connection.ProxyType configProxyType = Connection.ProxyType.valueByText(PreferencesDialog.getCachedValue(PreferencesDialog.KEY_PROXY_TYPE, "None"));
- Proxy p = null;
- Proxy.Type type = Proxy.Type.DIRECT;
- switch (configProxyType) {
- case HTTP:
- type = Proxy.Type.HTTP;
- break;
- case SOCKS:
- type = Proxy.Type.SOCKS;
- break;
- case NONE:
- default:
- p = Proxy.NO_PROXY;
- break;
- }
-
- if (p == null || !p.equals(Proxy.NO_PROXY)) {
- try {
- String address = PreferencesDialog.getCachedValue(PreferencesDialog.KEY_PROXY_ADDRESS, "");
- Integer port = Integer.parseInt(PreferencesDialog.getCachedValue(PreferencesDialog.KEY_PROXY_PORT, "80"));
- p = new Proxy(type, new InetSocketAddress(address, port));
- } catch (Exception ex) {
- throw new RuntimeException("Gui_DownloadPictures : error 1 - " + ex);
- }
- }
-
- if (p == null) {
- JOptionPane.showMessageDialog(null, "Couldn't configure Proxy object!", "Error", JOptionPane.ERROR_MESSAGE);
- return;
- }
-
- boolean URLNotFound = false;
- try {
- in = new BufferedReader(new InputStreamReader(serverListURL.openConnection(p).getInputStream()));
- } catch (SocketTimeoutException | FileNotFoundException | UnknownHostException ex) {
- logger.warn("Could not read serverlist from: " + serverListURL.toString());
- File f = new File("serverlist.txt");
- if (f.exists() && !f.isDirectory()) {
- logger.info("Using buffered serverlist: serverlist.txt");
- URLNotFound = true;
- in = new BufferedReader(new FileReader("serverlist.txt"));
- }
- }
- List servers = new ArrayList<>();
- if (in != null) {
-
- if (!URLNotFound) {
- // write serverlist to be able to read if URL is not available
- File file = new File("serverlist.txt");
- if (file.exists() && !file.isDirectory()) {
- file.delete();
- }
- output = new BufferedWriter(new FileWriter(file));
- }
-
- String inputLine;
- while ((inputLine = in.readLine()) != null) {
- logger.debug("Found server: " + inputLine);
- servers.add(inputLine);
- if (output != null) {
- output.append(inputLine).append('\n');
-
- }
- }
- }
- if (servers.isEmpty()) {
- JOptionPane.showMessageDialog(null, "Couldn't find any server.");
- return;
- }
-
- String selectedServer = (String) JOptionPane.showInputDialog(null,
- "Choose XMage Public Server:", "Input",
- JOptionPane.INFORMATION_MESSAGE, null, servers.toArray(),
- servers.get(0));
- if (selectedServer != null) {
- String[] params = selectedServer.split(":");
- if (params.length == 3) {
- String serverAddress = params[1];
- this.txtServer.setText(serverAddress);
- this.txtPort.setText(params[2]);
- // Update userName and password according to the chosen server.
- this.txtUserName.setText(MagePreferences.getUserName(serverAddress));
- this.txtPassword.setText(MagePreferences.getPassword(serverAddress));
- } else {
- JOptionPane.showMessageDialog(null, "Wrong server data format.");
- }
- }
-
- } catch (Exception ex) {
- logger.error(ex, ex);
- } finally {
- StreamUtils.closeQuietly(in);
- StreamUtils.closeQuietly(output);
- }
+
}//GEN-LAST:event_jButton1ActionPerformed
private void jProxySettingsButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jProxySettingsButtonActionPerformed
@@ -786,10 +807,6 @@ public class ConnectDialog extends MageDialog {
doFastFlagSearch();
}//GEN-LAST:event_btnFlagSearchActionPerformed
- private void btnFindBetaconnectLocalhost(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnFindBetaconnectLocalhost
- connectBeta(evt);
- }//GEN-LAST:event_btnFindBetaconnectLocalhost
-
private void btnCheckStatusActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnCheckStatusActionPerformed
if (Desktop.isDesktopSupported() && Desktop.getDesktop().isSupported(Desktop.Action.BROWSE)) {
try {
@@ -804,6 +821,30 @@ public class ConnectDialog extends MageDialog {
MageFrame.getInstance().showWhatsNewDialog(true);
}//GEN-LAST:event_btnWhatsNewActionPerformed
+ private void btnFindMainActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnFindMainActionPerformed
+ setServerSettings("xmage.de", "17171", true);
+ }//GEN-LAST:event_btnFindMainActionPerformed
+
+ private void btnFindEUActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnFindEUActionPerformed
+ setServerSettings("eu.xmage.today", "17171", false);
+ }//GEN-LAST:event_btnFindEUActionPerformed
+
+ private void btnFindUsActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnFindUsActionPerformed
+ setServerSettings("us.xmage.today", "17171", false);
+ }//GEN-LAST:event_btnFindUsActionPerformed
+
+ private void btnFindBetaActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnFindBetaActionPerformed
+ setServerSettings("beta.xmage.today", "17171", false);
+ }//GEN-LAST:event_btnFindBetaActionPerformed
+
+ private void btnFindLocalActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnFindLocalActionPerformed
+ setServerSettings("localhost", "17171", false);
+ }//GEN-LAST:event_btnFindLocalActionPerformed
+
+ private void btnFindOtherActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnFindOtherActionPerformed
+ chooseAndSetServerSettingsFromOther();
+ }//GEN-LAST:event_btnFindOtherActionPerformed
+
private void doFastFlagSearch() {
Choice choice = new ChoiceImpl(false);
@@ -852,6 +893,7 @@ public class ConnectDialog extends MageDialog {
private javax.swing.JButton btnCheckStatus;
private javax.swing.JButton btnConnect;
private javax.swing.JButton btnFindBeta;
+ private javax.swing.JButton btnFindEU;
private javax.swing.JButton btnFindLocal;
private javax.swing.JButton btnFindMain;
private javax.swing.JButton btnFindOther;