| 1 19 20 package com.sshtools.ui.awt; 21 22 import java.awt.BorderLayout ; 23 import java.awt.Color ; 24 import java.awt.Dimension ; 25 import java.awt.Font ; 26 import java.awt.Image ; 27 import java.awt.Panel ; 28 import java.awt.TextField ; 29 import java.awt.event.ActionEvent ; 30 import java.awt.event.ActionListener ; 31 import java.io.File ; 32 import java.util.Enumeration ; 33 import java.util.Vector ; 34 35 import com.sshtools.ui.FileFilter; 36 import com.sshtools.ui.FileSelect; 37 import com.sshtools.ui.awt.options.Option; 38 import com.sshtools.ui.awt.options.OptionDialog; 39 40 43 public class FilenameTextField extends Panel { 44 45 private TextField textField; 46 private ImageButton chooserButton; 47 private BorderPanel borderPanel; 48 private Vector listeners; 49 private FileSelect chooser; 50 51 public FilenameTextField(int columns) { 52 this("", columns); } 54 55 public FilenameTextField(String text) { 56 this(text, (text != null) ? text.length() : 0); 57 } 58 59 public FilenameTextField(String text, int columns) { 60 this(text, columns, null); 61 } 62 63 public FilenameTextField(String text, int columns, Image chooserButtonImage) { 64 this(text, columns, chooserButtonImage, Messages.getString("FilenameTextField.selectAFile")); } 66 67 public FilenameTextField(String text, int columns, Image chooserButtonImage, String chooserToolTipText) { 68 super(new BorderLayout (4, 1)); 69 chooserButton = new ImageButton(chooserButtonImage, text, Messages.getString("FilenameTextField.browse")); chooserButton.setToolTipText(chooserToolTipText); 71 chooserButton.setHorizontalAlignment(ImageButton.CENTER_ALIGNMENT); 72 chooserButton.addActionListener(new ActionListener () { 73 public void actionPerformed(ActionEvent evt) { 74 showChooser(); 75 } 76 }); 77 textField = new TextField (text, columns) { 78 public Dimension getPreferredSize() { 79 return new Dimension (super.getPreferredSize().width, chooserButton.getPreferredSize().height); 80 } 81 82 public Dimension getMinimumSize() { 83 return new Dimension (super.getMinimumSize().width, chooserButton.getMinimumSize().height); 84 } 85 }; 86 textField.setFont(new Font ("Arial", Font.PLAIN, 12)); 88 textField.addActionListener(new ActionListener () { 89 public void actionPerformed(ActionEvent e) { 90 fireActionEvent(e); 91 } 92 }); 93 chooserButton.setHoverButton(true); 94 add(textField, BorderLayout.CENTER); 95 add(chooserButton, BorderLayout.EAST); 96 } 97 98 public void setEnabled(boolean enabled) { 99 textField.setEnabled(enabled); 100 chooserButton.setEnabled(enabled); 101 super.setEnabled(enabled); 102 } 103 104 public void addFileFilter(FileFilter filter) { 105 createChooser(); 106 chooser.addFileFilter(filter); 107 } 108 109 private void fireActionEvent(ActionEvent evt) { 110 for (Enumeration en = listeners.elements(); en.hasMoreElements();) { 111 ActionListener l = (ActionListener )en.nextElement(); 112 l.actionPerformed(evt); 113 } 114 } 115 116 private void createChooser() { 117 if(chooser == null) { 118 File cwd = getText() == null ? null : new File (getText()); 119 if(cwd == null || !cwd.exists()) { 120 cwd = new File (System.getProperty("user.home")); } 122 chooser = new FileSelect(FileSelect.FILES_AND_DIRECTORIES, 123 cwd, true, true); 124 } 125 } 126 127 private void showChooser() { 128 createChooser(); 129 File cwd = new File (getText()); 130 if(!cwd.exists()) { 131 cwd = new File (System.getProperty("user.home")); } 133 chooser.setWorkingDirectory(cwd); 134 Option option = chooser.showDialog(this, Messages.getString("FilenameTextField.selectAFile")); if(option == OptionDialog.CHOICE_OK) { 136 setText(chooser.getSelectedFile().getAbsolutePath()); 137 } 138 textField.requestFocus(); 139 } 140 141 public void setText(String text) { 142 textField.setText(text); 143 } 144 145 148 public synchronized void addActionListener(ActionListener l) { 149 if (listeners == null) { 150 listeners = new Vector (); 151 } 152 listeners.addElement(l); 153 } 154 155 158 public String getText() { 159 return textField.getText(); 160 } 161 162 165 public void setTextFieldBackground(Color textFieldBackgroundColor) { 166 textField.setBackground(textFieldBackgroundColor); 167 } 168 169 172 public void setSelectedFileFilter(FileFilter filter) { 173 createChooser(); 174 chooser.setSelectedFileFilter(filter); 175 } 176 177 } | Popular Tags |