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