KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > armedbear > j > AbstractDialog


1 /*
2  * AbstractDialog.java
3  *
4  * Copyright (C) 1998-2003 Peter Graves
5  * $Id: AbstractDialog.java,v 1.3 2003/07/27 01:12:21 piso Exp $
6  *
7  * This program is free software; you can redistribute it and/or
8  * modify it under the terms of the GNU General Public License
9  * as published by the Free Software Foundation; either version 2
10  * of the License, or (at your option) any later version.
11  *
12  * This program is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15  * GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License
18  * along with this program; if not, write to the Free Software
19  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
20  */

21
22 package org.armedbear.j;
23
24 import java.awt.Dimension JavaDoc;
25 import java.awt.Point JavaDoc;
26 import java.awt.SystemColor JavaDoc;
27 import java.awt.Toolkit JavaDoc;
28 import java.awt.event.ActionEvent JavaDoc;
29 import java.awt.event.ActionListener JavaDoc;
30 import java.awt.event.KeyEvent JavaDoc;
31 import java.awt.event.KeyListener JavaDoc;
32 import java.awt.event.WindowEvent JavaDoc;
33 import java.awt.event.WindowListener JavaDoc;
34 import javax.swing.Box JavaDoc;
35 import javax.swing.BoxLayout JavaDoc;
36 import javax.swing.JComboBox JavaDoc;
37 import javax.swing.JComponent JavaDoc;
38 import javax.swing.JDialog JavaDoc;
39 import javax.swing.JLabel JavaDoc;
40 import javax.swing.JPanel JavaDoc;
41 import javax.swing.JTextField JavaDoc;
42 import javax.swing.border.EmptyBorder JavaDoc;
43
44 public abstract class AbstractDialog extends JDialog JavaDoc implements ActionListener JavaDoc,
45     KeyListener JavaDoc, WindowListener JavaDoc
46 {
47     protected boolean cancelled;
48     protected JPanel JavaDoc mainPanel;
49     protected StandardButton okButton;
50     protected StandardButton cancelButton;
51
52     private Frame owner;
53
54     protected AbstractDialog(Editor editor)
55     {
56         super(editor == null ? null : editor.getFrame());
57         this.owner = editor == null ? null : editor.getFrame();
58         initialize();
59     }
60
61     protected AbstractDialog(Editor editor, String JavaDoc title, boolean modal)
62     {
63         super(editor == null ? null : editor.getFrame(), title, modal);
64         this.owner = editor == null ? null : editor.getFrame();
65         initialize();
66     }
67
68     protected AbstractDialog(Frame owner)
69     {
70         super(owner);
71         this.owner = owner;
72         initialize();
73     }
74
75     protected AbstractDialog(Frame owner, String JavaDoc title, boolean modal)
76     {
77         super(owner, title, modal);
78         this.owner = owner;
79         initialize();
80     }
81
82     private void initialize()
83     {
84         setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
85         addWindowListener(this);
86         getContentPane().setLayout(new BoxLayout JavaDoc(getContentPane(), BoxLayout.Y_AXIS));
87         setBackground(SystemColor.control);
88         mainPanel = new JPanel JavaDoc();
89         mainPanel.setLayout(new BoxLayout JavaDoc(mainPanel, BoxLayout.Y_AXIS));
90         mainPanel.setBorder(new EmptyBorder JavaDoc(6, 6, 6, 6));
91         getContentPane().add(mainPanel);
92         addKeyListener(this);
93     }
94
95     public final boolean cancelled()
96     {
97         return cancelled;
98     }
99
100     // Add label and text field below it with right amount of space between them.
101
protected void addLabelAndTextField(JLabel JavaDoc label, JTextField JavaDoc textField)
102     {
103         label.setLabelFor(textField);
104         if (label.getBorder() == null)
105             label.setBorder(new EmptyBorder JavaDoc(0, 0, 3, 0));
106         mainPanel.add(label);
107         mainPanel.add(textField);
108         textField.addKeyListener(this);
109     }
110
111     protected void addLabelAndComponent(JLabel JavaDoc label, JComponent JavaDoc component)
112     {
113         if (label.getLabelFor() == null)
114             label.setLabelFor(component);
115         if (label.getBorder() == null)
116             label.setBorder(new EmptyBorder JavaDoc(0, 0, 3, 0));
117         mainPanel.add(label);
118         mainPanel.add(component);
119         component.addKeyListener(this);
120     }
121
122     protected final void addCheckBox(CheckBox checkBox)
123     {
124         mainPanel.add(checkBox);
125         checkBox.addKeyListener(this);
126     }
127
128     protected final void addVerticalStrut()
129     {
130         mainPanel.add(Box.createVerticalStrut(6));
131     }
132
133     protected void addOK()
134     {
135         JPanel JavaDoc buttonPanel = new JPanel JavaDoc();
136         buttonPanel.setAlignmentX(LEFT_ALIGNMENT);
137         mainPanel.add(buttonPanel);
138         okButton = new StandardButton("OK");
139         okButton.setActionCommand("OK");
140         okButton.addActionListener(this);
141         okButton.addKeyListener(this);
142         buttonPanel.add(okButton);
143     }
144
145     protected void addCancel()
146     {
147         JPanel JavaDoc buttonPanel = new JPanel JavaDoc();
148         buttonPanel.setAlignmentX(LEFT_ALIGNMENT);
149         mainPanel.add(buttonPanel);
150         cancelButton = new StandardButton("Cancel");
151         cancelButton.setActionCommand("Cancel");
152         cancelButton.addActionListener(this);
153         cancelButton.addKeyListener(this);
154         buttonPanel.add(cancelButton);
155     }
156
157     protected void addOKCancel()
158     {
159         JPanel JavaDoc buttonPanel = new JPanel JavaDoc();
160         buttonPanel.setAlignmentX(LEFT_ALIGNMENT);
161         mainPanel.add(buttonPanel);
162         okButton = new StandardButton("OK");
163         okButton.setActionCommand("OK");
164         okButton.addActionListener(this);
165         okButton.addKeyListener(this);
166         buttonPanel.add(okButton);
167         cancelButton = new StandardButton("Cancel");
168         cancelButton.setActionCommand("Cancel");
169         cancelButton.addActionListener(this);
170         cancelButton.addKeyListener(this);
171         buttonPanel.add(cancelButton);
172     }
173
174     protected void ok()
175     {
176         dispose();
177     }
178
179     protected void cancel()
180     {
181         cancelled = true;
182         dispose();
183     }
184
185     protected void enter()
186     {
187         ok();
188     }
189
190     protected void escape()
191     {
192         cancel();
193     }
194
195     public void dispose()
196     {
197         super.dispose();
198         Editor.restoreFocus();
199     }
200
201     public void actionPerformed(ActionEvent JavaDoc e)
202     {
203         if (e.getActionCommand().equals("Cancel"))
204             cancel();
205         else if (e.getActionCommand().equals("OK"))
206             ok();
207     }
208
209     public void keyPressed(KeyEvent JavaDoc e)
210     {
211         if (e.getModifiers() == 0) {
212             // Special case for combo box.
213
if (e.getComponent() instanceof JComboBox JavaDoc) {
214                 JComboBox JavaDoc cb = (JComboBox JavaDoc) e.getComponent();
215                 if (cb.isPopupVisible())
216                     return;
217                 // Combo box popup is not visible. Fall through...
218
}
219             switch (e.getKeyCode()){
220                 case KeyEvent.VK_ENTER:
221                     e.consume();
222                     enter();
223                     break;
224                 case KeyEvent.VK_ESCAPE:
225                     // Ignore escape if key event has been consumed (textfield
226
// may be cancelling an expansion).
227
if (!e.isConsumed()) {
228                         e.consume();
229                         escape();
230                     }
231                     break;
232             }
233         }
234     }
235
236     public void keyReleased(KeyEvent JavaDoc e) {}
237
238     public void keyTyped(KeyEvent JavaDoc e) {}
239
240     public void windowActivated(WindowEvent JavaDoc e) {}
241
242     public void windowDeactivated(WindowEvent JavaDoc e) {}
243
244     public void windowOpened(WindowEvent JavaDoc e) {}
245
246     public void windowClosing(WindowEvent JavaDoc e)
247     {
248         cancelled = true;
249         dispose();
250     }
251
252     public void windowClosed(WindowEvent JavaDoc e) {}
253
254     public void windowIconified(WindowEvent JavaDoc e) {}
255
256     public void windowDeiconified(WindowEvent JavaDoc e) {}
257
258     protected void centerDialog()
259     {
260         Dimension JavaDoc window = getSize();
261         Point JavaDoc p;
262         if (owner != null) {
263             p = owner.getLocation();
264             Dimension JavaDoc parent = owner.getSize();
265             p.translate((parent.width - window.width) / 2,
266                 (parent.height - window.height) / 2);
267         } else {
268             Dimension JavaDoc parent = Toolkit.getDefaultToolkit().getScreenSize();
269             p = new Point JavaDoc((parent.width - window.width) / 2,
270                 (parent.height - window.height) / 2);
271         }
272         setLocation(p);
273     }
274 }
275
Popular Tags