[sip-comm-cvs] CVS update: /sip-communicator/src/net/java/sip/communicator/plugin/aimaccregwizz/, /sip-communicator/lib/, /sip-communicator/src/net/java/sip/commu...

damencho at dev.java.net damencho at dev.java.net
Tue Apr 10 17:29:04 CEST 2007


User: damencho
Date: 2007-04-10 15:29:04+0000
Added:
   sip-communicator/src/net/java/sip/communicator/plugin/aimaccregwizz/FirstWizardPage.java
   sip-communicator/src/net/java/sip/communicator/plugin/aimaccregwizz/AimAccountRegistration.java
   sip-communicator/src/net/java/sip/communicator/plugin/aimaccregwizz/AimAccRegWizzActivator.java
   sip-communicator/src/net/java/sip/communicator/plugin/aimaccregwizz/AimAccountRegistrationWizard.java
   sip-communicator/src/net/java/sip/communicator/plugin/aimaccregwizz/Resources.java
   sip-communicator/src/net/java/sip/communicator/plugin/aimaccregwizz/aimaccregwizz.manifest.mf
   sip-communicator/src/net/java/sip/communicator/plugin/aimaccregwizz/resources.properties

Modified:
   sip-communicator/lib/felix.client.run.properties
   sip-communicator/src/net/java/sip/communicator/impl/protocol/jabber/ContactJabberImpl.java
   sip-communicator/src/net/java/sip/communicator/impl/protocol/icq/ProtocolProviderFactoryIcqImpl.java
   sip-communicator/src/net/java/sip/communicator/impl/protocol/icq/OperationSetPersistentPresenceIcqImpl.java
   sip-communicator/src/net/java/sip/communicator/impl/protocol/icq/IcqActivator.java
   sip-communicator/src/net/java/sip/communicator/impl/protocol/icq/IcqAccountID.java
   sip-communicator/src/net/java/sip/communicator/impl/protocol/icq/ProtocolProviderServiceIcqImpl.java
   sip-communicator/build.xml

Log:
 Aim wizard and some improvments on the loading of accounts for the aim/icq protocol.

File Changes:

Directory: /sip-communicator/src/net/java/sip/communicator/plugin/aimaccregwizz/
================================================================================

File [added]: FirstWizardPage.java
Url: https://sip-communicator.dev.java.net/source/browse/sip-communicator/src/net/java/sip/communicator/plugin/aimaccregwizz/FirstWizardPage.java?rev=1.1&content-type=text/vnd.viewcvs-markup
Added lines: 405
----------------
/*
 * 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.aimaccregwizz;

import java.awt.*;
import java.awt.event.*;
import java.util.*;

import javax.swing.*;
import javax.swing.event.*;

import net.java.sip.communicator.service.gui.*;
import net.java.sip.communicator.service.protocol.*;

/**
 * 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
    implements  WizardPage,
                DocumentListener,
                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"));

    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 AimAccountRegistration registration;

    private WizardContainer wizardContainer;

    /**
     * Creates an instance of <tt>FirstWizardPage</tt>.
     * @param registration the <tt>AimAccountRegistration</tt>, where
     * all data through the wizard are stored
     * @param wizardContainer the wizardContainer, where this page will
     * be added
     */
    public FirstWizardPage(AimAccountRegistration registration,
            WizardContainer wizardContainer) {

        super(new BorderLayout());

        this.wizardContainer = wizardContainer;

        this.registration = registration;

        this.setPreferredSize(new Dimension(600, 500));

        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.
     */
    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(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.
     */
    public Object getIdentifier() {
        return FIRST_PAGE_IDENTIFIER;
    }

    /**
     * Implements the <code>WizardPage.getNextPageIdentifier</code> to return
     * the next page identifier - the summary page.
     */
    public Object getNextPageIdentifier() {
        return nextPageIdentifier;
    }

    /**
     * Implements the <code>WizardPage.getBackPageIdentifier</code> to return
     * the next back identifier - the default page.
     */
    public Object getBackPageIdentifier() {
        return WizardPage.DEFAULT_PAGE_IDENTIFIER;
    }

    /**
     * Implements the <code>WizardPage.getWizardForm</code> to return
     * this panel.
     */
    public Object getWizardForm() {
        return this;
    }

    /**
     * Before this page is displayed enables or disables the "Next" wizard
     * button according to whether the UIN field is empty.
     */
    public void pageShowing() {
        this.setNextButtonAccordingToUIN();
    }

    /**
     * Saves the user input when the "Next" wizard buttons is clicked.
     */
    public void pageNext() {
        String uin = uinField.getText();

        if(isExistingAccount(uin)) {
            nextPageIdentifier = FIRST_PAGE_IDENTIFIER;
            uinPassPanel.add(existingAccountLabel, BorderLayout.NORTH);
            this.revalidate();
        }
        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.
     */
    private void setNextButtonAccordingToUIN() {
        if (uinField.getText() == null || uinField.getText().equals("")) {
            wizardContainer.setNextFinishButtonEnabled(false);
        }
        else {
            wizardContainer.setNextFinishButtonEnabled(true);
        }
    }

    /**
     * Handles the <tt>DocumentEvent</tt> triggered when user types in the
     * UIN field. Enables or disables the "Next" wizard button according to
     * whether the UIN field is empty.
     */
    public void insertUpdate(DocumentEvent e) {
        this.setNextButtonAccordingToUIN();
    }

    /**
     * Handles the <tt>DocumentEvent</tt> triggered when user deletes letters
     * from the UIN field. Enables or disables the "Next" wizard button
     * according to whether the UIN field is empty.
     */
    public void removeUpdate(DocumentEvent e) {
        this.setNextButtonAccordingToUIN();
    }

    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.
     * @param protocolProvider The <tt>ProtocolProviderService</tt> to load the
     * data from.
     */
    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)
    {
        AimAccRegWizzActivator.getBrowserLauncher()
            .openURL("http://my.screenname.aol.com/_cqr/login/login.psp?seamless=n&createSn=1");
    }

    /**
     * Checks if an acount with the given account already exists.
     * 
     * @param accountName the name of the account to check
     * @return TRUE, if an account with the given name already exists, FALSE -
     * otherwise
     */
    private boolean isExistingAccount(String accountName)
    {
        ProtocolProviderFactory factory
            = AimAccRegWizzActivator.getAimProtocolProviderFactory();

        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;
        }
        return false;
    }
}

