1 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 ; 44 import javax.swing.filechooser.FileFilter ; 45 46 50 public class DirectoryOptionComponent extends OptionComponent<File > implements OptionConstants { 51 52 private DirectorySelectorComponent _component; 53 54 public DirectoryOptionComponent (FileOption opt, String 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 67 public DirectoryOptionComponent (FileOption opt, String text, Frame parent, String desc, DirectoryChooser dc) { 68 this(opt, text, parent, dc); 69 setDescription(desc); 70 } 71 72 75 public void setDescription(String description) { _label.setToolTipText(description); } 76 77 80 public boolean updateConfig() { 81 File componentFile = _component.getFileFromField(); 82 File 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 95 public void setValue(File value) { _component.setFileField(value); } 96 97 98 public JComponent getComponent() { return _component; } 99 100 101 public void addChoosableFileFilter(FileFilter filter) { 102 _component.addChoosableFileFilter(filter); 103 } 104 } 105 | Popular Tags |