|
CorpusFillerComponent |
|
1 /* 2 * Copyright (c) 1998-2001, The University of Sheffield. 3 * 4 * This file is part of GATE (see http://gate.ac.uk/), and is free 5 * software, licenced under the GNU Library General Public License, 6 * Version 2, June 1991 (in the distribution as file licence.html, 7 * and also available at http://gate.ac.uk/gate/licence.html). 8 * 9 * Valentin Tablan, 02/Nov/2001 10 * 11 * $Id: CorpusFillerComponent.java,v 1.4 2001/11/28 14:28:17 valyt Exp $ 12 */ 13 package gate.gui; 14 15 import javax.swing.*; 16 import javax.swing.event.*; 17 import java.awt.event.*; 18 import java.awt.Insets; 19 import java.awt.GridBagLayout; 20 import java.awt.GridBagConstraints; 21 import java.io.*; 22 import java.util.*; 23 24 import gate.*; 25 import gate.util.*; 26 27 /** 28 * A simple component that allows the user to select a directory and a list of 29 * permitted extensions for populating a corpus 30 */ 31 32 public class CorpusFillerComponent extends JPanel { 33 34 /** 35 * Creates a corpus filler component 36 */ 37 public CorpusFillerComponent(){ 38 initLocalData(); 39 initGUIComponents(); 40 initListeners(); 41 } 42 43 /** 44 * Inits local variables to default values 45 */ 46 protected void initLocalData(){ 47 extensions = new ArrayList(); 48 } 49 50 51 /** 52 * Creates the UI 53 */ 54 protected void initGUIComponents(){ 55 setLayout(new GridBagLayout()); 56 //first row 57 GridBagConstraints constraints = new GridBagConstraints(); 58 constraints.gridx = constraints.RELATIVE; 59 constraints.gridy = 0; 60 constraints.gridwidth = 2; 61 constraints.anchor = constraints.WEST; 62 constraints.fill = constraints.NONE; 63 constraints.insets = new Insets(0, 0, 0, 5); 64 add(new JLabel("Directory URL:"), constraints); 65 66 constraints = new GridBagConstraints(); 67 constraints.gridx = constraints.RELATIVE; 68 constraints.gridy = 0; 69 constraints.gridwidth = 5; 70 constraints.fill = constraints.HORIZONTAL; 71 constraints.insets = new Insets(0, 0, 0, 10); 72 add(urlTextField = new JTextField(40), constraints); 73 74 constraints = new GridBagConstraints(); 75 constraints.gridx = constraints.RELATIVE; 76 constraints.gridy = 0; 77 constraints.gridwidth = 1; 78 constraints.anchor = constraints.NORTHWEST; 79 add(filerBtn = new JButton(MainFrame.getIcon("loadFile.gif")), constraints); 80 81 //second row 82 constraints = new GridBagConstraints(); 83 constraints.gridx = constraints.RELATIVE; 84 constraints.gridy = 1; 85 constraints.gridwidth = 2; 86 constraints.anchor = constraints.WEST; 87 constraints.fill = constraints.NONE; 88 constraints.insets = new Insets(0, 0, 0, 5); 89 add(new JLabel("Extensions:"), constraints); 90 91 constraints = new GridBagConstraints(); 92 constraints.gridx = constraints.RELATIVE; 93 constraints.gridy = 1; 94 constraints.gridwidth = 5; 95 constraints.fill = constraints.HORIZONTAL; 96 constraints.insets = new Insets(0, 0, 0, 10); 97 add(extensionsTextField = new JTextField(40), constraints); 98 extensionsTextField.setEditable(false); 99 extensionsTextField.setText(extensions.toString()); 100 101 constraints = new GridBagConstraints(); 102 constraints.gridx = constraints.RELATIVE; 103 constraints.gridy = 1; 104 constraints.gridwidth = 1; 105 constraints.anchor = constraints.NORTHWEST; 106 add(listEditBtn = new JButton(MainFrame.getIcon("editList.gif")), constraints); 107 108 //third row 109 constraints = new GridBagConstraints(); 110 constraints.gridx = constraints.RELATIVE; 111 constraints.gridy = 2; 112 constraints.gridwidth = 2; 113 constraints.anchor = constraints.WEST; 114 constraints.fill = constraints.NONE; 115 constraints.insets = new Insets(0, 0, 0, 5); 116 add(new JLabel("Encoding:"), constraints); 117 118 119 constraints = new GridBagConstraints(); 120 constraints.gridx = constraints.RELATIVE; 121 constraints.gridy = 2; 122 constraints.gridwidth = 4; 123 constraints.fill = constraints.HORIZONTAL; 124 add(encodingTextField = new JTextField(15), constraints); 125 126 //fourth row 127 recurseCheckBox = new JCheckBox("Recurse directories"); 128 recurseCheckBox.setSelected(true); 129 recurseCheckBox.setHorizontalTextPosition(SwingConstants.LEFT); 130 constraints = new GridBagConstraints(); 131 constraints.gridx = constraints.RELATIVE; 132 constraints.gridy = 3; 133 constraints.gridwidth = 3; 134 constraints.anchor = constraints.NORTHWEST; 135 add(recurseCheckBox, constraints); 136 137 } 138 139 /** 140 * Adds listeners for UI components 141 */ 142 protected void initListeners(){ 143 filerBtn.addActionListener(new ActionListener() { 144 public void actionPerformed(ActionEvent e) { 145 JFileChooser filer = MainFrame.getFileChooser(); 146 filer.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); 147 filer.setDialogTitle("Select a directory"); 148 149 filer.resetChoosableFileFilters(); 150 filer.setAcceptAllFileFilterUsed(true); 151 filer.setFileFilter(filer.getAcceptAllFileFilter()); 152 int res = filer.showOpenDialog(CorpusFillerComponent.this); 153 if(res == filer.APPROVE_OPTION){ 154 try { 155 urlTextField.setText(filer.getSelectedFile(). 156 toURL().toExternalForm()); 157 } catch(IOException ioe){} 158 } 159 } 160 }); 161 162 listEditBtn.addActionListener(new ActionListener() { 163 public void actionPerformed(ActionEvent e) { 164 ListEditorDialog listEditor = new ListEditorDialog( 165 CorpusFillerComponent.this, extensions, String.class.getName()); 166 List answer = listEditor.showDialog(); 167 if(answer != null){ 168 extensions.clear(); 169 extensions.addAll(answer); 170 extensionsTextField.setText(extensions.toString()); 171 } 172 } 173 }); 174 } 175 176 /** 177 * Sets the values for the URL string. This value is not cached so the set 178 * will actually the text in the text field itself 179 */ 180 public void setUrlString(String urlString) { 181 urlTextField.setText(urlString); 182 } 183 184 /** 185 * Gets the current text in the URL text field. 186 */ 187 public String getUrlString() { 188 return urlTextField.getText(); 189 } 190 191 /** 192 * Gets the encoding selected by the user. 193 */ 194 public String getEncoding(){ 195 return encodingTextField.getText(); 196 } 197 198 /** 199 * Sets the initila value for the encoding field. 200 */ 201 public void setEncoding(String enc){ 202 encodingTextField.setText(enc); 203 } 204 205 /** 206 * Sets the current value for the list of permitted extensions. 207 */ 208 public void setExtensions(java.util.List extensions) { 209 this.extensions = extensions; 210 extensionsTextField.setText(extensions.toString()); 211 } 212 213 214 /** 215 * Gets the current list of permitted extensions 216 */ 217 public java.util.List getExtensions() { 218 return extensions; 219 } 220 221 /** 222 * Test code 223 */ 224 static public void main(String[] args){ 225 try{ 226 UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); 227 Gate.init(); 228 }catch(Exception e){ 229 e.printStackTrace(); 230 } 231 JFrame frame = new JFrame("Foo"); 232 CorpusFillerComponent comp = new CorpusFillerComponent(); 233 frame.getContentPane().add(comp); 234 frame.pack(); 235 frame.setResizable(false); 236 frame.setVisible(true); 237 } 238 239 /** 240 * Should the directory parsed recursively? 241 */ 242 public void setRecurseDirectories(boolean recurseDirectories) { 243 recurseCheckBox.setSelected(recurseDirectories); 244 } 245 246 /** 247 * Should the directory parsed recursively? 248 */ 249 public boolean isRecurseDirectories() { 250 return recurseCheckBox.isSelected(); 251 } 252 253 /** 254 * The text field for the directory URL 255 */ 256 JTextField urlTextField; 257 258 /** 259 * The buttons that opens the file chooser 260 */ 261 JButton filerBtn; 262 263 /** 264 * The text field for the permitted extensions 265 */ 266 JTextField extensionsTextField; 267 268 /** 269 * The buton that opens the list editor for the extensions 270 */ 271 JButton listEditBtn; 272 273 /** 274 * The checkbox for recurse directories 275 */ 276 JCheckBox recurseCheckBox; 277 278 /** 279 * The textField for the encoding 280 */ 281 JTextField encodingTextField; 282 /** 283 * The list of permitted extensions. 284 */ 285 private java.util.List extensions; 286 }
|
CorpusFillerComponent |
|