From 4bae51736633691895068f154628729ba6c8a996 Mon Sep 17 00:00:00 2001 From: Yana Stamcheva Date: Mon, 31 Jul 2006 16:24:32 +0000 Subject: [PATCH] modify account --- .../main/account/AccountRegSummaryPage.java | 14 ++- .../AccountRegWizardContainerImpl.java | 108 +++++++++++++++--- .../plugin/icqaccregwizz/FirstWizardPage.java | 21 ++++ .../icqaccregwizz/IcqAccRegWizzActivator.java | 24 +++- .../IcqAccountRegistrationWizard.java | 45 ++++++-- 5 files changed, 186 insertions(+), 26 deletions(-) diff --git a/src/net/java/sip/communicator/impl/gui/main/account/AccountRegSummaryPage.java b/src/net/java/sip/communicator/impl/gui/main/account/AccountRegSummaryPage.java index 08a86022c..cf7d52463 100644 --- a/src/net/java/sip/communicator/impl/gui/main/account/AccountRegSummaryPage.java +++ b/src/net/java/sip/communicator/impl/gui/main/account/AccountRegSummaryPage.java @@ -141,10 +141,16 @@ public void pageNext() { this.wizardContainer.addAccountWizard(protocolProvider, wizard); - this.wizardContainer.unregisterWizardPage( - WizardPage.DEFAULT_PAGE_IDENTIFIER); - this.wizardContainer.unregisterWizardPage( - WizardPage.SUMMARY_PAGE_IDENTIFIER); + if(wizardContainer.containsPage(WizardPage.DEFAULT_PAGE_IDENTIFIER)) { + this.wizardContainer.unregisterWizardPage( + WizardPage.DEFAULT_PAGE_IDENTIFIER); + } + + if(wizardContainer.containsPage(WizardPage.SUMMARY_PAGE_IDENTIFIER)) { + this.wizardContainer.unregisterWizardPage( + WizardPage.SUMMARY_PAGE_IDENTIFIER); + } + this.wizardContainer.unregisterAll(); this.wizardContainer.removeWizzardIcon(); } diff --git a/src/net/java/sip/communicator/impl/gui/main/account/AccountRegWizardContainerImpl.java b/src/net/java/sip/communicator/impl/gui/main/account/AccountRegWizardContainerImpl.java index d1bbb084a..0606e4e86 100644 --- a/src/net/java/sip/communicator/impl/gui/main/account/AccountRegWizardContainerImpl.java +++ b/src/net/java/sip/communicator/impl/gui/main/account/AccountRegWizardContainerImpl.java @@ -8,14 +8,16 @@ import java.io.ByteArrayInputStream; import java.io.IOException; -import java.util.Hashtable; import java.util.Iterator; +import java.util.List; import java.util.Vector; import javax.imageio.ImageIO; +import net.java.sip.communicator.impl.gui.GuiActivator; import net.java.sip.communicator.impl.gui.customcontrols.wizard.Wizard; import net.java.sip.communicator.impl.gui.i18n.Messages; +import net.java.sip.communicator.service.configuration.ConfigurationService; import net.java.sip.communicator.service.gui.AccountRegistrationWizard; import net.java.sip.communicator.service.gui.AccountRegistrationWizardContainer; import net.java.sip.communicator.service.gui.WizardPage; @@ -38,11 +40,11 @@ public class AccountRegWizardContainerImpl extends Wizard private AccountRegFirstPage firstPage; private AccountRegSummaryPage summaryPage; - - private Hashtable accountWizards = new Hashtable(); - + private AccountRegistrationWizard currentWizard; + ConfigurationService configService + = GuiActivator.getConfigurationService(); /** * Listeners interested in events dispatched upon modifications * in the account registrations list. @@ -171,6 +173,9 @@ public AccountRegSummaryPage getSummaryPage() { return summaryPage; } + /** + * Opens a wizard for creating a new account. + */ public void newAccount() { this.registerWizardPage(firstPage.getIdentifier(), firstPage); @@ -180,18 +185,41 @@ public void newAccount() { } /** + * Opens the corresponding wizard to modify an existing account given by + * the protocolProvider parameter. * - * @param protocolProvider + * @param protocolProvider The ProtocolProviderService for the + * account to modify. */ public void modifyAccount(ProtocolProviderService protocolProvider) { - this.registerWizardPage(summaryPage.getIdentifier(), summaryPage); - AccountRegistrationWizard wizard = (AccountRegistrationWizard) - this.accountWizards.get(protocolProvider); + String wizardClassName = null; - this.setCurrentWizard(wizard); + String prefix = "net.java.sip.communicator.impl.ui"; - wizard.loadAccount(protocolProvider); + List accounts = this.configService + .getPropertyNamesByPrefix(prefix, true); + + Iterator accountsIter = accounts.iterator(); + + while(accountsIter.hasNext()) { + String accountRootPropName = (String) accountsIter.next(); + + String accountUID = configService.getString(accountRootPropName); + + if(accountUID.equals(protocolProvider + .getAccountID().getAccountUniqueID())) { + + wizardClassName = configService.getString( + accountRootPropName + ".WIZARD"); + } + } + AccountRegistrationWizard wizard + = getWizardFromClassName(wizardClassName); + + this.registerWizardPage(summaryPage.getIdentifier(), summaryPage); + + this.setCurrentWizard(wizard); Iterator i = wizard.getPages(); @@ -211,6 +239,8 @@ public void modifyAccount(ProtocolProviderService protocolProvider) { } } + wizard.loadAccount(protocolProvider); + this.getSummaryPage() .setPreviousPageIdentifier(identifier); @@ -224,22 +254,72 @@ public void modifyAccount(ProtocolProviderService protocolProvider) { } /** - * Adds the (protocol provider, wizard) pair. + * Saves the (protocol provider, wizard) pair in through the + * ConfigurationService. * - * @param protocolProvider - * @param wizard + * @param protocolProvider the protocol provider to save + * @param wizard the wizard to save */ public void addAccountWizard( ProtocolProviderService protocolProvider, AccountRegistrationWizard wizard) { - this.accountWizards.put(protocolProvider, wizard); + + String accNodeName + = "acc" + Long.toString(System.currentTimeMillis()); + + String wizardClassName = wizard.getClass() + .getName().replace('.', '_'); + + String accountPackage = "net.java.sip.communicator.impl.ui." + + accNodeName; + + configService.setProperty(accountPackage, + protocolProvider.getAccountID().getAccountUniqueID()); + + configService.setProperty(accountPackage+".WIZARD", + wizardClassName); } + /** + * Returns the currently used AccountRegistrationWizard. + * @return the currently used AccountRegistrationWizard + */ public AccountRegistrationWizard getCurrentWizard() { return currentWizard; } + /** + * Sets the currently used AccountRegistrationWizard. + * @param currentWizard the AccountRegistrationWizard to set + * as current one + */ public void setCurrentWizard(AccountRegistrationWizard currentWizard) { this.currentWizard = currentWizard; } + + /** + * Returns the AccountRegistrationWizard corresponding to the + * given class name. + * @param wizardClassName the class name of the searched wizard + * @return the AccountRegistrationWizard corresponding to the + * given class name + */ + private AccountRegistrationWizard getWizardFromClassName( + String wizardClassName) { + + Iterator i = this.firstPage.getWizardsList(); + + while(i.hasNext()) { + AccountRegistrationWizard wizard + = (AccountRegistrationWizard)i.next(); + + String wizardClassName1 = wizard.getClass() + .getName().replace('.', '_'); + + if(wizardClassName1.equals(wizardClassName)) { + return wizard; + } + } + return null; + } } diff --git a/src/net/java/sip/communicator/plugin/icqaccregwizz/FirstWizardPage.java b/src/net/java/sip/communicator/plugin/icqaccregwizz/FirstWizardPage.java index f190d0ca9..9e8e7d625 100644 --- a/src/net/java/sip/communicator/plugin/icqaccregwizz/FirstWizardPage.java +++ b/src/net/java/sip/communicator/plugin/icqaccregwizz/FirstWizardPage.java @@ -25,6 +25,9 @@ import net.java.sip.communicator.service.gui.WizardContainer; import net.java.sip.communicator.service.gui.WizardPage; +import net.java.sip.communicator.service.protocol.AccountID; +import net.java.sip.communicator.service.protocol.ProtocolProviderFactory; +import net.java.sip.communicator.service.protocol.ProtocolProviderService; /** * The FirstWizardPage is the page, where user could enter the uin @@ -223,4 +226,22 @@ public void pageShown() { public void pageBack() { } + + /** + * Fills the UIN and Password fields in this panel with the data comming + * from the given protocolProvider. + * @param protocolProvider The ProtocolProviderService to load the + * data from. + */ + public void loadAccount(ProtocolProviderService protocolProvider, + boolean rememberPassword) { + AccountID accountID = protocolProvider.getAccountID(); + String password = (String)accountID.getAccountProperties() + .get(ProtocolProviderFactory.PASSWORD); + + this.uinField.setText(accountID.getUserID()); + this.passField.setText(password); + + this.rememberPassBox.setSelected(rememberPassword); + } } diff --git a/src/net/java/sip/communicator/plugin/icqaccregwizz/IcqAccRegWizzActivator.java b/src/net/java/sip/communicator/plugin/icqaccregwizz/IcqAccRegWizzActivator.java index db920e8ae..e89544d2e 100644 --- a/src/net/java/sip/communicator/plugin/icqaccregwizz/IcqAccRegWizzActivator.java +++ b/src/net/java/sip/communicator/plugin/icqaccregwizz/IcqAccRegWizzActivator.java @@ -6,11 +6,11 @@ */ package net.java.sip.communicator.plugin.icqaccregwizz; +import net.java.sip.communicator.service.configuration.ConfigurationService; import net.java.sip.communicator.service.gui.AccountRegistrationWizardContainer; import net.java.sip.communicator.service.gui.UIService; import net.java.sip.communicator.service.protocol.ProtocolNames; import net.java.sip.communicator.service.protocol.ProtocolProviderFactory; -import net.java.sip.communicator.slick.protocol.icq.IcqSlickFixture; import net.java.sip.communicator.util.Logger; import org.osgi.framework.BundleActivator; @@ -30,6 +30,8 @@ public class IcqAccRegWizzActivator implements BundleActivator { private static Logger logger = Logger.getLogger( IcqAccRegWizzActivator.class.getName()); + private static ConfigurationService configService; + /** * Starts this bundle. */ @@ -55,6 +57,10 @@ public void start(BundleContext bc) throws Exception { public void stop(BundleContext bundleContext) throws Exception { } + /** + * Returns the ProtocolProviderFactory for the ICQ protocol. + * @return the ProtocolProviderFactory for the ICQ protocol + */ public static ProtocolProviderFactory getIcqProtocolProviderFactory() { ServiceReference[] serRefs = null; @@ -73,4 +79,20 @@ public static ProtocolProviderFactory getIcqProtocolProviderFactory() { return (ProtocolProviderFactory) bundleContext.getService(serRefs[0]); } + + /** + * Returns the ConfigurationService. + * @return the ConfigurationService + */ + public static ConfigurationService getConfigurationService() { + if(configService == null) { + ServiceReference configReference = bundleContext + .getServiceReference(ConfigurationService.class.getName()); + + configService = (ConfigurationService) bundleContext + .getService(configReference); + } + + return configService; + } } diff --git a/src/net/java/sip/communicator/plugin/icqaccregwizz/IcqAccountRegistrationWizard.java b/src/net/java/sip/communicator/plugin/icqaccregwizz/IcqAccountRegistrationWizard.java index 78091807e..3c43e2d46 100644 --- a/src/net/java/sip/communicator/plugin/icqaccregwizz/IcqAccountRegistrationWizard.java +++ b/src/net/java/sip/communicator/plugin/icqaccregwizz/IcqAccountRegistrationWizard.java @@ -10,15 +10,15 @@ import java.util.Hashtable; import java.util.Iterator; -import org.osgi.framework.ServiceReference; - +import net.java.sip.communicator.service.configuration.ConfigurationService; import net.java.sip.communicator.service.gui.AccountRegistrationWizard; import net.java.sip.communicator.service.gui.WizardContainer; import net.java.sip.communicator.service.protocol.AccountID; -import net.java.sip.communicator.service.protocol.AccountProperties; import net.java.sip.communicator.service.protocol.ProtocolProviderFactory; import net.java.sip.communicator.service.protocol.ProtocolProviderService; +import org.osgi.framework.ServiceReference; + /** * The IcqAccountRegistrationWizard is an implementation of the * AccountRegistrationWizard for the ICQ protocol. It should allow @@ -35,6 +35,13 @@ public class IcqAccountRegistrationWizard implements AccountRegistrationWizard { private WizardContainer wizardContainer; + ConfigurationService configService + = IcqAccRegWizzActivator.getConfigurationService(); + + private ProtocolProviderService protocolProvider; + + private String propertiesPackage = "net.java.sip.communicator.plugin.icqaccregwizz"; + /** * Creates an instance of IcqAccountRegistrationWizard. * @param wizardContainer the wizard container, where this wizard @@ -124,22 +131,46 @@ public ProtocolProviderService installAccount( if(registration.isRememberPassword()) { accountProperties.put(ProtocolProviderFactory.PASSWORD, passwd); } - + + if(protocolProvider != null) { + providerFactory.uninstallAccount(protocolProvider.getAccountID()); + this.protocolProvider = null; + } + AccountID accountID = providerFactory.installAccount( user, accountProperties); - + configService.setProperty( + propertiesPackage + ".REMEMBER_PASSWORD", + new Boolean(registration.isRememberPassword()) + ); + ServiceReference serRef = providerFactory .getProviderForAccount(accountID); ProtocolProviderService protocolProvider = (ProtocolProviderService) IcqAccRegWizzActivator.bundleContext .getService(serRef); - + return protocolProvider; } + /** + * Fills the UIN and Password fields in this panel with the data comming + * from the given protocolProvider. + * @param protocolProvider The ProtocolProviderService to load the + * data from. + */ public void loadAccount(ProtocolProviderService protocolProvider) { - System.out.println("LOAD ACCOUNT!!!!!!!!!!!!!!!!!!"); + + this.protocolProvider = protocolProvider; + + boolean rememberPassword + = new Boolean(configService + .getString(propertiesPackage + ".REMEMBER_PASSWORD")) + .booleanValue(); + + this.firstWizardPage.loadAccount( + protocolProvider, rememberPassword); } }