1 package org.columba.mail.gui.config.accountwizard; 17 18 import java.lang.reflect.Method ; 19 20 import javax.swing.Box ; 21 import javax.swing.BoxLayout ; 22 import javax.swing.JComboBox ; 23 import javax.swing.JComponent ; 24 import javax.swing.JLabel ; 25 import javax.swing.JPanel ; 26 import javax.swing.JTextField ; 27 import javax.swing.SwingUtilities ; 28 import javax.swing.event.DocumentEvent ; 29 import javax.swing.event.DocumentListener ; 30 31 import net.javaprog.ui.wizard.AbstractStep; 32 import net.javaprog.ui.wizard.DataModel; 33 import net.javaprog.ui.wizard.DefaultDataLookup; 34 35 import org.columba.core.gui.base.LabelWithMnemonic; 36 import org.columba.core.gui.base.MultiLineLabel; 37 import org.columba.core.gui.base.WizardTextField; 38 import org.columba.mail.util.MailResourceLoader; 39 40 41 class IncomingServerStep extends AbstractStep { 42 protected DataModel data; 43 protected JTextField loginTextField; 44 protected JTextField hostTextField; 45 protected JLabel addressLabel; 46 protected JComboBox typeComboBox; 47 48 public IncomingServerStep(DataModel data) { 49 super(MailResourceLoader.getString("dialog", "accountwizard", 50 "incomingserver"), 51 MailResourceLoader.getString("dialog", "accountwizard", 52 "incomingserver_description")); 53 this.data = data; 54 setCanGoNext(false); 55 } 56 57 protected JComponent createComponent() { 58 JComponent component = new JPanel (); 59 component.setLayout(new BoxLayout (component, BoxLayout.Y_AXIS)); 60 component.add(new MultiLineLabel(MailResourceLoader.getString( 61 "dialog", "accountwizard", "incomingserver_text"))); 62 component.add(Box.createVerticalStrut(40)); 63 64 WizardTextField middlePanel = new WizardTextField(); 65 LabelWithMnemonic nameLabel = new LabelWithMnemonic(MailResourceLoader.getString( 66 "dialog", "accountwizard", "login")); 67 middlePanel.addLabel(nameLabel); 68 loginTextField = new JTextField (); 69 70 Method method = null; 71 72 try { 73 method = loginTextField.getClass().getMethod("getText", null); 74 } catch (NoSuchMethodException nsme) { 75 } 76 77 data.registerDataLookup("IncomingServer.login", 78 new DefaultDataLookup(loginTextField, method, null)); 79 80 DocumentListener fieldListener = new DocumentListener () { 81 public void removeUpdate(DocumentEvent e) { 82 checkFields(); 83 } 84 85 public void insertUpdate(DocumentEvent e) { 86 checkFields(); 87 } 88 89 protected void checkFields() { 90 setCanGoNext((loginTextField.getDocument().getLength() > 0) && 91 (hostTextField.getDocument().getLength() > 0)); 92 } 93 94 public void changedUpdate(DocumentEvent e) { 95 } 96 }; 97 98 loginTextField.getDocument().addDocumentListener(fieldListener); 99 nameLabel.setLabelFor(loginTextField); 100 middlePanel.addTextField(loginTextField); 101 102 JLabel exampleLabel = new JLabel (MailResourceLoader.getString( 103 "dialog", "accountwizard", "example") + "billgates"); 104 middlePanel.addExample(exampleLabel); 105 addressLabel = new LabelWithMnemonic(MailResourceLoader.getString( 106 "dialog", "accountwizard", "host")); 107 middlePanel.addLabel(addressLabel); 108 hostTextField = new JTextField (); 109 data.registerDataLookup("IncomingServer.host", 110 new DefaultDataLookup(hostTextField, method, null)); 111 hostTextField.getDocument().addDocumentListener(fieldListener); 112 addressLabel.setLabelFor(hostTextField); 113 middlePanel.addTextField(hostTextField); 114 115 JLabel addressExampleLabel = new JLabel (MailResourceLoader.getString( 116 "dialog", "accountwizard", "example") + 117 "mail.microsoft.com"); 118 middlePanel.addExample(addressExampleLabel); 119 120 LabelWithMnemonic typeLabel = new LabelWithMnemonic(MailResourceLoader.getString( 121 "dialog", "accountwizard", "type")); 122 middlePanel.addLabel(typeLabel); 123 typeComboBox = new JComboBox (); 124 typeLabel.setLabelFor(typeComboBox); 125 typeComboBox.addItem("POP3"); 126 typeComboBox.addItem("IMAP"); 127 128 try { 129 method = typeComboBox.getClass().getMethod("getSelectedItem", null); 130 } catch (NoSuchMethodException nsme) { 131 } 132 133 data.registerDataLookup("IncomingServer.type", 134 new DefaultDataLookup(typeComboBox, method, null)); 135 middlePanel.addTextField(typeComboBox); 136 middlePanel.addEmptyExample(); 137 component.add(middlePanel); 138 139 return component; 140 } 141 142 public void prepareRendering() { 143 SwingUtilities.invokeLater(new Runnable () { 144 public void run() { 145 loginTextField.requestFocus(); 146 } 147 }); 148 } 149 } 150 | Popular Tags |