001 /*
002 * $Id: JXLoginDialog.java,v 1.8 2006/05/14 08:12:16 dmouse Exp $
003 *
004 * Copyright 2004 Sun Microsystems, Inc., 4150 Network Circle,
005 * Santa Clara, California 95054, U.S.A. All rights reserved.
006 */
007
008 package org.jdesktop.swingx;
009
010 import java.awt.Dialog;
011 import java.awt.Frame;
012 import java.awt.GraphicsConfiguration;
013 import java.awt.HeadlessException;
014 import javax.swing.JDialog;
015 import javax.swing.UIManager;
016 import org.jdesktop.swingx.auth.LoginService;
017 import org.jdesktop.swingx.auth.PasswordStore;
018 import org.jdesktop.swingx.auth.UserNameStore;
019
020 /**
021 * A standard login dialog that provides a reasonable amount of flexibility
022 * while also providing ease of use and a professional look.
023 *
024 * @author rbair
025 */
026 public class JXLoginDialog extends JDialog {
027 /**
028 * The login panel containing the username & password fields, and handling
029 * the login procedures.
030 */
031 private JXLoginPanel panel;
032
033 /**
034 * Creates a non-modal dialog without a title and without a specified
035 * <code>Frame</code> owner. A shared, hidden frame will be
036 * set as the owner of the dialog.
037 * <p>
038 * This constructor sets the component's locale property to the value
039 * returned by <code>JComponent.getDefaultLocale</code>.
040 *
041 * @exception HeadlessException if GraphicsEnvironment.isHeadless()
042 * returns true.
043 * @see java.awt.GraphicsEnvironment#isHeadless
044 * @see javax.swing.JComponent#getDefaultLocale
045 */
046 public JXLoginDialog() throws HeadlessException {
047 super();
048 init();
049 }
050
051 /**
052 * Creates a non-modal dialog without a title with the
053 * specified <code>Frame</code> as its owner. If <code>owner</code>
054 * is <code>null</code>, a shared, hidden frame will be set as the
055 * owner of the dialog.
056 * <p>
057 * This constructor sets the component's locale property to the value
058 * returned by <code>JComponent.getDefaultLocale</code>.
059 *
060 * @param owner the <code>Frame</code> from which the dialog is displayed
061 * @exception HeadlessException if GraphicsEnvironment.isHeadless()
062 * returns true.
063 * @see java.awt.GraphicsEnvironment#isHeadless
064 * @see javax.swing.JComponent#getDefaultLocale
065 */
066 public JXLoginDialog(Frame owner) throws HeadlessException {
067 super(owner);
068 init();
069 }
070
071 /**
072 * Creates a modal or non-modal dialog without a title and
073 * with the specified owner <code>Frame</code>. If <code>owner</code>
074 * is <code>null</code>, a shared, hidden frame will be set as the
075 * owner of the dialog.
076 * <p>
077 * This constructor sets the component's locale property to the value
078 * returned by <code>JComponent.getDefaultLocale</code>.
079 *
080 * @param owner the <code>Frame</code> from which the dialog is displayed
081 * @param modal true for a modal dialog, false for one that allows
082 * others windows to be active at the same time
083 * @exception HeadlessException if GraphicsEnvironment.isHeadless()
084 * returns true.
085 * @see java.awt.GraphicsEnvironment#isHeadless
086 * @see javax.swing.JComponent#getDefaultLocale
087 */
088 public JXLoginDialog(Frame owner, boolean modal) throws HeadlessException {
089 super(owner, modal);
090 init();
091 }
092
093 /**
094 * Creates a non-modal dialog with the specified title and
095 * with the specified owner frame. If <code>owner</code>
096 * is <code>null</code>, a shared, hidden frame will be set as the
097 * owner of the dialog.
098 * <p>
099 * This constructor sets the component's locale property to the value
100 * returned by <code>JComponent.getDefaultLocale</code>.
101 *
102 * @param owner the <code>Frame</code> from which the dialog is displayed
103 * @param title the <code>String</code> to display in the dialog's
104 * title bar
105 * @exception HeadlessException if GraphicsEnvironment.isHeadless()
106 * returns true.
107 * @see java.awt.GraphicsEnvironment#isHeadless
108 * @see javax.swing.JComponent#getDefaultLocale
109 */
110 public JXLoginDialog(Frame owner, String title) throws HeadlessException {
111 super(owner, title);
112 init();
113 }
114
115 /**
116 * Creates a modal or non-modal dialog with the specified title
117 * and the specified owner <code>Frame</code>. If <code>owner</code>
118 * is <code>null</code>, a shared, hidden frame will be set as the
119 * owner of this dialog. All constructors defer to this one.
120 * <p>
121 * NOTE: Any popup components (<code>JComboBox</code>,
122 * <code>JPopupMenu</code>, <code>JMenuBar</code>)
123 * created within a modal dialog will be forced to be lightweight.
124 * <p>
125 * This constructor sets the component's locale property to the value
126 * returned by <code>JComponent.getDefaultLocale</code>.
127 *
128 * @param owner the <code>Frame</code> from which the dialog is displayed
129 * @param title the <code>String</code> to display in the dialog's
130 * title bar
131 * @param modal true for a modal dialog, false for one that allows
132 * other windows to be active at the same time
133 * @exception HeadlessException if GraphicsEnvironment.isHeadless()
134 * returns true.
135 * @see java.awt.GraphicsEnvironment#isHeadless
136 * @see javax.swing.JComponent#getDefaultLocale
137 */
138 public JXLoginDialog(Frame owner, String title, boolean modal)
139 throws HeadlessException {
140 super(owner, title, modal);
141 init();
142 }
143
144 /**
145 * Creates a modal or non-modal dialog with the specified title,
146 * owner <code>Frame</code>, and <code>GraphicsConfiguration</code>.
147 *
148 * <p>
149 * NOTE: Any popup components (<code>JComboBox</code>,
150 * <code>JPopupMenu</code>, <code>JMenuBar</code>)
151 * created within a modal dialog will be forced to be lightweight.
152 * <p>
153 * This constructor sets the component's locale property to the value
154 * returned by <code>JComponent.getDefaultLocale</code>.
155 *
156 * @param owner the <code>Frame</code> from which the dialog is displayed
157 * @param title the <code>String</code> to display in the dialog's
158 * title bar
159 * @param modal true for a modal dialog, false for one that allows
160 * other windows to be active at the same time
161 * @param gc the <code>GraphicsConfiguration</code>
162 * of the target screen device. If <code>gc</code> is
163 * <code>null</code>, the same
164 * <code>GraphicsConfiguration</code> as the owning Frame is used.
165 * @exception HeadlessException if GraphicsEnvironment.isHeadless()
166 * returns true.
167 * @see java.awt.GraphicsEnvironment#isHeadless
168 * @see javax.swing.JComponent#getDefaultLocale
169 * @since 1.4
170 */
171 public JXLoginDialog(Frame owner, String title, boolean modal,
172 GraphicsConfiguration gc) {
173 super(owner, title, modal, gc);
174 init();
175 }
176
177 /**
178 * Creates a non-modal dialog without a title with the
179 * specified <code>Dialog</code> as its owner.
180 * <p>
181 * This constructor sets the component's locale property to the value
182 * returned by <code>JComponent.getDefaultLocale</code>.
183 *
184 * @param owner the non-null <code>Dialog</code> from which the dialog is displayed
185 * @exception HeadlessException if GraphicsEnvironment.isHeadless()
186 * returns true.
187 * @see java.awt.GraphicsEnvironment#isHeadless
188 * @see javax.swing.JComponent#getDefaultLocale
189 */
190 public JXLoginDialog(Dialog owner) throws HeadlessException {
191 super(owner);
192 init();
193 }
194
195 /**
196 * Creates a modal or non-modal dialog without a title and
197 * with the specified owner dialog.
198 * <p>
199 * This constructor sets the component's locale property to the value
200 * returned by <code>JComponent.getDefaultLocale</code>.
201 *
202 * @param owner the non-null <code>Dialog</code> from which the dialog is displayed
203 * @param modal true for a modal dialog, false for one that allows
204 * other windows to be active at the same time
205 * @exception HeadlessException if GraphicsEnvironment.isHeadless()
206 * returns true.
207 * @see java.awt.GraphicsEnvironment#isHeadless
208 * @see javax.swing.JComponent#getDefaultLocale
209 */
210 public JXLoginDialog(Dialog owner, boolean modal) throws HeadlessException {
211 super(owner, modal);
212 init();
213 }
214
215 /**
216 * Creates a non-modal dialog with the specified title and
217 * with the specified owner dialog.
218 * <p>
219 * This constructor sets the component's locale property to the value
220 * returned by <code>JComponent.getDefaultLocale</code>.
221 *
222 * @param owner the non-null <code>Dialog</code> from which the dialog is displayed
223 * @param title the <code>String</code> to display in the dialog's
224 * title bar
225 * @exception HeadlessException if GraphicsEnvironment.isHeadless()
226 * returns true.
227 * @see java.awt.GraphicsEnvironment#isHeadless
228 * @see javax.swing.JComponent#getDefaultLocale
229 */
230 public JXLoginDialog(Dialog owner, String title) throws HeadlessException {
231 super(owner, title);
232 init();
233 }
234
235 /**
236 * Creates a modal or non-modal dialog with the specified title
237 * and the specified owner frame.
238 * <p>
239 * This constructor sets the component's locale property to the value
240 * returned by <code>JComponent.getDefaultLocale</code>.
241 *
242 * @param owner the non-null <code>Dialog</code> from which the dialog is displayed
243 * @param title the <code>String</code> to display in the dialog's
244 * title bar
245 * @param modal true for a modal dialog, false for one that allows
246 * other windows to be active at the same time
247 * @exception HeadlessException if GraphicsEnvironment.isHeadless()
248 * returns true.
249 * @see java.awt.GraphicsEnvironment#isHeadless
250 * @see javax.swing.JComponent#getDefaultLocale
251 */
252 public JXLoginDialog(Dialog owner, String title, boolean modal)
253 throws HeadlessException {
254 super(owner, title, modal);
255 init();
256 }
257
258 /**
259 * Creates a modal or non-modal dialog with the specified title,
260 * owner <code>Dialog</code>, and <code>GraphicsConfiguration</code>.
261 *
262 * <p>
263 * NOTE: Any popup components (<code>JComboBox</code>,
264 * <code>JPopupMenu</code>, <code>JMenuBar</code>)
265 * created within a modal dialog will be forced to be lightweight.
266 * <p>
267 * This constructor sets the component's locale property to the value
268 * returned by <code>JComponent.getDefaultLocale</code>.
269 *
270 * @param owner the <code>Dialog</code> from which the dialog is displayed
271 * @param title the <code>String</code> to display in the dialog's
272 * title bar
273 * @param modal true for a modal dialog, false for one that allows
274 * other windows to be active at the same time
275 * @param gc the <code>GraphicsConfiguration</code>
276 * of the target screen device. If <code>gc</code> is
277 * <code>null</code>, the same
278 * <code>GraphicsConfiguration</code> as the owning Dialog is used.
279 * @exception HeadlessException if GraphicsEnvironment.isHeadless()
280 * @see java.awt.GraphicsEnvironment#isHeadless
281 * @see javax.swing.JComponent#getDefaultLocale
282 * returns true.
283 * @since 1.4
284 */
285 public JXLoginDialog(Dialog owner, String title, boolean modal,
286 GraphicsConfiguration gc) throws HeadlessException {
287
288 super(owner, title, modal, gc);
289 init();
290 }
291
292 /**
293 */
294 public JXLoginDialog(LoginService service, PasswordStore ps, UserNameStore us) {
295 super();
296 setTitle(UIManager.getString(JXLoginPanel.class.getCanonicalName() + ".loginString"));
297 setPanel(new JXLoginPanel(service, ps, us));
298 JXLoginPanel.initWindow(this, getPanel());
299 }
300
301 protected void init() {
302 setPanel(new JXLoginPanel());
303 JXLoginPanel.initWindow(this, getPanel());
304 }
305
306 /**
307 * @return the status of the login dialog
308 */
309 public JXLoginPanel.Status getStatus() {
310 return getPanel().getStatus();
311 }
312
313 public JXLoginPanel getPanel() {
314 return panel;
315 }
316
317 public void setPanel(JXLoginPanel panel) {
318 this.panel = panel;
319 }
320 }