File [added]: AimAccountRegistration.java
Url: https://sip-communicator.dev.java.net/source/browse/sip-communicator/src/net/java/sip/communicator/plugin/aimaccregwizz/AimAccountRegistration.java?rev=1.1&content-type=text/vnd.viewcvs-markup
Added lines: 161
----------------
/*
 * 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.aimaccregwizz;

/**
 * The <tt>AimAccountRegistration</tt> is used to store all user input data
 * through the <tt>AimAccountRegistrationWizard</tt>.
 *
 * @author Yana Stamcheva
 */
public class AimAccountRegistration {

    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 aim registration account.
     * @return the password of the aim registration account.
     */
    public String getPassword() {
        return password;
    }

    /**
     * Sets the password of the aim registration account.
     * @param password the password of the aim registration account.
     */
    public void setPassword(String password) {
        this.password = password;
    }

    /**
     * Returns TRUE if password has to remembered, FALSE otherwise.
     * @return TRUE if password has to remembered, FALSE otherwise
     */
    public boolean isRememberPassword() {
        return rememberPassword;
    }

    /**
     * Sets the rememberPassword value of this aim account registration.
     * @param rememberPassword TRUE if password has to remembered, FALSE
     * otherwise
     */
    public void setRememberPassword(boolean rememberPassword) {
        this.rememberPassword = rememberPassword;
    }

    /**
     * Returns the UIN of the aim registration account.
     * @return the UIN of the aim registration account.
     */
    public String getUin() {
        return uin;
    }

    /**
     * Sets the UIN of the aim registration account.
     * @param uin the UIN of the aim registration account.
     */
    public void setUin(String uin) {
        this.uin = uin;
    }

    /**
     * Returns the proxy that will be used for this aim account.
     * @return the proxy that will be used for this aim account.
     */
    public String getProxy() {
        return proxy;
    }

    /**
     * Sets the proxy for this aim account.
     * @param proxy the proxy for this aim account.
     */
    public void setProxy(String proxy) {
        this.proxy = proxy;
    }

    /**
     * Returns the proxy port that will be used for this aim account.
     * @return the proxy port that will be used for this aim account.
     */
    public String getProxyPort() {
        return proxyPort;
    }

    /**
     * Sets the proxy port for this aim account.
     * @param proxyPort the proxy port for this aim account.
     */
    public void setProxyPort(String proxyPort) {
        this.proxyPort = proxyPort;
    }

    /**
     * Returns the proxy type that will be used for this aim account.
     * @return the proxy type that will be used for this aim account.
     */
    public String getProxyType() {
        return proxyType;
    }

    /**
     * Sets the proxy type for this aim account.
     * @param proxyType the proxy type for this aim account
     */
    public void setProxyType(String proxyType) {
        this.proxyType = proxyType;
    }

    /**
     * Returns the proxy password of the aim registration account.
     * @return the proxy password of the aim registration account.
     */
    public String getProxyPassword() {
        return proxyPassword;
    }

    /**
     * Sets the proxy password of the aim registration account.
     * @param password the proxy password of the aim registration account.
     */
    public void setProxyPassword(String password) {
        this.proxyPassword = password;
    }

    /**
    * Returns the proxy username of the aim registration account.
    * @return the proxy username of the aim registration account.
    */
   public String getProxyUsername() {
       return proxyUsername;
   }

