diff --git a/src/net/java/sip/communicator/plugin/icqaccregwizz/FirstWizardPage.java b/src/net/java/sip/communicator/plugin/icqaccregwizz/FirstWizardPage.java
index face75e0a..d29b068d6 100644
--- a/src/net/java/sip/communicator/plugin/icqaccregwizz/FirstWizardPage.java
+++ b/src/net/java/sip/communicator/plugin/icqaccregwizz/FirstWizardPage.java
@@ -19,7 +19,7 @@
/**
* The FirstWizardPage is the page, where user could enter the uin
* and the password of the account.
- *
+ *
* @author Yana Stamcheva
*/
public class FirstWizardPage extends JPanel
@@ -28,50 +28,80 @@ public class FirstWizardPage extends JPanel
ActionListener {
public static final String FIRST_PAGE_IDENTIFIER = "FirstPageIdentifier";
-
+
private JPanel uinPassPanel = new JPanel(new BorderLayout(10, 10));
-
+
private JPanel labelsPanel = new JPanel();
-
+
private JPanel valuesPanel = new JPanel();
-
+
+ private JPanel advancedOpPanel = new JPanel(new BorderLayout(10, 10));
+
+ private JPanel labelsAdvOpPanel = new JPanel(new GridLayout(0, 1, 10, 10));
+
+ private JPanel valuesAdvOpPanel = new JPanel(new GridLayout(0, 1, 10, 10));
+
+ private JCheckBox enableAdvOpButton = new JCheckBox(
+ Resources.getString("ovverideServerOps"), false);
+
private JLabel uinLabel = new JLabel(Resources.getString("uin"));
-
+
private JPanel emptyPanel = new JPanel();
-
+
private JLabel uinExampleLabel = new JLabel("Ex: 83378997");
-
+
private JLabel passLabel = new JLabel(Resources.getString("password"));
-
+
private JLabel existingAccountLabel
= new JLabel(Resources.getString("existingAccount"));
-
+
private JTextField uinField = new JTextField();
-
+
private JPasswordField passField = new JPasswordField();
-
+
private JCheckBox rememberPassBox = new JCheckBox(
Resources.getString("rememberPassword"));
-
+
private JPanel registerPanel = new JPanel(new GridLayout(0, 1));
-
+
private JPanel buttonPanel = new JPanel(
new FlowLayout(FlowLayout.CENTER));
-
+
private JTextArea registerArea = new JTextArea(
- Resources.getString("registerNewAccountText"));
-
+ Resources.getString("registerNewAccountText"));
+
private JButton registerButton = new JButton(
Resources.getString("registerNewAccount"));
-
+
+ private JLabel proxyLabel = new JLabel(Resources.getString("proxy"));
+
+ private JLabel proxyPortLabel = new JLabel(Resources.getString("proxyPort"));
+
+ private JLabel proxyUsernameLabel = new JLabel(Resources.getString("proxyUsername"));
+
+ private JLabel proxyPasswordLabel = new JLabel(Resources.getString("proxyPassword"));
+
+ private JLabel proxyTypeLabel = new JLabel(Resources.getString("proxyType"));
+
+ private JTextField proxyField = new JTextField();
+
+ private JTextField proxyPortField = new JTextField();
+
+ private JTextField proxyUsernameField = new JTextField();
+
+ private JPasswordField proxyPassField = new JPasswordField();
+
+ private JComboBox proxyTypeCombo = new JComboBox(
+ new Object[]{"http", "socks5", "socks4"});
+
private JPanel mainPanel = new JPanel();
-
+
private Object nextPageIdentifier = WizardPage.SUMMARY_PAGE_IDENTIFIER;
-
+
private IcqAccountRegistration registration;
-
+
private WizardContainer wizardContainer;
-
+
/**
* Creates an instance of FirstWizardPage.
* @param registration the IcqAccountRegistration, where
@@ -81,26 +111,26 @@ public class FirstWizardPage extends JPanel
*/
public FirstWizardPage(IcqAccountRegistration registration,
WizardContainer wizardContainer) {
-
+
super(new BorderLayout());
-
+
this.wizardContainer = wizardContainer;
-
+
this.registration = registration;
-
+
this.setPreferredSize(new Dimension(300, 150));
-
+
mainPanel.setLayout(new BoxLayout(mainPanel, BoxLayout.Y_AXIS));
-
+
this.init();
-
+
this.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
-
+
this.labelsPanel.setLayout(new BoxLayout(labelsPanel, BoxLayout.Y_AXIS));
-
+
this.valuesPanel.setLayout(new BoxLayout(valuesPanel, BoxLayout.Y_AXIS));
}
-
+
/**
* Initializes all panels, buttons, etc.
*/
@@ -108,48 +138,87 @@ private void init() {
this.registerButton.addActionListener(this);
this.uinField.getDocument().addDocumentListener(this);
this.rememberPassBox.setSelected(true);
-
+
this.existingAccountLabel.setForeground(Color.RED);
-
+
this.uinExampleLabel.setForeground(Color.GRAY);
this.uinExampleLabel.setFont(uinExampleLabel.getFont().deriveFont(8));
this.emptyPanel.setMaximumSize(new Dimension(40, 35));
this.uinExampleLabel.setBorder(BorderFactory.createEmptyBorder(0, 0, 8, 0));
-
- labelsPanel.add(uinLabel);
+
+ labelsPanel.add(uinLabel);
labelsPanel.add(emptyPanel);
labelsPanel.add(passLabel);
-
+
valuesPanel.add(uinField);
valuesPanel.add(uinExampleLabel);
valuesPanel.add(passField);
-
+
uinPassPanel.add(labelsPanel, BorderLayout.WEST);
uinPassPanel.add(valuesPanel, BorderLayout.CENTER);
uinPassPanel.add(rememberPassBox, BorderLayout.SOUTH);
-
+
uinPassPanel.setBorder(BorderFactory
.createTitledBorder(Resources.getString("uinAndPassword")));
-
+
mainPanel.add(uinPassPanel);
-
+
+ proxyField.setEditable(false);
+ proxyPortField.setEditable(false);
+ proxyTypeCombo.setEnabled(false);
+
+ enableAdvOpButton.addActionListener(new ActionListener(){
+ public void actionPerformed(ActionEvent evt) {
+ // Perform action
+ JCheckBox cb = (JCheckBox)evt.getSource();
+
+ proxyField.setEditable(cb.isSelected());
+ proxyPortField.setEditable(cb.isSelected());
+ proxyTypeCombo.setEnabled(cb.isSelected());
+ }});
+
+ proxyTypeCombo.setSelectedItem("http");
+
+ labelsAdvOpPanel.add(proxyLabel);
+ labelsAdvOpPanel.add(proxyPortLabel);
+ labelsAdvOpPanel.add(proxyTypeLabel);
+ labelsAdvOpPanel.add(proxyUsernameLabel);
+ labelsAdvOpPanel.add(proxyPasswordLabel);
+
+ valuesAdvOpPanel.add(proxyField);
+ valuesAdvOpPanel.add(proxyPortField);
+ valuesAdvOpPanel.add(proxyTypeCombo);
+ valuesAdvOpPanel.add(proxyUsernameField);
+ valuesAdvOpPanel.add(proxyPassField);
+
+ advancedOpPanel.add(enableAdvOpButton, BorderLayout.NORTH);
+ advancedOpPanel.add(labelsAdvOpPanel, BorderLayout.WEST);
+ advancedOpPanel.add(valuesAdvOpPanel, BorderLayout.CENTER);
+
+ advancedOpPanel.setBorder(BorderFactory
+ .createTitledBorder(Resources.getString(
+ "advancedOptions")));
+
+ mainPanel.add(advancedOpPanel);
+
+
this.buttonPanel.add(registerButton);
-
+
this.registerArea.setEditable(false);
this.registerArea.setLineWrap(true);
this.registerArea.setWrapStyleWord(true);
-
+
this.registerPanel.add(registerArea);
this.registerPanel.add(buttonPanel);
-
+
this.registerPanel.setBorder(BorderFactory
.createTitledBorder(Resources.getString("registerNewAccount")));
-
+
mainPanel.add(registerPanel);
-
+
this.add(mainPanel, BorderLayout.NORTH);
}
-
+
/**
* Implements the WizardPage.getIdentifier to return
* this page identifier.
@@ -162,7 +231,7 @@ public Object getIdentifier() {
* Implements the WizardPage.getNextPageIdentifier to return
* the next page identifier - the summary page.
*/
- public Object getNextPageIdentifier() {
+ public Object getNextPageIdentifier() {
return nextPageIdentifier;
}
@@ -195,7 +264,7 @@ public void pageShowing() {
*/
public void pageNext() {
String uin = uinField.getText();
-
+
if(isExistingAccount(uin)) {
nextPageIdentifier = FIRST_PAGE_IDENTIFIER;
uinPassPanel.add(existingAccountLabel, BorderLayout.NORTH);
@@ -204,13 +273,23 @@ public void pageNext() {
else {
nextPageIdentifier = SUMMARY_PAGE_IDENTIFIER;
uinPassPanel.remove(existingAccountLabel);
-
+
registration.setUin(uin);
registration.setPassword(new String(passField.getPassword()));
registration.setRememberPassword(rememberPassBox.isSelected());
+
+ if(enableAdvOpButton.isSelected())
+ {
+ registration.setProxy(proxyField.getText());
+ registration.setProxyPort(proxyPortField.getText());
+ registration.setProxyType(
+ proxyTypeCombo.getSelectedItem().toString());
+ registration.setProxyUsername(proxyUsernameField.getText());
+ registration.setProxyPassword(new String(proxyPassField.getPassword()));
+ }
}
}
-
+
/**
* Enables or disables the "Next" wizard button according to whether the
* UIN field is empty.
@@ -244,16 +323,16 @@ public void removeUpdate(DocumentEvent e) {
public void changedUpdate(DocumentEvent e) {
}
-
+
public void pageHiding() {
}
public void pageShown() {
}
-
+
public void pageBack() {
}
-
+
/**
* Fills the UIN and Password fields in this panel with the data comming
* from the given protocolProvider.
@@ -264,32 +343,53 @@ public void loadAccount(ProtocolProviderService protocolProvider) {
AccountID accountID = protocolProvider.getAccountID();
String password = (String)accountID.getAccountProperties()
.get(ProtocolProviderFactory.PASSWORD);
-
+
this.uinField.setText(accountID.getUserID());
-
+
if(password != null) {
this.passField.setText(password);
-
+
this.rememberPassBox.setSelected(true);
}
+
+ String proxyAddress = (String)accountID.getAccountProperties()
+ .get(ProtocolProviderFactory.PROXY_ADDRESS);
+
+ String proxyPort = (String)accountID.getAccountProperties()
+ .get(ProtocolProviderFactory.PROXY_PORT);
+
+ String proxyType = (String)accountID.getAccountProperties()
+ .get(ProtocolProviderFactory.PROXY_TYPE);
+
+ String proxyUsername = (String)accountID.getAccountProperties()
+ .get(ProtocolProviderFactory.PROXY_USERNAME);
+
+ String proxyPassword = (String)accountID.getAccountProperties()
+ .get(ProtocolProviderFactory.PROXY_PASSWORD);
+
+ proxyField.setText(proxyAddress);
+ proxyPortField.setText(proxyPort);
+ proxyTypeCombo.setSelectedItem(proxyType);
+ proxyUsernameField.setText(proxyUsername);
+ proxyPassField.setText(proxyPassword);
}
public void actionPerformed(ActionEvent e)
{
IcqAccRegWizzActivator.getBrowserLauncher()
- .openURL("https://www.icq.com/register/");
+ .openURL("https://www.icq.com/register/");
}
-
+
private boolean isExistingAccount(String accountName)
- {
- ProtocolProviderFactory factory
+ {
+ ProtocolProviderFactory factory
= IcqAccRegWizzActivator.getIcqProtocolProviderFactory();
-
+
ArrayList registeredAccounts = factory.getRegisteredAccounts();
-
+
for(int i = 0; i < registeredAccounts.size(); i ++) {
AccountID accountID = (AccountID) registeredAccounts.get(i);
-
+
if(accountName.equalsIgnoreCase(accountID.getUserID()))
return true;
}
diff --git a/src/net/java/sip/communicator/plugin/icqaccregwizz/IcqAccountRegistration.java b/src/net/java/sip/communicator/plugin/icqaccregwizz/IcqAccountRegistration.java
index e8a53056e..a10f3d0a3 100644
--- a/src/net/java/sip/communicator/plugin/icqaccregwizz/IcqAccountRegistration.java
+++ b/src/net/java/sip/communicator/plugin/icqaccregwizz/IcqAccountRegistration.java
@@ -9,17 +9,27 @@
/**
* The IcqAccountRegistration is used to store all user input data
* through the IcqAccountRegistrationWizard.
- *
+ *
* @author Yana Stamcheva
*/
public class IcqAccountRegistration {
private String uin;
-
+
private String password;
-
+
private boolean rememberPassword;
+ private String proxyPort;
+
+ private String proxy;
+
+ private String proxyType;
+
+ private String proxyUsername;
+
+ private String proxyPassword;
+
/**
* Returns the password of the icq registration account.
* @return the password of the icq registration account.
@@ -68,4 +78,84 @@ public String getUin() {
public void setUin(String uin) {
this.uin = uin;
}
+
+ /**
+ * Returns the proxy that will be used for this icq account.
+ * @return the proxy that will be used for this icq account.
+ */
+ public String getProxy() {
+ return proxy;
+ }
+
+ /**
+ * Sets the proxy for this icq account.
+ * @param proxy the proxy for this icq account.
+ */
+ public void setProxy(String proxy) {
+ this.proxy = proxy;
+ }
+
+ /**
+ * Returns the proxy port that will be used for this icq account.
+ * @return the proxy port that will be used for this icq account.
+ */
+ public String getProxyPort() {
+ return proxyPort;
+ }
+
+ /**
+ * Sets the proxy port for this icq account.
+ * @param proxyPort the proxy port for this icq account.
+ */
+ public void setProxyPort(String proxyPort) {
+ this.proxyPort = proxyPort;
+ }
+
+ /**
+ * Returns the proxy type that will be used for this icq account.
+ * @return the proxy type that will be used for this icq account.
+ */
+ public String getProxyType() {
+ return proxyType;
+ }
+
+ /**
+ * Sets the proxy type for this icq account.
+ * @param proxyPort the proxy type for this icq account.
+ */
+ public void setProxyType(String proxyType) {
+ this.proxyType = proxyType;
+ }
+
+ /**
+ * Returns the proxy password of the icq registration account.
+ * @return the proxy password of the icq registration account.
+ */
+ public String getProxyPassword() {
+ return proxyPassword;
+ }
+
+ /**
+ * Sets the proxy password of the icq registration account.
+ * @param password the proxy password of the icq registration account.
+ */
+ public void setProxyPassword(String password) {
+ this.proxyPassword = password;
+ }
+
+ /**
+ * Returns the proxy username of the icq registration account.
+ * @return the proxy username of the icq registration account.
+ */
+ public String getProxyUsername() {
+ return proxyUsername;
+ }
+
+ /**
+ * Sets the proxy username of the icq registration account.
+ * @param password the proxy username of the icq registration account.
+ */
+ public void setProxyUsername(String username) {
+ this.proxyUsername = username;
+ }
}
diff --git a/src/net/java/sip/communicator/plugin/icqaccregwizz/IcqAccountRegistrationWizard.java b/src/net/java/sip/communicator/plugin/icqaccregwizz/IcqAccountRegistrationWizard.java
index ec92a920e..9c2867c04 100644
--- a/src/net/java/sip/communicator/plugin/icqaccregwizz/IcqAccountRegistrationWizard.java
+++ b/src/net/java/sip/communicator/plugin/icqaccregwizz/IcqAccountRegistrationWizard.java
@@ -8,8 +8,6 @@
import java.util.*;
-import javax.swing.*;
-
import net.java.sip.communicator.impl.gui.customcontrols.*;
import net.java.sip.communicator.service.gui.*;
import net.java.sip.communicator.service.protocol.*;
@@ -31,11 +29,11 @@ public class IcqAccountRegistrationWizard implements AccountRegistrationWizard {
= new IcqAccountRegistration();
private WizardContainer wizardContainer;
-
+
private ProtocolProviderService protocolProvider;
-
+
private boolean isModification;
-
+
/**
* Creates an instance of IcqAccountRegistrationWizard.
* @param wizardContainer the wizard container, where this wizard
@@ -75,9 +73,9 @@ public String getProtocolDescription() {
public Iterator getPages() {
ArrayList pages = new ArrayList();
firstWizardPage = new FirstWizardPage(registration, wizardContainer);
-
+
pages.add(firstWizardPage);
-
+
return pages.iterator();
}
@@ -90,6 +88,16 @@ public Iterator getSummary() {
summaryTable.put("UIN", registration.getUin());
summaryTable.put("Remember password",
new Boolean(registration.isRememberPassword()));
+ summaryTable.put(Resources.getString("proxy"),
+ registration.getProxy());
+ summaryTable.put(Resources.getString("proxyPort"),
+ registration.getProxyPort());
+ summaryTable.put(Resources.getString("proxyType"),
+ registration.getProxyType());
+ summaryTable.put(Resources.getString("proxyUsername"),
+ registration.getProxyPort());
+ summaryTable.put(Resources.getString("proxyPassword"),
+ registration.getProxyType());
return summaryTable.entrySet().iterator();
}
@@ -99,10 +107,10 @@ public Iterator getSummary() {
*/
public ProtocolProviderService finish() {
firstWizardPage = null;
- ProtocolProviderFactory factory
+ ProtocolProviderFactory factory
= IcqAccRegWizzActivator.getIcqProtocolProviderFactory();
-
- return this.installAccount(factory,
+
+ return this.installAccount(factory,
registration.getUin(), registration.getPassword());
}
@@ -124,19 +132,37 @@ public ProtocolProviderService installAccount(
if(registration.isRememberPassword()) {
accountProperties.put(ProtocolProviderFactory.PASSWORD, passwd);
}
-
+
+ if(registration.getProxyType() != null)
+ {
+ accountProperties.put(ProtocolProviderFactory.PROXY_ADDRESS,
+ registration.getProxy());
+
+ accountProperties.put(ProtocolProviderFactory.PROXY_PORT,
+ registration.getProxyPort());
+
+ accountProperties.put(ProtocolProviderFactory.PROXY_TYPE,
+ registration.getProxyType());
+
+ accountProperties.put(ProtocolProviderFactory.PROXY_USERNAME,
+ registration.getProxyUsername());
+
+ accountProperties.put(ProtocolProviderFactory.PROXY_PASSWORD,
+ registration.getProxyPassword());
+ }
+
if(isModification) {
providerFactory.uninstallAccount(protocolProvider.getAccountID());
this.protocolProvider = null;
}
-
+
try {
AccountID accountID = providerFactory.installAccount(
user, accountProperties);
-
+
ServiceReference serRef = providerFactory
.getProviderForAccount(accountID);
-
+
protocolProvider
= (ProtocolProviderService) IcqAccRegWizzActivator.bundleContext
.getService(serRef);
@@ -146,11 +172,11 @@ public ProtocolProviderService installAccount(
}
catch (IllegalStateException e) {
new ErrorDialog(null, e.getMessage(), e).showDialog();
- }
-
+ }
+
return protocolProvider;
}
-
+
/**
* Fills the UIN and Password fields in this panel with the data comming
* from the given protocolProvider.
@@ -158,11 +184,11 @@ public ProtocolProviderService installAccount(
* data from.
*/
public void loadAccount(ProtocolProviderService protocolProvider) {
-
+
this.protocolProvider = protocolProvider;
-
+
this.firstWizardPage.loadAccount(protocolProvider);
-
+
this.isModification = true;
}
}
diff --git a/src/net/java/sip/communicator/plugin/icqaccregwizz/resources.properties b/src/net/java/sip/communicator/plugin/icqaccregwizz/resources.properties
index 762db6f64..88c0a2d02 100644
--- a/src/net/java/sip/communicator/plugin/icqaccregwizz/resources.properties
+++ b/src/net/java/sip/communicator/plugin/icqaccregwizz/resources.properties
@@ -7,5 +7,12 @@ uinAndPassword=UIN and Password
registerNewAccount=Register new account
registerNewAccountText=In case you don't have an ICQ account, click on this button to create a new one.
existingAccount=* The account you entered is already installed.
+ovverideServerOps=Override server default options
+advancedOptions=Advanced Options
+proxy=Proxy
+proxyPort=Proxy port
+proxyType=Proxy type
+proxyUsername=Proxy username
+proxyPassword=Proxy password
-protocolIcon=net/java/sip/communicator/plugin/icqaccregwizz/resources/Icq.png
\ No newline at end of file
+protocolIcon=net/java/sip/communicator/plugin/icqaccregwizz/resources/Icq.png