Restores the create Jabber account form and fixes some related issues.

cusax-fix
Yana Stamcheva 14 years ago
parent fd7ff72312
commit d09c663838

@ -65,7 +65,7 @@ plugin.branding.IS_APPLICATION_NAME_SHOWN=true
plugin.jabberaccregwizz.SERVER_COMMENTS=net/java/sip/communicator/plugin/jabberaccregwizz/resources/servercomments.xml
# protocol order for the simple initial account registration wizard
plugin.simpleaccreg.PROTOCOL_ORDER=SIP|MSN|Yahoo|ICQ|AIM|Jabber
plugin.simpleaccreg.PROTOCOL_ORDER=SIP|Jabber|Facebook|Google Talk|MSN|AIM|ICQ|Yahoo
# ippi account wizard create accoutns link
plugin.ippiaccregwizz.REGISTER_LINK=https://soap.ippi.fr/subscription/jitsi.php?login={0}&password={1}&email={2}
@ -78,3 +78,4 @@ plugin.provisioning.DEFAULT_PROVISIONING_URI=
# IP address of the backup resolver
net.java.sip.communicator.util.dns.BACKUP_RESOLVER_FALLBACK_IP=8.8.8.8
plugin.jabberaccregwizz.NEW_ACCOUNT_DEFAULT_SERVER=jit.si

@ -778,7 +778,7 @@ plugin.jabberaccregwizz.ENABLE_KEEP_ALIVE=Enable keep alive
plugin.jabberaccregwizz.ENABLE_GMAIL_NOTIFICATIONS=Enable Gmail notifications for new messages
plugin.jabberaccregwizz.ENABLE_GOOGLE_CONTACTS_SOURCE=Enable Google Contacts search
plugin.jabberaccregwizz.NEW_ACCOUNT_TITLE=Jabber new account registration
plugin.jabberaccregwizz.REGISTER_NEW_ACCOUNT_TEXT=In case you don't have a Jabber account, click on this button to create a new one.
plugin.jabberaccregwizz.REGISTER_NEW_ACCOUNT_TEXT=Create a new Jabber account
plugin.jabberaccregwizz.CHOOSE_SERVER_TITLE=Jabber new account server chooser
plugin.jabberaccregwizz.CHOOSE_SERVER_TEXT=Choose the server for your new account in the list below.
plugin.jabberaccregwizz.CHOOSE=&Choose
@ -813,6 +813,7 @@ plugin.jabberaccregwizz.EDIT_JINGLE_NODE=Edit Jingle Node
plugin.jabberaccregwizz.JID_ADDRESS=JID Address
plugin.jabberaccregwizz.ADDITIONAL_JINGLE_NODES=Additional Jingle Nodes
plugin.jabberaccregwizz.USE_UPNP=Use UPnP
plugin.jabberaccregwizz.EXISTING_ACCOUNT=Existing Jabber account
# mailbox
plugin.mailbox.OUTGOING=Outgoing Message:
@ -977,7 +978,7 @@ plugin.zeroaccregwizz.USERID=User ID
plugin.googletalkaccregwizz.PROTOCOL_NAME=GOOGLE TALK
plugin.googletalkaccregwizz.PROTOCOL_DESCRIPTION=The Google Talk protocol
plugin.googletalkaccregwizz.USERNAME=Google Talk user name
plugin.googletalkaccregwizz.REGISTER_NEW_ACCOUNT_TEXT=In case you don't have a Google Talk account, click on this button to create a new one.
plugin.googletalkaccregwizz.REGISTER_NEW_ACCOUNT_TEXT=In case you don't have a Google Talk account,</br> click on this button to create a new one.
plugin.googletalkaccregwizz.NEW_ACCOUNT_TITLE=Google Talk new account registration
# iptel accregwizz

@ -795,6 +795,29 @@ public InputStream getSettingsInputStream(String streamKey)
.getClassLoader().getResourceAsStream(path);
}
/**
* Returns a stream from a given identifier, obtained through the class
* loader of the given resourceClass.
*
* @param streamKey The identifier of the stream.
* @param resourceClass the resource class through which the resource would
* be obtained
* @return The stream for the given identifier.
*/
public InputStream getSettingsInputStream( String streamKey,
Class<?> resourceClass)
{
String path = settingsResources.get(streamKey);
if (path == null || path.length() == 0)
{
logger.warn("Missing resource for key: " + streamKey);
return null;
}
return resourceClass.getClassLoader().getResourceAsStream(path);
}
/**
* Returns the <tt>URL</tt> of the sound corresponding to the given
* property key.

@ -247,4 +247,15 @@ protected ProtocolProviderService installAccount(
return super.installAccount(providerFactory, userName, passwd);
}
/**
* Returns an instance of <tt>CreateAccountService</tt> through which the
* user could create an account. This method is meant to be implemented by
* specific protocol provider wizards.
* @return an instance of <tt>CreateAccountService</tt>
*/
protected JabberAccountCreationFormService getCreateAccountService()
{
return null;
}
}