   /**
    * Sets the proxy username of the aim registration account.
    * @param username the proxy username of the aim registration account
    */
   public void setProxyUsername(String username) {
       this.proxyUsername = username;
   }
}

File [added]: AimAccRegWizzActivator.java
Url: https://sip-communicator.dev.java.net/source/browse/sip-communicator/src/net/java/sip/communicator/plugin/aimaccregwizz/AimAccRegWizzActivator.java?rev=1.1&content-type=text/vnd.viewcvs-markup
Added lines: 95
---------------
/*
 * 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.aimaccregwizz;

import net.java.sip.communicator.service.browserlauncher.*;
import net.java.sip.communicator.service.gui.*;
import net.java.sip.communicator.service.protocol.*;
import net.java.sip.communicator.util.*;

import org.osgi.framework.*;

/**
 * Registers the <tt>AimAccountRegistrationWizard</tt> in the UI Service.
 *
 * @author Yana Stamcheva
 */
public class AimAccRegWizzActivator implements BundleActivator {

    public static BundleContext bundleContext;

    private static Logger logger = Logger.getLogger(
        AimAccRegWizzActivator.class);
    
    private static BrowserLauncherService browserLauncherService;
    
    /**
     * Starts this bundle.
     */
    public void start(BundleContext bc) throws Exception {

        bundleContext = bc;

        ServiceReference uiServiceRef = bundleContext
            .getServiceReference(UIService.class.getName());

        UIService uiService
            = (UIService) bundleContext.getService(uiServiceRef);

        AccountRegistrationWizardContainer wizardContainer
            = uiService.getAccountRegWizardContainer();

        AimAccountRegistrationWizard aimWizard
            = new AimAccountRegistrationWizard(wizardContainer);

        wizardContainer.addAccountRegistrationWizard(aimWizard);
    }

    public void stop(BundleContext bundleContext) throws Exception {
    }

    /**
     * Returns the <tt>ProtocolProviderFactory</tt> for the AIM protocol.
     * @return the <tt>ProtocolProviderFactory</tt> for the AIM protocol
     */
    public static ProtocolProviderFactory getAimProtocolProviderFactory() {

        ServiceReference[] serRefs = null;

        String osgiFilter = "("
            + ProtocolProviderFactory.PROTOCOL
            + "="+ProtocolNames.AIM+")";

        try {
            serRefs = bundleContext.getServiceReferences(
                ProtocolProviderFactory.class.getName(), osgiFilter);
        }
        catch (InvalidSyntaxException ex){
            logger.error("AimAccRegWizzActivator : " + ex);
        }

        return (ProtocolProviderFactory) bundleContext.getService(serRefs[0]);
    }
    
    /**
     * Returns the <tt>BrowserLauncherService</tt> obtained from the bundle
     * context.
     * @return the <tt>BrowserLauncherService</tt> obtained from the bundle
     * context
     */
    public static BrowserLauncherService getBrowserLauncher() {
        if (browserLauncherService == null) {
            ServiceReference serviceReference = bundleContext
                .getServiceReference(BrowserLauncherService.class.getName());

            browserLauncherService = (BrowserLauncherService) bundleContext
                .getService(serviceReference);
        }

        return browserLauncherService;
    }
}

File [added]: AimAccountRegistrationWizard.java
Url: https://sip-communicator.dev.java.net/source/browse/sip-communicator/src/net/java/sip/communicator/plugin/aimaccregwizz/AimAccountRegistrationWizard.java?rev=1.1&content-type=text/vnd.viewcvs-markup
Added lines: 216
----------------
/*
 * 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.aimaccregwizz;

import java.util.*;

import net.java.sip.communicator.impl.gui.customcontrols.*;
import net.java.sip.communicator.plugin.gibberishaccregwizz.*;
import net.java.sip.communicator.service.gui.*;
import net.java.sip.communicator.service.protocol.*;

import org.osgi.framework.*;

/**
 * The <tt>AimAccountRegistrationWizard</tt> is an implementation of the
 * <tt>AccountRegistrationWizard</tt> for the AIM protocol. It should allow
 * the user to create and configure a new AIM account.
 *
 * @author Yana Stamcheva
 */
public class AimAccountRegistrationWizard implements AccountRegistrationWizard
{
    private FirstWizardPage firstWizardPage;

    private AimAccountRegistration registration
        = new AimAccountRegistration();

    private WizardContainer wizardContainer;

    private ProtocolProviderService protocolProvider;

    private boolean isModification;

    /**
     * Creates an instance of <tt>AimAccountRegistrationWizard</tt>.
     * @param wizardContainer the wizard container, where this wizard
     * is added
     */
    public AimAccountRegistrationWizard(WizardContainer wizardContainer) {
        this.wizardContainer = wizardContainer;
    }

