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