From 800c0d20fcf4709e6414167e72a4188b7f3a9976 Mon Sep 17 00:00:00 2001 From: Oleg Agafonov Date: Thu, 28 Dec 2017 22:39:10 +0400 Subject: [PATCH] UI: added search flag button to connection dialog; --- .../mage/client/dialog/ConnectDialog.form | 138 +++++++++++++----- .../mage/client/dialog/ConnectDialog.java | 131 +++++++++++++---- .../src/main/resources/buttons/search_128.png | Bin 0 -> 4671 bytes .../src/main/resources/buttons/search_24.png | Bin 0 -> 595 bytes .../src/main/resources/buttons/search_32.png | Bin 0 -> 831 bytes .../src/main/resources/buttons/search_64.png | Bin 0 -> 2062 bytes 6 files changed, 205 insertions(+), 64 deletions(-) create mode 100644 Mage.Client/src/main/resources/buttons/search_128.png create mode 100644 Mage.Client/src/main/resources/buttons/search_24.png create mode 100644 Mage.Client/src/main/resources/buttons/search_32.png create mode 100644 Mage.Client/src/main/resources/buttons/search_64.png 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 14f48baf08e..1202ae50beb 100644 --- a/Mage.Client/src/main/java/mage/client/dialog/ConnectDialog.form +++ b/Mage.Client/src/main/java/mage/client/dialog/ConnectDialog.form @@ -26,17 +26,29 @@ - - - - - - + + + + + + + + + + + + + + + + + + + - - + @@ -48,16 +60,22 @@ - - + + + + + + + + + - - + @@ -67,14 +85,11 @@ - + - - - - + @@ -97,29 +112,29 @@ - - - + + + - - - + + + - - - + + + - - - - + + + + - + @@ -196,12 +211,6 @@ - - - - - - @@ -356,5 +365,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 14b79ce7a2d..372ff523ccb 100644 --- a/Mage.Client/src/main/java/mage/client/dialog/ConnectDialog.java +++ b/Mage.Client/src/main/java/mage/client/dialog/ConnectDialog.java @@ -51,14 +51,21 @@ import java.net.URL; import java.net.UnknownHostException; import java.util.ArrayList; import java.util.Arrays; +import java.util.HashSet; +import java.util.LinkedHashMap; import java.util.List; +import java.util.Map; +import java.util.Set; import java.util.concurrent.CancellationException; import java.util.concurrent.ExecutionException; import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; +import javax.swing.DefaultComboBoxModel; import javax.swing.JLayeredPane; import javax.swing.JOptionPane; import javax.swing.SwingWorker; +import mage.choices.Choice; +import mage.choices.ChoiceImpl; import mage.client.MageFrame; import static mage.client.dialog.PreferencesDialog.KEY_CONNECTION_URL_SERVER_LIST; import static mage.client.dialog.PreferencesDialog.KEY_CONNECT_AUTO_CONNECT; @@ -152,7 +159,6 @@ public class ConnectDialog extends MageDialog { lblPassword = new javax.swing.JLabel(); txtPassword = new javax.swing.JPasswordField(); lblFlag = new javax.swing.JLabel(); - cbFlag = new mage.client.util.gui.countryBox.CountryComboBox(); chkAutoConnect = new javax.swing.JCheckBox(); chkForceUpdateDB = new javax.swing.JCheckBox(); jProxySettingsButton = new javax.swing.JButton(); @@ -165,6 +171,10 @@ public class ConnectDialog extends MageDialog { btnFind2 = new javax.swing.JButton(); btnFind3 = new javax.swing.JButton(); lblFastConnect = new javax.swing.JLabel(); + panelFlag = new javax.swing.JPanel(); + cbFlag = new mage.client.util.gui.countryBox.CountryComboBox(); + filler1 = new javax.swing.Box.Filler(new java.awt.Dimension(5, 0), new java.awt.Dimension(4, 0), new java.awt.Dimension(5, 32767)); + btnFlagSearch = new javax.swing.JButton(); setTitle("Connect to server"); setNormalBounds(new java.awt.Rectangle(100, 100, 410, 307)); @@ -199,9 +209,6 @@ public class ConnectDialog extends MageDialog { lblFlag.setLabelFor(txtUserName); lblFlag.setText("User flag:"); - cbFlag.setEditable(true); - cbFlag.setMaximumRowCount(16); - chkAutoConnect.setText("Automatically connect to this server next time"); chkAutoConnect.setToolTipText("If active this connect dialog will not be shown if you choose to connect.
\nInstead XMage tries to connect to the last server you were connected to."); chkAutoConnect.addActionListener(new java.awt.event.ActionListener() { @@ -309,20 +316,49 @@ public class ConnectDialog extends MageDialog { lblFastConnect.setText("Fast connect to:"); lblFastConnect.setName(""); // NOI18N + panelFlag.setPreferredSize(new java.awt.Dimension(189, 30)); + panelFlag.setLayout(new javax.swing.BoxLayout(panelFlag, javax.swing.BoxLayout.LINE_AXIS)); + + cbFlag.setEditable(true); + cbFlag.setMaximumRowCount(16); + cbFlag.setAlignmentX(0.0F); + cbFlag.setMinimumSize(new java.awt.Dimension(50, 18)); + cbFlag.setPreferredSize(new java.awt.Dimension(278, 15)); + panelFlag.add(cbFlag); + panelFlag.add(filler1); + + btnFlagSearch.setIcon(new javax.swing.ImageIcon(getClass().getResource("/buttons/search_24.png"))); // NOI18N + btnFlagSearch.setToolTipText("Fast search your flag"); + btnFlagSearch.setAlignmentX(1.0F); + btnFlagSearch.setPreferredSize(new java.awt.Dimension(23, 23)); + btnFlagSearch.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btnFlagSearchActionPerformed(evt); + } + }); + panelFlag.add(btnFlagSearch); + javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() - .addContainerGap() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) - .addComponent(lblPort) - .addComponent(lblServer) - .addComponent(lblUserName) - .addComponent(lblPassword)) - .addComponent(lblFlag, javax.swing.GroupLayout.Alignment.TRAILING)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addGap(29, 29, 29) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) + .addComponent(lblPort) + .addComponent(lblServer))) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() + .addContainerGap() + .addComponent(lblFlag))) + .addGroup(layout.createSequentialGroup() + .addContainerGap() + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(lblUserName) + .addComponent(lblPassword, javax.swing.GroupLayout.Alignment.TRAILING)))) + .addGap(0, 0, 0) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addComponent(btnConnect, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) @@ -332,16 +368,21 @@ public class ConnectDialog extends MageDialog { .addComponent(btnForgotPassword, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(btnCancel, javax.swing.GroupLayout.PREFERRED_SIZE, 77, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addComponent(jProxySettingsButton) + .addComponent(lblStatus, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(chkForceUpdateDB, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addGroup(layout.createSequentialGroup() + .addComponent(jProxySettingsButton) + .addGap(0, 0, Short.MAX_VALUE)) + .addComponent(chkAutoConnect, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) + .addComponent(panelFlag, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(txtServer, javax.swing.GroupLayout.Alignment.LEADING) .addComponent(txtUserName, javax.swing.GroupLayout.Alignment.LEADING) .addComponent(txtPassword, javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(cbFlag, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addGroup(layout.createSequentialGroup() .addComponent(txtPort, javax.swing.GroupLayout.PREFERRED_SIZE, 71, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 11, Short.MAX_VALUE) .addComponent(lblFastConnect) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(btnFind1, javax.swing.GroupLayout.PREFERRED_SIZE, 70, javax.swing.GroupLayout.PREFERRED_SIZE) @@ -349,11 +390,8 @@ public class ConnectDialog extends MageDialog { .addComponent(btnFind3, javax.swing.GroupLayout.PREFERRED_SIZE, 70, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(btnFind2, javax.swing.GroupLayout.PREFERRED_SIZE, 40, javax.swing.GroupLayout.PREFERRED_SIZE))) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(btnFind)) - .addComponent(lblStatus, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(chkForceUpdateDB, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(chkAutoConnect, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + .addGap(0, 0, 0) + .addComponent(btnFind))) .addContainerGap()) ); layout.setVerticalGroup( @@ -373,18 +411,18 @@ public class ConnectDialog extends MageDialog { .addComponent(btnFind3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(lblFastConnect)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(txtUserName, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(lblUserName)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(txtPassword, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(lblPassword)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) - .addComponent(lblFlag, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(cbFlag, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - .addGap(5, 5, 5) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) + .addComponent(panelFlag, javax.swing.GroupLayout.PREFERRED_SIZE, 20, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(lblFlag, javax.swing.GroupLayout.PREFERRED_SIZE, 18, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(chkAutoConnect) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(chkForceUpdateDB) @@ -392,7 +430,7 @@ public class ConnectDialog extends MageDialog { .addComponent(jProxySettingsButton) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(lblStatus, javax.swing.GroupLayout.PREFERRED_SIZE, 24, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false) .addGroup(layout.createSequentialGroup() .addComponent(btnRegister, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) @@ -694,6 +732,42 @@ public class ConnectDialog extends MageDialog { this.txtPassword.setText(MagePreferences.getPassword(serverAddress)); }//GEN-LAST:event_connectWoogerworks + private void btnFlagSearchActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnFlagSearchActionPerformed + doFastFlagSearch(); + }//GEN-LAST:event_btnFlagSearchActionPerformed + + private void doFastFlagSearch(){ + Choice choice = new ChoiceImpl(false); + + Map choiceItems = new LinkedHashMap<>(); + DefaultComboBoxModel flagModel = (DefaultComboBoxModel)cbFlag.getModel(); + String[] flagItem; + + for(int i = 0; i < flagModel.getSize() - 1; i++){ + flagItem = (String[])flagModel.getElementAt(i); + choiceItems.put(flagItem[1], flagItem[0]); + } + + choice.setKeyChoices(choiceItems); + choice.setMessage("Select your coutry"); + + // current selection restore + String needSelectValue = null; + flagItem = (String[])flagModel.getSelectedItem(); + if (flagItem != null){ + needSelectValue = flagItem[1]; + } + + PickChoiceDialog dlg = new PickChoiceDialog(); + dlg.showDialog(choice, needSelectValue); + if(choice.isChosen()){ + flagItem = new String[2]; + flagItem[0] = choice.getChoiceValue(); + flagItem[1] = choice.getChoiceKey(); + flagModel.setSelectedItem(flagItem); + } + } + public String getServer() { return this.txtServer.getText(); } @@ -709,11 +783,13 @@ public class ConnectDialog extends MageDialog { private javax.swing.JButton btnFind1; private javax.swing.JButton btnFind2; private javax.swing.JButton btnFind3; + private javax.swing.JButton btnFlagSearch; private javax.swing.JButton btnForgotPassword; private javax.swing.JButton btnRegister; private mage.client.util.gui.countryBox.CountryComboBox cbFlag; private javax.swing.JCheckBox chkAutoConnect; private javax.swing.JCheckBox chkForceUpdateDB; + private javax.swing.Box.Filler filler1; private javax.swing.JButton jProxySettingsButton; private javax.swing.JLabel lblFastConnect; private javax.swing.JLabel lblFlag; @@ -722,6 +798,7 @@ public class ConnectDialog extends MageDialog { private javax.swing.JLabel lblServer; private javax.swing.JLabel lblStatus; private javax.swing.JLabel lblUserName; + private javax.swing.JPanel panelFlag; private javax.swing.JPasswordField txtPassword; private javax.swing.JTextField txtPort; private javax.swing.JTextField txtServer; diff --git a/Mage.Client/src/main/resources/buttons/search_128.png b/Mage.Client/src/main/resources/buttons/search_128.png new file mode 100644 index 0000000000000000000000000000000000000000..574748a87a004dc5cd6d087f9155f5247a6edd8f GIT binary patch literal 4671 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 literal 0 HcmV?d00001 diff --git a/Mage.Client/src/main/resources/buttons/search_24.png b/Mage.Client/src/main/resources/buttons/search_24.png new file mode 100644 index 0000000000000000000000000000000000000000..a3cd50658ebd8bf1a513fb2bf8ff780c45d85cb2 GIT binary patch literal 595 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

fKc=hK6#OFB9_dcbrHq?t