001 //$HeadURL: svn+ssh://jwilden@svn.wald.intevation.org/deegree/base/branches/2.5_testing/src/org/deegree/tools/legend/LecGUI.java $
002 /*----------------------------------------------------------------------------
003 This file is part of deegree, http://deegree.org/
004 Copyright (C) 2001-2009 by:
005 Department of Geography, University of Bonn
006 and
007 lat/lon GmbH
008
009 This library is free software; you can redistribute it and/or modify it under
010 the terms of the GNU Lesser General Public License as published by the Free
011 Software Foundation; either version 2.1 of the License, or (at your option)
012 any later version.
013 This library is distributed in the hope that it will be useful, but WITHOUT
014 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
015 FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
016 details.
017 You should have received a copy of the GNU Lesser General Public License
018 along with this library; if not, write to the Free Software Foundation, Inc.,
019 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
020
021 Contact information:
022
023 lat/lon GmbH
024 Aennchenstr. 19, 53177 Bonn
025 Germany
026 http://lat-lon.de/
027
028 Department of Geography, University of Bonn
029 Prof. Dr. Klaus Greve
030 Postfach 1147, 53001 Bonn
031 Germany
032 http://www.geographie.uni-bonn.de/deegree/
033
034 e-mail: info@deegree.org
035 ----------------------------------------------------------------------------*/
036
037 package org.deegree.tools.legend;
038
039 import java.awt.BorderLayout;
040 import java.awt.Color;
041 import java.awt.Dimension;
042 import java.awt.Font;
043 import java.awt.GridBagConstraints;
044 import java.awt.GridBagLayout;
045 import java.awt.Insets;
046 import java.awt.event.ActionEvent;
047 import java.awt.event.ActionListener;
048 import java.io.File;
049
050 import javax.swing.JButton;
051 import javax.swing.JComboBox;
052 import javax.swing.JDialog;
053 import javax.swing.JFileChooser;
054 import javax.swing.JFrame;
055 import javax.swing.JLabel;
056 import javax.swing.JMenu;
057 import javax.swing.JMenuBar;
058 import javax.swing.JMenuItem;
059 import javax.swing.JOptionPane;
060 import javax.swing.JPanel;
061 import javax.swing.JScrollPane;
062 import javax.swing.JSpinner;
063 import javax.swing.JTextArea;
064 import javax.swing.JTextField;
065 import javax.swing.border.TitledBorder;
066
067 import org.deegree.framework.log.ILogger;
068 import org.deegree.framework.log.LoggerFactory;
069
070 /**
071 * This GUI is for creating Legend Element, which are small thumbnails with textlabel and title
072 * showing the defined styles from a SLD.
073 *
074 * @author <a href="mailto:poth@lat-lon.de">Andreas Poth </a>
075 * @author last edited by: $Author:wanhoff$
076 *
077 * @version $Revision: 18195 $, $Date:26.03.2007$
078 */
079 public class LecGUI extends JPanel {
080
081 private static final long serialVersionUID = -8887936196797987954L;
082
083 private static final ILogger LOG = LoggerFactory.getLogger( LecGUI.class );
084
085 private static String TITLE = "LEC LegendElementCreator GUI - v1.0.1";
086
087 private String lastDir = ".";
088
089 private static String DEFAULTFORMAT = "png";
090
091 private static String DEFAULTCOLOR = "white";
092
093 private static int DEFAULTWIDTH = 40;
094
095 private static int DEFAULTHEIGHT = 40;
096
097 private static String[] POSSIBLE_OUTPUT_FORMAT = { "bmp", "gif", "jpg", "png", "tif" };
098
099 private static String[] POSSIBLE_OUTPUT_COLORS = { "transp.", "black", "blue", "cyan", "dark_gray", "gray",
100 "green", "light_gray", "magenta", "orange", "pink", "red",
101 "white", "yellow" };
102
103 // GUI Variables declaration //
104 private JPanel filePanel;
105
106 private JTextField sourcesld_tf;
107
108 private JTextField targetdir_tf;
109
110 protected static final String BTOPENSOURCE = "opensourcefile";
111
112 protected static final String BTOPENTARGET = "opentargetdir";
113
114 private JPanel optionsPanel;
115
116 private JComboBox formatCBox;
117
118 private JComboBox colorCBox;
119
120 private JSpinner widthspinner;
121
122 private JSpinner heightspinner;
123
124 private JTextField titletextfield;
125
126 private JPanel buttonPanel;
127
128 private JButton startbutton;
129
130 private JButton infobutton;
131
132 private JButton exitbutton;
133
134 protected static final String BTSTART = "START";
135
136 protected static final String BTINFO = "INFO";
137
138 protected static final String BTEXIT = "EXIT";
139
140 private JPanel debugPanel;
141
142 private JTextArea debugTextArea;
143
144 private static final String FILEMENU = "File";
145
146 protected static final String OPENSOURCEMENUITEM = "Open Source SLD";
147
148 protected static final String OPENTARGETMENUITEM = "Open Target Directory";
149
150 protected static final String STARTMENUITEM = "Start";
151
152 protected static final String EXITMENUITEM = "Exit";
153
154 private static final String HELPMENU = "Help";
155
156 protected static final String INFOMENUITEM = "Info";
157
158 // Action Handler
159 LecGUIButtonHandler bel = null;
160
161 LecGUIMenuHandler mel = null;
162
163 /**
164 * Creates new form LecGUI
165 *
166 */
167 private LecGUI() {
168
169 bel = new LecGUIButtonHandler( this );
170 mel = new LecGUIMenuHandler( this );
171 initComponents();
172 }
173
174 /**
175 * initializes the GUI. Calls several methods, which inits the several gui-elements.
176 */
177 private void initComponents() {
178 setLayout( new BorderLayout() );
179
180 JPanel northPanel = new JPanel( new BorderLayout() );
181
182 JPanel menuPanel = new JPanel( new BorderLayout() );
183 JMenuBar menubar = initMenuBar();
184 menuPanel.add( menubar, BorderLayout.BEFORE_FIRST_LINE );
185 northPanel.add( menuPanel, BorderLayout.NORTH );
186
187 JPanel mainPanel = new JPanel( new BorderLayout() );
188
189 filePanel = initFilePanel();
190 filePanel.setBorder( new javax.swing.border.EmptyBorder( new Insets( 10, 10, 10, 10 ) ) );
191 mainPanel.add( filePanel, BorderLayout.NORTH );
192
193 optionsPanel = initOptionsPanel();
194 optionsPanel.setBorder( new javax.swing.border.EmptyBorder( new Insets( 10, 10, 10, 10 ) ) );
195 mainPanel.add( optionsPanel, BorderLayout.WEST );
196
197 buttonPanel = initButtonPanel();
198 buttonPanel.setBorder( new javax.swing.border.EmptyBorder( new Insets( 10, 10, 10, 10 ) ) );
199 mainPanel.add( buttonPanel, BorderLayout.EAST );
200
201 northPanel.add( mainPanel, BorderLayout.CENTER );
202 add( northPanel, BorderLayout.NORTH );
203
204 debugPanel = initDebugPanel();
205 debugPanel.setBorder( new TitledBorder( null, "Debug", TitledBorder.DEFAULT_JUSTIFICATION,
206 TitledBorder.DEFAULT_POSITION, new java.awt.Font( "Dialog", 0, 10 ) ) );
207 add( debugPanel, BorderLayout.CENTER );
208 }
209
210 /**
211 *
212 * @return JPanel
213 */
214 private JPanel initDebugPanel() {
215 JPanel panel = new JPanel( new BorderLayout() );
216
217 JScrollPane jScrollPane1 = new JScrollPane();
218 jScrollPane1.setVerticalScrollBarPolicy( JScrollPane.VERTICAL_SCROLLBAR_ALWAYS );
219 jScrollPane1.setHorizontalScrollBarPolicy( JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS );
220 this.debugTextArea = new JTextArea();
221 this.debugTextArea.setFont( new java.awt.Font( "Monospaced", 0, 11 ) );
222 this.debugTextArea.setEditable( false );
223 this.debugTextArea.setText( "You can mark this debug-output (per mouse or STRG + A)\n"
224 + "and copy it (STRG + C) to the clipboard.\n" );
225
226 panel.setLayout( new java.awt.BorderLayout() );
227
228 jScrollPane1.setViewportView( debugTextArea );
229
230 panel.add( jScrollPane1, java.awt.BorderLayout.CENTER );
231 panel.setPreferredSize( new Dimension( 150, 150 ) );
232
233 return panel;
234 }
235
236 /**
237 * inits the filepanel, the panel at the top to choose the files.
238 *
239 * @return the JPanel containing the gui-elements to open the file and dir.
240 */
241 private JPanel initFilePanel() {
242 JPanel filePanel = new JPanel();
243 GridBagLayout gridbag = new GridBagLayout();
244 GridBagConstraints c = new GridBagConstraints();
245 filePanel.setLayout( gridbag );
246 c.fill = GridBagConstraints.HORIZONTAL;
247 c.insets = new Insets( 2, 2, 2, 2 );
248
249 JLabel label1 = new JLabel( "Source SLD-File:" );
250 label1.setFont( new Font( "Dialog", 0, 12 ) );
251 c.weightx = 0;
252 c.gridx = 0;
253 c.gridy = 0;
254 gridbag.setConstraints( label1, c );
255 filePanel.add( label1 );
256
257 sourcesld_tf = new JTextField();
258 sourcesld_tf.setColumns( 25 );
259 c.weightx = 0.5;
260 c.gridx = 1;
261 gridbag.setConstraints( sourcesld_tf, c );
262 filePanel.add( sourcesld_tf );
263
264 JButton open1 = new JButton( "open" );
265 open1.setFont( new Font( "Dialog", 0, 12 ) );
266 open1.setActionCommand( BTOPENSOURCE );
267 open1.addActionListener( bel );
268 c.weightx = 0;
269 c.gridx = 3;
270 gridbag.setConstraints( open1, c );
271 filePanel.add( open1 );
272
273 // 2
274
275 JLabel label2 = new JLabel( "Target Directory:" );
276 label2.setFont( new Font( "Dialog", 0, 12 ) );
277 c.weightx = 0;
278 c.gridx = 0;
279 c.gridy = 1;
280 gridbag.setConstraints( label2, c );
281 filePanel.add( label2 );
282
283 targetdir_tf = new JTextField();
284 targetdir_tf.setColumns( 25 );
285 c.weightx = 0.5;
286 c.gridx = 1;
287 gridbag.setConstraints( targetdir_tf, c );
288 filePanel.add( targetdir_tf );
289
290 JButton open2 = new JButton( "open" );
291 open2.setFont( new Font( "Dialog", 0, 12 ) );
292 open2.setActionCommand( BTOPENTARGET );
293 open2.addActionListener( bel );
294 c.weightx = 0;
295 c.gridx = 3;
296 gridbag.setConstraints( open2, c );
297 filePanel.add( open2 );
298
299 return filePanel;
300 }
301
302 /**
303 * inits the option-panel.
304 *
305 * @return the option-panel containing the gui-elements to choose the options
306 */
307 private JPanel initOptionsPanel() {
308 JPanel bp = new JPanel();
309 GridBagLayout gridbag = new GridBagLayout();
310 GridBagConstraints c = new GridBagConstraints();
311 bp.setLayout( gridbag );
312 c.fill = GridBagConstraints.HORIZONTAL;
313 c.insets = new Insets( 2, 2, 2, 2 );
314
315 // FORMAT
316
317 JLabel formatlabel = new JLabel( "output format: " );
318 formatlabel.setFont( new Font( "Dialog", 0, 12 ) );
319 c.weightx = 0;
320 c.gridx = 0;
321 c.gridy = 0;
322 gridbag.setConstraints( formatlabel, c );
323 bp.add( formatlabel );
324
325 formatCBox = new JComboBox( POSSIBLE_OUTPUT_FORMAT );
326 formatCBox.setSelectedItem( DEFAULTFORMAT );
327 formatCBox.setFont( new Font( "Dialog", 0, 12 ) );
328 c.weightx = 0;
329 c.gridx = 1;
330 c.gridy = 0;
331 gridbag.setConstraints( formatCBox, c );
332 bp.add( formatCBox );
333
334 // BGCOLOR
335
336 JLabel colorlabel = new JLabel( "background color: " );
337 colorlabel.setFont( new Font( "Dialog", 0, 12 ) );
338 c.weightx = 0;
339 c.gridx = 0;
340 c.gridy = 1;
341 gridbag.setConstraints( colorlabel, c );
342 bp.add( colorlabel );
343
344 colorCBox = new JComboBox( POSSIBLE_OUTPUT_COLORS );
345 colorCBox.setSelectedItem( DEFAULTCOLOR );
346 colorCBox.setFont( new Font( "Dialog", 0, 12 ) );
347 c.weightx = 0;
348 c.gridx = 1;
349 c.gridy = 1;
350 gridbag.setConstraints( colorCBox, c );
351 bp.add( colorCBox );
352
353 // WIDTH
354
355 JLabel widthlabel = new JLabel( "width:" );
356 widthlabel.setFont( new Font( "Dialog", 0, 12 ) );
357 c.weightx = 0;
358 c.gridx = 0;
359 c.gridy = 2;
360 gridbag.setConstraints( widthlabel, c );
361 bp.add( widthlabel );
362
363 widthspinner = new JSpinner();
364 widthspinner.setValue( new Integer( DEFAULTWIDTH ) );
365 c.weightx = 0;
366 c.gridx = 1;
367 c.gridy = 2;
368 gridbag.setConstraints( widthspinner, c );
369 bp.add( widthspinner );
370
371 // HEIGHT
372
373 JLabel heightlabel = new JLabel( "height:" );
374 heightlabel.setFont( new Font( "Dialog", 0, 12 ) );
375 c.weightx = 0;
376 c.gridx = 0;
377 c.gridy = 3;
378 gridbag.setConstraints( heightlabel, c );
379 bp.add( heightlabel );
380
381 heightspinner = new JSpinner();
382 heightspinner.setValue( new Integer( DEFAULTHEIGHT ) );
383 c.weightx = 0;
384 c.gridx = 1;
385 c.gridy = 3;
386 gridbag.setConstraints( heightspinner, c );
387 bp.add( heightspinner );
388
389 // TITLE
390
391 JLabel titlelabel = new JLabel( "title:" );
392 titlelabel.setFont( new Font( "Dialog", 0, 12 ) );
393 c.weightx = 0;
394 c.gridx = 0;
395 c.gridy = 4;
396 gridbag.setConstraints( titlelabel, c );
397 bp.add( titlelabel );
398
399 titletextfield = new JTextField();
400 c.weightx = 0;
401 c.gridx = 1;
402 c.gridy = 4;
403 gridbag.setConstraints( titletextfield, c );
404 bp.add( titletextfield );
405
406 return bp;
407 }
408
409 /**
410 * inits the button-panel
411 *
412 * @return the button-panel containing the start, info and exit buttons.
413 */
414 private JPanel initButtonPanel() {
415 JPanel bp = new JPanel();
416
417 startbutton = new JButton( "Start" );
418 infobutton = new JButton( "Info" );
419 exitbutton = new JButton( "Exit" );
420
421 startbutton.setFont( new Font( "Dialog", 0, 12 ) );
422 infobutton.setFont( new Font( "Dialog", 0, 12 ) );
423 exitbutton.setFont( new Font( "Dialog", 0, 12 ) );
424
425 startbutton.setActionCommand( BTSTART );
426 startbutton.addActionListener( bel );
427 infobutton.setActionCommand( BTINFO );
428 infobutton.addActionListener( bel );
429 exitbutton.setActionCommand( BTEXIT );
430 exitbutton.addActionListener( bel );
431
432 bp.add( startbutton );
433 bp.add( infobutton );
434 bp.add( exitbutton );
435
436 return bp;
437 }
438
439 /**
440 * creates the menubar. called from the main-method, not the constructor.
441 *
442 * @return the menubar.
443 */
444 private JMenuBar initMenuBar() {
445 JMenuBar menuBar = new JMenuBar();
446
447 // file menu
448 JMenu menu = new JMenu( FILEMENU );
449 appendMenuItem( OPENSOURCEMENUITEM, menu );
450 appendMenuItem( OPENTARGETMENUITEM, menu );
451 menu.addSeparator();
452 appendMenuItem( STARTMENUITEM, menu );
453 menu.addSeparator();
454 appendMenuItem( EXITMENUITEM, menu );
455 menuBar.add( menu );
456
457 // info / help menu
458 menu = new JMenu( HELPMENU );
459 appendMenuItem( INFOMENUITEM, menu );
460 menuBar.add( menu );
461
462 return menuBar;
463
464 }
465
466 /**
467 * help method to init the menu
468 *
469 * @param name
470 * name of the menu-item
471 * @param menu
472 * the menu
473 */
474 private void appendMenuItem( String name, JMenu menu ) {
475 JMenuItem item = menu.add( name );
476 item.addActionListener( mel );
477 }
478
479 /**
480 * returns the content of the open dialog source-textfield
481 *
482 * @return content of the source-textfield
483 */
484 private String getSourceTextfieldContent() {
485 return this.sourcesld_tf.getText();
486 }
487
488 /**
489 * @see #getSourceTextfieldContent()
490 * @param content
491 * the text in the source-textfield
492 */
493 private void setSourceTextfieldContent( String content ) {
494 this.sourcesld_tf.setText( content );
495 }
496
497 /**
498 * returns the content of the open dialog destination/target-textfield
499 *
500 * @return content of the targetdir-textfield
501 */
502 private String getDestDirTextfieldContent() {
503 return this.targetdir_tf.getText();
504 }
505
506 /**
507 * @see #getDestDirTextfieldContent()
508 * @param content
509 * the text in the targetdir-textfield
510 */
511 private void setDestdirTextfieldContent( String content ) {
512 this.targetdir_tf.setText( content );
513 }
514
515 /**
516 *
517 * @return the selected format
518 */
519 private String getSelectedFormat() {
520 return (String) this.formatCBox.getSelectedItem();
521 }
522
523 /**
524 *
525 * @return the selected color
526 */
527 private String getSelectedColor() {
528 return (String) this.colorCBox.getSelectedItem();
529 }
530
531 /**
532 *
533 * @return the selected width
534 */
535 private String getSelectedWidth() {
536 return this.widthspinner.getValue().toString();
537 }
538
539 /**
540 *
541 * @return the selected height
542 */
543 private String getSelectedHeight() {
544 return this.heightspinner.getValue().toString();
545 }
546
547 /**
548 *
549 * @return the text in the title textfield
550 */
551 private String getSelectedTitle() {
552 return this.titletextfield.getText();
553 }
554
555 /**
556 *
557 * @param debuginformation
558 */
559 protected void addDebugInformation( String debuginformation ) {
560 this.debugTextArea.setText( this.debugTextArea.getText() + "\n" + debuginformation );
561 }
562
563 /**
564 *
565 * @param args
566 */
567 public static void main( String[] args ) {
568 // Make sure we have nice window decorations.
569 JFrame.setDefaultLookAndFeelDecorated( true );
570 JDialog.setDefaultLookAndFeelDecorated( true );
571
572 // Create and set up the window.
573 JFrame frame = new JFrame( TITLE );
574 frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
575
576 // Create and set up the content pane.
577 LecGUI lg = new LecGUI();
578 lg.setOpaque( true );
579
580 frame.setContentPane( lg );
581
582 // Display the window.
583 frame.pack();
584 frame.setVisible( true );
585 }
586
587 /**
588 * the funcionality of the program. parses the input from the gui-elements and passes them to
589 * the LegendElementCreator class.
590 */
591 protected void doStart() {
592 if ( getSourceTextfieldContent() == null || getSourceTextfieldContent().length() == 0 ) {
593 JOptionPane.showMessageDialog( this, "No source SLD-file specified.", "no source, no start",
594 JOptionPane.ERROR_MESSAGE );
595 } else if ( getDestDirTextfieldContent() == null || getDestDirTextfieldContent().length() == 0 ) {
596 JOptionPane.showMessageDialog( this, "No target-directory specified.", "no target, no thumbnail",
597 JOptionPane.ERROR_MESSAGE );
598 } else {
599 String sldfile = getSourceTextfieldContent();
600 String directory = getDestDirTextfieldContent();
601 String format = getSelectedFormat();
602 Color color = getColorFromString( getSelectedColor() );
603 int width = Integer.parseInt( getSelectedWidth() );
604 int height = Integer.parseInt( getSelectedHeight() );
605 String title = getSelectedTitle();
606 try {
607 LegendElementCreator lec = new LegendElementCreator( sldfile, directory, format, color, width, height,
608 title, this );
609 if ( lec.getVerboseOutput() != null && lec.getVerboseOutput().length() > 0 ) {
610 addDebugInformation( "Finished!" + "\n" + lec.getVerboseOutput() );
611 JOptionPane.showMessageDialog(
612 this,
613 "Creation of LegendElements successful.\nSee the Debug output for details.",
614 "Finished! Press <SPACE> to suppress this window.",
615 JOptionPane.INFORMATION_MESSAGE );
616 }
617 } catch ( Exception e ) {
618 JOptionPane.showMessageDialog( this, e.getMessage(), "Error", JOptionPane.ERROR_MESSAGE );
619 e.printStackTrace();
620 addDebugInformation( e.getMessage() );
621 }
622
623 }
624 }
625
626 /**
627 * reads out the color from the string and returns the corresponding color.
628 *
629 * @param colorstring
630 * the color as string
631 * @return the color
632 */
633 private Color getColorFromString( String colorstring ) {
634 Color color = Color.WHITE;
635 // BLACK, BLUE, CYAN, DARK_GRAY, GRAY, GREEN, LIGHT_GRAY, MAGENTA, ORANGE, PINK, RED, WHITE,
636 // YELLOW
637 LOG.logInfo( "colorstring: " + colorstring );
638 if ( colorstring.equalsIgnoreCase( "BLACK" ) )
639 color = Color.BLACK;
640 else if ( colorstring.equalsIgnoreCase( "BLUE" ) )
641 color = Color.BLUE;
642 else if ( colorstring.equalsIgnoreCase( "CYAN" ) )
643 color = Color.CYAN;
644 else if ( colorstring.equalsIgnoreCase( "DARK_GRAY" ) )
645 color = Color.DARK_GRAY;
646 else if ( colorstring.equalsIgnoreCase( "GRAY" ) )
647 color = Color.GRAY;
648 else if ( colorstring.equalsIgnoreCase( "GREEN" ) )
649 color = Color.GREEN;
650 else if ( colorstring.equalsIgnoreCase( "LIGHT_GRAY" ) )
651 color = Color.LIGHT_GRAY;
652 else if ( colorstring.equalsIgnoreCase( "MAGENTA" ) )
653 color = Color.MAGENTA;
654 else if ( colorstring.equalsIgnoreCase( "ORANGE" ) )
655 color = Color.ORANGE;
656 else if ( colorstring.equalsIgnoreCase( "PINK" ) )
657 color = Color.PINK;
658 else if ( colorstring.equalsIgnoreCase( "RED" ) )
659 color = Color.RED;
660 else if ( colorstring.equalsIgnoreCase( "WHITE" ) )
661 color = Color.WHITE;
662 else if ( colorstring.equalsIgnoreCase( "YELLOW" ) )
663 color = Color.YELLOW;
664 else if ( colorstring.equalsIgnoreCase( "TRANSP." ) )
665 color = null;
666 else {
667 // try {
668 color = Color.decode( colorstring );
669 }
670 return color;
671 }
672
673 /**
674 * opens the file chooser
675 */
676 protected void openFileChooser() {
677 JFileChooser chooser = new JFileChooser();
678 chooser.setCurrentDirectory( new File( lastDir ) );
679 chooser.setFileFilter( new javax.swing.filechooser.FileFilter() {
680
681 @Override
682 public boolean accept( File f ) {
683 return f.getName().toLowerCase().endsWith( ".xml" ) || f.isDirectory();
684 }
685
686
687 @Override
688 public String getDescription() {
689 return "StyledLayerDescriptor (*.xml)";
690 }
691 } );
692
693 int returnVal = chooser.showOpenDialog( this );
694
695 if ( returnVal == JFileChooser.APPROVE_OPTION ) {
696 LOG.logInfo( chooser.getSelectedFile().getPath() );
697 setSourceTextfieldContent( chooser.getSelectedFile().getPath() );
698 }
699 }
700
701 /**
702 * opens the target-dir file chooser. only dirs are available for selection
703 */
704 protected void openDirChooser() {
705 JFileChooser chooser = new JFileChooser();
706 chooser.setCurrentDirectory( new File( lastDir ) );
707 chooser.setFileSelectionMode( JFileChooser.DIRECTORIES_ONLY );
708
709 int returnVal = chooser.showOpenDialog( this );
710
711 if ( returnVal == JFileChooser.APPROVE_OPTION ) {
712 setDestdirTextfieldContent( chooser.getSelectedFile().getPath() );
713 }
714 }
715
716 /**
717 * shows the Info in a JOptionPane
718 *
719 */
720 protected void showInfo() {
721 String text = "This application is part of deegree.\n" + "http://www.deegree.org\n\n"
722 + "lat/lon GmbH \n" + "e-mail: info@lat-lon.de";
723 JOptionPane.showMessageDialog( this, text, "Information", JOptionPane.INFORMATION_MESSAGE );
724 }
725
726 }
727
728 /**
729 * class for handling button events.
730 * <hr>
731 *
732 * @author <a href="mailto:schaefer@lat-lon.de>Axel Schaefer</a>
733 */
734 class LecGUIButtonHandler implements ActionListener {
735
736 private LecGUI lecgui = null;
737
738 /**
739 * constructor
740 *
741 * @param lecgui
742 * the DeegreeDemoInstallerGUI uses this Button
743 */
744 protected LecGUIButtonHandler( LecGUI lecgui ) {
745 this.lecgui = lecgui;
746 }
747
748 /*
749 * (non-Javadoc)
750 *
751 * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
752 */
753 public void actionPerformed( ActionEvent event ) {
754 String ac = event.getActionCommand();
755 if ( ac.equals( LecGUI.BTOPENSOURCE ) ) {
756 this.lecgui.openFileChooser();
757 } else if ( ac.equals( LecGUI.BTOPENTARGET ) ) {
758 this.lecgui.openDirChooser();
759 } else if ( ac.equals( LecGUI.BTEXIT ) ) {
760 System.exit( 0 );
761 } else if ( ac.equals( LecGUI.BTINFO ) ) {
762 this.lecgui.showInfo();
763 } else if ( ac.equals( LecGUI.BTSTART ) ) {
764 this.lecgui.doStart();
765 }
766 }
767 }
768
769 /**
770 * class for handling button events.
771 * <hr>
772 *
773 * @author <a href="mailto:schaefer@lat-lon.de>Axel Schaefer</a>
774 */
775 class LecGUIMenuHandler implements ActionListener {
776
777 private LecGUI lecgui = null;
778
779 /**
780 * constructor
781 *
782 * @param lecgui
783 * the DeegreeDemoInstallerGUI uses this Button
784 */
785 protected LecGUIMenuHandler( LecGUI lecgui ) {
786 this.lecgui = lecgui;
787 }
788
789 /*
790 * (non-Javadoc)
791 *
792 * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
793 */
794 public void actionPerformed( ActionEvent event ) {
795 String ac = event.getActionCommand();
796 if ( ac.equals( LecGUI.OPENSOURCEMENUITEM ) ) {
797 this.lecgui.openFileChooser();
798 } else if ( ac.equals( LecGUI.OPENTARGETMENUITEM ) ) {
799 this.lecgui.openDirChooser();
800 } else if ( ac.equals( LecGUI.EXITMENUITEM ) ) {
801 System.exit( 0 );
802 } else if ( ac.equals( LecGUI.INFOMENUITEM ) ) {
803 this.lecgui.showInfo();
804 } else if ( ac.equals( LecGUI.STARTMENUITEM ) ) {
805 this.lecgui.doStart();
806 }
807 }
808 }