KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > nightlabs > ipanema > base > login > SplashLoginPanel


1 /*
2  * Created on Jul 5, 2005
3  * by alex
4  *
5  */

6 package com.nightlabs.ipanema.base.login;
7
8 import java.awt.BorderLayout JavaDoc;
9 import java.awt.Component JavaDoc;
10 import java.awt.FlowLayout JavaDoc;
11 import java.awt.Font JavaDoc;
12 import java.awt.event.ActionEvent JavaDoc;
13 import java.awt.event.ActionListener JavaDoc;
14
15 import javax.swing.JButton JavaDoc;
16 import javax.swing.JCheckBox JavaDoc;
17 import javax.swing.JComponent JavaDoc;
18 import javax.swing.JLabel JavaDoc;
19 import javax.swing.JPanel JavaDoc;
20 import javax.swing.JPasswordField JavaDoc;
21 import javax.swing.JTextField JavaDoc;
22 import javax.swing.JToggleButton JavaDoc;
23 import javax.swing.SpringLayout JavaDoc;
24
25 import org.apache.commons.beanutils.BeanUtils;
26 import org.apache.log4j.Logger;
27
28 import com.nightlabs.config.Config;
29 import com.nightlabs.config.ConfigException;
30 import com.nightlabs.rcp.splash.SplashScreen;
31 import com.nightlabs.util.SpringUtilities;
32
33 /**
34  * @author Alexander Bieber <alex[AT]nightlabs[DOT]de>
35  *
36  */

