1   /**
2    * Distribution License:
3    * JSword is free software; you can redistribute it and/or modify it under
4    * the terms of the GNU Lesser General Public License, version 2.1 as published by
5    * the Free Software Foundation. This program is distributed in the hope
6    * that it will be useful, but WITHOUT ANY WARRANTY; without even the
7    * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
8    * See the GNU Lesser General Public License for more details.
9    *
10   * The License is available on the internet at:
11   *       http://www.gnu.org/copyleft/lgpl.html
12   * or by writing to:
13   *      Free Software Foundation, Inc.
14   *      59 Temple Place - Suite 330
15   *      Boston, MA 02111-1307, USA
16   *
17   * Copyright: 2005
18   *     The copyright to this program is held by it's authors.
19   *
20   * ID: $Id: DirectoryField.java 2050 2010-12-09 15:31:45Z dmsmith $
21   */
22  package org.crosswire.common.config.swing;
23  
24  import java.awt.FileDialog;
25  
26  import javax.swing.JFileChooser;
27  
28  import org.crosswire.common.swing.GuiUtil;
29  import org.crosswire.common.util.OSType;
30  
31  /**
32   * A Directory selection.
33   * 
34   * @see gnu.lgpl.License for license details.<br>
35   *      The copyright to this program is held by it's authors.
36   * @author Joe Walker [joe at eireneh dot com]
37   */
38  public class DirectoryField extends FileField {
39      /*
40       * (non-Javadoc)
41       * 
42       * @see org.crosswire.common.config.swing.FileField#doBrowse()
43       */
44      @Override
45      public void doBrowse() {
46          if (OSType.MAC.equals(OSType.getOSType())) {
47              FileDialog chooser = new FileDialog(GuiUtil.getFrame(getParent()), text.getText());
48              String prop = "apple.awt.fileDialogForDirectories";
49              System.setProperty(prop, "true");
50              chooser.setVisible(true);
51              System.setProperty(prop, "false");
52              String dir = chooser.getFile();
53              if (dir != null) {
54                  text.setText(dir);
55              }
56          } else {
57              JFileChooser chooser = new JFileChooser(text.getText());
58              chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
59              if (chooser.showOpenDialog(DirectoryField.this) == JFileChooser.APPROVE_OPTION) {
60                  text.setText(chooser.getSelectedFile().getPath());
61              }
62          }
63      }
64  
65      /**
66       * Serialization ID
67       */
68      private static final long serialVersionUID = 3905239018106075189L;
69  }
70