@ -226,4 +226,15 @@ public boolean isWebSignupSupported()
{
return true;
}
/**
* Returns an instance of <tt>CreateAccountService</tt> through which the
* user could create an account. This method is meant to be implemented by
* specific protocol provider wizards.
* @return an instance of <tt>CreateAccountService</tt>
*/
protected JabberAccountCreationFormService getCreateAccountService()
{
return null;
}
}

@ -15,7 +15,6 @@
import net.java.sip.communicator.util.swing.*;
/**
*
* @author Yana Stamcheva
*/
public class AccountPanel
@ -44,12 +43,18 @@ public class AccountPanel
private final JCheckBox rememberPassBox = new SIPCommCheckBox(Resources
.getString("service.gui.REMEMBER_PASSWORD"));
private final JPanel registerPanel
private final JabberAccountRegistrationForm parentForm;
private final JRadioButton existingAccountButton;
private final JRadioButton createAccountButton;
private final JPanel mainPanel
= new TransparentPanel(new BorderLayout(5, 5));
private JabberNewAccountDialog jabberNewAccountDialog;
private Component registrationForm;
private final JabberAccountRegistrationForm parentForm;
private Component registerChoicePanel;
/**
* Creates an instance of <tt>AccountPanel</tt> by specifying the parent
@ -75,6 +80,12 @@ public AccountPanel(final JabberAccountRegistrationForm parentForm)
userIDField.getDocument().addDocumentListener(this);
rememberPassBox.setSelected(true);
existingAccountButton = new JRadioButton(
parentForm.getExistingAccountLabel());
createAccountButton = new JRadioButton(
parentForm.getCreateAccountLabel());
userIDExampleLabel.setForeground(Color.GRAY);
userIDExampleLabel.setFont(userIDExampleLabel.getFont().deriveFont(8));
emptyPanel.setMaximumSize(new Dimension(40, 35));
@ -111,118 +122,63 @@ public AccountPanel(final JabberAccountRegistrationForm parentForm)
userIDPassPanel.add(southPanel, BorderLayout.SOUTH);
String createAccountString = parentForm.getCreateAccountButtonLabel();
if (createAccountString != null && createAccountString.length() > 0)
{
JPanel buttonPanel
= new TransparentPanel(new FlowLayout(FlowLayout.CENTER));
buttonPanel.add(createRegisterButton(createAccountString));
registerPanel.add(buttonPanel, BorderLayout.SOUTH);
}
String createAccountInfoString = parentForm.getCreateAccountLabel();
if (createAccountInfoString != null
&& createAccountInfoString.length() > 0)
{
registerPanel.add(createRegisterArea(createAccountInfoString));
}
JPanel mainPanel = new TransparentPanel();
mainPanel.setLayout(new BoxLayout(mainPanel, BoxLayout.Y_AXIS));
mainPanel.add(userIDPassPanel);
mainPanel.add(Box.createVerticalStrut(10));
if (registerPanel.getComponentCount() > 0)
{
registerPanel.setBorder(BorderFactory.createTitledBorder(""));
mainPanel.add(registerPanel);
}
add(mainPanel, BorderLayout.NORTH);
this.add(mainPanel, BorderLayout.NORTH);
}
/**
* Creates the register area.
*
* @param text the text to show to the user
* Creates a register choice panel.
* @return the created component
*/
private Component createRegisterArea(String text)
private Component createRegisterChoicePanel()
{
JEditorPane registerArea = new JEditorPane();
JPanel registerChoicePanel = new TransparentPanel(new GridLayout(0, 1));
registerArea.setAlignmentX(JEditorPane.CENTER_ALIGNMENT);
registerArea.setOpaque(false);
registerArea.setContentType("text/html");
registerArea.setEditable(false);
registerArea.setText(text);
/* Display the description with the font we use elsewhere in the UI. */
registerArea.putClientProperty(
JEditorPane.HONOR_DISPLAY_PROPERTIES,
true);
registerArea.addHyperlinkListener(new HyperlinkListener()
existingAccountButton.addChangeListener(new ChangeListener()
{
public void stateChanged(ChangeEvent e)
{
public void hyperlinkUpdate(HyperlinkEvent e)
if (existingAccountButton.isSelected())
{
if (e.getEventType()
.equals(HyperlinkEvent.EventType.ACTIVATED))
{
JabberAccRegWizzActivator
.getBrowserLauncher().openURL(e.getURL().toString());
}
}
});
mainPanel.remove(registrationForm);
mainPanel.add(userIDPassPanel, BorderLayout.CENTER);
return registerArea;
}
Window window
= SwingUtilities.getWindowAncestor(AccountPanel.this);
/**
* Creates the register button.
*
* @param text the text of the button
* @return the created component
*/
private Component createRegisterButton(String text)
{
JButton registerButton = new JButton(text);
if (window != null)
window.pack();
}
}
});
registerButton.addActionListener(new ActionListener()
createAccountButton.addChangeListener(new ChangeListener()
{
public void actionPerformed(ActionEvent evt)
public void stateChanged(ChangeEvent e)
{
if (logger.isDebugEnabled())
logger.debug("Reg OK");
if (parentForm.isWebSignupSupported())
if (createAccountButton.isSelected())
{
parentForm.webSignup();
}
else
{
// Open the new account dialog.
jabberNewAccountDialog = new JabberNewAccountDialog();
if (jabberNewAccountDialog.isOK == true)
{
// This userIDField contains the username "@" the server.
userIDField.setText(jabberNewAccountDialog.userID + "@"
+ jabberNewAccountDialog.server);
parentForm.setServerFieldAccordingToUIN(
userIDField.getText());
passField.setText(jabberNewAccountDialog.password);
}
if (logger.isDebugEnabled())
logger.debug("Reg End");
mainPanel.remove(userIDPassPanel);
mainPanel.add(registrationForm, BorderLayout.CENTER);
SwingUtilities.getWindowAncestor(AccountPanel.this).pack();
}
}
});
return registerButton;
ButtonGroup buttonGroup = new ButtonGroup();
existingAccountButton.setOpaque(false);
createAccountButton.setOpaque(false);
buttonGroup.add(existingAccountButton);
buttonGroup.add(createAccountButton);
registerChoicePanel.add(existingAccountButton);
registerChoicePanel.add(createAccountButton);
// By default we select the existing account button.
existingAccountButton.setSelected(true);
return registerChoicePanel;
}
/**
@ -366,4 +322,138 @@ public boolean isValidated()
return userIDField.getText() != null
&& userIDField.getText().length() > 0;
}
/**
* Sets to <tt>true</tt> if this panel is opened in a simple form and
* <tt>false</tt> if it's opened in an advanced form.
*
* @param isSimpleForm indicates if this panel is opened in a simple form or
* in an advanced form
*/
void setSimpleForm(boolean isSimpleForm)
{
JabberAccountCreationFormService createAccountService
= parentForm.getCreateAccountService();
if (createAccountService != null && isSimpleForm)
{
registrationForm = createAccountService.getForm();
registerChoicePanel = createRegisterChoicePanel();
mainPanel.add(registerChoicePanel, BorderLayout.NORTH);
}
else
{
JPanel registerPanel = new TransparentPanel();
registerPanel.setLayout(
new BoxLayout(registerPanel, BoxLayout.Y_AXIS));
String createAccountInfoString = parentForm.getCreateAccountLabel();
if (createAccountInfoString != null
&& createAccountInfoString.length() > 0)
{
registerPanel.add(createRegisterArea(createAccountInfoString));
}
String createAccountString
= parentForm.getCreateAccountButtonLabel();
if (createAccountString != null
&& createAccountString.length() > 0)
{
JPanel buttonPanel
= new TransparentPanel(new FlowLayout(FlowLayout.CENTER));
buttonPanel.add(createRegisterButton(createAccountString));
registerPanel.add(buttonPanel);
}
mainPanel.setLayout(new BoxLayout(mainPanel, BoxLayout.Y_AXIS));
mainPanel.add(userIDPassPanel);
mainPanel.add(Box.createVerticalStrut(10));
if (registerPanel.getComponentCount() > 0)
{
registerPanel.setBorder(BorderFactory.createTitledBorder(""));
mainPanel.add(registerPanel);
}
}
}
/**
* Indicates if the account information provided by this form is for new
* account or an existing one.
* @return <tt>true</tt> if the account information provided by this form
* is for new account or <tt>false</tt> if it's for an existing one
*/
boolean isCreateAccount()
{
return createAccountButton.isSelected();
}
/**
* Creates the register area.
*
* @param text the text to show to the user
* @return the created component
*/
private Component createRegisterArea(String text)
{
JEditorPane registerArea = new JEditorPane();
registerArea.setAlignmentX(JEditorPane.CENTER_ALIGNMENT);
registerArea.setOpaque(false);
registerArea.setContentType("text/html");
registerArea.setEditable(false);
registerArea.setText(text);
/* Display the description with the font we use elsewhere in the UI. */
registerArea.putClientProperty(
JEditorPane.HONOR_DISPLAY_PROPERTIES,
true);
registerArea.addHyperlinkListener(new HyperlinkListener()
{
public void hyperlinkUpdate(HyperlinkEvent e)
{
if (e.getEventType()
.equals(HyperlinkEvent.EventType.ACTIVATED))
{
JabberAccRegWizzActivator
.getBrowserLauncher().openURL(e.getURL().toString());
}
}
});
return registerArea;
}
/**
* Creates the register button.
*
* @param text the text of the button
* @return the created component
*/
private Component createRegisterButton(String text)
{
JButton registerButton = new JButton(text);
registerButton.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent evt)
{
if (logger.isDebugEnabled())
logger.debug("Reg OK");
if (parentForm.isWebSignupSupported())
{
parentForm.webSignup();
}
}
});
return registerButton;
}
}

