KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > columba > mail > gui > config > accountwizard > IncomingServerStep


1 //The contents of this file are subject to the Mozilla Public License Version 1.1
2
//(the "License"); you may not use this file except in compliance with the
3
//License. You may obtain a copy of the License at http://www.mozilla.org/MPL/
4
//
5
//Software distributed under the License is distributed on an "AS IS" basis,
6
//WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
7
//for the specific language governing rights and
8
//limitations under the License.
9
//
10
//The Original Code is "The Columba Project"
11
//
12
//The Initial Developers of the Original Code are Frederik Dietz and Timo Stich.
13
//Portions created by Frederik Dietz and Timo Stich are Copyright (C) 2003.
14
//
15
//All Rights Reserved.
16
package org.columba.mail.gui.config.accountwizard;
17
18 import java.lang.reflect.Method JavaDoc;
19
20 import javax.swing.Box JavaDoc;
21 import javax.swing.BoxLayout JavaDoc;
22 import javax.swing.JComboBox JavaDoc;
23 import javax.swing.JComponent JavaDoc;
24 import javax.swing.JLabel JavaDoc;
25 import javax.swing.JPanel JavaDoc;
26 import javax.swing.JTextField JavaDoc;
27 import javax.swing.SwingUtilities JavaDoc;
28 import javax.swing.event.DocumentEvent JavaDoc;
29 import javax.swing.event.DocumentListener JavaDoc;
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 JavaDoc loginTextField;
44     protected JTextField JavaDoc hostTextField;
45     protected JLabel JavaDoc addressLabel;
46     protected JComboBox JavaDoc 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 JavaDoc createComponent() {
58         JComponent JavaDoc component = new JPanel JavaDoc();
59         component.setLayout(new BoxLayout JavaDoc(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 JavaDoc();
69
70         Method JavaDoc method = null;
71
72         try {
73             method = loginTextField.getClass().getMethod("getText", null);
74         } catch (NoSuchMethodException JavaDoc nsme) {
75         }
76
77         data.registerDataLookup("IncomingServer.login",
78             new DefaultDataLookup(loginTextField, method, null));
79
80         DocumentListener JavaDoc fieldListener = new DocumentListener JavaDoc() {
81                 public void removeUpdate(DocumentEvent JavaDoc e) {
82                     checkFields();
83                 }
84
85                 public void insertUpdate(DocumentEvent JavaDoc 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 JavaDoc e) {
95                 }
96             };
97
98         loginTextField.getDocument().addDocumentListener(fieldListener);
99         nameLabel.setLabelFor(loginTextField);
100         middlePanel.addTextField(loginTextField);
101
102         JLabel JavaDoc exampleLabel = new JLabel JavaDoc(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 JavaDoc();
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 JavaDoc addressExampleLabel = new JLabel JavaDoc(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 JavaDoc();
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 JavaDoc 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 JavaDoc() {
144                 public void run() {
145                     loginTextField.requestFocus();
146                 }
147             });
148     }
149 }
150
Popular Tags