    /**
     * Implements the <code>AccountRegistrationWizard.getIcon</code> method.
     * Returns the icon to be used for this wizard.
     */
    public byte[] getIcon() {
        return Resources.getImage(Resources.AIM_LOGO);
    }
    
    /**
     * Implements the <code>AccountRegistrationWizard.getPageImage</code> 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 <code>AccountRegistrationWizard.getProtocolName</code>
     * method. Returns the protocol name for this wizard.
     */
    public String getProtocolName() {
        return Resources.getString("protocolName");
    }

    /**
     * Implements the <code>AccountRegistrationWizard.getProtocolDescription
     * </code> 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(registration, wizardContainer);

        pages.add(firstWizardPage);

        return pages.iterator();
    }

    /**
     * Returns the set of data that user has entered through this wizard.
     */
    public Iterator getSummary() {
        Hashtable summaryTable = new Hashtable();

        summaryTable.put("UIN", registration.getUin());
        summaryTable.put("Remember password",
                new Boolean(registration.isRememberPassword()));
        
        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.getProxyPort());
        
        if(registration.getProxyType() != null)
            summaryTable.put(Resources.getString("proxyPassword"),
                            registration.getProxyType());
        
        return summaryTable.entrySet().iterator();
    }

    /**
     * Installs the account created through this wizard.
     */
    public ProtocolProviderService finish() {
        firstWizardPage = null;
        ProtocolProviderFactory factory
            = AimAccRegWizzActivator.getAimProtocolProviderFactory();

        return this.installAccount(factory,
                registration.getUin(), registration.getPassword());
    }

    /**
     * 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 <tt>ProtocolProviderService</tt> 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.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) AimAccRegWizzActivator.bundleContext
                    .getService(serRef);
        }
        catch (IllegalArgumentException e) {
            new ErrorDialog(null, e.getMessage(), e).showDialog();
        }
        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.
     * @param protocolProvider The <tt>ProtocolProviderService</tt> to load the
     * data from.
     */
    public void loadAccount(ProtocolProviderService protocolProvider) {

        this.protocolProvider = protocolProvider;

        this.firstWizardPage.loadAccount(protocolProvider);

        this.isModification = true;
    }    
}

File [added]: Resources.java
Url: https://sip-communicator.dev.java.net/source/browse/sip-communicator/src/net/java/sip/communicator/plugin/aimaccregwizz/Resources.java?rev=1.1&content-type=text/vnd.viewcvs-markup
Added lines: 83
---------------
/*
 * 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.aimaccregwizz;

import java.io.*;
import java.util.*;

import net.java.sip.communicator.util.*;
/**
 * The Messages class manages the access to the internationalization
 * properties files.
 * @author Yana Stamcheva
 */
public class Resources {
    
    private static Logger log = Logger.getLogger(Resources.class);
    
    private static final String BUNDLE_NAME 
        = "net.java.sip.communicator.plugin.aimaccregwizz.resources";

    private static final ResourceBundle RESOURCE_BUNDLE = ResourceBundle
            .getBundle(BUNDLE_NAME);
    
    public static ImageID AIM_LOGO = new ImageID("protocolIcon");
    
    public static ImageID PAGE_IMAGE = new ImageID("pageImage");
    
    /**
     * Returns an internationalized string corresponding to the given key.
     * @param key The key of the string.
     * @return An internationalized string corresponding to the given key.
     */
    public static String getString(String key) {
        try {
            return RESOURCE_BUNDLE.getString(key);

        } catch (MissingResourceException e) {

            return '!' + key + '!';
        }
    }   
    
    /**
     * Loads an image from a given image identifier.
     * @param imageID The identifier of the image.
     * @return The image for the given identifier.
     */
    public static byte[] getImage(ImageID imageID) {
        byte[] image = new byte[100000];

        String path = Resources.getString(imageID.getId());
        try {
            Resources.class.getClassLoader()
                    .getResourceAsStream(path).read(image);

        } catch (IOException e) {
            log.error("Failed to load image:" + path, e);
        }
        
        return image;
    }
    
    /**
     * Represents the Image Identifier.
     */
    public static class ImageID {
        private String id;

        private ImageID(String id) {
            this.id = id;
        }

        public String getId() {
            return id;
        }
    }

}