@ -0,0 +1,291 @@
/*
* 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.jabberaccregwizz;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.text.*;
import net.java.sip.communicator.util.*;
import net.java.sip.communicator.util.swing.*;
import org.jivesoftware.smack.*;
/**
* Dialog for adding a new Jabber account.
*
* @author Nicolas Grandclaude
* @author Yana Stamcheva
*/
public class JabberAccountCreationForm
extends TransparentPanel
implements JabberAccountCreationFormService
{
private static final Logger logger = Logger
.getLogger(JabberAccountCreationForm.class);
private JabberServerChooserDialog jabberServerChooserDialog;
// Panels
private JPanel userIDPassPanel
= new TransparentPanel(new BorderLayout(10, 10));
private JPanel labelsPanel
= new TransparentPanel(new GridLayout(0, 1, 10, 10));
private JPanel valuesPanel
= new TransparentPanel(new GridLayout(0, 1, 10, 10));
private JPanel serverPanel
= new TransparentPanel(new BorderLayout(10, 10));
// Labels
private JLabel serverLabel
= new JLabel(Resources.getString("plugin.jabberaccregwizz.CSERVER"));
private JLabel userIDLabel
= new JLabel(Resources.getString("plugin.jabberaccregwizz.USERNAME"));
private JLabel passLabel
= new JLabel(Resources.getString("service.gui.PASSWORD"));
private JLabel pass2Label
= new JLabel(Resources.getString(
"plugin.jabberaccregwizz.PASSWORD_CONFIRM"));
private JLabel portLabel
= new JLabel(Resources.getString("service.gui.PORT"));
// Textfield
private JTextField serverField = new JTextField();
private JTextField userIDField = new JTextField();
private JPasswordField passField = new JPasswordField();
private JPasswordField pass2Field = new JPasswordField();
private JTextField portField = new JTextField("5222");
// Button
private JButton chooseButton = new JButton();
// Smack objects
private XMPPConnection xmppConnection = null;
private AccountManager accountManager = null;
/**
* The error text pane.
*/
private final JTextPane errorPane = new JTextPane();
/**
* Creates an instance of <tt>JabberNewAccountDialog</tt>.
*/
public JabberAccountCreationForm()
{
initErrorArea();
labelsPanel.add(serverLabel);
labelsPanel.add(userIDLabel);
labelsPanel.add(passLabel);
labelsPanel.add(pass2Label);
labelsPanel.add(portLabel);
userIDField.setColumns(30);
serverPanel.add(serverField, BorderLayout.CENTER);
serverPanel.add(chooseButton, BorderLayout.EAST);
valuesPanel.add(serverPanel);
valuesPanel.add(userIDField);
valuesPanel.add(passField);
valuesPanel.add(pass2Field);
valuesPanel.add(portField);
userIDPassPanel.add(labelsPanel, BorderLayout.WEST);
userIDPassPanel.add(valuesPanel, BorderLayout.CENTER);
chooseButton.setText(
Resources.getString("plugin.jabberaccregwizz.CHOOSE"));
chooseButton.setMnemonic(
Resources.getMnemonic("plugin.jabberaccregwizz.CHOOSE"));
// Choose button open the JabberServerChooserDialog
chooseButton.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent evt)
{
jabberServerChooserDialog = new JabberServerChooserDialog();
if (jabberServerChooserDialog.isOK) // OK pressed in
// JabberServerChooserDialog
{
serverField
.setText(jabberServerChooserDialog.serverSelected);
}
}
});
this.add(userIDPassPanel, BorderLayout.CENTER);
}
/**
* Connects to the chosen server and creates a new account with Smack.
*
* @param server the server domain
* @param port TCP port to connect
* @param username the account username
* @param password the account password
*/
private boolean createJabberAccount(String server, int port, String username,
String password)
{
try
{
ConnectionConfiguration config = new ConnectionConfiguration(
server, port);
xmppConnection = new XMPPConnection(config);
xmppConnection.connect();
accountManager = new AccountManager(xmppConnection);
accountManager.createAccount(username, password);
return true;
}
catch (XMPPException exc)
{
if (exc.getXMPPError().getCode() == 409)
{
showErrorMessage(Resources.getString(
"plugin.jabberaccregwizz.USER_EXISTS_ERROR"));
logger.error(
"Error when created a new Jabber account :" +
" user already exist");
}
else
{
showErrorMessage(Resources.getString(
"plugin.jabberaccregwizz.UNKNOWN_XMPP_ERROR"));
}
return false;
}
}
/**
* Creates an account.
*
* @return the created account
*/
public NewAccount createAccount()
{
String userID = userIDField.getText();
char[] password = passField.getPassword();
char[] password2 = pass2Field.getPassword();
String server = serverField.getText();
String port = portField.getText();
if (new String(password).equals(new String(password2)))
{
// the two password fields are the same
boolean result = createJabberAccount(server,
5222,
userID,
new String(password));
if (result == true)
{
return new NewAccount(
getCompleteUserID(userID, server), password, server, port);
}
}
else
{
showErrorMessage(Resources.getString(
"plugin.jabberaccregwizz.NOT_SAME_PASSWORD"));
}
return null;
}
/**
* Returns the create account form.
*
* @return the create account form
*/
public Component getForm()
{
return this;
}
/**
* Clears all fields contained in this form.
*/
public void clear()
{
userIDField.setText("");
passField.setText("");
pass2Field.setText("");
serverField.setText(Resources.getSettingsString(
"plugin.jabberaccregwizz.NEW_ACCOUNT_DEFAULT_SERVER"));
errorPane.setText("");
userIDPassPanel.remove(errorPane);
}
/**
* Creates the error area component.
*/
private void initErrorArea()
{
SimpleAttributeSet attribs = new SimpleAttributeSet();
StyleConstants.setAlignment(attribs, StyleConstants.ALIGN_RIGHT);
StyleConstants.setFontFamily(attribs, errorPane.getFont().getFamily());
StyleConstants.setForeground(attribs, Color.RED);
errorPane.setParagraphAttributes(attribs, true);
errorPane.setPreferredSize(new Dimension(100, 50));
errorPane.setMinimumSize(new Dimension(100, 50));
errorPane.setOpaque(false);
}
/**
* Shows the given error message.
*
* @param text the text of the error
*/
private void showErrorMessage(String text)
{
errorPane.setText(text);
if (errorPane.getParent() == null)
userIDPassPanel.add(errorPane, BorderLayout.NORTH);
SwingUtilities.getWindowAncestor(this).pack();
}
/**
* Returns the complete user id, by adding to it the server part.
*
* @param userID the username
* @param server the server address
* @return the complete user id
*/
private String getCompleteUserID(String userID, String server)
{
if (userID.indexOf("@") < 0 && server != null && server.length() > 0)
{
return userID + "@" + server;
}
return userID;
}
}

