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.JComponent ; 23 import javax.swing.JLabel ; 24 import javax.swing.JPanel ; 25 import javax.swing.JTextField ; 26 import javax.swing.SwingUtilities ; 27 import javax.swing.event.DocumentEvent ; 28 import javax.swing.event.DocumentListener ; 29 30 import net.javaprog.ui.wizard.AbstractStep; 31 import net.javaprog.ui.wizard.DataModel; 32 import net.javaprog.ui.wizard.DefaultDataLookup; 33 34 import org.columba.core.gui.base.LabelWithMnemonic; 35 import org.columba.core.gui.base.MultiLineLabel; 36 import org.columba.core.gui.base.WizardTextField; 37 import org.columba.mail.util.MailResourceLoader; 38 39 40 class OutgoingServerStep extends AbstractStep { 41 protected DataModel data; 42 protected boolean isLastStep; 43 private JTextField hostTextField; 44 45 public OutgoingServerStep(DataModel data, boolean isLastStep) { 46 super(MailResourceLoader.getString("dialog", "accountwizard", 47 "outgoingserver"), 48 MailResourceLoader.getString("dialog", "accountwizard", 49 "outgoingserver_description")); 50 this.data = data; 51 this.isLastStep = isLastStep; 52 setCanGoNext(false); 53 } 54 55 protected JComponent createComponent() { 56 JComponent component = new JPanel (); 57 component.setLayout(new BoxLayout (component, BoxLayout.Y_AXIS)); 58 component.add(new MultiLineLabel(MailResourceLoader.getString( 59 "dialog", "accountwizard", "outgoingserver_text"))); 60 component.add(Box.createVerticalStrut(40)); 61 62 WizardTextField middlePanel = new WizardTextField(); 63 64 LabelWithMnemonic addressLabel = new LabelWithMnemonic(MailResourceLoader.getString( 65 "dialog", "accountwizard", "host")); 66 middlePanel.addLabel(addressLabel); 67 hostTextField = new JTextField (); 68 69 Method method = null; 70 71 try { 72 method = hostTextField.getClass().getMethod("getText", null); 73 } catch (NoSuchMethodException nsme) { 74 } 75 76 data.registerDataLookup("OutgoingServer.host", 77 new DefaultDataLookup(hostTextField, method, null)); 78 hostTextField.getDocument().addDocumentListener(new DocumentListener () { 79 public void removeUpdate(DocumentEvent e) { 80 setCanProceed(e.getDocument().getLength() > 0); 81 } 82 83 public void insertUpdate(DocumentEvent e) { 84 setCanProceed(e.getDocument().getLength() > 0); 85 } 86 87 protected void setCanProceed(boolean b) { 88 if (isLastStep) { 89 setCanFinish(b); 90 } else { 91 setCanGoNext(b); 92 } 93 } 94 95 public void changedUpdate(DocumentEvent e) { 96 } 97 }); 98 addressLabel.setLabelFor(hostTextField); 99 middlePanel.addTextField(hostTextField); 100 101 JLabel addressExampleLabel = new JLabel (MailResourceLoader.getString( 102 "dialog", "accountwizard", "example") + 103 "mail.microsoft.com"); 104 middlePanel.addExample(addressExampleLabel); 105 component.add(middlePanel); 106 107 return component; 108 } 109 110 public void prepareRendering() { 111 SwingUtilities.invokeLater(new Runnable () { 112 public void run() { 113 hostTextField.requestFocus(); 114 } 115 }); 116 } 117 } 118 | Popular Tags |