File [added]: aimaccregwizz.manifest.mf
Url: https://sip-communicator.dev.java.net/source/browse/sip-communicator/src/net/java/sip/communicator/plugin/aimaccregwizz/aimaccregwizz.manifest.mf?rev=1.1&content-type=text/vnd.viewcvs-markup
Added lines: 31
---------------
Bundle-Activator: net.java.sip.communicator.plugin.aimaccregwizz.AimAccRegWizzActivator
Bundle-Name: AIM account registration wizard
Bundle-Description: AIM account registration wizard.
Bundle-Vendor: sip-communicator.org
Bundle-Version: 0.0.1
Import-Package: org.osgi.framework,
 net.java.sip.communicator.util,
 net.java.sip.communicator.service.configuration,
 net.java.sip.communicator.service.configuration.event,
 net.java.sip.communicator.service.protocol,
 net.java.sip.communicator.service.protocol.icqconstants,
 net.java.sip.communicator.service.protocol.event,
 net.java.sip.communicator.service.contactlist,
 net.java.sip.communicator.service.contactlist.event,
 net.java.sip.communicator.service.gui,
 net.java.sip.communicator.service.gui.event,
 net.java.sip.communicator.service.browserlauncher,
 javax.swing,
 javax.swing.event,
 javax.swing.table,
 javax.swing.text,
 javax.swing.text.html,
 javax.accessibility,
 javax.swing.plaf,
 javax.swing.plaf.metal,
 javax.swing.plaf.basic,
 javax.imageio,
 javax.swing.filechooser,
 javax.swing.tree,
 javax.swing.undo,
 javax.swing.border

File [added]: resources.properties
Url: https://sip-communicator.dev.java.net/source/browse/sip-communicator/src/net/java/sip/communicator/plugin/aimaccregwizz/resources.properties?rev=1.1&content-type=text/vnd.viewcvs-markup
Added lines: 19
---------------
protocolName=AIM
protocolDescription=The AIM service protocol
uin=AIM Screenname:
password=Password:
rememberPassword=Remember password
uinAndPassword=UIN and Password
registerNewAccount=Register new account
registerNewAccountText=In case you don't have an AIM 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=resources/images/aim/aim16x16-online.png
pageImage=resources/images/aim/aim64x64.png

Directory: /sip-communicator/lib/
=================================

File [changed]: felix.client.run.properties
Url: https://sip-communicator.dev.java.net/source/browse/sip-communicator/lib/felix.client.run.properties?r1=1.12&r2=1.13
Delta lines:  +1 -0
-------------------
--- felix.client.run.properties	2007-02-22 12:38:46+0000	1.12
+++ felix.client.run.properties	2007-04-10 15:29:00+0000	1.13
@@ -82,6 +82,7 @@
 
  felix.auto.start.67= \
  reference:file:sc-bundles/icqaccregwizz.jar \
+reference:file:sc-bundles/aimaccregwizz.jar \
  reference:file:sc-bundles/sipaccregwizz.jar \
  reference:file:sc-bundles/jabberaccregwizz.jar \
  reference:file:sc-bundles/msnaccregwizz.jar \

Directory: /sip-communicator/src/net/java/sip/communicator/impl/protocol/jabber/
================================================================================

File [changed]: ContactJabberImpl.java
Url: https://sip-communicator.dev.java.net/source/browse/sip-communicator/src/net/java/sip/communicator/impl/protocol/jabber/ContactJabberImpl.java?r1=1.6&r2=1.7
Delta lines:  +8 -3
-------------------
--- ContactJabberImpl.java	2007-03-28 09:28:51+0000	1.6
+++ ContactJabberImpl.java	2007-04-10 15:29:01+0000	1.7
@@ -297,9 +297,15 @@
     {
         try
         {
+            XMPPConnection connection = 
+                ssclCallback.getParentProvider().getConnection();
+            
+            if(connection == null || !connection.isAuthenticated())
+                return null;
+            
             VCard card = new VCard();
             card.load(
-                ssclCallback.getParentProvider().getConnection(),
+                connection,
                 getAddress());
 
             return card.getAvatar();
@@ -313,5 +319,4 @@
 
         return null;
     }
-
 }

Directory: /sip-communicator/src/net/java/sip/communicator/impl/protocol/icq/
=============================================================================

File [changed]: ProtocolProviderFactoryIcqImpl.java
Url: https://sip-communicator.dev.java.net/source/browse/sip-communicator/src/net/java/sip/communicator/impl/protocol/icq/ProtocolProviderFactoryIcqImpl.java?r1=1.8&r2=1.9
Delta lines:  +24 -6
--------------------
--- ProtocolProviderFactoryIcqImpl.java	2006-10-25 16:50:41+0000	1.8
+++ ProtocolProviderFactoryIcqImpl.java	2007-04-10 15:29:01+0000	1.9
@@ -29,10 +29,17 @@
     private Hashtable registeredAccounts = new Hashtable();
 
     /**
+     * Is this factory is created for aim or icq accounts
+     */
+    private boolean isAimFactory = false;
+
+    /**
      * Creates an instance of the ProtocolProviderFactoryIcqImpl.
+     * @param isAimFactory whether its an aim factory
      */