37 public class SplashLoginPanel extends JPanel JavaDoc {
38     
39     private static Logger LOGGER = Logger.getLogger(SplashLoginPanel.class);
40
41     private IpanemaLoginContext loginContext;
42     private LoginConfigModule loginConfigModule;
43     
44     private JPanel JavaDoc fieldWrapperPanel;
45     
46     private JPanel JavaDoc messagePanel;
47     private JLabel JavaDoc labelMessage;
48     
49     private JPanel JavaDoc editPanel;
50     private JLabel JavaDoc labelUsername;
51     private JTextField JavaDoc textUsername;
52     private JLabel JavaDoc labelPassword;
53     private JPasswordField JavaDoc textPassword;
54     private JLabel JavaDoc labelWorkstation;
55     private JTextField JavaDoc textWorkstation;
56     
57     private JPanel JavaDoc detailWrapper;
58     private JPanel JavaDoc detailPanel;
59     private JLabel JavaDoc labelOrganisationID;
60     private JTextField JavaDoc textOrganisationID;
61     private JLabel JavaDoc labelSecurityProtocol;
62     private JTextField JavaDoc textSecurityProtocol;
63     private JLabel JavaDoc labelServerURL;
64     private JTextField JavaDoc textServerURL;
65     private JLabel JavaDoc labelInitialContextFactory;
66     private JTextField JavaDoc textInitialContextFactory;
67     
68     private JPanel JavaDoc checkBoxPanel;
69     private JCheckBox JavaDoc checkBoxSaveSettings;
70     
71     private JPanel JavaDoc buttonPanel;
72     private JButton JavaDoc buttonLogin;
73     private JButton JavaDoc buttonQuit;
74     private JToggleButton JavaDoc buttonShowDetails;
75     
76     private JPanel JavaDoc southPanel;
77     
78     private LoginConfigModule persistentLoginModule;
79     
80     
81     
82     /**
83      *
84      */

85     public SplashLoginPanel(IpanemaLoginContext loginContext, LoginConfigModule loginConfigModule) {
86         super();
87         this.loginContext = loginContext;
88         this.loginConfigModule = loginConfigModule;
89         
90         this.setFont(this.getFont().deriveFont(Font.ROMAN_BASELINE));
91         
92         try {
93             persistentLoginModule = ((LoginConfigModule)Config.sharedInstance().createConfigModule(LoginConfigModule.class));
94         } catch (ConfigException e) {
95             throw new RuntimeException JavaDoc(e);
96         }
97
98         this.setLayout(new BorderLayout JavaDoc());
99         
100         fieldWrapperPanel = new JPanel JavaDoc();
101         fieldWrapperPanel.setLayout(new BorderLayout JavaDoc());
102         add(fieldWrapperPanel, BorderLayout.NORTH);
103         
104         editPanel = new JPanel JavaDoc();
105         editPanel.setLayout(new SpringLayout JavaDoc());
106         
107         
108         messagePanel = new JPanel JavaDoc();
109         messagePanel.setLayout(new FlowLayout JavaDoc(FlowLayout.LEADING, 10, 10));
110         labelMessage = new JLabel JavaDoc("Here could be a useful message");
111         messagePanel.add(labelMessage);
112         fieldWrapperPanel.add(messagePanel, BorderLayout.NORTH);
113         
114         fieldWrapperPanel.add(editPanel, BorderLayout.SOUTH);
115         
116         labelUsername = new JLabel JavaDoc("Username:", JLabel.LEADING);
117         editPanel.add(labelUsername);
118         textUsername = new JTextField JavaDoc(15);
119         labelUsername.setLabelFor(textUsername);
120         textUsername.setText(persistentLoginModule.getUserID());
121         editPanel.add(textUsername);
122         
123         labelPassword = new JLabel JavaDoc("Password:", JLabel.LEADING);
124         editPanel.add(labelPassword);
125         textPassword = new JPasswordField JavaDoc(15);
126         labelPassword.setLabelFor(textPassword);
127         textPassword.setText("");
128         textPassword.setEchoChar('*');
129         editPanel.add(textPassword);
130
131         labelWorkstation = new JLabel JavaDoc("Workstation:", JLabel.LEADING);
132         editPanel.add(labelWorkstation);
133         textWorkstation = new JTextField JavaDoc(15);
134         labelWorkstation.setLabelFor(textWorkstation);
135         textWorkstation.setText(persistentLoginModule.getWorkstationID());
136         editPanel.add(textWorkstation);
137
138         SpringUtilities.makeCompactGrid(
139                 editPanel,
140                 3, 2,
141                 10, 20,
142                 10, 10
143         );
144         detailWrapper = new JPanel JavaDoc();
145         detailWrapper.setLayout(new BorderLayout JavaDoc());
146         
147         detailPanel = new JPanel JavaDoc();
148         detailPanel.setLayout(new SpringLayout JavaDoc());
149         detailWrapper.add(detailPanel, BorderLayout.NORTH);
150         
151         labelOrganisationID = new JLabel JavaDoc("Organisation:", JLabel.LEADING);
152         detailPanel.add(labelOrganisationID);
153         textOrganisationID = new JTextField JavaDoc(15);
154         labelOrganisationID.setLabelFor(textOrganisationID);
155         textOrganisationID.setText(persistentLoginModule.getOrganisationID());
156         detailPanel.add(textOrganisationID);
157
158         labelSecurityProtocol = new JLabel JavaDoc("SecurityProtocol:", JLabel.LEADING);
159         detailPanel.add(labelSecurityProtocol);
160         textSecurityProtocol = new JTextField JavaDoc(15);
161         labelSecurityProtocol.setLabelFor(textSecurityProtocol);
162         textSecurityProtocol.setText(persistentLoginModule.getSecurityProtocol());
163         detailPanel.add(textSecurityProtocol);
164
165         labelServerURL = new JLabel JavaDoc("ServerURL:", JLabel.LEADING);
166         detailPanel.add(labelServerURL);
167         textServerURL = new JTextField JavaDoc(15);
168         labelServerURL.setLabelFor(textServerURL);
169         textServerURL.setText(persistentLoginModule.getServerURL());
170         detailPanel.add(textServerURL);
171
172         labelInitialContextFactory = new JLabel JavaDoc("InitialContextFactory:", JLabel.LEADING);
173         detailPanel.add(labelInitialContextFactory);
174         textInitialContextFactory = new JTextField JavaDoc(15);
175         labelInitialContextFactory.setLabelFor(textInitialContextFactory);
176         textInitialContextFactory.setText(persistentLoginModule.getInitialContextFactory());
177         detailPanel.add(textInitialContextFactory);
178         SpringUtilities.makeCompactGrid(
179                 detailPanel,
180                 4, 2,
181                 10, 20,
182                 10, 10
183         );
184         checkBoxPanel = new JPanel JavaDoc();
185         checkBoxPanel.setLayout(new FlowLayout JavaDoc(FlowLayout.LEADING));
186         checkBoxSaveSettings = new JCheckBox JavaDoc("Save settings to config", false);
187         checkBoxPanel.add(checkBoxSaveSettings);
188         detailWrapper.add(checkBoxPanel, BorderLayout.SOUTH);
189         
190         
191         setPreferredSize(SplashScreen.getSplashImageDimension());
192 // setMinimumSize(new Dimension(400,400));
193
// setSize(new Dimension(400,400));
194
// setMaximumSize(new Dimension(400, 400));
195

196         southPanel = new JPanel JavaDoc();
197         add(southPanel, BorderLayout.SOUTH);
198         southPanel.setLayout(new BorderLayout JavaDoc());
199         
200         buttonPanel = new JPanel JavaDoc();
201         buttonPanel.setAlignmentX(JPanel.RIGHT_ALIGNMENT);
202         buttonPanel.setLayout(new FlowLayout JavaDoc(FlowLayout.TRAILING));
203         southPanel.add(buttonPanel, BorderLayout.SOUTH);
204         buttonLogin = new JButton JavaDoc("Login");
205         buttonPanel.add(buttonLogin);
206         buttonLogin.addActionListener(new ActionListener JavaDoc(){
207             public void actionPerformed(ActionEvent JavaDoc e) {
208                 synchronized (SplashScreen.getMutex()) {
209                     SplashScreen.getMutex().notifyAll();
210                 }
211             }
212         });
213         
214         buttonQuit = new JButton JavaDoc("Quit");
215         buttonPanel.add(buttonQuit);
216         buttonQuit.addActionListener(new ActionListener JavaDoc(){
217             public void actionPerformed(ActionEvent JavaDoc e) {
218                 System.exit(0);
219             }
220         });
221         buttonShowDetails = new JToggleButton JavaDoc("Details");
222         buttonPanel.add(buttonShowDetails);
223         buttonShowDetails.addActionListener(new ActionListener JavaDoc() {
224             public void actionPerformed(ActionEvent JavaDoc e) {
225                 if (buttonShowDetails.isSelected()) {
226                     fieldWrapperPanel.remove(editPanel);
227                     fieldWrapperPanel.add(detailWrapper, BorderLayout.SOUTH);
228                 }
229                 else {
230                     fieldWrapperPanel.remove(detailWrapper);
231                     fieldWrapperPanel.add(editPanel, BorderLayout.SOUTH);
232                 }
233                 setComponentFont(SplashLoginPanel.this, SplashLoginPanel.this.getFont());
234                 SplashScreen.setSplashPanel(SplashLoginPanel.this);
235             }
236         });
237         
238         setComponentFont(this, this.getFont());
239     }
240
241     /**
242      * Assigns the values in the GUI to the LoginConfigModule
243      * and IpanemaLoginContext passed in the constructor.
244      */

245     public void assignLoginValues() {
246         loginConfigModule.setUserID(textUsername.getText());
247         loginConfigModule.setOrganisationID(textOrganisationID.getText());
248         loginConfigModule.setSecurityProtocol(textSecurityProtocol.getText());
249         loginConfigModule.setServerURL(textServerURL.getText());
250         loginConfigModule.setInitialContextFactory(textInitialContextFactory.getText());
251         loginConfigModule.setWorkstationID(textWorkstation.getText());
252         
253         if (checkBoxSaveSettings.isSelected()) {
254             try {
255                 BeanUtils.copyProperties(persistentLoginModule,loginConfigModule);
256                 persistentLoginModule.setChanged();
257             } catch (Exception JavaDoc e) {
258                 LOGGER.error("Saving config failed!", e);
259             }
260         }
261         
262         loginContext.setCredentials(
263                 loginConfigModule.getUserID(),
264                 loginConfigModule.getOrganisationID(),
265                 new String JavaDoc(textPassword.getPassword())
266             );
267     }
268     
269     public void setErrMessage(String JavaDoc message) {
270         labelMessage.setText(message);
271         SplashScreen.setSplashPanel(SplashLoginPanel.this);
272     }
273     
274     private void setComponentFont(JComponent JavaDoc component, Font JavaDoc font) {
275         component.setFont(font);
276         Component JavaDoc[] components = component.getComponents();
277         for (int i = 0; i < components.length; i++) {
278             if (components[i] instanceof JComponent JavaDoc)
279                 setComponentFont((JComponent JavaDoc)components[i], font);
280             else {
281                 components[i].setFont(font);
282             }
283         }
284     }
285
286 }
287
Popular Tags