mirror of
https://github.com/correl/mage.git
synced 2025-04-06 09:13:45 -09:00
539 lines
27 KiB
Java
539 lines
27 KiB
Java
/*
|
|
* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
|
|
*
|
|
* Redistribution and use in source and binary forms, with or without modification, are
|
|
* permitted provided that the following conditions are met:
|
|
*
|
|
* 1. Redistributions of source code must retain the above copyright notice, this list of
|
|
* conditions and the following disclaimer.
|
|
*
|
|
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
|
|
* of conditions and the following disclaimer in the documentation and/or other materials
|
|
* provided with the distribution.
|
|
*
|
|
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
|
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
|
|
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
|
|
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
|
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
|
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
|
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
|
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
|
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
*
|
|
* The views and conclusions contained in the software and documentation are those of the
|
|
* authors and should not be interpreted as representing official policies, either expressed
|
|
* or implied, of BetaSteward_at_googlemail.com.
|
|
*/
|
|
|
|
/*
|
|
* ConnectDialog.java
|
|
*
|
|
* Created on 20-Jan-2010, 9:37:07 PM
|
|
*/
|
|
package mage.server.console;
|
|
|
|
import java.awt.*;
|
|
import java.io.BufferedReader;
|
|
import java.io.InputStreamReader;
|
|
import java.net.URL;
|
|
import java.util.ArrayList;
|
|
import java.util.Arrays;
|
|
import java.util.List;
|
|
import java.util.Locale;
|
|
import java.util.concurrent.CancellationException;
|
|
import java.util.concurrent.ExecutionException;
|
|
import javax.swing.*;
|
|
import mage.remote.Connection;
|
|
import mage.remote.Connection.ProxyType;
|
|
import org.apache.log4j.Logger;
|
|
|
|
/**
|
|
*
|
|
* @author BetaSteward_at_googlemail.com
|
|
*/
|
|
public class ConnectDialog extends JDialog {
|
|
|
|
private static final Logger logger = Logger.getLogger(ConnectDialog.class);
|
|
private ConsoleFrame console;
|
|
private Connection connection;
|
|
private ConnectTask task;
|
|
|
|
/**
|
|
* Creates new form ConnectDialog
|
|
*/
|
|
public ConnectDialog() {
|
|
initComponents();
|
|
cbProxyType.setModel(new DefaultComboBoxModel(Connection.ProxyType.values()));
|
|
}
|
|
|
|
public void showDialog(ConsoleFrame console) {
|
|
this.console = console;
|
|
this.txtServer.setText(ConsoleFrame.getPreferences().get("serverAddress", "localhost"));
|
|
this.txtPort.setText(ConsoleFrame.getPreferences().get("serverPort", Integer.toString(17171)));
|
|
this.chkAutoConnect.setSelected(Boolean.parseBoolean(ConsoleFrame.getPreferences().get("autoConnect", "false")));
|
|
this.txtProxyServer.setText(ConsoleFrame.getPreferences().get("proxyAddress", "localhost"));
|
|
this.txtProxyPort.setText(ConsoleFrame.getPreferences().get("proxyPort", Integer.toString(17171)));
|
|
this.cbProxyType.setSelectedItem(Connection.ProxyType.valueOf(ConsoleFrame.getPreferences().get("proxyType", "NONE").toUpperCase(Locale.ENGLISH)));
|
|
this.txtProxyUserName.setText(ConsoleFrame.getPreferences().get("proxyUsername", ""));
|
|
this.txtPasswordField.setText(ConsoleFrame.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.repaint();
|
|
}
|
|
|
|
private void saveSettings() {
|
|
ConsoleFrame.getPreferences().put("serverAddress", txtServer.getText());
|
|
ConsoleFrame.getPreferences().put("serverPort", txtPort.getText());
|
|
ConsoleFrame.getPreferences().put("autoConnect", Boolean.toString(chkAutoConnect.isSelected()));
|
|
ConsoleFrame.getPreferences().put("proxyAddress", txtProxyServer.getText());
|
|
ConsoleFrame.getPreferences().put("proxyPort", txtProxyPort.getText());
|
|
ConsoleFrame.getPreferences().put("proxyType", cbProxyType.getSelectedItem().toString());
|
|
ConsoleFrame.getPreferences().put("proxyUsername", txtProxyUserName.getText());
|
|
char[] input = txtPasswordField.getPassword();
|
|
ConsoleFrame.getPreferences().put("proxyPassword", new String(input));
|
|
Arrays.fill(input, '0');
|
|
}
|
|
|
|
/**
|
|
* This method is called from within the constructor to initialize the form.
|
|
* WARNING: Do NOT modify this code. The content of this method is always
|
|
* regenerated by the Form Editor.
|
|
*/
|
|
@SuppressWarnings("unchecked")
|
|
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
|
|
private void initComponents() {
|
|
|
|
txtServer = new javax.swing.JTextField();
|
|
lblServer = new javax.swing.JLabel();
|
|
lblPort = new javax.swing.JLabel();
|
|
txtPort = new javax.swing.JTextField();
|
|
btnConnect = new javax.swing.JButton();
|
|
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();
|
|
lblPassword = new javax.swing.JLabel();
|
|
txtPassword = new javax.swing.JPasswordField();
|
|
lblStatus = new javax.swing.JLabel();
|
|
|
|
setTitle("Connect");
|
|
|
|
lblServer.setLabelFor(txtServer);
|
|
lblServer.setText("Server:");
|
|
|
|
lblPort.setLabelFor(txtPort);
|
|
lblPort.setText("Port:");
|
|
|
|
txtPort.addKeyListener(new java.awt.event.KeyAdapter() {
|
|
public void keyTyped(java.awt.event.KeyEvent evt) {
|
|
ConnectDialog.this.keyTyped(evt);
|
|
}
|
|
});
|
|
|
|
btnConnect.setText("Connect");
|
|
btnConnect.addActionListener(evt -> btnConnectActionPerformed(evt));
|
|
|
|
btnCancel.setText("Cancel");
|
|
btnCancel.addActionListener(evt -> btnCancelActionPerformed(evt));
|
|
|
|
chkAutoConnect.setText("Automatically connect to this server next time");
|
|
chkAutoConnect.addActionListener(evt -> chkAutoConnectActionPerformed(evt));
|
|
|
|
jButton1.setText("Find...");
|
|
jButton1.setToolTipText("Find public server");
|
|
jButton1.setName("findServerBtn"); // NOI18N
|
|
jButton1.addActionListener(evt -> findPublicServerActionPerformed(evt));
|
|
|
|
cbProxyType.addActionListener(evt -> cbProxyTypeActionPerformed(evt));
|
|
|
|
lblProxyType.setLabelFor(cbProxyType);
|
|
lblProxyType.setText("Proxy:");
|
|
|
|
pnlProxySettings.setBorder(javax.swing.BorderFactory.createEtchedBorder());
|
|
pnlProxySettings.setMinimumSize(new java.awt.Dimension(0, 0));
|
|
|
|
lblProxyServer.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
|
|
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()
|
|
.addGroup(pnlProxyLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
|
|
.addComponent(lblProxyServer, javax.swing.GroupLayout.PREFERRED_SIZE, 57, javax.swing.GroupLayout.PREFERRED_SIZE)
|
|
.addComponent(lblProxyPort))
|
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
|
.addGroup(pnlProxyLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
|
|
.addComponent(txtProxyPort, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, 71, javax.swing.GroupLayout.PREFERRED_SIZE)
|
|
.addComponent(txtProxyServer, javax.swing.GroupLayout.DEFAULT_SIZE, 334, Short.MAX_VALUE))
|
|
.addContainerGap())
|
|
);
|
|
pnlProxyLayout.setVerticalGroup(
|
|
pnlProxyLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
|
.addGroup(pnlProxyLayout.createSequentialGroup()
|
|
.addContainerGap()
|
|
.addGroup(pnlProxyLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
|
.addComponent(lblProxyServer)
|
|
.addComponent(txtProxyServer, 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(txtProxyPort, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
|
.addComponent(lblProxyPort))
|
|
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
|
|
);
|
|
|
|
lblProxyUserName.setLabelFor(txtProxyUserName);
|
|
lblProxyUserName.setText("User Name:");
|
|
|
|
lblProxyPassword.setText("Password:");
|
|
|
|
txtPasswordField.addActionListener(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.LEADING)
|
|
.addComponent(txtPasswordField, javax.swing.GroupLayout.DEFAULT_SIZE, 335, Short.MAX_VALUE)
|
|
.addComponent(txtProxyUserName, javax.swing.GroupLayout.DEFAULT_SIZE, 335, 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(pnlProxyAuth, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
|
|
.addComponent(pnlProxy, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
|
|
);
|
|
pnlProxySettingsLayout.setVerticalGroup(
|
|
pnlProxySettingsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
|
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, 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, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
|
|
.addComponent(pnlProxyAuth, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
|
.addContainerGap())
|
|
);
|
|
|
|
lblPassword.setLabelFor(txtPassword);
|
|
lblPassword.setText("Password:");
|
|
|
|
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(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
|
|
.addComponent(lblStatus, javax.swing.GroupLayout.DEFAULT_SIZE, 271, 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)
|
|
.addGroup(layout.createSequentialGroup()
|
|
.addComponent(lblProxyType)
|
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
|
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
|
.addComponent(chkAutoConnect, javax.swing.GroupLayout.DEFAULT_SIZE, 383, Short.MAX_VALUE)
|
|
.addComponent(cbProxyType, javax.swing.GroupLayout.PREFERRED_SIZE, 126, javax.swing.GroupLayout.PREFERRED_SIZE)))
|
|
.addGroup(layout.createSequentialGroup()
|
|
.addGap(6, 6, 6)
|
|
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
|
|
.addComponent(lblPassword)
|
|
.addComponent(lblServer)
|
|
.addComponent(lblPort))
|
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
|
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
|
|
.addComponent(txtPassword, javax.swing.GroupLayout.DEFAULT_SIZE, 359, Short.MAX_VALUE)
|
|
.addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup()
|
|
.addComponent(txtPort, javax.swing.GroupLayout.PREFERRED_SIZE, 71, javax.swing.GroupLayout.PREFERRED_SIZE)
|
|
.addGap(131, 131, 131))
|
|
.addGroup(layout.createSequentialGroup()
|
|
.addComponent(txtServer, javax.swing.GroupLayout.DEFAULT_SIZE, 288, Short.MAX_VALUE)
|
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
|
.addComponent(jButton1)))))
|
|
.addContainerGap())
|
|
);
|
|
layout.setVerticalGroup(
|
|
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
|
.addGroup(layout.createSequentialGroup()
|
|
.addContainerGap()
|
|
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
|
|
.addComponent(lblServer)
|
|
.addComponent(txtServer, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
|
.addComponent(jButton1))
|
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
|
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
|
|
.addComponent(txtPort, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
|
.addComponent(lblPort))
|
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
|
.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)
|
|
.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))
|
|
.addContainerGap())
|
|
);
|
|
|
|
pack();
|
|
}// </editor-fold>//GEN-END:initComponents
|
|
|
|
private void btnCancelActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnCancelActionPerformed
|
|
ConsoleFrame.getPreferences().put("autoConnect", Boolean.toString(chkAutoConnect.isSelected()));
|
|
if (task != null && !task.isDone()) {
|
|
task.cancel(true);
|
|
} else {
|
|
this.setVisible(false);
|
|
}
|
|
}//GEN-LAST:event_btnCancelActionPerformed
|
|
|
|
private void btnConnectActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnConnectActionPerformed
|
|
|
|
if (txtPassword.getPassword().length == 0) {
|
|
JOptionPane.showMessageDialog(rootPane, "Please provide a password");
|
|
return;
|
|
}
|
|
if (txtServer.getText().trim().isEmpty()) {
|
|
JOptionPane.showMessageDialog(rootPane, "Please provide a server address");
|
|
return;
|
|
}
|
|
if (txtPort.getText().trim().isEmpty()) {
|
|
JOptionPane.showMessageDialog(rootPane, "Please provide a port number");
|
|
return;
|
|
}
|
|
if (Integer.valueOf(txtPort.getText()) < 1 || Integer.valueOf(txtPort.getText()) > 65535) {
|
|
JOptionPane.showMessageDialog(rootPane, "Invalid port number");
|
|
txtPort.setText(ConsoleFrame.getPreferences().get("serverPort", Integer.toString(17171)));
|
|
return;
|
|
}
|
|
|
|
setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
|
|
connection = new Connection();
|
|
connection.setHost(this.txtServer.getText());
|
|
connection.setPort(Integer.valueOf(this.txtPort.getText()));
|
|
connection.setAdminPassword(new String(txtPassword.getPassword()));
|
|
connection.setUsername("Admin");
|
|
connection.setProxyType((ProxyType) this.cbProxyType.getSelectedItem());
|
|
if (!this.cbProxyType.getSelectedItem().equals(ProxyType.NONE)) {
|
|
connection.setProxyHost(this.txtProxyServer.getText());
|
|
connection.setProxyPort(Integer.valueOf(this.txtProxyPort.getText()));
|
|
connection.setProxyUsername(this.txtProxyUserName.getText());
|
|
connection.setProxyPassword(new String(this.txtPasswordField.getPassword()));
|
|
}
|
|
|
|
logger.debug("connecting: " + connection.getProxyType() + ' ' + connection.getProxyHost() + ' ' + connection.getProxyPort());
|
|
task = new ConnectTask();
|
|
task.execute();
|
|
|
|
}//GEN-LAST:event_btnConnectActionPerformed
|
|
|
|
private class ConnectTask extends SwingWorker<Boolean, Void> {
|
|
|
|
private boolean result = false;
|
|
|
|
@Override
|
|
protected Boolean doInBackground() throws Exception {
|
|
lblStatus.setText("Connecting...");
|
|
btnConnect.setEnabled(false);
|
|
result = console.connect(connection);
|
|
return result;
|
|
}
|
|
|
|
@Override
|
|
protected void done() {
|
|
try {
|
|
get();
|
|
setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
|
|
btnConnect.setEnabled(true);
|
|
if (result) {
|
|
lblStatus.setText("");
|
|
connected();
|
|
} else {
|
|
lblStatus.setText("Could not connect");
|
|
}
|
|
} catch (InterruptedException ex) {
|
|
logger.fatal("Update Players Task error", ex);
|
|
} catch (ExecutionException ex) {
|
|
logger.fatal("Update Players Task error", ex);
|
|
} catch (CancellationException ex) {
|
|
}
|
|
}
|
|
}
|
|
|
|
private void connected() {
|
|
this.saveSettings();
|
|
this.setVisible(false);
|
|
}
|
|
|
|
private void keyTyped(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_keyTyped
|
|
char c = evt.getKeyChar();
|
|
if (!Character.isDigit(c)) {
|
|
evt.consume();
|
|
}
|
|
}//GEN-LAST:event_keyTyped
|
|
|
|
private void chkAutoConnectActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_chkAutoConnectActionPerformed
|
|
|
|
// 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 {
|
|
URL serverListURL = new URL("http://XMage.de/files/server-list.txt");
|
|
in = new BufferedReader(new InputStreamReader(serverListURL.openStream()));
|
|
|
|
List<String> servers = new ArrayList<>();
|
|
String inputLine;
|
|
while ((inputLine = in.readLine()) != null) {
|
|
System.out.println("Found server: " + inputLine);
|
|
servers.add(inputLine);
|
|
}
|
|
|
|
if (servers.isEmpty()) {
|
|
JOptionPane.showMessageDialog(null, "Couldn't find any server.");
|
|
return;
|
|
}
|
|
|
|
String selectedServer = (String) JOptionPane.showInputDialog(null,
|
|
"Choose MAGE Public Server:", "Input",
|
|
JOptionPane.INFORMATION_MESSAGE, null, servers.toArray(),
|
|
servers.get(0));
|
|
if (selectedServer != null) {
|
|
String[] params = selectedServer.split(":");
|
|
if (params.length == 3) {
|
|
this.txtServer.setText(params[1]);
|
|
this.txtPort.setText(params[2]);
|
|
} else {
|
|
JOptionPane.showMessageDialog(null, "Wrong server data format.");
|
|
}
|
|
}
|
|
|
|
in.close();
|
|
} catch (Exception ex) {
|
|
logger.error(ex, ex);
|
|
} finally {
|
|
if (in != null) {
|
|
try {
|
|
in.close();
|
|
} catch (Exception e) {
|
|
}
|
|
}
|
|
}
|
|
}//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
|
|
|
|
// 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.JLabel lblPassword;
|
|
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.JPanel pnlProxy;
|
|
private javax.swing.JPanel pnlProxyAuth;
|
|
private javax.swing.JPanel pnlProxySettings;
|
|
private javax.swing.JPasswordField txtPassword;
|
|
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;
|
|
// End of variables declaration//GEN-END:variables
|
|
|
|
}
|