@ -72,6 +72,9 @@ void init()
if (!JabberAccRegWizzActivator.isAdvancedAccountConfigDisabled())
{
// Indicate that this panel is opened in a simple form.
accountPanel.setSimpleForm(false);
if (accountPanel.getParent() != tabbedPane)
tabbedPane.addTab( Resources.getString("service.gui.ACCOUNT"),
accountPanel);
@ -210,20 +213,53 @@ public boolean isModification()
*/
public boolean commitPage(JabberAccountRegistration registration)
{
String userID = accountPanel.getUsername();
String userID = null;
char[] password = null;
String serverAddress = null;
String serverPort = null;
if (accountPanel.isCreateAccount())
{
NewAccount newAccount
= getCreateAccountService().createAccount();
if (newAccount != null)
{
userID = newAccount.getUserName();
password = newAccount.getPassword();
serverAddress = newAccount.getServerAddress();
serverPort = newAccount.getServerPort();
if (serverAddress == null)
setServerFieldAccordingToUIN(userID);
}
else
{
// If we didn't succeed to create our new account, we have
// nothing more to do here.
return false;
}
}
else
{
userID = accountPanel.getUsername();
if(userID == null || userID.trim().length() == 0)
throw new IllegalStateException("No user ID provided.");
if(userID == null || userID.trim().length() == 0)
throw new IllegalStateException("No user ID provided.");
if(userID.indexOf('@') < 0
&& registration.getDefaultUserSufix() != null)
userID = userID + '@' + registration.getDefaultUserSufix();
if(userID.indexOf('@') < 0
&& registration.getDefaultUserSufix() != null)
userID = userID + '@' + registration.getDefaultUserSufix();
password = accountPanel.getPassword();
serverAddress = connectionPanel.getServerAddress();
serverPort = connectionPanel.getServerPort();
}
registration.setUserID(userID);
registration.setPassword(new String(accountPanel.getPassword()));
registration.setPassword(new String(password));
registration.setRememberPassword(accountPanel.isRememberPassword());
registration.setServerAddress(connectionPanel.getServerAddress());
registration.setServerAddress(serverAddress);
registration.setSendKeepAlive(connectionPanel.isSendKeepAlive());
registration.setGmailNotificationEnabled(
connectionPanel.isGmailNotificationsEnabled());
@ -233,7 +269,6 @@ public boolean commitPage(JabberAccountRegistration registration)
connectionPanel.isAutogenerateResourceEnabled());
registration.setResource(connectionPanel.getResource());
String serverPort = connectionPanel.getServerPort();
if (serverPort != null)
registration.setPort(Integer.parseInt(serverPort));
@ -465,6 +500,9 @@ public Component getSimpleForm()
if (createAccountService != null)
createAccountService.clear();
// Indicate that this panel is opened in a simple form.
accountPanel.setSimpleForm(true);
return accountPanel;
}
@ -552,6 +590,15 @@ protected String getCreateAccountLabel()
return wizard.getCreateAccountLabel();
}
/**
* Return the string for add existing account button.
* @return the string for add existing account button.
*/
protected String getExistingAccountLabel()
{
return wizard.getExistingAccountLabel();
}
/**
* Return the string for home page link label.
* @return the string for home page link label

@ -12,7 +12,7 @@
import net.java.sip.communicator.service.gui.*;
import net.java.sip.communicator.service.protocol.*;
import net.java.sip.communicator.util.Logger;
import net.java.sip.communicator.util.*;
import org.osgi.framework.*;
@ -58,6 +58,11 @@ public class JabberAccountRegistrationWizard
*/
private ProtocolProviderService protocolProvider;
/**
* The create account form.
*/
private JabberAccountCreationForm createAccountService;
/**
* Creates an instance of <tt>JabberAccountRegistrationWizard</tt>.
* @param wizardContainer the wizard container, where this wizard
@ -233,6 +238,10 @@ public ProtocolProviderService signin(String userName, String password)
if(!firstWizardPage.isCommitted())
firstWizardPage.commitPage();
if(!firstWizardPage.isCommitted())
throw new OperationFailedException("Could not confirm data.",
OperationFailedException.GENERAL_ERROR);
ProtocolProviderFactory factory
= JabberAccRegWizzActivator.getJabberProtocolProviderFactory();
@ -426,7 +435,7 @@ protected ProtocolProviderService installAccount(
"Account already exists.",
OperationFailedException.IDENTIFICATION_CONFLICT);
}
catch (Exception exc)
catch (Throwable exc)
{
logger.warn(exc.getMessage());
@ -540,8 +549,6 @@ protected String getServerFromUserName(String userName)
*/
public void webSignup()
{
JabberAccRegWizzActivator.getBrowserLauncher()
.openURL("https://register.jabber.org/");
}
/**
@ -552,7 +559,7 @@ public void webSignup()
*/
public boolean isWebSignupSupported()
{
return true;
return false;
}
/**
@ -624,7 +631,10 @@ public String getAccountIconPath()
*/
protected JabberAccountCreationFormService getCreateAccountService()
{
return null;
if (createAccountService == null)
createAccountService = new JabberAccountCreationForm();
return createAccountService;
}
/**
@ -656,6 +666,15 @@ protected String getCreateAccountLabel()
"plugin.jabberaccregwizz.REGISTER_NEW_ACCOUNT_TEXT");
}
/**
* Return the string for add existing account button.
* @return the string for add existing account button.
*/
protected String getExistingAccountLabel()
{
return Resources.getString("plugin.jabberaccregwizz.EXISTING_ACCOUNT");
}
/**
* Return the string for home page link label.
* @return the string for home page link label

@ -1,399 +0,0 @@
/*
* 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.jabberaccregwizz;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import javax.imageio.*;
import javax.swing.*;
import javax.swing.border.*;
import javax.swing.event.*;
import net.java.sip.communicator.util.*;
import net.java.sip.communicator.util.swing.*;
import org.jivesoftware.smack.*;
/**
* Dialog for adding a new Jabber account.
*
* @author Nicolas Grandclaude
*/
public class JabberNewAccountDialog
extends SIPCommDialog
implements DocumentListener
{
private static final Logger logger = Logger
.getLogger(JabberNewAccountDialog.class);
private JabberServerChooserDialog jabberServerChooserDialog;
// Panels
private JPanel userIDPassPanel = new TransparentPanel(new BorderLayout(10, 10));
private JPanel labelsPanel = new TransparentPanel(new GridLayout(0, 1, 10, 10));
private JPanel valuesPanel = new TransparentPanel(new GridLayout(0, 1, 10, 10));
private JPanel serverPanel = new TransparentPanel(new BorderLayout(10, 10));
private JPanel buttonPanel = new TransparentPanel(new FlowLayout(FlowLayout.RIGHT));
private Box buttonBox = new Box(BoxLayout.X_AXIS);
private JPanel mainPanel = new TransparentPanel(new BorderLayout());
private JPanel westPanel = new TransparentPanel(new BorderLayout(10, 10));
// Labels
private JLabel serverLabel
= new JLabel(Resources.getString("plugin.jabberaccregwizz.CSERVER"));
private JLabel userIDLabel
= new JLabel(Resources.getString("plugin.jabberaccregwizz.USERNAME"));
private JLabel passLabel
= new JLabel(Resources.getString("service.gui.PASSWORD"));
private JLabel pass2Label
= new JLabel(Resources.getString(
"plugin.jabberaccregwizz.PASSWORD_CONFIRM"));
private JLabel portLabel
= new JLabel(Resources.getString("service.gui.PORT"));
private JLabel westIconLabel = new JLabel();
// Textfield
private JTextField serverField = new JTextField();
private JTextField userIDField = new JTextField();
private JPasswordField passField = new JPasswordField();
private JPasswordField pass2Field = new JPasswordField();
private JTextField portField = new JTextField("5222");
// Button
private JButton chooseButton = new JButton();
private JButton okButton = new JButton();
private JButton cancelButton = new JButton();
// Smack objects
private XMPPConnection xmppConnection = null;
private AccountManager accountManager = null;
// Variables for FirstWizardPage
public boolean isOK = false;
public String userID = null;
public String password = null;
public String server = null;
public String port = null;
private LoadingAccountGlassPane loadingAccountGlassPane
= new LoadingAccountGlassPane();
/**
* Creates an instance of <tt>JabberNewAccountDialog</tt>.
*/
public JabberNewAccountDialog()
{
this.setSize(new Dimension(450, 250));
this.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
this.setTitle(
Resources.getString("plugin.jabberaccregwizz.NEW_ACCOUNT_TITLE"));
this.setModal(true);
this.setGlassPane(loadingAccountGlassPane);
// Place the window in the screen center
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
this.setLocation(screenSize.width / 2 - this.getWidth() / 2,
screenSize.height / 2 - this.getHeight() / 2);
this.init();
}
/**
* Connect to the choose server and create a new account with Smack
*
* @param server the server domain
* @param port TCP port to connect
* @param username username
* @param password password
*/
private boolean addNewAccount(String server, int port, String username,
String password)
{
try
{
ConnectionConfiguration config = new ConnectionConfiguration(
server, port);
xmppConnection = new XMPPConnection(config);
xmppConnection.connect();
accountManager = new AccountManager(xmppConnection);
accountManager.createAccount(username, password);
return true;
}
catch (XMPPException exc)
{
if (exc.getXMPPError().getCode() == 409)
{
JOptionPane.showMessageDialog(
null,
Resources.getString(
"plugin.jabberaccregwizz.USER_EXISTS_ERROR"),
Resources.getString(
"plugin.jabberaccregwizz.XMPP_ERROR"),
JOptionPane.ERROR_MESSAGE);
logger.error(
"Error when created a new Jabber account :" +
" user already exist");
}
else
{
JOptionPane.showMessageDialog(
null,
Resources.getString(
"plugin.jabberaccregwizz.UNKNOWN_XMPP_ERROR"),
Resources.getString(
"plugin.jabberaccregwizz.XMPP_ERROR"),
JOptionPane.ERROR_MESSAGE);
}
return false;
}
}
/**
* Initializes all panels, buttons, etc.
*/
private void init()
{
labelsPanel.add(serverLabel);
labelsPanel.add(userIDLabel);
labelsPanel.add(passLabel);
labelsPanel.add(pass2Label);
labelsPanel.add(portLabel);
userIDField.setColumns(30);
serverPanel.add(serverField, BorderLayout.CENTER);
serverPanel.add(chooseButton, BorderLayout.EAST);
valuesPanel.add(serverPanel);
valuesPanel.add(userIDField);
valuesPanel.add(passField);
valuesPanel.add(pass2Field);
valuesPanel.add(portField);
serverField.getDocument().addDocumentListener(this);
userIDField.getDocument().addDocumentListener(this);
passField.getDocument().addDocumentListener(this);
pass2Field.getDocument().addDocumentListener(this);
portField.getDocument().addDocumentListener(this);
userIDPassPanel.add(labelsPanel, BorderLayout.WEST);
userIDPassPanel.add(valuesPanel, BorderLayout.CENTER);
chooseButton.setText(
Resources.getString("plugin.jabberaccregwizz.CHOOSE"));
chooseButton.setMnemonic(
Resources.getMnemonic("plugin.jabberaccregwizz.CHOOSE"));
westIconLabel.setBorder(BorderFactory.createCompoundBorder(
BorderFactory.createEmptyBorder(20, 20, 20, 20), BorderFactory
.createTitledBorder("")));
try
{
westIconLabel.setIcon(new ImageIcon(ImageIO
.read(new ByteArrayInputStream(Resources
.getImage(Resources.PAGE_IMAGE)))));
}
catch (IOException e)
{
logger.error("Could not read image.", e);
}
westPanel.add(westIconLabel, BorderLayout.NORTH);
this.mainPanel.add(westPanel, BorderLayout.WEST);
// Choose button open the JabberServerChooserDialog
chooseButton.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent evt)
{
jabberServerChooserDialog = new JabberServerChooserDialog();
if (jabberServerChooserDialog.isOK) // OK pressed in
// JabberServerChooserDialog
{
serverField
.setText(jabberServerChooserDialog.serverSelected);
}
}
});
// Ok button
okButton.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent evt)
{
if (new String(passField.getPassword()).equals(new String(
pass2Field.getPassword())))
{ // the two password fields are the same
new Thread()
{
public void run()
{
boolean result = addNewAccount(serverField.getText(),
Integer.parseInt(portField.getText()),
userIDField.getText(),
new String(passField.getPassword()));
if (result == true)
{
// Update FirstWizardDialog field
isOK = true;
userID = new String(userIDField.getText());
password = new String(passField.getPassword());
server = new String(serverField.getText());
port = new String(portField.getText());
dispose();
}
}
}.start();
loadingAccountGlassPane.setVisible(true);
}
else
{
JOptionPane.showMessageDialog(
null,
Resources.getString(
"plugin.jabberaccregwizz.PROTOCOL_DESCRIPTION"),
Resources.getString(
"plugin.jabberaccregwizz.XMPP_ERROR"),
JOptionPane.ERROR_MESSAGE);
}
}
});
// Cancel button
cancelButton.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent evt)
{
dispose();
}
});
okButton.setText(Resources.getString("service.gui.OK"));
okButton.setMnemonic(Resources.getMnemonic("service.gui.OK"));
okButton.setEnabled(false);
cancelButton.setText(Resources.getString("service.gui.CANCEL"));
cancelButton.setMnemonic(Resources.getMnemonic("service.gui.CANCEL"));
buttonBox.setBorder(new EmptyBorder(new Insets(5, 10, 5, 10)));
buttonBox.add(okButton);
buttonBox.add(Box.createHorizontalStrut(10));
buttonBox.add(cancelButton);
buttonPanel.add(buttonBox);
this.mainPanel.add(userIDPassPanel, BorderLayout.CENTER);
this.mainPanel.add(buttonPanel, BorderLayout.SOUTH);
mainPanel.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
this.getContentPane().add(mainPanel, BorderLayout.NORTH);
this.setVisible(true);
}
/**
* Sets the "Ok" button enabled if all fields are filled.
*/
private void enableOKButton()
{
okButton.setEnabled(false);
try
{
Integer.parseInt(portField.getText());
}
catch (NumberFormatException ex)
{
okButton.setEnabled(false);
return;
}
if (serverField.getText().equals("")
|| userIDField.getText().equals("")
|| (new String(passField.getPassword())).equals("")
|| (new String(pass2Field.getPassword())).equals(""))
{
okButton.setEnabled(false);
}
else
{
okButton.setEnabled(true);
}
}
public void insertUpdate(DocumentEvent evt)
{
this.enableOKButton();
}
public void removeUpdate(DocumentEvent evt)
{
this.enableOKButton();
}
public void changedUpdate(DocumentEvent evt)
{
}
public void pageHiding()
{
}
public void pageShown()
{
}
public void pageBack()
{
}
protected void close(boolean isEscaped)
{
cancelButton.doClick();
}
/**
* A GlassPane that would change the cursor to a waiting cursor until the
* new account is registered.
*/
private static class LoadingAccountGlassPane extends JComponent
{
public LoadingAccountGlassPane()
{
this.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
}
}
}

