1 package baseCode.gui;
2
3 import java.awt.BorderLayout;
4 import java.awt.Color;
5 import java.awt.Container;
6 import java.awt.Dimension;
7 import java.awt.Point;
8 import java.awt.event.ActionEvent;
9 import java.awt.event.MouseEvent;
10 import java.awt.event.MouseListener;
11 import java.io.IOException;
12
13 import javax.swing.JButton;
14 import javax.swing.JDialog;
15 import javax.swing.JEditorPane;
16 import javax.swing.JFrame;
17 import javax.swing.JLabel;
18 import javax.swing.JPanel;
19 import javax.swing.event.HyperlinkEvent;
20 import javax.swing.event.HyperlinkListener;
21
22 import baseCode.util.BrowserLauncher;
23
24 /***
25 * <p>
26 * Title:
27 * </p>
28 * <p>
29 * Description:
30 * </p>
31 * <p>
32 * Copyright: Copyright (c) 2003
33 * </p>
34 * <p>
35 * Company:
36 * </p>
37 *
38 * @author Homin Lee
39 * @version $Id: AppDialog.java,v 1.7 2004/07/27 03:18:58 pavlidis Exp $
40 */
41
42 public abstract class AppDialog extends JDialog {
43 /***
44 * <hr>
45 * <p>
46 * Copyright (c) 2004 Columbia University
47 *
48 * @author pavlidis
49 * @version $Id: AppDialog.java,v 1.7 2004/07/27 03:18:58 pavlidis Exp $
50 */
51
52 JPanel mainPanel;
53 BorderLayout borderLayout1 = new BorderLayout();
54 JPanel contentPanel = new JPanel();
55 JPanel bottomPanel = new JPanel();
56 protected JButton actionButton = new JButton();
57 protected JButton cancelButton = new JButton();
58 protected JButton helpButton = new JButton();
59
60 protected Container callingframe;
61
62 public AppDialog() {
63
64 }
65
66 public AppDialog( JFrame callingframe, int width, int height ) {
67 this.callingframe = callingframe;
68 setModal( true );
69 jbInit( width, height );
70 }
71
72 private void jbInit( int width, int height ) {
73 setResizable( true );
74 mainPanel = ( JPanel ) this.getContentPane();
75 mainPanel.setPreferredSize( new Dimension( width, height ) );
76 mainPanel.setLayout( borderLayout1 );
77
78 contentPanel.setPreferredSize( new Dimension( width, height - 40 ) );
79 BorderLayout borderLayout4 = new BorderLayout();
80 contentPanel.setLayout( borderLayout4 );
81
82 bottomPanel.setPreferredSize( new Dimension( width, 40 ) );
83 cancelButton.setText( "Cancel" );
84 cancelButton.setMnemonic( 'c' );
85 cancelButton.addActionListener( new AppDialog_cancelButton_actionAdapter(
86 this ) );
87 actionButton.addActionListener( new AppDialog_actionButton_actionAdapter(
88 this ) );
89
90 helpButton.addActionListener( new AppDialog_helpButton_actionAdapter(
91 this ) );
92 helpButton.setText( "Help" );
93
94 bottomPanel.add( helpButton, null );
95 bottomPanel.add( cancelButton, null );
96 bottomPanel.add( actionButton, null );
97 mainPanel.add( contentPanel, BorderLayout.CENTER );
98 mainPanel.add( bottomPanel, BorderLayout.SOUTH );
99 }
100
101 public void showDialog() {
102 Dimension dlgSize = getPreferredSize();
103 Dimension frmSize = callingframe.getSize();
104 Point loc = callingframe.getLocation();
105 setLocation( ( frmSize.width - dlgSize.width ) / 2 + loc.x,
106 ( frmSize.height - dlgSize.height ) / 2 + loc.y );
107 pack();
108 actionButton.requestFocusInWindow();
109 show();
110 }
111
112
113 class LinkFollower implements HyperlinkListener {
114
115
116
117
118
119
120 public void hyperlinkUpdate( HyperlinkEvent e ) {
121 if ( e.getEventType() == HyperlinkEvent.EventType.ACTIVATED ) {
122 try {
123 BrowserLauncher.openURL( e.getURL().toExternalForm() );
124 } catch ( IOException e1 ) {
125 GuiUtil.error( "Could not open link" );
126 }
127 }
128 }
129 }
130
131
132 class HelpEditorPane extends JEditorPane {
133
134 HelpEditorPane( String text ) {
135 super();
136 this.setEditable( false );
137 this.setContentType( "text/html" );
138 this.setText( text );
139 this.addHyperlinkListener( new LinkFollower() );
140 }
141
142 }
143
144
145 protected void addHelp( String text ) {
146
147 HelpEditorPane helpArea = null;
148
149 helpArea = new HelpEditorPane( text );
150 JLabel jLabel1 = new JLabel( " " );
151 JLabel jLabel2 = new JLabel( " " );
152 JLabel jLabel3 = new JLabel( " " );
153 JLabel jLabel4 = new JLabel( " " );
154 BorderLayout borderLayout2 = new BorderLayout();
155 JPanel labelPanel = new JPanel();
156 labelPanel.setBackground( Color.WHITE );
157 labelPanel.setLayout( borderLayout2 );
158 labelPanel.add( helpArea, BorderLayout.CENTER );
159 labelPanel.add( jLabel1, BorderLayout.WEST );
160 labelPanel.add( jLabel2, BorderLayout.NORTH );
161 labelPanel.add( jLabel3, BorderLayout.SOUTH );
162 labelPanel.add( jLabel4, BorderLayout.EAST );
163 contentPanel.add( labelPanel, BorderLayout.NORTH );
164
165 helpArea.addMouseListener( new AppDialog_mouselistener_actionAdapter(
166 this ) );
167
168 }
169
170 protected void addMain( JPanel panel ) {
171 contentPanel.add( panel, BorderLayout.CENTER );
172 }
173
174 protected void setActionButtonText( String val ) {
175 actionButton.setText( val );
176 }
177
178 protected void setCancelButtonText( String val ) {
179 cancelButton.setText( val );
180 }
181
182 protected void setHelpButtonText( String val ) {
183 helpButton.setText( val );
184 }
185
186 protected abstract void cancelButton_actionPerformed( ActionEvent e );
187
188 protected abstract void actionButton_actionPerformed( ActionEvent e );
189
190 protected abstract void helpButton_actionPerformed( ActionEvent e );
191
192 /***
193 * @param e
194 */
195 public void mouseButton_actionPerformed( MouseEvent e ) {
196
197 }
198
199 }
200
201 class AppDialog_helpButton_actionAdapter implements
202 java.awt.event.ActionListener {
203 AppDialog adaptee;
204
205 AppDialog_helpButton_actionAdapter( AppDialog adaptee ) {
206 this.adaptee = adaptee;
207 }
208
209 public void actionPerformed( ActionEvent e ) {
210 adaptee.helpButton_actionPerformed( e );
211 }
212 }
213
214 class AppDialog_cancelButton_actionAdapter implements
215 java.awt.event.ActionListener {
216 AppDialog adaptee;
217
218 AppDialog_cancelButton_actionAdapter( AppDialog adaptee ) {
219 this.adaptee = adaptee;
220 }
221
222 public void actionPerformed( ActionEvent e ) {
223 adaptee.cancelButton_actionPerformed( e );
224 }
225 }
226
227 class AppDialog_actionButton_actionAdapter implements
228 java.awt.event.ActionListener {
229 AppDialog adaptee;
230
231 AppDialog_actionButton_actionAdapter( AppDialog adaptee ) {
232 this.adaptee = adaptee;
233 }
234
235 public void actionPerformed( ActionEvent e ) {
236 adaptee.actionButton_actionPerformed( e );
237 }
238 }
239
240 class AppDialog_mouselistener_actionAdapter implements MouseListener {
241
242 AppDialog adaptee;
243
244 /***
245 * @param adaptee
246 */
247 public AppDialog_mouselistener_actionAdapter( AppDialog adaptee ) {
248 this.adaptee = adaptee;
249 }
250
251
252
253
254
255
256 public void mouseClicked( MouseEvent e ) {
257 adaptee.mouseButton_actionPerformed( e );
258 }
259
260
261
262
263
264
265 public void mouseEntered( MouseEvent e ) {
266 }
267
268
269
270
271
272
273 public void mouseExited( MouseEvent e ) {
274 }
275
276
277
278
279
280
281 public void mousePressed( MouseEvent e ) {
282 }
283
284
285
286
287
288
289 public void mouseReleased( MouseEvent e ) {
290 }
291
292 }