-    protected ProtocolProviderFactoryIcqImpl()
+    protected ProtocolProviderFactoryIcqImpl(boolean isAimFactory)
     {
+        this.isAimFactory = isAimFactory;
     }
 
     /**
@@ -93,6 +100,10 @@
         if (accountProperties == null)
             throw new NullPointerException("The specified property map was null");
 
+        // we are installing new aim account from the wizzard, so mark it as aim
+        if(isAimFactory)
+            accountProperties.put(IcqAccountID.IS_AIM, "true");
+        
         AccountID accountID = new IcqAccountID(userIDStr, accountProperties);
 
         //make sure we haven't seen this account id before.
@@ -129,6 +140,13 @@
         if(context == null)
             throw new NullPointerException("The specified BundleContext was null");
 
+        // there are two factories - one for icq accounts and one for aim ones.
+        // if we are trying to load an icq account in aim factory - skip it
+        // and the same for aim accounts in icq factory
+        if((IcqAccountID.isAIM(accountProperties) && !isAimFactory) ||
+            (!IcqAccountID.isAIM(accountProperties) && isAimFactory))
+                return null;
+        
         String userIDStr = (String)accountProperties.get(USER_ID);
 
         AccountID accountID = new IcqAccountID(userIDStr, accountProperties);
@@ -136,15 +154,15 @@
         //get a reference to the configuration service and register whatever
         //properties we have in it.
 
-        Hashtable properties = new Hashtable();
-        properties.put(PROTOCOL, ProtocolNames.ICQ);
-        properties.put(USER_ID, userIDStr);
-
         ProtocolProviderServiceIcqImpl icqProtocolProvider
             = new ProtocolProviderServiceIcqImpl();
 
         icqProtocolProvider.initialize(userIDStr, accountID);
 
+        Hashtable properties = new Hashtable();
+        properties.put(PROTOCOL, icqProtocolProvider.getProtocolName());
+        properties.put(USER_ID, userIDStr);
+        
         ServiceRegistration registration
             = context.registerService( ProtocolProviderService.class.getName(),
                                        icqProtocolProvider,

File [changed]: OperationSetPersistentPresenceIcqImpl.java
Url: https://sip-communicator.dev.java.net/source/browse/sip-communicator/src/net/java/sip/communicator/impl/protocol/icq/OperationSetPersistentPresenceIcqImpl.java?r1=1.30&r2=1.31
Delta lines:  +8 -6
-------------------
--- OperationSetPersistentPresenceIcqImpl.java	2007-04-06 09:08:30+0000	1.30
+++ OperationSetPersistentPresenceIcqImpl.java	2007-04-10 15:29:01+0000	1.31
@@ -323,11 +323,7 @@
         // Fixed order of status checking
         // The order does matter, as the icqStatus consists of more than one
         // status for example DND = OCCUPIED | DND | AWAY
-        if (icqStatus == -1)
-        {
-            return IcqStatusEnum.OFFLINE;
-        }
-        else if ( (icqStatus & FullUserInfo.ICQSTATUS_INVISIBLE ) != 0)
+        if ( (icqStatus & FullUserInfo.ICQSTATUS_INVISIBLE ) != 0)
         {
             return IcqStatusEnum.INVISIBLE;
         }
@@ -1358,13 +1354,19 @@
                     if(presenceQueryTimer == null)
                         presenceQueryTimer = new Timer();
                     else
+                    {
+                        // cancel any previous jobs and create new timer
                         presenceQueryTimer.cancel();
+                        presenceQueryTimer = new Timer();
+                    }
 
                     AwaitingAuthorizationContactsPresenceTimer
                         queryTask = new AwaitingAuthorizationContactsPresenceTimer();
 
+                    // start after 15 seconds. wait for login to be completed and 
+                    // list and statuses to be gathered
                     presenceQueryTimer.scheduleAtFixedRate(
-                            queryTask, PRESENCE_QUERY_INTERVAL, PRESENCE_QUERY_INTERVAL);
+                            queryTask, 15000, PRESENCE_QUERY_INTERVAL);
                 }
             }
             else if(evt.getNewState() == RegistrationState.UNREGISTERED

File [changed]: IcqActivator.java
Url: https://sip-communicator.dev.java.net/source/browse/sip-communicator/src/net/java/sip/communicator/impl/protocol/icq/IcqActivator.java?r1=1.5&r2=1.6
Delta lines:  +33 -6
--------------------
--- IcqActivator.java	2006-08-16 14:32:38+0000	1.5
+++ IcqActivator.java	2007-04-10 15:29:01+0000	1.6
@@ -16,10 +16,12 @@
     implements BundleActivator
 {
     private        ServiceRegistration  icqPpFactoryServReg   = null;
+    private        ServiceRegistration  aimPpFactoryServReg   = null;
     private static BundleContext        bundleContext         = null;
     private static ConfigurationService configurationService  = null;
 
     private static ProtocolProviderFactoryIcqImpl icqProviderFactory = null;
+    private static ProtocolProviderFactoryIcqImpl aimProviderFactory = null;
 
     /**
      * Called when this bundle is started so the Framework can perform the
@@ -34,19 +36,31 @@
     public void start(BundleContext context) throws Exception
     {
         this.bundleContext = context;
-        Hashtable hashtable = new Hashtable();
-        hashtable.put(ProtocolProviderFactory.PROTOCOL, ProtocolNames.ICQ);
+        Hashtable icqHashtable = new Hashtable();
+        icqHashtable.put(ProtocolProviderFactory.PROTOCOL, ProtocolNames.ICQ);
 
-        icqProviderFactory = new ProtocolProviderFactoryIcqImpl();
+        Hashtable aimHashtable = new Hashtable();
+        aimHashtable.put(ProtocolProviderFactory.PROTOCOL, ProtocolNames.AIM);
+
+        icqProviderFactory = new ProtocolProviderFactoryIcqImpl(false);
+        aimProviderFactory = new ProtocolProviderFactoryIcqImpl(true);
 
         //load all icq providers
         icqProviderFactory.loadStoredAccounts();
 
+        //load all aim providers
+        aimProviderFactory.loadStoredAccounts();
+        
         //reg the icq account man.
         icqPpFactoryServReg =  context.registerService(
                     ProtocolProviderFactory.class.getName(),
                     icqProviderFactory,
-                    hashtable);
+                    icqHashtable);
+        
+        aimPpFactoryServReg =  context.registerService(
+                    ProtocolProviderFactory.class.getName(),
+                    aimProviderFactory,
+                    aimHashtable);
     }
 
     /**
@@ -82,16 +96,27 @@
 
     /**
      * Retrurns a reference to the protocol provider factory that we have
-     * registered.
+     * registered for icq accounts.
      * @return a reference to the <tt>ProtocolProviderFactoryIcqImpl</tt>
      * instance that we have registered from this package.
      */
