1
13 package gate.gui;
14
15 import java.awt.*;
16 import java.awt.event.ActionEvent;
17 import java.awt.event.ActionListener;
18 import java.io.IOException;
19 import java.util.ArrayList;
20 import java.util.List;
21
22 import javax.swing.*;
23
24 import gate.Gate;
25
26
30
31 public class CorpusFillerComponent extends JPanel {
32
33
36 public CorpusFillerComponent(){
37 initLocalData();
38 initGUIComponents();
39 initListeners();
40 }
41
42
45 protected void initLocalData(){
46 extensions = new ArrayList();
47 }
48
49
50
53 protected void initGUIComponents(){
54 setLayout(new GridBagLayout());
55 GridBagConstraints constraints = new GridBagConstraints();
57 constraints.gridx = GridBagConstraints.RELATIVE;
58 constraints.gridy = 0;
59 constraints.gridwidth = 2;
60 constraints.anchor = GridBagConstraints.WEST;
61 constraints.fill = GridBagConstraints.NONE;
62 constraints.insets = new Insets(0, 0, 0, 5);
63 add(new JLabel("Directory URL:"), constraints);
64
65 constraints = new GridBagConstraints();
66 constraints.gridx = GridBagConstraints.RELATIVE;
67 constraints.gridy = 0;
68 constraints.gridwidth = 5;
69 constraints.fill = GridBagConstraints.HORIZONTAL;
70 constraints.insets = new Insets(0, 0, 0, 10);
71 add(urlTextField = new JTextField(40), constraints);
72
73 constraints = new GridBagConstraints();
74 constraints.gridx = GridBagConstraints.RELATIVE;
75 constraints.gridy = 0;
76 constraints.gridwidth = 1;
77 constraints.anchor = GridBagConstraints.NORTHWEST;
78 add(filerBtn = new JButton(MainFrame.getIcon("loadFile.gif")), constraints);
79
80 constraints = new GridBagConstraints();
82 constraints.gridx = GridBagConstraints.RELATIVE;
83 constraints.gridy = 1;
84 constraints.gridwidth = 2;
85 constraints.anchor = GridBagConstraints.WEST;
86 constraints.fill = GridBagConstraints.NONE;
87 constraints.insets = new Insets(0, 0, 0, 5);
88 add(new JLabel("Extensions:"), constraints);
89
90 constraints = new GridBagConstraints();
91 constraints.gridx = GridBagConstraints.RELATIVE;
92 constraints.gridy = 1;
93 constraints.gridwidth = 5;
94 constraints.fill = GridBagConstraints.HORIZONTAL;
95 constraints.insets = new Insets(0, 0, 0, 10);
96 add(extensionsTextField = new JTextField(40), constraints);
97 extensionsTextField.setEditable(false);
98 extensionsTextField.setText(extensions.toString());
99
100 constraints = new GridBagConstraints();
101 constraints.gridx = GridBagConstraints.RELATIVE;
102 constraints.gridy = 1;
103 constraints.gridwidth = 1;
104 constraints.anchor = GridBagConstraints.NORTHWEST;
105 add(listEditBtn = new JButton(MainFrame.getIcon("editList.gif")), constraints);
106
107 constraints = new GridBagConstraints();
109 constraints.gridx = GridBagConstraints.RELATIVE;
110 constraints.gridy = 2;
111 constraints.gridwidth = 2;
112 constraints.anchor = GridBagConstraints.WEST;
113 constraints.fill = GridBagConstraints.NONE;
114 constraints.insets = new Insets(0, 0, 0, 5);
115 add(new JLabel("Encoding:"), constraints);
116
117
118 constraints = new GridBagConstraints();
119 constraints.gridx = GridBagConstraints.RELATIVE;
120 constraints.gridy = 2;
121 constraints.gridwidth = 4;
122 constraints.fill = GridBagConstraints.HORIZONTAL;
123 add(encodingTextField = new JTextField(15), constraints);
124
125 recurseCheckBox = new JCheckBox("Recurse directories");
127 recurseCheckBox.setSelected(true);
128 recurseCheckBox.setHorizontalTextPosition(SwingConstants.LEFT);
129 constraints = new GridBagConstraints();
130 constraints.gridx = GridBagConstraints.RELATIVE;
131 constraints.gridy = 3;
132 constraints.gridwidth = 3;
133 constraints.anchor = GridBagConstraints.NORTHWEST;
134 add(recurseCheckBox, constraints);
135
136 }
137
138
141 protected void initListeners(){
142 filerBtn.addActionListener(new ActionListener() {
143 public void actionPerformed(ActionEvent e) {
144 JFileChooser filer = MainFrame.getFileChooser();
145 filer.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
146 filer.setDialogTitle("Select a directory");
147
148 filer.resetChoosableFileFilters();
149 filer.setAcceptAllFileFilterUsed(true);
150 filer.setFileFilter(filer.getAcceptAllFileFilter());
151 int res = filer.showOpenDialog(CorpusFillerComponent.this);
152 if(res == JFileChooser.APPROVE_OPTION){
153 try {
154 urlTextField.setText(filer.getSelectedFile().
155 toURL().toExternalForm());
156 } catch(IOException ioe){}
157 }
158 }
159 });
160
161 listEditBtn.addActionListener(new ActionListener() {
162 public void actionPerformed(ActionEvent e) {
163 ListEditorDialog listEditor = new ListEditorDialog(
164 CorpusFillerComponent.this, extensions, String.class.getName());
165 List answer = listEditor.showDialog();
166 if(answer != null){
167 extensions.clear();
168 extensions.addAll(answer);
169 extensionsTextField.setText(extensions.toString());
170 }
171 }
172 });
173 }
174
175
179 public void setUrlString(String urlString) {
180 urlTextField.setText(urlString);
181 }
182
183
186 public String getUrlString() {
187 return urlTextField.getText();
188 }
189
190
193 public String getEncoding(){
194 return encodingTextField.getText();
195 }
196
197
200 public void setEncoding(String enc){
201 encodingTextField.setText(enc);
202 }
203
204
207 public void setExtensions(java.util.List extensions) {
208 this.extensions = extensions;
209 extensionsTextField.setText(extensions.toString());
210 }
211
212
213
216 public java.util.List getExtensions() {
217 return extensions;
218 }
219
220
223 static public void main(String[] args){
224 try{
225 UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
226 Gate.init();
227 }catch(Exception e){
228 e.printStackTrace();
229 }
230 JFrame frame = new JFrame("Foo");
231 CorpusFillerComponent comp = new CorpusFillerComponent();
232 frame.getContentPane().add(comp);
233 frame.pack();
234 frame.setResizable(false);
235 frame.setVisible(true);
236 }
237
238
241 public void setRecurseDirectories(boolean recurseDirectories) {
242 recurseCheckBox.setSelected(recurseDirectories);
243 }
244
245
248 public boolean isRecurseDirectories() {
249 return recurseCheckBox.isSelected();
250 }
251
252
255 JTextField urlTextField;
256
257
260 JButton filerBtn;
261
262
265 JTextField extensionsTextField;
266
267
270 JButton listEditBtn;
271
272
275 JCheckBox recurseCheckBox;
276
277
280 JTextField encodingTextField;
281
284 private java.util.List extensions;
285 }