/*
* SIP Communicator, the OpenSource Java VoIP and Instant Messaging client.
*
* Distributable under LGPL license. See terms of license at gnu.org.
*/
package net.java.sip.communicator.plugin.icqaccregwizz;
import java.awt.*;
import java.util.*;
import net.java.sip.communicator.service.gui.*;
import net.java.sip.communicator.service.protocol.*;
import org.osgi.framework.*;
/**
* The IcqAccountRegistrationWizard is an implementation of the
* AccountRegistrationWizard for the ICQ protocol. It should allow
* the user to create and configure a new ICQ account.
*
* @author Yana Stamcheva
*/
public class IcqAccountRegistrationWizard
implements AccountRegistrationWizard
{
private FirstWizardPage firstWizardPage;
private IcqAccountRegistration registration = new IcqAccountRegistration();
private WizardContainer wizardContainer;
private ProtocolProviderService protocolProvider;
private boolean isModification;
/**
* Creates an instance of IcqAccountRegistrationWizard.
*
* @param wizardContainer the wizard container, where this wizard is added
*/
public IcqAccountRegistrationWizard(WizardContainer wizardContainer)
{
this.wizardContainer = wizardContainer;
this.wizardContainer.setFinishButtonText(Resources.getString("signin"));
}
/**
* Implements the AccountRegistrationWizard.getIcon
method.
* Returns the icon to be used for this wizard.
*/
public byte[] getIcon()
{
return Resources.getImage(Resources.ICQ_LOGO);
}
/**
* Implements the AccountRegistrationWizard.getPageImage
* method. Returns the image used to decorate the wizard page
*
* @return byte[] the image used to decorate the wizard page
*/
public byte[] getPageImage()
{
return Resources.getImage(Resources.PAGE_IMAGE);
}
/**
* Implements the AccountRegistrationWizard.getProtocolName
* method. Returns the protocol name for this wizard.
*/
public String getProtocolName()
{
return Resources.getString("protocolName");
}
/**
* Implements the AccountRegistrationWizard.getProtocolDescription
*
* method. Returns the description of the protocol for this wizard.
*/
public String getProtocolDescription()
{
return Resources.getString("protocolDescription");
}
/**
* Returns the set of pages contained in this wizard.
*/
public Iterator getPages()
{
ArrayList pages = new ArrayList();
firstWizardPage = new FirstWizardPage(this);
pages.add(firstWizardPage);
return pages.iterator();
}
/**
* Returns the set of data that user has entered through this wizard.
*/
public Iterator getSummary()
{
LinkedHashMap summaryTable = new LinkedHashMap();
summaryTable.put(Resources.getString("uin"), registration.getUin());
summaryTable.put(Resources.getString("rememberPassword"), new Boolean(registration
.isRememberPassword()));
if(registration.isAdvancedSettingsEnabled())
{
if (registration.getProxy() != null)
summaryTable.put(Resources.getString("proxy"),
registration.getProxy());
if (registration.getProxyPort() != null)
summaryTable.put(Resources.getString("proxyPort"),
registration.getProxyPort());
if (registration.getProxyType() != null)
summaryTable.put(Resources.getString("proxyType"),
registration.getProxyType());
if (registration.getProxyPort() != null)
summaryTable.put(Resources.getString("proxyUsername"),
registration.getProxyUsername());
if (registration.getProxyType() != null)
summaryTable.put(Resources.getString("proxyPassword"),
registration.getProxyPassword());
}
return summaryTable.entrySet().iterator();
}
/**
* Installs the account created through this wizard.
*
* @return the ProtocolProviderService for the newly created
* account.
*/
public ProtocolProviderService signin()
{
return this.signin(registration.getUin(), registration
.getPassword());
}
public ProtocolProviderService signin(String userName, String password)
{
firstWizardPage = null;
ProtocolProviderFactory factory =
IcqAccRegWizzActivator.getIcqProtocolProviderFactory();
return this.installAccount(factory, userName, password);
}
/**
* Creates an account for the given user and password.
*
* @param providerFactory the ProtocolProviderFactory which will create the
* account
* @param user the user identifier
* @param passwd the password
* @return the ProtocolProviderService for the new account.
*/
public ProtocolProviderService installAccount(
ProtocolProviderFactory providerFactory,
String user,
String passwd)
{
Hashtable accountProperties = new Hashtable();
if (registration.isRememberPassword())
{
accountProperties.put(ProtocolProviderFactory.PASSWORD, passwd);
}
if (registration.isAdvancedSettingsEnabled())
{
if (registration.getProxy() != null)
accountProperties.put(ProtocolProviderFactory.PROXY_ADDRESS,
registration.getProxy());
if (registration.getProxyPort() != null)
accountProperties.put(ProtocolProviderFactory.PROXY_PORT,
registration.getProxyPort());
if (registration.getProxyType() != null)
accountProperties.put(ProtocolProviderFactory.PROXY_TYPE,
registration.getProxyType());
if (registration.getProxyUsername() != null)
accountProperties.put(ProtocolProviderFactory.PROXY_USERNAME,
registration.getProxyUsername());
if (registration.getProxyPassword() != null)
accountProperties.put(ProtocolProviderFactory.PROXY_PASSWORD,
registration.getProxyPassword());
}
if (isModification)
{
providerFactory.uninstallAccount(protocolProvider.getAccountID());
this.protocolProvider = null;
this.isModification = false;
}
try
{
AccountID accountID =
providerFactory.installAccount(user, accountProperties);
ServiceReference serRef =
providerFactory.getProviderForAccount(accountID);
protocolProvider =
(ProtocolProviderService) IcqAccRegWizzActivator.bundleContext
.getService(serRef);
}
catch (IllegalArgumentException e)
{
IcqAccRegWizzActivator.getUIService().getPopupDialog()
.showMessagePopupDialog(e.getMessage(),
Resources.getString("error"),
PopupDialog.ERROR_MESSAGE);
}
catch (IllegalStateException e)
{
IcqAccRegWizzActivator.getUIService().getPopupDialog()
.showMessagePopupDialog(e.getMessage(),
Resources.getString("error"),
PopupDialog.ERROR_MESSAGE);
}
return protocolProvider;
}
/**
* Fills the UIN and Password fields in this panel with the data coming
* from the given protocolProvider.
*
* @param protocolProvider The ProtocolProviderService to load
* the data from.
*/
public void loadAccount(ProtocolProviderService protocolProvider)
{
this.isModification = true;
this.protocolProvider = protocolProvider;
this.registration = new IcqAccountRegistration();
this.firstWizardPage.loadAccount(protocolProvider);
}
/**
* Indicates if this wizard is opened for modification or for creating a
* new account.
*
* @return true
if this wizard is opened for modification and
* false
otherwise.
*/
public boolean isModification()
{
return isModification;
}
/**
* Returns the wizard container, where all pages are added.
*
* @return the wizard container, where all pages are added
*/
public WizardContainer getWizardContainer()
{
return wizardContainer;
}
/**
* Returns the registration object, which will store all the data through
* the wizard.
*
* @return the registration object, which will store all the data through
* the wizard
*/
public IcqAccountRegistration getRegistration()
{
return registration;
}
/**
* Returns the size of this wizard.
* @return the size of this wizard
*/
public Dimension getSize()
{
return new Dimension(600, 500);
}
/**
* Returns the identifier of the page to show first in the wizard.
* @return the identifier of the page to show first in the wizard.
*/
public Object getFirstPageIdentifier()
{
return firstWizardPage.getIdentifier();
}
/**
* Returns the identifier of the page to show last in the wizard.
* @return the identifier of the page to show last in the wizard.
*/
public Object getLastPageIdentifier()
{
return firstWizardPage.getIdentifier();
}
/**
* Sets the modification property to indicate if this wizard is opened for
* a modification.
*
* @param isModification indicates if this wizard is opened for modification
* or for creating a new account.
*/
public void setModification(boolean isModification)
{
this.isModification = isModification;
}
/**
* Returns an example string, which should indicate to the user how the
* user name should look like.
* @return an example string, which should indicate to the user how the
* user name should look like.
*/
public String getUserNameExample()
{
return FirstWizardPage.USER_NAME_EXAMPLE;
}
/**
* Enables the simple "Sign in" form.
*/
public boolean isSimpleFormEnabled()
{
return true;
}
/**
* Opens the browser on the account registration page.
*/
public void webSignup()
{
IcqAccRegWizzActivator.getBrowserLauncher().openURL(
"https://www.icq.com/register/");
}
/**
* Returns true
if the web sign up is supported by the current
* implementation, false
- otherwise.
* @return true
if the web sign up is supported by the current
* implementation, false
- otherwise
*/
public boolean isWebSignupSupported()
{
return true;
}
}