Add option to set proxy,proxy type, proxy username and proxy password

cusax-fix
Damian Minkov 19 years ago
parent c2eba0c0bf
commit 0f8ffa2d09

@ -19,7 +19,7 @@
/**
* The <tt>FirstWizardPage</tt> 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 <tt>FirstWizardPage</tt>.
* @param registration the <tt>IcqAccountRegistration</tt>, 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 <code>WizardPage.getIdentifier</code> to return
* this page identifier.
@ -162,7 +231,7 @@ public Object getIdentifier() {
* Implements the <code>WizardPage.getNextPageIdentifier</code> 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;
}

@ -9,17 +9,27 @@
/**
* The <tt>IcqAccountRegistration</tt> is used to store all user input data
* through the <tt>IcqAccountRegistrationWizard</tt>.
*
*
* @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;
}
}

@ -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 <tt>IcqAccountRegistrationWizard</tt>.
* @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;
}
}

@ -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
protocolIcon=net/java/sip/communicator/plugin/icqaccregwizz/resources/Icq.png

Loading…
Cancel
Save