KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > edu > rice > cs > drjava > ui > config > DirectoryOptionComponent


1 /*BEGIN_COPYRIGHT_BLOCK
2  *
3  * This file is part of DrJava. Download the current version of this project from http://www.drjava.org/
4  * or http://sourceforge.net/projects/drjava/
5  *
6  * DrJava Open Source License
7  *
8  * Copyright (C) 2001-2005 JavaPLT group at Rice University (javaplt@rice.edu). All rights reserved.
9  *
10  * Developed by: Java Programming Languages Team, Rice University, http://www.cs.rice.edu/~javaplt/
11  *
12  * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
13  * documentation files (the "Software"), to deal with the Software without restriction, including without limitation
14  * the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and
15  * to permit persons to whom the Software is furnished to do so, subject to the following conditions:
16  *
17  * - Redistributions of source code must retain the above copyright notice, this list of conditions and the
18  * following disclaimers.
19  * - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the
20  * following disclaimers in the documentation and/or other materials provided with the distribution.
21  * - Neither the names of DrJava, the JavaPLT, Rice University, nor the names of its contributors may be used to
22  * endorse or promote products derived from this Software without specific prior written permission.
23  * - Products derived from this software may not be called "DrJava" nor use the term "DrJava" as part of their
24  * names without prior written permission from the JavaPLT group. For permission, write to javaplt@rice.edu.
25  *
26  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO
27  * THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
28  * CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
29  * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
30  * WITH THE SOFTWARE.
31  *
32  *END_COPYRIGHT_BLOCK*/

33
34 package edu.rice.cs.drjava.ui.config;
35
36 import javax.swing.*;
37 import javax.swing.event.*;
38 import edu.rice.cs.drjava.config.*;
39 import edu.rice.cs.drjava.*;
40 import edu.rice.cs.util.swing.DirectorySelectorComponent;
41 import edu.rice.cs.util.swing.DirectoryChooser;
42 import java.awt.*;
43 import java.io.File JavaDoc;
44 import javax.swing.filechooser.FileFilter JavaDoc;
45
46 /** Graphical form of a FileOption.
47  *
48  * @version $Id: DirectoryOptionComponent.java 3562 2006-02-27 19:14:22Z rcartwright $
49  */

50 public class DirectoryOptionComponent extends OptionComponent<File JavaDoc> implements OptionConstants {
51
52   private DirectorySelectorComponent _component;
53
54   public DirectoryOptionComponent (FileOption opt, String JavaDoc text,Frame parent, DirectoryChooser dc) {
55     super(opt, text, parent);
56     
57     _component = new DirectorySelectorComponent(parent, dc, 30, 10f);
58     _component.setFileField(DrJava.getConfig().getSetting(_option));
59     _component.getFileField().getDocument().addDocumentListener(new DocumentListener() {
60       public void insertUpdate(DocumentEvent e) { notifyChangeListeners(); }
61       public void removeUpdate(DocumentEvent e) { notifyChangeListeners(); }
62       public void changedUpdate(DocumentEvent e) { notifyChangeListeners(); }
63     });
64   }
65
66   /** Constructor that allows for a tooltip description. */
67   public DirectoryOptionComponent (FileOption opt, String JavaDoc text, Frame parent, String JavaDoc desc, DirectoryChooser dc) {
68     this(opt, text, parent, dc);
69     setDescription(desc);
70   }
71
72   /** Sets the tooltip description text for this option.
73    * @param description the tooltip text
74    */

75   public void setDescription(String JavaDoc description) { _label.setToolTipText(description); }
76
77   /** Updates the config object with the new setting.
78    * @return true if the new value is set successfully
79    */

80   public boolean updateConfig() {
81     File JavaDoc componentFile = _component.getFileFromField();
82     File JavaDoc currentFile = DrJava.getConfig().getSetting(_option);
83     
84     if (componentFile != null && !componentFile.equals(currentFile)) {
85       DrJava.getConfig().setSetting(_option, componentFile);
86     }
87     else if (componentFile == null) {
88       DrJava.getConfig().setSetting(_option, _option.getDefault());
89     }
90
91     return true;
92   }
93
94   /** Displays the given value. */
95   public void setValue(File JavaDoc value) { _component.setFileField(value); }
96
97   /** Return's this OptionComponent's configurable component. */
98   public JComponent getComponent() { return _component; }
99
100   /** Adds a filter to decide if a directory can be chosen. */
101   public void addChoosableFileFilter(FileFilter JavaDoc filter) {
102     _component.addChoosableFileFilter(filter);
103   }
104 }
105
Popular Tags