/* * 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.yahooaccregwizz; import java.awt.*; import javax.swing.*; import javax.swing.event.*; import net.java.sip.communicator.service.gui.*; import net.java.sip.communicator.service.protocol.*; import net.java.sip.communicator.util.swing.*; /** * The FirstWizardPage is the page, where user could enter the uin * and the password of the account. * * @author Yana Stamcheva * @author Damian Minkov */ public class FirstWizardPage extends TransparentPanel implements WizardPage, DocumentListener { public static final String FIRST_PAGE_IDENTIFIER = "FirstPageIdentifier"; public static final String USER_NAME_EXAMPLE = "Ex: johnsmith@yahoo.com or johnsmith"; private JPanel uinPassPanel = new TransparentPanel(new BorderLayout(10, 10)); private JPanel labelsPanel = new TransparentPanel(); private JPanel valuesPanel = new TransparentPanel(); private JLabel uinLabel = new JLabel( Resources.getString("plugin.yahooaccregwizz.USERNAME")); private JLabel passLabel = new JLabel(Resources.getString("service.gui.PASSWORD")); private JPanel emptyPanel = new TransparentPanel(); private JLabel uinExampleLabel = new JLabel(USER_NAME_EXAMPLE); private JTextField uinField = new JTextField(); private JPasswordField passField = new JPasswordField(); private JCheckBox rememberPassBox = new SIPCommCheckBox( Resources.getString("service.gui.REMEMBER_PASSWORD")); private JPanel mainPanel = new TransparentPanel(); private Object nextPageIdentifier = WizardPage.SUMMARY_PAGE_IDENTIFIER; private YahooAccountRegistrationWizard wizard; private boolean isCommitted = false; /** * Creates an instance of FirstWizardPage. * * @param wizard the parent wizard */ public FirstWizardPage(YahooAccountRegistrationWizard wizard) { super(new BorderLayout()); this.wizard = wizard; 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.mainPanel.setOpaque(false); this.labelsPanel.setOpaque(false); this.valuesPanel.setOpaque(false); this.uinPassPanel.setOpaque(false); this.emptyPanel.setOpaque(false); this.uinField.getDocument().addDocumentListener(this); this.rememberPassBox.setSelected(true); 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("plugin.yahooaccregwizz.USERID_AND_PASSWORD"))); mainPanel.add(uinPassPanel); this.add(mainPanel, BorderLayout.NORTH); } /** * Implements the WizardPage.getIdentifier to return this * page identifier. */ public Object getIdentifier() { return FIRST_PAGE_IDENTIFIER; } /** * Implements the WizardPage.getNextPageIdentifier to return * the next page identifier - the summary page. */ public Object getNextPageIdentifier() { return nextPageIdentifier; } /** * Implements the WizardPage.getBackPageIdentifier to return * the next back identifier - the default page. */ public Object getBackPageIdentifier() { return WizardPage.DEFAULT_PAGE_IDENTIFIER; } /** * Implements the WizardPage.getWizardForm 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 commitPage() { YahooAccountRegistration registration = wizard.getRegistration(); registration.setUin(uinField.getText()); registration.setPassword(new String(passField.getPassword())); registration.setRememberPassword(rememberPassBox.isSelected()); nextPageIdentifier = SUMMARY_PAGE_IDENTIFIER; isCommitted = true; } /** * 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("")) { wizard.getWizardContainer().setNextFinishButtonEnabled(false); } else { wizard.getWizardContainer().setNextFinishButtonEnabled(true); } } /** * Handles the DocumentEvent 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 DocumentEvent 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 coming * from the given protocolProvider. * * @param protocolProvider The ProtocolProviderService to load * the data from. */ public void loadAccount(ProtocolProviderService protocolProvider) { AccountID accountID = protocolProvider.getAccountID(); String password = accountID .getAccountPropertyString(ProtocolProviderFactory.PASSWORD); this.uinField.setEnabled(false); this.uinField.setText(accountID.getUserID()); if (password != null) { this.passField.setText(password); this.rememberPassBox.setSelected(true); } } public Object getSimpleForm() { return uinPassPanel; } public boolean isCommitted() { return isCommitted; } }