-    static ProtocolProviderFactoryIcqImpl getProtocolProviderFactory()
+    static ProtocolProviderFactoryIcqImpl getIcqProtocolProviderFactory()
     {
         return icqProviderFactory;
     }
 
     /**
+     * Retrurns a reference to the protocol provider factory that we have
+     * registered for aim accounts.
+     * @return a reference to the <tt>ProtocolProviderFactoryIcqImpl</tt>
+     * instance that we have registered from this package.
+     */
+    static ProtocolProviderFactoryIcqImpl getAimProtocolProviderFactory()
+    {
+        return aimProviderFactory;
+    }
+
+    /**
      * Called when this bundle is stopped so the Framework can perform the
      * bundle-specific activities necessary to stop the bundle.
      *
@@ -105,5 +130,7 @@
     {
         icqProviderFactory.stop();
         icqPpFactoryServReg.unregister();
+        
+        aimPpFactoryServReg.unregister();
     }
 }

File [changed]: IcqAccountID.java
Url: https://sip-communicator.dev.java.net/source/browse/sip-communicator/src/net/java/sip/communicator/impl/protocol/icq/IcqAccountID.java?r1=1.3&r2=1.4
Delta lines:  +26 -1
--------------------
--- IcqAccountID.java	2006-07-28 13:49:26+0000	1.3
+++ IcqAccountID.java	2007-04-10 15:29:01+0000	1.4
@@ -13,12 +13,37 @@
     extends AccountID
 {
     /**
+     * Then name of a property which represenstots is this account icq or aim.
+     */
+    public static final String IS_AIM = "IS_AIM";
+    
+    /**
      * Creates an icq account id from the specified uin and account properties.
+     * If property IS_AIM is set to true then this is an AIM account, else 
+     * an Icq one.
      * @param uin the uin identifying this account
      * @param accountProperties any other properties necessary for the account.
      */
     IcqAccountID(String uin, Map accountProperties )
     {
-        super(uin, accountProperties, ProtocolNames.ICQ, "icq.com");
+        super(uin, accountProperties, 
+            isAIM(accountProperties) ? ProtocolNames.AIM : ProtocolNames.ICQ, 
+            isAIM(accountProperties) ? "aim.com" : "icq.com");
+    }
+    
+    /**
+     * Checks is the provided properties are for icq or aim account
+     * @param accountProperties account properties for the checked account.
+     */
+    static boolean isAIM(Map accountProperties)
+    {
+        Object isAim = accountProperties.get(IS_AIM);
+
+        if(isAim != null && 
+            isAim instanceof String && 
+            ((String)isAim).equalsIgnoreCase("true"))
+                return true;
+        else
+            return false;
     }
 }

