KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > sshtools > ui > swing > options > OptionsDialog


1 /*
2  * SSHTools - Java SSH2 API
3  *
4  * Copyright (C) 2002 Lee David Painter.
5  *
6  * This program is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU Library General Public License
8  * as published by the Free Software Foundation; either version 2 of
9  * the License, or (at your option) any later version.
10  *
11  * You may also distribute it and/or modify it under the terms of the
12  * Apache style J2SSH Software License. A copy of which should have
13  * been provided with the distribution.
14  *
15  * This program is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18  * License document supplied with your distribution for more details.
19  *
20  */

21
22 package com.sshtools.ui.swing.options;
23
24 import java.awt.BorderLayout JavaDoc;
25 import java.awt.Component JavaDoc;
26 import java.awt.FlowLayout JavaDoc;
27 import java.awt.Window JavaDoc;
28 import java.awt.event.ActionEvent JavaDoc;
29 import java.awt.event.ActionListener JavaDoc;
30
31 import javax.swing.BorderFactory JavaDoc;
32 import javax.swing.Icon JavaDoc;
33 import javax.swing.JButton JavaDoc;
34 import javax.swing.JComponent JavaDoc;
35 import javax.swing.JDialog JavaDoc;
36 import javax.swing.JFrame JavaDoc;
37 import javax.swing.JLabel JavaDoc;
38 import javax.swing.JPanel JavaDoc;
39 import javax.swing.SwingUtilities JavaDoc;
40
41 import com.sshtools.ui.swing.WrappingLabel;
42
43 /**
44  *
45  *
46  * @author $author$
47  */

48 public class OptionsDialog extends JDialog JavaDoc implements ActionListener JavaDoc {
49     private Option selectedOption;
50     private OptionCallback callback;
51     private JButton JavaDoc defaultButton;
52
53     /**
54      * Creates a new OptionsDialog object.
55      *
56      * @param parent
57      * @param options
58      * @param message
59      * @param title
60      * @param defaultOption
61      * @param callback
62      * @param modal
63      * @param icon
64      */

65     public OptionsDialog(JDialog JavaDoc parent, Option[] options, Object JavaDoc message, String JavaDoc title, Option defaultOption,
66                          OptionCallback callback, boolean modal, Icon JavaDoc icon) {
67         super(parent, title, modal);
68         init(options, message, defaultOption, callback, icon);
69     }
70
71     /**
72      * Creates a new OptionsDialog object.
73      *
74      * @param parent
75      * @param options
76      * @param message
77      * @param title
78      * @param defaultOption
79      * @param callback
80      * @param modal
81      * @param icon
82      */

83     public OptionsDialog(JFrame JavaDoc parent, Option[] options, Object JavaDoc message, String JavaDoc title, Option defaultOption,
84                          OptionCallback callback, boolean modal, Icon JavaDoc icon) {
85         super(parent, title, modal);
86         init(options, message, defaultOption, callback, icon);
87     }
88
89     private void init(Option[] options, Object JavaDoc message, Option defaultOption, OptionCallback callback, Icon JavaDoc icon) {
90         //
91
this.callback = callback;
92
93         JPanel JavaDoc b = new JPanel JavaDoc(new FlowLayout JavaDoc(FlowLayout.RIGHT, 2, 2));
94         b.setBorder(BorderFactory.createEmptyBorder(4, 4, 4, 4));
95
96         for (int i = 0; i < options.length; i++) {
97             JButton JavaDoc button = new JButton JavaDoc(options[i].getText());
98
99             if (options[i] == defaultOption) {
100                 button.setDefaultCapable(options[i] == defaultOption);
101                 defaultButton = button;
102                 getRootPane().setDefaultButton(defaultButton);
103             }
104
105             button.setMnemonic(options[i].getMnemonic());
106             button.setToolTipText(options[i].getToolTipText());
107             button.putClientProperty("option", options[i]);
108             button.addActionListener(this);
109             b.add(button);
110         }
111
112         //
113
JPanel JavaDoc s = new JPanel JavaDoc(new BorderLayout JavaDoc());
114         s.setBorder(BorderFactory.createEmptyBorder(4, 0, 0, 0));
115         // s.add(new JSeparator(JSeparator.HORIZONTAL), BorderLayout.NORTH);
116
s.add(b, BorderLayout.SOUTH);
117
118         //
119
JPanel JavaDoc z = new JPanel JavaDoc(new BorderLayout JavaDoc());
120         z.setBorder(BorderFactory.createEmptyBorder(4, 4, 4, 4));
121
122         //
123
if (message instanceof JComponent JavaDoc) {
124             z.add((JComponent JavaDoc) message, BorderLayout.CENTER);
125         } else {
126             WrappingLabel l = new WrappingLabel(String.valueOf(message));
127             z.add(l, BorderLayout.CENTER);
128         }
129
130         // Icon panel
131
JLabel JavaDoc i = null;
132
133         if (icon != null) {
134             i = new JLabel JavaDoc(icon);
135             i.setVerticalAlignment(JLabel.NORTH);
136             i.setBorder(BorderFactory.createEmptyBorder(4, 4, 0, 4));
137         }
138
139         // Build this panel
140
getContentPane().setLayout(new BorderLayout JavaDoc());
141         getContentPane().add(z, BorderLayout.CENTER);
142
143         if (i != null) {
144             getContentPane().add(i, BorderLayout.WEST);
145         }
146
147         getContentPane().add(s, BorderLayout.SOUTH);
148
149         //
150
pack();
151     }
152
153     /**
154      *
155      *
156      * @return
157      */

158     public JButton JavaDoc getDefaultButton() {
159         return defaultButton;
160     }
161
162     /**
163      *
164      *
165      * @return
166      */

167     public Option getSelectedOption() {
168         return selectedOption;
169     }
170
171     /**
172      *
173      *
174      * @param evt
175      */

176     public void actionPerformed(ActionEvent JavaDoc evt) {
177         selectedOption = (Option) ((JButton JavaDoc) evt.getSource()).getClientProperty("option");
178
179         if ((callback == null) || callback.canClose(this, selectedOption)) {
180             setVisible(false);
181         }
182     }
183
184     /**
185      *
186      *
187      * @param parent
188      * @param options
189      * @param message
190      * @param title
191      * @param defaultOption
192      * @param callback
193      * @param icon
194      *
195      * @return
196      */

197     public static OptionsDialog createOptionDialog(Component JavaDoc parent, Option[] options, Object JavaDoc message, String JavaDoc title,
198                                                    Option defaultOption, OptionCallback callback, Icon JavaDoc icon) {
199         //
200
OptionsDialog dialog = null;
201         Window JavaDoc w = (Window JavaDoc) SwingUtilities.getAncestorOfClass(Window JavaDoc.class, parent);
202
203         if (w instanceof JFrame JavaDoc) {
204             dialog = new OptionsDialog((JFrame JavaDoc) w, options, message, title, defaultOption, callback, true, icon);
205         } else if (w instanceof JDialog JavaDoc) {
206             dialog = new OptionsDialog((JDialog JavaDoc) w, options, message, title, defaultOption, callback, true, icon);
207         } else {
208             dialog = new OptionsDialog((JFrame JavaDoc) null, options, message, title, defaultOption, callback, true, icon);
209         }
210
211         if (dialog.getDefaultButton() != null) {
212             dialog.getRootPane().setDefaultButton(dialog.getDefaultButton());
213         }
214         dialog.pack();
215
216         return dialog;
217     }
218 }
219
Popular Tags