diff options
author | Yana Stamcheva <yana@jitsi.org> | 2011-07-20 17:24:16 +0000 |
---|---|---|
committer | Yana Stamcheva <yana@jitsi.org> | 2011-07-20 17:24:16 +0000 |
commit | d09c66383886b5ecfae76499230ae800dd4c4666 (patch) | |
tree | 603162ac7b1e031bcf4672fc9cd5d4938778659a /src/net/java/sip/communicator/plugin/jabberaccregwizz/JabberAccountCreationForm.java | |
parent | fd7ff7231237d62eabae6a490bebd0229fa76cac (diff) | |
download | jitsi-d09c66383886b5ecfae76499230ae800dd4c4666.zip jitsi-d09c66383886b5ecfae76499230ae800dd4c4666.tar.gz jitsi-d09c66383886b5ecfae76499230ae800dd4c4666.tar.bz2 |
Restores the create Jabber account form and fixes some related issues.
Diffstat (limited to 'src/net/java/sip/communicator/plugin/jabberaccregwizz/JabberAccountCreationForm.java')
-rw-r--r-- | src/net/java/sip/communicator/plugin/jabberaccregwizz/JabberAccountCreationForm.java | 291 |
1 files changed, 291 insertions, 0 deletions
diff --git a/src/net/java/sip/communicator/plugin/jabberaccregwizz/JabberAccountCreationForm.java b/src/net/java/sip/communicator/plugin/jabberaccregwizz/JabberAccountCreationForm.java new file mode 100644 index 0000000..5580473 --- /dev/null +++ b/src/net/java/sip/communicator/plugin/jabberaccregwizz/JabberAccountCreationForm.java @@ -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; + } +} |