@ -45,7 +45,7 @@ public class JabberServerChooserDialog
private JTable serversTable;
private JTextArea chooseArea = new JTextArea(Resources
.getString("chooseServerText"));
.getString("plugin.jabberaccregwizz.CHOOSE_SERVER_TEXT"));
// Panel
private JPanel mainPanel = new TransparentPanel(new BorderLayout());
@ -63,17 +63,19 @@ public class JabberServerChooserDialog
private JLabel westIconLabel = new JLabel();
private JButton okButton = new JButton(Resources.getString("okLabel"));
private JButton okButton
= new JButton(Resources.getString("service.gui.OK"));
private JButton cancelButton = new JButton(Resources
.getString("cancelLabel"));
.getString("service.gui.CANCEL"));
private Vector<String> servers = new Vector<String>();
private FileAccessService faService = null;
private String[] columnNames =
{Resources.getString("serverColumn"), Resources.getString("commentColumn")};
{ Resources.getString("plugin.jabberaccregwizz.SERVER_COLUMN"),
Resources.getString("plugin.jabberaccregwizz.COMMENT_COLUMN")};
public boolean isOK = false;
@ -86,7 +88,8 @@ public JabberServerChooserDialog()
{
this.setSize(new Dimension(550, 450));
this.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
this.setTitle(Resources.getString("chooseTitle"));
this.setTitle(Resources.getString(
"plugin.jabberaccregwizz.CHOOSE_SERVER_TITLE"));
this.setModal(true);
// Place the window in the center
@ -145,13 +148,11 @@ private void init()
eastPanel.add(scrollPane, BorderLayout.CENTER);
// Ok button
okButton.setText(Resources.getString("okLabel"));
okButton.setMnemonic(Resources.getMnemonic("okLabel"));
okButton.setMnemonic(Resources.getMnemonic("service.gui.OK"));
okButton.setEnabled(false);
// Cancel button
cancelButton.setText(Resources.getString("cancelLabel"));
cancelButton.setMnemonic(Resources.getMnemonic("cancelLabel"));
cancelButton.setMnemonic(Resources.getMnemonic("service.gui.CANCEL"));
// Box with Ok and Cancel
buttonBox.setBorder(new EmptyBorder(new Insets(5, 10, 5, 10)));

@ -25,19 +25,27 @@ public class NewAccount
*/
private String serverAddress;
/**
* The port to connect to.
*/
private String serverPort;
/**
* Creates a new account by specifying the account user name and password.
* @param userName the account user name
* @param password the account password
* @param serverAddress the server address to set
* @param serverPort the port to connect to
*/
public NewAccount( String userName,
char[] password,
String serverAddress)
String serverAddress,
String port)
{
this.userName = userName;
this.password = password;
this.serverAddress = serverAddress;
this.serverPort = port;
}
/**
@ -93,4 +101,13 @@ public String getServerAddress()
{
return serverAddress;
}
/**
* Returns the port of the server.
* @return the port of the server
*/
public String getServerPort()
{
return serverPort;
}
}

