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 032fa5bda80..d9d10288a45 100644 --- a/Mage.Client/src/main/java/mage/client/dialog/ConnectDialog.form +++ b/Mage.Client/src/main/java/mage/client/dialog/ConnectDialog.form @@ -30,7 +30,6 @@ - @@ -48,7 +47,7 @@ - + @@ -56,7 +55,7 @@ - + @@ -81,21 +80,25 @@ - + - - - - + + + + + + + + + + + + + + + + - - - - - - - - @@ -168,174 +171,15 @@ - + + + + - + - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 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 e3ab6447aa7..11c8dd96e13 100644 --- a/Mage.Client/src/main/java/mage/client/dialog/ConnectDialog.java +++ b/Mage.Client/src/main/java/mage/client/dialog/ConnectDialog.java @@ -68,7 +68,6 @@ public class ConnectDialog extends MageDialog { /** Creates new form ConnectDialog */ public ConnectDialog() { initComponents(); - cbProxyType.setModel(new DefaultComboBoxModel(Connection.ProxyType.values())); } public void showDialog() { @@ -76,50 +75,16 @@ public class ConnectDialog extends MageDialog { this.txtPort.setText(MageFrame.getPreferences().get("serverPort", Integer.toString(Config.port))); this.txtUserName.setText(MageFrame.getPreferences().get("userName", "")); this.chkAutoConnect.setSelected(Boolean.parseBoolean(MageFrame.getPreferences().get("autoConnect", "false"))); - this.txtProxyServer.setText(MageFrame.getPreferences().get("proxyAddress", Config.serverName)); - this.txtProxyPort.setText(MageFrame.getPreferences().get("proxyPort", Integer.toString(Config.port))); - this.cbProxyType.setSelectedItem(Connection.ProxyType.valueOf(MageFrame.getPreferences().get("proxyType", "NONE").toUpperCase())); - this.txtProxyUserName.setText(MageFrame.getPreferences().get("proxyUsername", "")); - this.txtPasswordField.setText(MageFrame.getPreferences().get("proxyPassword", "")); - this.showProxySettings(); this.setModal(true); this.setLocation(50, 50); this.setVisible(true); } - private void showProxySettings() { - if (cbProxyType.getSelectedItem() == Connection.ProxyType.SOCKS) { - this.pnlProxy.setVisible(true); - this.pnlProxyAuth.setVisible(false); - this.pnlProxySettings.setVisible(true); - } - else if (cbProxyType.getSelectedItem() == Connection.ProxyType.HTTP) { - this.pnlProxy.setVisible(true); - this.pnlProxyAuth.setVisible(true); - this.pnlProxySettings.setVisible(true); - } - else if (cbProxyType.getSelectedItem() == Connection.ProxyType.NONE) { - this.pnlProxy.setVisible(false); - this.pnlProxyAuth.setVisible(false); - this.pnlProxySettings.setVisible(false); - } - this.pack(); - this.revalidate(); - this.repaint(); - } - private void saveSettings() { MageFrame.getPreferences().put("serverAddress", txtServer.getText().trim()); MageFrame.getPreferences().put("serverPort", txtPort.getText().trim()); MageFrame.getPreferences().put("userName", txtUserName.getText().trim()); MageFrame.getPreferences().put("autoConnect", Boolean.toString(chkAutoConnect.isSelected())); - MageFrame.getPreferences().put("proxyAddress", txtProxyServer.getText().trim()); - MageFrame.getPreferences().put("proxyPort", txtProxyPort.getText().trim()); - MageFrame.getPreferences().put("proxyType", cbProxyType.getSelectedItem().toString()); - MageFrame.getPreferences().put("proxyUsername", txtProxyUserName.getText().trim()); - char[] input = txtPasswordField.getPassword(); - MageFrame.getPreferences().put("proxyPassword", new String(input)); - Arrays.fill(input, '0'); } /** This method is called from within the constructor to @@ -141,19 +106,7 @@ public class ConnectDialog extends MageDialog { btnCancel = new javax.swing.JButton(); chkAutoConnect = new javax.swing.JCheckBox(); jButton1 = new javax.swing.JButton(); - cbProxyType = new javax.swing.JComboBox(); - lblProxyType = new javax.swing.JLabel(); - pnlProxySettings = new javax.swing.JPanel(); - pnlProxy = new javax.swing.JPanel(); - lblProxyServer = new javax.swing.JLabel(); - txtProxyServer = new javax.swing.JTextField(); - lblProxyPort = new javax.swing.JLabel(); - txtProxyPort = new javax.swing.JTextField(); - pnlProxyAuth = new javax.swing.JPanel(); - lblProxyUserName = new javax.swing.JLabel(); - txtProxyUserName = new javax.swing.JTextField(); - lblProxyPassword = new javax.swing.JLabel(); - txtPasswordField = new javax.swing.JPasswordField(); + jProxySettingsButton = new javax.swing.JButton(); lblStatus = new javax.swing.JLabel(); setTitle("Connect"); @@ -204,113 +157,13 @@ public class ConnectDialog extends MageDialog { } }); - cbProxyType.addActionListener(new java.awt.event.ActionListener() { + jProxySettingsButton.setText("Proxy Settings..."); + jProxySettingsButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - cbProxyTypeActionPerformed(evt); + jProxySettingsButtonActionPerformed(evt); } }); - lblProxyType.setLabelFor(cbProxyType); - lblProxyType.setText("Proxy:"); - - pnlProxySettings.setBorder(javax.swing.BorderFactory.createEtchedBorder()); - pnlProxySettings.setMinimumSize(new java.awt.Dimension(0, 0)); - - lblProxyServer.setLabelFor(txtProxyServer); - lblProxyServer.setText("Server:"); - - lblProxyPort.setLabelFor(txtProxyPort); - lblProxyPort.setText("Port:"); - - txtProxyPort.addKeyListener(new java.awt.event.KeyAdapter() { - public void keyTyped(java.awt.event.KeyEvent evt) { - txtProxyPortkeyTyped(evt); - } - }); - - javax.swing.GroupLayout pnlProxyLayout = new javax.swing.GroupLayout(pnlProxy); - pnlProxy.setLayout(pnlProxyLayout); - pnlProxyLayout.setHorizontalGroup( - pnlProxyLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(pnlProxyLayout.createSequentialGroup() - .addContainerGap(28, Short.MAX_VALUE) - .addGroup(pnlProxyLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) - .addComponent(lblProxyPort) - .addComponent(lblProxyServer)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(pnlProxyLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(txtProxyPort, javax.swing.GroupLayout.PREFERRED_SIZE, 71, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(txtProxyServer, javax.swing.GroupLayout.DEFAULT_SIZE, 360, Short.MAX_VALUE)) - .addContainerGap()) - ); - pnlProxyLayout.setVerticalGroup( - pnlProxyLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(pnlProxyLayout.createSequentialGroup() - .addGroup(pnlProxyLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(txtProxyServer, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(lblProxyServer)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(pnlProxyLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(lblProxyPort) - .addComponent(txtProxyPort, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - ); - - lblProxyUserName.setLabelFor(txtProxyUserName); - lblProxyUserName.setText("User Name:"); - - lblProxyPassword.setText("Password:"); - - txtPasswordField.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - txtPasswordFieldActionPerformed(evt); - } - }); - - javax.swing.GroupLayout pnlProxyAuthLayout = new javax.swing.GroupLayout(pnlProxyAuth); - pnlProxyAuth.setLayout(pnlProxyAuthLayout); - pnlProxyAuthLayout.setHorizontalGroup( - pnlProxyAuthLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, pnlProxyAuthLayout.createSequentialGroup() - .addContainerGap() - .addGroup(pnlProxyAuthLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(lblProxyPassword) - .addComponent(lblProxyUserName)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(pnlProxyAuthLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false) - .addComponent(txtPasswordField) - .addComponent(txtProxyUserName, javax.swing.GroupLayout.DEFAULT_SIZE, 358, Short.MAX_VALUE)) - .addContainerGap()) - ); - pnlProxyAuthLayout.setVerticalGroup( - pnlProxyAuthLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, pnlProxyAuthLayout.createSequentialGroup() - .addGroup(pnlProxyAuthLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(txtProxyUserName, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(lblProxyUserName)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 8, Short.MAX_VALUE) - .addGroup(pnlProxyAuthLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(txtPasswordField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(lblProxyPassword)) - .addContainerGap()) - ); - - javax.swing.GroupLayout pnlProxySettingsLayout = new javax.swing.GroupLayout(pnlProxySettings); - pnlProxySettings.setLayout(pnlProxySettingsLayout); - pnlProxySettingsLayout.setHorizontalGroup( - pnlProxySettingsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(pnlProxy, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(pnlProxyAuth, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - ); - pnlProxySettingsLayout.setVerticalGroup( - pnlProxySettingsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(pnlProxySettingsLayout.createSequentialGroup() - .addComponent(pnlProxy, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 30, Short.MAX_VALUE) - .addComponent(pnlProxyAuth, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addContainerGap()) - ); - javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( @@ -320,7 +173,6 @@ public class ConnectDialog extends MageDialog { .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) - .addComponent(lblProxyType) .addComponent(lblPort) .addComponent(lblServer) .addComponent(lblUserName)) @@ -335,14 +187,12 @@ public class ConnectDialog extends MageDialog { .addComponent(txtServer, javax.swing.GroupLayout.DEFAULT_SIZE, 311, Short.MAX_VALUE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jButton1)) - .addComponent(cbProxyType, javax.swing.GroupLayout.PREFERRED_SIZE, 126, javax.swing.GroupLayout.PREFERRED_SIZE))) + .addComponent(jProxySettingsButton))) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() - .addComponent(lblStatus, javax.swing.GroupLayout.DEFAULT_SIZE, 294, Short.MAX_VALUE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(btnConnect) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(btnCancel)) - .addComponent(pnlProxySettings, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + .addComponent(lblStatus, javax.swing.GroupLayout.PREFERRED_SIZE, 195, javax.swing.GroupLayout.PREFERRED_SIZE)) .addContainerGap()) ); layout.setVerticalGroup( @@ -363,18 +213,19 @@ public class ConnectDialog extends MageDialog { .addComponent(lblUserName)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(chkAutoConnect) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(cbProxyType, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(lblProxyType)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(pnlProxySettings, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(btnCancel) - .addComponent(btnConnect) - .addComponent(lblStatus, javax.swing.GroupLayout.PREFERRED_SIZE, 23, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addContainerGap()) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent(jProxySettingsButton) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 24, Short.MAX_VALUE) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(btnCancel) + .addComponent(btnConnect)) + .addContainerGap()) + .addGroup(layout.createSequentialGroup() + .addGap(8, 8, 8) + .addComponent(lblStatus) + .addContainerGap()))) ); pack(); @@ -415,12 +266,37 @@ public class ConnectDialog extends MageDialog { connection.setHost(this.txtServer.getText().trim()); connection.setPort(Integer.valueOf(this.txtPort.getText().trim())); connection.setUsername(this.txtUserName.getText().trim()); - connection.setProxyType((ProxyType) this.cbProxyType.getSelectedItem()); - connection.setProxyHost(this.txtProxyServer.getText().trim()); - connection.setProxyPort(Integer.valueOf(this.txtProxyPort.getText().trim())); - connection.setProxyUsername(this.txtProxyUserName.getText().trim()); - input = txtPasswordField.getPassword(); - connection.setProxyPassword(new String(input)); + + String proxyType = PreferencesDialog.getCachedValue(PreferencesDialog.KEY_PROXY_TYPE, "None"); + ProxyType configProxyType = null; + for (ProxyType pt : Connection.ProxyType.values()) { + if (pt.toString().equals(proxyType)) { + configProxyType = pt; + break; + } + } + + if (configProxyType != null) { + connection.setProxyType(configProxyType); + if (!proxyType.equals("None")) { + String host = PreferencesDialog.getCachedValue(PreferencesDialog.KEY_PROXY_ADDRESS, ""); + String port = PreferencesDialog.getCachedValue(PreferencesDialog.KEY_PROXY_PORT, ""); + if (!host.isEmpty() && !port.isEmpty()) { + connection.setProxyHost(host); + connection.setProxyPort(Integer.valueOf(port)); + String username = PreferencesDialog.getCachedValue(PreferencesDialog.KEY_PROXY_USERNAME, ""); + connection.setProxyUsername(username); + if (PreferencesDialog.getCachedValue(PreferencesDialog.KEY_PROXY_REMEMBER, "false").equals("true")) { + String password = PreferencesDialog.getCachedValue(PreferencesDialog.KEY_PROXY_PSWD, ""); + connection.setProxyPassword(password); + } + } else { + logger.warn("host or\\and port are empty: host=" + host + ", port=" + port); + } + } + } + + logger.debug("connecting: " + connection.getProxyType() + " " + connection.getProxyHost() + " " + connection.getProxyPort()); task = new ConnectTask(); task.execute(); @@ -481,10 +357,6 @@ public class ConnectDialog extends MageDialog { // TODO add your handling code here: }//GEN-LAST:event_chkAutoConnectActionPerformed - private void txtProxyPortkeyTyped(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_txtProxyPortkeyTyped - // TODO add your handling code here: - }//GEN-LAST:event_txtProxyPortkeyTyped - private void findPublicServerActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed BufferedReader in = null; try { @@ -525,38 +397,22 @@ public class ConnectDialog extends MageDialog { } }//GEN-LAST:event_jButton1ActionPerformed - private void cbProxyTypeActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cbProxyTypeActionPerformed - this.showProxySettings(); - }//GEN-LAST:event_cbProxyTypeActionPerformed - - private void txtPasswordFieldActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_txtPasswordFieldActionPerformed - // TODO add your handling code here: - }//GEN-LAST:event_txtPasswordFieldActionPerformed + private void jProxySettingsButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jProxySettingsButtonActionPerformed + PreferencesDialog.main(new String[]{PreferencesDialog.OPEN_CONNECTION_TAB}); + }//GEN-LAST:event_jProxySettingsButtonActionPerformed // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JButton btnCancel; private javax.swing.JButton btnConnect; - private javax.swing.JComboBox cbProxyType; private javax.swing.JCheckBox chkAutoConnect; private javax.swing.JButton jButton1; + private javax.swing.JButton jProxySettingsButton; private javax.swing.JLabel lblPort; - private javax.swing.JLabel lblProxyPassword; - private javax.swing.JLabel lblProxyPort; - private javax.swing.JLabel lblProxyServer; - private javax.swing.JLabel lblProxyType; - private javax.swing.JLabel lblProxyUserName; private javax.swing.JLabel lblServer; private javax.swing.JLabel lblStatus; private javax.swing.JLabel lblUserName; - private javax.swing.JPanel pnlProxy; - private javax.swing.JPanel pnlProxyAuth; - private javax.swing.JPanel pnlProxySettings; - private javax.swing.JPasswordField txtPasswordField; private javax.swing.JTextField txtPort; - private javax.swing.JTextField txtProxyPort; - private javax.swing.JTextField txtProxyServer; - private javax.swing.JTextField txtProxyUserName; private javax.swing.JTextField txtServer; private javax.swing.JTextField txtUserName; // End of variables declaration//GEN-END:variables diff --git a/Mage.Client/src/main/java/mage/client/dialog/PreferencesDialog.form b/Mage.Client/src/main/java/mage/client/dialog/PreferencesDialog.form index 0f79fd64d70..528736e18eb 100644 --- a/Mage.Client/src/main/java/mage/client/dialog/PreferencesDialog.form +++ b/Mage.Client/src/main/java/mage/client/dialog/PreferencesDialog.form @@ -23,9 +23,9 @@ - + - + @@ -64,9 +64,12 @@ - + - + + + + @@ -76,7 +79,9 @@ - + + + @@ -86,7 +91,11 @@ - + + + + + @@ -100,7 +109,7 @@ - + @@ -135,6 +144,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -205,7 +264,7 @@ - + @@ -387,7 +446,7 @@ - + @@ -397,7 +456,11 @@ - + + + + + @@ -422,7 +485,7 @@ - + @@ -471,6 +534,216 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Mage.Client/src/main/java/mage/client/dialog/PreferencesDialog.java b/Mage.Client/src/main/java/mage/client/dialog/PreferencesDialog.java index 2fe1faa72aa..8873d6f4754 100644 --- a/Mage.Client/src/main/java/mage/client/dialog/PreferencesDialog.java +++ b/Mage.Client/src/main/java/mage/client/dialog/PreferencesDialog.java @@ -33,18 +33,18 @@ */ package mage.client.dialog; +import mage.client.MageFrame; +import mage.client.util.Config; +import mage.remote.Connection; + +import javax.swing.*; import java.io.File; import java.util.HashMap; import java.util.Map; import java.util.prefs.BackingStoreException; - -import mage.client.MageFrame; - -import javax.swing.*; import java.util.prefs.Preferences; import static mage.client.util.PhaseManager.*; -import static mage.client.util.PhaseManager.END_OF_TURN_OTHERS; /** * Preferences dialog. @@ -60,10 +60,19 @@ public class PreferencesDialog extends javax.swing.JDialog { public static final String KEY_CARD_IMAGES_PATH = "cardImagesPath"; public static final String KEY_CARD_IMAGES_CHECK = "cardImagesCheck"; + public static final String KEY_PROXY_ADDRESS = "proxyAddress"; + public static final String KEY_PROXY_PORT = "proxyPort"; + public static final String KEY_PROXY_USERNAME = "proxyUsername"; + public static final String KEY_PROXY_REMEMBER = "proxyRemember"; + public static final String KEY_PROXY_TYPE = "proxyType"; + public static final String KEY_PROXY_PSWD = "proxyPassword"; + private static Map cache = new HashMap(); private static final Boolean UPDATE_CACHE_POLICY = Boolean.TRUE; - private final JFileChooser fc = new JFileChooser(); + public static final String OPEN_CONNECTION_TAB = "Open-Connection-Tab"; + + private final JFileChooser fc = new JFileChooser(); { fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); @@ -74,6 +83,7 @@ public class PreferencesDialog extends javax.swing.JDialog { super(parent, modal); initComponents(); imageFolderPath.setEditable(false); + cbProxyType.setModel(new DefaultComboBoxModel(Connection.ProxyType.values())); } /** This method is called from within the constructor to @@ -88,10 +98,10 @@ public class PreferencesDialog extends javax.swing.JDialog { jTabbedPane1 = new javax.swing.JTabbedPane(); jPanel1 = new javax.swing.JPanel(); jPanel3 = new javax.swing.JPanel(); - jPanel6 = new javax.swing.JPanel(); showToolTipsInHand = new javax.swing.JCheckBox(); - nonLandPermanentsInOnePile = new javax.swing.JCheckBox(); displayBigCardsInHand = new javax.swing.JCheckBox(); + jPanel7 = new javax.swing.JPanel(); + nonLandPermanentsInOnePile = new javax.swing.JCheckBox(); jPanel2 = new javax.swing.JPanel(); jLabel1 = new javax.swing.JLabel(); jLabel2 = new javax.swing.JLabel(); @@ -123,13 +133,28 @@ public class PreferencesDialog extends javax.swing.JDialog { imageFolderPath = new javax.swing.JTextField(); browseButton = new javax.swing.JButton(); checkForNewImages = new javax.swing.JCheckBox(); + jPanel6 = new javax.swing.JPanel(); + lblProxyType = new javax.swing.JLabel(); + cbProxyType = new javax.swing.JComboBox(); + pnlProxySettings = new javax.swing.JPanel(); + pnlProxy = new javax.swing.JPanel(); + lblProxyServer = new javax.swing.JLabel(); + txtProxyServer = new javax.swing.JTextField(); + lblProxyPort = new javax.swing.JLabel(); + txtProxyPort = new javax.swing.JTextField(); + lblProxyUserName = new javax.swing.JLabel(); + txtProxyUserName = new javax.swing.JTextField(); + lblProxyPassword = new javax.swing.JLabel(); + txtPasswordField = new javax.swing.JPasswordField(); + rememberPswd = new javax.swing.JCheckBox(); + jLabel11 = new javax.swing.JLabel(); saveButton = new javax.swing.JButton(); exitButton = new javax.swing.JButton(); setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); setTitle("Preferences"); - jPanel3.setBorder(javax.swing.BorderFactory.createTitledBorder("Hand")); + jPanel3.setBorder(javax.swing.BorderFactory.createTitledBorder(javax.swing.BorderFactory.createEtchedBorder(), "Hand")); showToolTipsInHand.setSelected(true); showToolTipsInHand.setText("Show tooltips"); @@ -146,11 +171,6 @@ public class PreferencesDialog extends javax.swing.JDialog { } }); - jPanel6.setBorder(javax.swing.BorderFactory.createTitledBorder("Battlefield")); - - nonLandPermanentsInOnePile.setSelected(false); - nonLandPermanentsInOnePile.setText("Put non-land permanents in one pile."); - javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3); jPanel3.setLayout(jPanel3Layout); jPanel3Layout.setHorizontalGroup( @@ -160,7 +180,7 @@ public class PreferencesDialog extends javax.swing.JDialog { .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(showToolTipsInHand) .addComponent(displayBigCardsInHand)) - .addContainerGap(170, Short.MAX_VALUE)) + .addContainerGap(161, Short.MAX_VALUE)) ); jPanel3Layout.setVerticalGroup( jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) @@ -171,40 +191,56 @@ public class PreferencesDialog extends javax.swing.JDialog { .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); + jPanel7.setBorder(javax.swing.BorderFactory.createTitledBorder(javax.swing.BorderFactory.createEtchedBorder(), "Battlefield")); + + nonLandPermanentsInOnePile.setSelected(true); + nonLandPermanentsInOnePile.setLabel("Put non-land permanents in one pile"); + nonLandPermanentsInOnePile.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + nonLandPermanentsInOnePileActionPerformed(evt); + } + }); + + javax.swing.GroupLayout jPanel7Layout = new javax.swing.GroupLayout(jPanel7); + jPanel7.setLayout(jPanel7Layout); + jPanel7Layout.setHorizontalGroup( + jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel7Layout.createSequentialGroup() + .addContainerGap() + .addComponent(nonLandPermanentsInOnePile) + .addContainerGap(199, Short.MAX_VALUE)) + ); + jPanel7Layout.setVerticalGroup( + jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel7Layout.createSequentialGroup() + .addComponent(nonLandPermanentsInOnePile) + .addContainerGap(30, Short.MAX_VALUE)) + ); + + nonLandPermanentsInOnePile.getAccessibleContext().setAccessibleName("nonLandPermanentsInOnePile"); + javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1); jPanel1.setLayout(jPanel1Layout); jPanel1Layout.setHorizontalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(jPanel3, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(jPanel6, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - ); + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup() + .addContainerGap() + .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) + .addComponent(jPanel7, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(jPanel3, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + .addContainerGap()) + ); jPanel1Layout.setVerticalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel1Layout.createSequentialGroup() .addContainerGap() .addComponent(jPanel3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addContainerGap() - .addComponent(jPanel6, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addContainerGap(173, Short.MAX_VALUE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent(jPanel7, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addContainerGap(84, Short.MAX_VALUE)) ); - javax.swing.GroupLayout jPanel6Layout = new javax.swing.GroupLayout(jPanel6); - jPanel6.setLayout(jPanel6Layout); - jPanel6Layout.setHorizontalGroup( - jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(jPanel6Layout.createSequentialGroup() - .addContainerGap() - .addGroup(jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(nonLandPermanentsInOnePile) - ) - .addContainerGap(170, Short.MAX_VALUE)) - ); - jPanel6Layout.setVerticalGroup( - jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(jPanel6Layout.createSequentialGroup() - .addComponent(nonLandPermanentsInOnePile) - .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - ); + jPanel7.getAccessibleContext().setAccessibleName("Battlefield"); jTabbedPane1.addTab("Main", jPanel1); @@ -235,48 +271,48 @@ public class PreferencesDialog extends javax.swing.JDialog { .addGroup(jPanel2Layout.createSequentialGroup() .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel2Layout.createSequentialGroup() - .addGap(20, 20, 20) - .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(jPanel2Layout.createSequentialGroup() - .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(jLabel2) - .addComponent(jLabel5) - .addComponent(jLabel6) - .addComponent(jLabel7) - .addComponent(jLabel8)) - .addGap(77, 77, 77) - .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(jPanel2Layout.createSequentialGroup() - .addGap(2, 2, 2) - .addComponent(jLabel9) - .addGap(32, 32, 32) - .addComponent(jLabel10)) - .addGroup(jPanel2Layout.createSequentialGroup() - .addGap(13, 13, 13) - .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) - .addComponent(checkBoxDrawYou) - .addComponent(checkBoxUpkeepYou) - .addComponent(checkBoxMainYou) - .addComponent(checkBoxBeforeCYou) - .addComponent(checkBoxEndOfCYou) - .addComponent(checkBoxMain2You) - .addComponent(checkBoxEndTurnYou)) - .addGap(78, 78, 78) - .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) - .addComponent(checkBoxUpkeepOthers) - .addComponent(checkBoxBeforeCOthers) - .addComponent(checkBoxMainOthers) - .addComponent(checkBoxEndOfCOthers) - .addComponent(checkBoxDrawOthers) - .addComponent(checkBoxMain2Others) - .addComponent(checkBoxEndTurnOthers))))) - .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false) - .addComponent(jLabel4, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(jLabel3, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))) + .addGap(20, 20, 20) + .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel2Layout.createSequentialGroup() + .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jLabel2) + .addComponent(jLabel5) + .addComponent(jLabel6) + .addComponent(jLabel7) + .addComponent(jLabel8)) + .addGap(77, 77, 77) + .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel2Layout.createSequentialGroup() + .addGap(2, 2, 2) + .addComponent(jLabel9) + .addGap(32, 32, 32) + .addComponent(jLabel10)) + .addGroup(jPanel2Layout.createSequentialGroup() + .addGap(13, 13, 13) + .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) + .addComponent(checkBoxDrawYou) + .addComponent(checkBoxUpkeepYou) + .addComponent(checkBoxMainYou) + .addComponent(checkBoxBeforeCYou) + .addComponent(checkBoxEndOfCYou) + .addComponent(checkBoxMain2You) + .addComponent(checkBoxEndTurnYou)) + .addGap(78, 78, 78) + .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) + .addComponent(checkBoxUpkeepOthers) + .addComponent(checkBoxBeforeCOthers) + .addComponent(checkBoxMainOthers) + .addComponent(checkBoxEndOfCOthers) + .addComponent(checkBoxDrawOthers) + .addComponent(checkBoxMain2Others) + .addComponent(checkBoxEndTurnOthers))))) + .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false) + .addComponent(jLabel4, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(jLabel3, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))) .addGroup(jPanel2Layout.createSequentialGroup() - .addContainerGap() - .addComponent(jLabel1))) - .addContainerGap(109, Short.MAX_VALUE)) + .addContainerGap() + .addComponent(jLabel1))) + .addContainerGap(100, Short.MAX_VALUE)) ); jPanel2Layout.setVerticalGroup( jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) @@ -284,19 +320,19 @@ public class PreferencesDialog extends javax.swing.JDialog { .addContainerGap() .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) .addGroup(jPanel2Layout.createSequentialGroup() - .addComponent(jLabel10) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addComponent(checkBoxUpkeepOthers)) + .addComponent(jLabel10) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent(checkBoxUpkeepOthers)) .addGroup(jPanel2Layout.createSequentialGroup() - .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) - .addGroup(jPanel2Layout.createSequentialGroup() - .addComponent(jLabel1) - .addGap(20, 20, 20)) - .addComponent(jLabel9)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) - .addComponent(checkBoxUpkeepYou) - .addComponent(jLabel2)))) + .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) + .addGroup(jPanel2Layout.createSequentialGroup() + .addComponent(jLabel1) + .addGap(20, 20, 20)) + .addComponent(jLabel9)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) + .addComponent(checkBoxUpkeepYou) + .addComponent(jLabel2)))) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) .addComponent(jLabel3) @@ -309,13 +345,13 @@ public class PreferencesDialog extends javax.swing.JDialog { .addComponent(checkBoxMainOthers)) .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel2Layout.createSequentialGroup() - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(jLabel5, javax.swing.GroupLayout.Alignment.TRAILING) - .addComponent(checkBoxBeforeCYou, javax.swing.GroupLayout.Alignment.TRAILING))) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jLabel5, javax.swing.GroupLayout.Alignment.TRAILING) + .addComponent(checkBoxBeforeCYou, javax.swing.GroupLayout.Alignment.TRAILING))) .addGroup(jPanel2Layout.createSequentialGroup() - .addGap(6, 6, 6) - .addComponent(checkBoxBeforeCOthers))) + .addGap(6, 6, 6) + .addComponent(checkBoxBeforeCOthers))) .addGap(7, 7, 7) .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) .addComponent(jLabel6) @@ -336,7 +372,7 @@ public class PreferencesDialog extends javax.swing.JDialog { jTabbedPane1.addTab("Phases", jPanel2); - jPanel5.setBorder(javax.swing.BorderFactory.createTitledBorder("Card images location:")); + jPanel5.setBorder(javax.swing.BorderFactory.createTitledBorder(javax.swing.BorderFactory.createEtchedBorder(), "Card images location:")); useDefaultImageFolder.setText("use default"); useDefaultImageFolder.addActionListener(new java.awt.event.ActionListener() { @@ -361,17 +397,17 @@ public class PreferencesDialog extends javax.swing.JDialog { .addGroup(jPanel5Layout.createSequentialGroup() .addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel5Layout.createSequentialGroup() - .addContainerGap() - .addComponent(useDefaultImageFolder)) + .addContainerGap() + .addComponent(useDefaultImageFolder)) .addGroup(jPanel5Layout.createSequentialGroup() - .addGap(19, 19, 19) - .addComponent(imageFolderPath, javax.swing.GroupLayout.PREFERRED_SIZE, 284, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addComponent(browseButton)) + .addGap(19, 19, 19) + .addComponent(imageFolderPath, javax.swing.GroupLayout.PREFERRED_SIZE, 284, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent(browseButton)) .addGroup(jPanel5Layout.createSequentialGroup() - .addContainerGap() - .addComponent(checkForNewImages))) - .addContainerGap(19, Short.MAX_VALUE)) + .addContainerGap() + .addComponent(checkForNewImages))) + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); jPanel5Layout.setVerticalGroup( jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) @@ -384,7 +420,7 @@ public class PreferencesDialog extends javax.swing.JDialog { .addComponent(browseButton)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(checkForNewImages) - .addContainerGap(75, Short.MAX_VALUE)) + .addContainerGap(45, Short.MAX_VALUE)) ); javax.swing.GroupLayout jPanel4Layout = new javax.swing.GroupLayout(jPanel4); @@ -401,11 +437,151 @@ public class PreferencesDialog extends javax.swing.JDialog { .addGroup(jPanel4Layout.createSequentialGroup() .addContainerGap() .addComponent(jPanel5, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addContainerGap(91, Short.MAX_VALUE)) + .addContainerGap(92, Short.MAX_VALUE)) ); jTabbedPane1.addTab("Images", jPanel4); + lblProxyType.setText("Proxy:"); + + cbProxyType.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + cbProxyTypeActionPerformed(evt); + } + }); + + pnlProxySettings.setBorder(javax.swing.BorderFactory.createEtchedBorder()); + + lblProxyServer.setText("Server:"); + + lblProxyPort.setText("Port:"); + + txtProxyPort.addKeyListener(new java.awt.event.KeyAdapter() { + public void keyTyped(java.awt.event.KeyEvent evt) { + txtProxyPortkeyTyped(evt); + } + }); + + lblProxyUserName.setText("User Name:"); + + lblProxyPassword.setText("Password:"); + + txtPasswordField.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + txtPasswordFieldActionPerformed(evt); + } + }); + + rememberPswd.setText("Remember Password"); + rememberPswd.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + rememberPswdActionPerformed(evt); + } + }); + + jLabel11.setFont(new java.awt.Font("Tahoma", 2, 10)); + jLabel11.setText("Note: password won't be encrypted!"); + + javax.swing.GroupLayout pnlProxyLayout = new javax.swing.GroupLayout(pnlProxy); + pnlProxy.setLayout(pnlProxyLayout); + pnlProxyLayout.setHorizontalGroup( + pnlProxyLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(pnlProxyLayout.createSequentialGroup() + .addGap(29, 29, 29) + .addComponent(rememberPswd) + .addGap(18, 18, 18) + .addComponent(jLabel11) + .addGap(34, 34, 34)) + .addGroup(pnlProxyLayout.createSequentialGroup() + .addContainerGap() + .addGroup(pnlProxyLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(lblProxyPort) + .addComponent(lblProxyPassword) + .addComponent(lblProxyServer) + .addComponent(lblProxyUserName)) + .addGap(19, 19, 19) + .addGroup(pnlProxyLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(txtProxyPort, javax.swing.GroupLayout.PREFERRED_SIZE, 58, javax.swing.GroupLayout.PREFERRED_SIZE) + .addGroup(pnlProxyLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false) + .addComponent(txtPasswordField, javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(txtProxyUserName, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, 148, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addComponent(txtProxyServer, javax.swing.GroupLayout.DEFAULT_SIZE, 295, Short.MAX_VALUE)) + .addContainerGap()) + ); + pnlProxyLayout.setVerticalGroup( + pnlProxyLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(pnlProxyLayout.createSequentialGroup() + .addGap(6, 6, 6) + .addGroup(pnlProxyLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(txtProxyServer, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(lblProxyServer)) + .addGap(8, 8, 8) + .addGroup(pnlProxyLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(lblProxyPort) + .addComponent(txtProxyPort, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(pnlProxyLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(txtProxyUserName, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(lblProxyUserName)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(pnlProxyLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(txtPasswordField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(lblProxyPassword)) + .addGap(18, 18, 18) + .addGroup(pnlProxyLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(rememberPswd) + .addComponent(jLabel11)) + .addContainerGap(25, Short.MAX_VALUE)) + ); + + javax.swing.GroupLayout pnlProxySettingsLayout = new javax.swing.GroupLayout(pnlProxySettings); + pnlProxySettings.setLayout(pnlProxySettingsLayout); + pnlProxySettingsLayout.setHorizontalGroup( + pnlProxySettingsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(pnlProxySettingsLayout.createSequentialGroup() + .addContainerGap() + .addComponent(pnlProxy, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addContainerGap()) + ); + pnlProxySettingsLayout.setVerticalGroup( + pnlProxySettingsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(pnlProxySettingsLayout.createSequentialGroup() + .addComponent(pnlProxy, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addContainerGap()) + ); + + javax.swing.GroupLayout jPanel6Layout = new javax.swing.GroupLayout(jPanel6); + jPanel6.setLayout(jPanel6Layout); + jPanel6Layout.setHorizontalGroup( + jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel6Layout.createSequentialGroup() + .addGroup(jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel6Layout.createSequentialGroup() + .addGap(40, 40, 40) + .addComponent(lblProxyType) + .addGap(18, 18, 18) + .addComponent(cbProxyType, javax.swing.GroupLayout.PREFERRED_SIZE, 126, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addGroup(jPanel6Layout.createSequentialGroup() + .addContainerGap() + .addComponent(pnlProxySettings, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))) + .addContainerGap()) + ); + jPanel6Layout.setVerticalGroup( + jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel6Layout.createSequentialGroup() + .addContainerGap() + .addGroup(jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(lblProxyType) + .addComponent(cbProxyType, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(pnlProxySettings, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addContainerGap(40, Short.MAX_VALUE)) + ); + + pnlProxySettings.getAccessibleContext().setAccessibleDescription(""); + + jTabbedPane1.addTab("Connection", jPanel6); + saveButton.setLabel("Save"); saveButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { @@ -424,9 +600,9 @@ public class PreferencesDialog extends javax.swing.JDialog { getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(jTabbedPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 448, Short.MAX_VALUE) + .addComponent(jTabbedPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 439, Short.MAX_VALUE) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() - .addContainerGap(320, Short.MAX_VALUE) + .addContainerGap(311, Short.MAX_VALUE) .addComponent(saveButton) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(exitButton, javax.swing.GroupLayout.PREFERRED_SIZE, 55, javax.swing.GroupLayout.PREFERRED_SIZE) @@ -466,7 +642,29 @@ public class PreferencesDialog extends javax.swing.JDialog { save(prefs, dialog.displayBigCardsInHand, KEY_HAND_USE_BIG_CARDS, "true", "false", UPDATE_CACHE_POLICY); save(prefs, dialog.showToolTipsInHand, KEY_HAND_SHOW_TOOLTIPS, "true", "false", UPDATE_CACHE_POLICY); save(prefs, dialog.nonLandPermanentsInOnePile, KEY_PERMANENTS_IN_ONE_PILE, "true", "false", UPDATE_CACHE_POLICY); - saveImagesPath(prefs); + + // connection + //MageFrame.getPreferences().put("proxyAddress", txtProxyServer.getText().trim()); + //MageFrame.getPreferences().put("proxyPort", txtProxyPort.getText().trim()); + //MageFrame.getPreferences().put("proxyType", cbProxyType.getSelectedItem().toString()); + //MageFrame.getPreferences().put("proxyUsername", txtProxyUserName.getText().trim()); + //char[] input = txtPasswordField.getPassword(); + //MageFrame.getPreferences().put("proxyPassword", new String(input)); + //Arrays.fill(input, '0'); + + //TODO: !!!!!!!!!!!!! + // connection + /*dialog.cbProxyType.setSelectedItem(Connection.ProxyType.valueOf(MageFrame.getPreferences().get(KEY_PROXY_TYPE, "NONE").toUpperCase())); + load(prefs, dialog.txtProxyServer, KEY_PROXY_ADDRESS, Config.serverName); + load(prefs, dialog.txtProxyPort, KEY_PROXY_PORT, Integer.toString(Config.port)); + load(prefs, dialog.txtProxyUserName, KEY_PROXY_USERNAME, ""); + load(prefs, dialog.rememberPswd, KEY_PROXY_REMEMBER, "true", "false"); + if (dialog.rememberPswd.isSelected()) { + load(prefs, dialog.txtPasswordField, KEY_PROXY_PSWD, ""); + }*/ + + // images + saveImagesPath(prefs); try { prefs.flush(); } catch (BackingStoreException ex) { @@ -518,41 +716,104 @@ public class PreferencesDialog extends javax.swing.JDialog { } }//GEN-LAST:event_browseButtonActionPerformed + private void cbProxyTypeActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cbProxyTypeActionPerformed + this.showProxySettings(); + }//GEN-LAST:event_cbProxyTypeActionPerformed + + private void txtPasswordFieldActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_txtPasswordFieldActionPerformed + }//GEN-LAST:event_txtPasswordFieldActionPerformed + + private void txtProxyPortkeyTyped(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_txtProxyPortkeyTyped + }//GEN-LAST:event_txtProxyPortkeyTyped + + private void nonLandPermanentsInOnePileActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_nonLandPermanentsInOnePileActionPerformed + }//GEN-LAST:event_nonLandPermanentsInOnePileActionPerformed + + private void rememberPswdActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_rememberPswdActionPerformed + }//GEN-LAST:event_rememberPswdActionPerformed + + private void showProxySettings() { + if (cbProxyType.getSelectedItem() == Connection.ProxyType.SOCKS) { + this.pnlProxy.setVisible(true); + this.pnlProxySettings.setVisible(true); + } + else if (cbProxyType.getSelectedItem() == Connection.ProxyType.HTTP) { + this.pnlProxy.setVisible(true); + this.pnlProxySettings.setVisible(true); + } + else if (cbProxyType.getSelectedItem() == Connection.ProxyType.NONE) { + this.pnlProxy.setVisible(false); + this.pnlProxySettings.setVisible(false); + } + this.pack(); + this.repaint(); + } + /** * @param args the command line arguments */ public static void main(String args[]) { + int param = 0; + if (args.length > 0) { + String param1 = args[0]; + if (param1.equals(OPEN_CONNECTION_TAB)) { + param = 3; + } + } + final int openedTab = param; java.awt.EventQueue.invokeLater(new Runnable() { - public void run() { - if (!dialog.isVisible()) { - Preferences prefs = MageFrame.getPreferences(); - load(prefs, dialog.checkBoxUpkeepYou, UPKEEP_YOU); - load(prefs, dialog.checkBoxDrawYou, DRAW_YOU); - load(prefs, dialog.checkBoxMainYou, MAIN_YOU); - load(prefs, dialog.checkBoxBeforeCYou, BEFORE_COMBAT_YOU); - load(prefs, dialog.checkBoxEndOfCYou, END_OF_COMBAT_YOU); - load(prefs, dialog.checkBoxMain2You, MAIN_2_YOU); - load(prefs, dialog.checkBoxEndTurnYou, END_OF_TURN_YOU); + public void run() { + if (!dialog.isVisible()) { + Preferences prefs = MageFrame.getPreferences(); + load(prefs, dialog.checkBoxUpkeepYou, UPKEEP_YOU); + load(prefs, dialog.checkBoxDrawYou, DRAW_YOU); + load(prefs, dialog.checkBoxMainYou, MAIN_YOU); + load(prefs, dialog.checkBoxBeforeCYou, BEFORE_COMBAT_YOU); + load(prefs, dialog.checkBoxEndOfCYou, END_OF_COMBAT_YOU); + load(prefs, dialog.checkBoxMain2You, MAIN_2_YOU); + load(prefs, dialog.checkBoxEndTurnYou, END_OF_TURN_YOU); - load(prefs, dialog.checkBoxUpkeepOthers, UPKEEP_OTHERS); - load(prefs, dialog.checkBoxDrawOthers, DRAW_OTHERS); - load(prefs, dialog.checkBoxMainOthers, MAIN_OTHERS); - load(prefs, dialog.checkBoxBeforeCOthers, BEFORE_COMBAT_OTHERS); - load(prefs, dialog.checkBoxEndOfCOthers, END_OF_COMBAT_OTHERS); - load(prefs, dialog.checkBoxMain2Others, MAIN_2_OTHERS); - load(prefs, dialog.checkBoxEndTurnOthers, END_OF_TURN_OTHERS); - load(prefs, dialog.displayBigCardsInHand, KEY_HAND_USE_BIG_CARDS, "true"); - load(prefs, dialog.showToolTipsInHand, KEY_HAND_SHOW_TOOLTIPS, "true"); + load(prefs, dialog.checkBoxUpkeepOthers, UPKEEP_OTHERS); + load(prefs, dialog.checkBoxDrawOthers, DRAW_OTHERS); + load(prefs, dialog.checkBoxMainOthers, MAIN_OTHERS); + load(prefs, dialog.checkBoxBeforeCOthers, BEFORE_COMBAT_OTHERS); + load(prefs, dialog.checkBoxEndOfCOthers, END_OF_COMBAT_OTHERS); + load(prefs, dialog.checkBoxMain2Others, MAIN_2_OTHERS); + load(prefs, dialog.checkBoxEndTurnOthers, END_OF_TURN_OTHERS); + load(prefs, dialog.displayBigCardsInHand, KEY_HAND_USE_BIG_CARDS, "true"); + load(prefs, dialog.showToolTipsInHand, KEY_HAND_SHOW_TOOLTIPS, "true"); load(prefs, dialog.nonLandPermanentsInOnePile, KEY_PERMANENTS_IN_ONE_PILE, "true"); - loadImagesPath(prefs); - dialog.setLocation(300, 200); - dialog.reset(); - dialog.setVisible(true); - } else { - dialog.requestFocus(); - } - } - }); + + // connection + dialog.cbProxyType.setSelectedItem(Connection.ProxyType.valueOf(MageFrame.getPreferences().get(KEY_PROXY_TYPE, "NONE").toUpperCase())); + load(prefs, dialog.txtProxyServer, KEY_PROXY_ADDRESS, Config.serverName); + load(prefs, dialog.txtProxyPort, KEY_PROXY_PORT, Integer.toString(Config.port)); + load(prefs, dialog.txtProxyUserName, KEY_PROXY_USERNAME, ""); + load(prefs, dialog.rememberPswd, KEY_PROXY_REMEMBER, "true", "false"); + if (dialog.rememberPswd.isSelected()) { + load(prefs, dialog.txtPasswordField, KEY_PROXY_PSWD, ""); + } + + // images + loadImagesPath(prefs); + + dialog.setLocation(300, 200); + dialog.reset(); + + try { + if (openedTab > 0) { + dialog.jTabbedPane1.setSelectedIndex(3); + } + } catch (Exception e) { + e.printStackTrace(); + } + + dialog.setVisible(true); + } else { + dialog.requestFocus(); + } + } + }); } private static void loadImagesPath(Preferences prefs) { @@ -591,6 +852,16 @@ public class PreferencesDialog extends javax.swing.JDialog { checkBox.setSelected(prop.equals(yesValue)); } + private static void load(Preferences prefs, JCheckBox checkBox, String propName, String yesValue, String defaultValue) { + String prop = prefs.get(propName, defaultValue); + checkBox.setSelected(prop.equals(yesValue)); + } + + private static void load(Preferences prefs, JTextField field, String propName, String defaultValue) { + String prop = prefs.get(propName, defaultValue); + field.setText(prop); + } + private static void load(Preferences prefs, JCheckBox checkBox, String propName) { load(prefs, checkBox, propName, PHASE_ON); } @@ -628,6 +899,7 @@ public class PreferencesDialog extends javax.swing.JDialog { // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JButton browseButton; + private javax.swing.JComboBox cbProxyType; private javax.swing.JCheckBox checkBoxBeforeCOthers; private javax.swing.JCheckBox checkBoxBeforeCYou; private javax.swing.JCheckBox checkBoxDrawOthers; @@ -648,6 +920,7 @@ public class PreferencesDialog extends javax.swing.JDialog { private javax.swing.JTextField imageFolderPath; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel10; + private javax.swing.JLabel jLabel11; private javax.swing.JLabel jLabel2; private javax.swing.JLabel jLabel3; private javax.swing.JLabel jLabel4; @@ -661,12 +934,25 @@ public class PreferencesDialog extends javax.swing.JDialog { private javax.swing.JPanel jPanel3; private javax.swing.JPanel jPanel4; private javax.swing.JPanel jPanel5; - private javax.swing.JPanel jPanel6; + private javax.swing.JPanel jPanel6; + private javax.swing.JPanel jPanel7; private javax.swing.JTabbedPane jTabbedPane1; + private javax.swing.JLabel lblProxyPassword; + private javax.swing.JLabel lblProxyPort; + private javax.swing.JLabel lblProxyServer; + private javax.swing.JLabel lblProxyType; + private javax.swing.JLabel lblProxyUserName; + private javax.swing.JCheckBox nonLandPermanentsInOnePile; + private javax.swing.JPanel pnlProxy; + private javax.swing.JPanel pnlProxySettings; + private javax.swing.JCheckBox rememberPswd; private javax.swing.JButton saveButton; private javax.swing.JCheckBox showToolTipsInHand; + private javax.swing.JPasswordField txtPasswordField; + private javax.swing.JTextField txtProxyPort; + private javax.swing.JTextField txtProxyServer; + private javax.swing.JTextField txtProxyUserName; private javax.swing.JCheckBox useDefaultImageFolder; - private javax.swing.JCheckBox nonLandPermanentsInOnePile; // End of variables declaration//GEN-END:variables private static final PreferencesDialog dialog = new PreferencesDialog(new javax.swing.JFrame(), true);