001 /*
002 * Copyright (C) 2003 by Christian Lauer.
003 *
004 * This library is free software; you can redistribute it and/or
005 * modify it under the terms of the GNU Library General Public
006 * License as published by the Free Software Foundation; either
007 * version 2 of the License, or (at your option) any later version.
008 *
009 * This library is distributed in the hope that it will be useful,
010 * but WITHOUT ANY WARRANTY; without even the implied warranty of
011 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
012 * Library General Public License for more details.
013 *
014 * You should have received a copy of the GNU Library General Public
015 * License along with this library; if not, write to the Free
016 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
017 *
018 * If you didn't download this code from the following link, you should check if
019 * you aren't using an obsolete version:
020 * http://sourceforge.net/projects/ujac
021 */
022
023 package nl.cwi.sen1.gui.plugin.editor;
024
025 import java.awt.Container;
026 import java.awt.Dialog;
027 import java.awt.Dimension;
028 import java.awt.Frame;
029 import java.awt.Point;
030 import java.awt.event.ActionEvent;
031 import java.awt.event.KeyEvent;
032
033 import javax.swing.AbstractAction;
034 import javax.swing.ActionMap;
035 import javax.swing.InputMap;
036 import javax.swing.JComponent;
037 import javax.swing.JDialog;
038 import javax.swing.KeyStroke;
039
040 public class BaseDialog extends JDialog {
041
042 /** Constant for the dialog state OK. */
043 public static final int OK = 1;
044 /** Constant for the dialog state CANCEL. */
045 public static final int CANCEL = 0;
046
047 /** The dialog state. */
048 private int state = CANCEL;
049
050 /**
051 * Gets the dialog state.
052 * @return The dialog state.
053 */
054 public int getState() {
055 return state;
056 }
057
058 /**
059 * Constructs a BaseDialog instance with specific attributes.
060 * @throws java.awt.HeadlessException
061 */
062 public BaseDialog() throws UnsupportedOperationException {
063 super();
064 }
065
066 /**
067 * Constructs a BaseDialog instance with specific attributes.
068 * @param frame The parent frame.
069 * @throws java.awt.HeadlessException
070 */
071 public BaseDialog(Frame frame) throws UnsupportedOperationException {
072 super(frame);
073 }
074
075 /**
076 * Constructs a BaseDialog instance with specific attributes.
077 * @param frame The parent frame.
078 * @param modal The modal flag.
079 * @throws java.awt.HeadlessException
080 */
081 public BaseDialog(Frame frame, boolean modal) throws UnsupportedOperationException {
082 super(frame, modal);
083 }
084
085 /**
086 * Constructs a BaseDialog instance with specific attributes.
087 * @param frame The parent frame.
088 * @param title The dialog title.
089 * @throws java.awt.HeadlessException if GraphicsEnvironment.isHeadless() returns true.
090 */
091 public BaseDialog(Frame frame, String title) throws UnsupportedOperationException {
092 super(frame, title);
093 }
094
095 /**
096 * Constructs a BaseDialog instance with specific attributes.
097 * @param frame The parent frame.
098 * @param title The dialog title.
099 * @param modal The modal flag.
100 * @throws java.awt.HeadlessException
101 */
102 public BaseDialog(Frame frame, String title, boolean modal) throws UnsupportedOperationException {
103 super(frame, title, modal);
104 }
105
106 /**
107 * Constructs a BaseDialog instance with specific attributes.
108 * @param parent The parent dialog.
109 * @throws java.awt.HeadlessException
110 */
111 public BaseDialog(Dialog parent) throws UnsupportedOperationException {
112 super(parent);
113 }
114
115 /**
116 * Constructs a BaseDialog instance with specific attributes.
117 * @param parent The parent dialog.
118 * @param modal The modal flag.
119 * @throws java.awt.HeadlessException
120 */
121 public BaseDialog(Dialog parent, boolean modal) throws UnsupportedOperationException {
122 super(parent, modal);
123 }
124
125 /**
126 * Constructs a BaseDialog instance with specific attributes.
127 * @param parent The parent dialog.
128 * @param title The dialog title.
129 * @throws java.awt.HeadlessException
130 */
131 public BaseDialog(Dialog parent, String title) throws UnsupportedOperationException {
132 super(parent, title);
133 }
134
135 /**
136 * Constructs a BaseDialog instance with specific attributes.
137 * @param parent The parent dialog.
138 * @param title The dialog title.
139 * @param modal The modal flag.
140 * @throws java.awt.HeadlessException
141 */
142 public BaseDialog(Dialog parent, String title, boolean modal) throws UnsupportedOperationException {
143 super(parent, title, modal);
144 }
145
146 /**
147 * Registers standard key bindings.
148 */
149 protected void registerStandardKeyBindings() {
150 // defining key bindings
151 InputMap inputMap = this.getRootPane().getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW);
152 inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), "escape");
153 inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0), "enter");
154
155 ActionMap actionMap = this.getRootPane().getActionMap();
156 actionMap.put("enter", new AbstractAction() {
157 /**
158 * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
159 */
160 public void actionPerformed(ActionEvent evt) {
161 okButtonActionPerformed();
162 }
163 });
164 actionMap.put("escape", new AbstractAction() {
165 /**
166 * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
167 */
168 public void actionPerformed(ActionEvent evt) {
169 cancelButtonActionPerformed();
170 }
171 });
172 }
173
174 /**
175 * Processes the action event, raised by the OK button.
176 * @param evt The raised action event.
177 */
178 private void okButtonActionPerformed() {
179 this.state = OK;
180 closeDialog();
181 }
182
183 /**
184 * Processes the action event, raised by the Cancel button.
185 * @param evt The raised action event.
186 */
187 private void cancelButtonActionPerformed() {
188 this.state = CANCEL;
189 closeDialog();
190 }
191
192
193 /**
194 * Closes the dialog
195 * @param evt The window event.
196 */
197 protected void closeDialog() {
198 setVisible(false);
199 dispose();
200 }
201
202 /**
203 * Centers the dialog over its parent component.
204 */
205 protected void centerDialog(Container parent) {
206 Dimension parentSize = parent.getSize();
207 Dimension dialogSize = this.getSize();
208 Point parentLocn = parent.getLocationOnScreen();
209
210 int locnX = parentLocn.x + (parentSize.width - dialogSize.width) / 2;
211 int locnY = parentLocn.y + (parentSize.height - dialogSize.height) / 2;
212
213 setLocation(locnX, locnY);
214 }
215 }