File [changed]: ProtocolProviderServiceIcqImpl.java
Url: https://sip-communicator.dev.java.net/source/browse/sip-communicator/src/net/java/sip/communicator/impl/protocol/icq/ProtocolProviderServiceIcqImpl.java?r1=1.31&r2=1.32
Delta lines:  +22 -15
---------------------
--- ProtocolProviderServiceIcqImpl.java	2007-04-06 09:08:30+0000	1.31
+++ ProtocolProviderServiceIcqImpl.java	2007-04-10 15:29:01+0000	1.32
@@ -202,9 +202,15 @@
 
         synchronized(initializationLock)
         {
+            ProtocolProviderFactoryIcqImpl protocolProviderFactory = null;
+            
+            if(USING_ICQ)
+                protocolProviderFactory = IcqActivator.getIcqProtocolProviderFactory();
+            else
+                protocolProviderFactory = IcqActivator.getAimProtocolProviderFactory();
+            
             //verify whether a password has already been stored for this account
-            String password = IcqActivator.getProtocolProviderFactory()
-                .loadPassword(getAccountID());
+            String password = protocolProviderFactory.loadPassword(getAccountID());
 
             //decode
             if( password == null )
@@ -214,7 +220,7 @@
                 credentials.setUserName(this.getAccountID().getUserID());
 
                 //request a password from the user
-                credentials = authority.obtainCredentials(ProtocolNames.ICQ
+                credentials = authority.obtainCredentials(getProtocolName()
                                                           , credentials);
                 //extract the password the user passed us.
                 char[] pass = credentials.getPassword();
@@ -233,7 +239,7 @@
 
                 if (credentials.isPasswordPersistent())
                 {
-                    IcqActivator.getProtocolProviderFactory()
+                    protocolProviderFactory
                         .storePassword(getAccountID(), password);
                 }
             }
@@ -337,7 +343,10 @@
      */
     public String getProtocolName()
     {
+        if(USING_ICQ)
         return ProtocolNames.ICQ;
+        else
+            return ProtocolNames.AIM;
     }
 
     /**
@@ -387,14 +396,8 @@
         {
             this.accountID = accountID;
 
-            try
-            {
-                Long.parseLong(accountID.getUserID());
-            } catch (NumberFormatException ex)
-            {
-                // if its icq its number can be parsed
+            if(IcqAccountID.isAIM(accountID.getAccountProperties()))
                 USING_ICQ = false;
-            }
             
             //initialize the presence operationset
             OperationSetPersistentPresence persistentPresence =
@@ -726,7 +729,11 @@
             if(reasonCode == RegistrationStateChangeEvent
                 .REASON_AUTHENTICATION_FAILED)
             {
-                IcqActivator.getProtocolProviderFactory().storePassword(
+                if(USING_ICQ)
+                    IcqActivator.getIcqProtocolProviderFactory().storePassword(
+                        getAccountID(), null);
+                else
+                    IcqActivator.getAimProtocolProviderFactory().storePassword(
                     getAccountID(), null);
             }
 

Directory: /sip-communicator/
=============================

File [changed]: build.xml
Url: https://sip-communicator.dev.java.net/source/browse/sip-communicator/build.xml?r1=1.134&r2=1.135
Delta lines:  +13 -1
--------------------
--- build.xml	2007-04-04 12:53:07+0000	1.134
+++ build.xml	2007-04-10 15:29:01+0000	1.135
@@ -840,7 +840,7 @@
         bundle-contactlist,meta-contactlist,meta-contactlist-slick,
         bundle-plugin-icqaccregwizz,bundle-plugin-jabberaccregwizz,
         bundle-plugin-msnaccregwizz,bundle-plugin-sipaccregwizz,
-        bundle-plugin-yahooaccregwizz,
+        bundle-plugin-yahooaccregwizz,bundle-plugin-aimaccregwizz,
         bundle-version,bundle-version-impl,bundle-shutdown,
         bundle-growlnotification,bundle-audionotifier,bundle-plugin-splashscreen,
         bundle-plugin-systray,bundle-browserlauncher,bundle-gibberish,
@@ -1341,6 +1341,18 @@
         </jar>
     </target>
 
+    <!-- BUNDLE-PLUGIN-AIMACCREGWIZZ -->
+    <target name="bundle-plugin-aimaccregwizz">
+        <!-- Creates a bundle for the plugin Aim Account Registration Wizard.-->
+        <jar compress="false" destfile="${bundles.dest}/aimaccregwizz.jar"
+            manifest="src/net/java/sip/communicator/plugin/aimaccregwizz/aimaccregwizz.manifest.mf">
+            <zipfileset dir="${dest}/net/java/sip/communicator/plugin/aimaccregwizz"
+                prefix="net/java/sip/communicator/plugin/aimaccregwizz"/>
+            <zipfileset dir="resources/images/aim"
+                            prefix="resources/images/aim"/>
+        </jar>
+    </target>
+
     <!-- BUNDLE-PLUGIN-JABBERACCREGWIZZ -->
     <target name="bundle-plugin-jabberaccregwizz">
         <!-- Creates a bundle for the plugin Jabber Account Registration Wizard.-->




---------------------------------------------------------------------
To unsubscribe, e-mail: cvs-unsubscribe at sip-communicator.dev.java.net
For additional commands, e-mail: cvs-help at sip-communicator.dev.java.net





More information about the commits mailing list