@ -85,7 +85,8 @@ public static byte[] getImage(ImageID imageID)
*/
public static InputStream getPropertyInputStream(String key)
{
return getResources().getSettingsInputStream(key);
return getResources().getSettingsInputStream(key,
JabberAccRegWizzActivator.class);
}
public static ResourceManagementService getResources()

@ -39,4 +39,5 @@ Import-Package: org.osgi.framework,
javax.swing.tree,
javax.swing.undo,
javax.swing.border,
org.jivesoftware.smack
org.jivesoftware.smack,
org.jivesoftware.smack.packet

@ -2,4 +2,4 @@
<query xmlns='http://jabber.org/protocol/disco#items'>
<item jid='jabber.org' comment='Jabber Software Foundation Server'/>
</query>
</query>

@ -177,6 +177,18 @@ public interface ResourceManagementService
*/
public InputStream getSettingsInputStream(String streamKey);
/**
* Returns a stream from a given identifier, obtained through the class
* loader of the given resourceClass.
*
* @param streamKey The identifier of the stream.
* @param resourceClass the resource class through which the resource would
* be obtained
* @return The stream for the given identifier.
*/
public InputStream getSettingsInputStream( String streamKey,
Class<?> resourceClass);
/**
* Returns the int value of the corresponding configuration key.
*

Loading…
Cancel
Save