source: trunk/gli/src/org/greenstone/gatherer/gui/Preferences.java@ 5370

Last change on this file since 5370 was 5370, checked in by jmt12, 21 years ago

Fixed the 'too-wide' problem on the connection tab

  • Property svn:keywords set to Author Date Id Revision
File size: 22.7 KB
Line 
1package org.greenstone.gatherer.gui;
2
3import java.awt.*;
4import java.awt.event.*;
5import java.io.*;
6import java.net.*;
7import java.util.*;
8import javax.swing.*;
9import javax.swing.event.*;
10import org.greenstone.gatherer.Configuration;
11import org.greenstone.gatherer.Gatherer;
12import org.greenstone.gatherer.checklist.CheckList;
13import org.greenstone.gatherer.checklist.Entry;
14import org.greenstone.gatherer.gui.GUIManager;
15import org.greenstone.gatherer.gui.ModalDialog;
16import org.greenstone.gatherer.gui.NumberField;
17import org.greenstone.gatherer.gui.SimpleMenuBar;
18import org.greenstone.gatherer.util.StaticStrings;
19import org.greenstone.gatherer.util.Utility;
20import org.w3c.dom.*;
21
22public class Preferences
23 extends ModalDialog {
24
25 private CheckList warning_preferences_check_list;
26 private JButton apply_button;
27 private JButton cancel_button;
28 private JButton ok_button;
29 private JCheckBox show_file_size_checkbox;
30 private JCheckBox use_proxy_checkbox;
31 private JCheckBox view_extracted_metadata_checkbox;
32 private JCheckBox workflow_browse;
33 private JCheckBox workflow_create;
34 private JCheckBox workflow_mirror;
35 private JCheckBox workflow_gather;
36 private JCheckBox workflow_enrich;
37 private JCheckBox workflow_design;
38 private JCheckBox workflow_export;
39 private JCheckBox workflow_preview;
40 private JComboBox language_combobox;
41 private JLabel language_label;
42 private JLabel library_path_label;
43 private JLabel predefined_label;
44 private JLabel proxy_host_label;
45 private JLabel proxy_port_label;
46 private JLabel title_label;
47 private JTabbedPane tab_pane;
48 private JTextField library_path_field;
49 private JTextField proxy_host_field;
50 private JTextField proxy_port_field;
51 private Preferences self;
52
53 static final Dimension LABEL_SIZE = new Dimension(150, 25);
54 static final Dimension ROW_SIZE = new Dimension(640, 25);
55 static final Dimension SIZE = new Dimension(640, 345);
56 static final String TRUE = "true";
57
58 public Preferences() {
59 // Initialize
60 super(Gatherer.g_man, true);
61 this.self = this;
62 setSize(SIZE);
63 setTitle("Preferences");
64 setJMenuBar(new SimpleMenuBar("10.2"));
65 // Creation
66 JPanel content_pane = (JPanel) getContentPane();
67 tab_pane = new JTabbedPane();
68 tab_pane.add("Preferences.General", createGeneralPreferences());
69 tab_pane.add("Preferences.Workflow", createWorkflowPreferences());
70 tab_pane.add("Preferences.Connection", createConnectionPreferences());
71 tab_pane.add("Preferences.Warnings", createWarningPreferences());
72
73 JPanel button_pane = new JPanel();
74 ok_button = new JButton("General.OK");
75 apply_button = new JButton("General.Apply");
76 cancel_button = new JButton("General.Cancel");
77 // Connection
78 Gatherer.dictionary.register(this, null, false);
79 Gatherer.dictionary.register(tab_pane, null, false);
80 Gatherer.dictionary.register(ok_button, null, false);
81 Gatherer.dictionary.register(apply_button, null, false);
82 Gatherer.dictionary.register(cancel_button, null, false);
83 ok_button.addActionListener(new OKButtonListener(true));
84 apply_button.addActionListener(new OKButtonListener(false));
85 cancel_button.addActionListener(new CancelButtonListener());
86 // Layout
87 button_pane.setBorder(BorderFactory.createEmptyBorder(5,2,2,2));
88 button_pane.setLayout(new GridLayout(1,3,0,5));
89 button_pane.add(ok_button);
90 button_pane.add(apply_button);
91 button_pane.add(cancel_button);
92
93 content_pane.setLayout(new BorderLayout());
94 content_pane.add(tab_pane, BorderLayout.CENTER);
95 content_pane.add(button_pane, BorderLayout.SOUTH);
96
97 Dimension frame_size = Gatherer.g_man.getSize();
98 Point frame_location = Gatherer.g_man.getLocation();
99 //setLocation(frame_location.x + ((frame_size.width - SIZE.width) / 2), frame_location.y + ((frame_size.height - SIZE.height)));
100 setLocation(((frame_size.width - SIZE.width) / 2), ((frame_size.height - SIZE.height)));
101
102 // Clean up
103 frame_location = null;
104 frame_size = null;
105 cancel_button = null;
106 ok_button = null;
107 button_pane = null;
108 tab_pane = null;
109 content_pane = null;
110 setVisible(true);
111 }
112
113 private JPanel createConnectionPreferences() {
114 JPanel library_path_pane = new JPanel();
115 library_path_pane.setPreferredSize(ROW_SIZE);
116 library_path_label = new JLabel("Preferences.Connection.Library_Path");
117 library_path_label.setPreferredSize(LABEL_SIZE);
118 library_path_field = new JTextField(Gatherer.config.getString("general.exec_address", true));
119 library_path_field.setCaretPosition(0);
120
121 boolean currently_enabled = Gatherer.config.get("general.use_proxy", true);
122 // Creation
123 JPanel connection_pane = new JPanel();
124 use_proxy_checkbox = new JCheckBox("Preferences.Connection.Use_Proxy", currently_enabled);
125 use_proxy_checkbox.setPreferredSize(ROW_SIZE);
126 JPanel proxy_host_pane = new JPanel();
127 proxy_host_pane.setPreferredSize(ROW_SIZE);
128 proxy_host_label = new JLabel("Preferences.Connection.Proxy_Host");
129 proxy_host_label.setPreferredSize(LABEL_SIZE);
130 proxy_host_field = new JTextField(Gatherer.config.getString("general.proxy_host", true));
131 proxy_host_field.setEnabled(currently_enabled);
132 JPanel proxy_port_pane = new JPanel();
133 proxy_port_pane.setPreferredSize(ROW_SIZE);
134 proxy_port_label = new JLabel("Preferences.Connection.Proxy_Port");
135 proxy_port_label.setPreferredSize(LABEL_SIZE);
136 proxy_port_field = new NumberField(Gatherer.config.getString("general.proxy_port", true));
137 proxy_port_field.setEnabled(currently_enabled);
138
139 // Connection
140 Gatherer.dictionary.register(library_path_label, null, false);
141 Gatherer.dictionary.register(use_proxy_checkbox, null, false);
142 Gatherer.dictionary.register(proxy_host_label, null, false);
143 Gatherer.dictionary.register(proxy_port_label, null, false);
144 use_proxy_checkbox.addActionListener(new UseProxyListener());
145
146 // Layout
147 library_path_pane.setLayout(new BorderLayout());
148 library_path_pane.add(library_path_label, BorderLayout.WEST);
149 library_path_pane.add(library_path_field, BorderLayout.CENTER);
150
151 proxy_host_pane.setLayout(new BorderLayout());
152 proxy_host_pane.add(proxy_host_label, BorderLayout.WEST);
153 proxy_host_pane.add(proxy_host_field, BorderLayout.CENTER);
154
155 proxy_port_pane.setLayout(new BorderLayout());
156 proxy_port_pane.add(proxy_port_label, BorderLayout.WEST);
157 proxy_port_pane.add(proxy_port_field, BorderLayout.CENTER);
158
159 connection_pane.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
160 connection_pane.setLayout(new GridLayout(8,1,0,2));
161 connection_pane.add(library_path_pane);
162 connection_pane.add(use_proxy_checkbox);
163 connection_pane.add(proxy_host_pane);
164 connection_pane.add(proxy_port_pane);
165
166 return connection_pane;
167 }
168
169 private JPanel createGeneralPreferences() {
170 JPanel general_pane = new JPanel();
171
172 // Build the model of available languages
173 ArrayList dictionary_model = new ArrayList();
174
175 dictionary_model.add(new DictionaryEntry(Locale.ENGLISH));
176 File classes_folder = new File(Utility.BASE_DIR + StaticStrings.CLASSES_FOLDER);
177 File[] possible_dictionaries = classes_folder.listFiles();
178 for(int i = 0; i < possible_dictionaries.length; i++) {
179 String filename = possible_dictionaries[i].getName();
180 if(filename.endsWith(StaticStrings.PROPERTIES_FILE_EXTENSION) && filename.indexOf(StaticStrings.UNDERSCORE_CHARACTER) != -1) {
181 StringTokenizer tokenizer = new StringTokenizer(filename.substring(filename.indexOf(StaticStrings.UNDERSCORE_CHARACTER) + 1, filename.indexOf(StaticStrings.STOP_CHARACTER)), StaticStrings.UNDERSCORE_CHARACTER);
182 Locale locale = null;
183 switch(tokenizer.countTokens()) {
184 case 1:
185 locale = new Locale(tokenizer.nextToken().toLowerCase());
186 break;
187 case 2:
188 locale = new Locale(tokenizer.nextToken().toLowerCase(), tokenizer.nextToken().toUpperCase());
189 break;
190 }
191 tokenizer = null;
192 // Open the file and read the first line
193 String description = null;
194 try {
195 BufferedReader br = new BufferedReader(new FileReader(possible_dictionaries[i]));
196 String first_line = br.readLine();
197 br.close();
198 description = first_line.substring(first_line.indexOf(StaticStrings.COLON_CHARACTER) + 1);
199 }
200 catch(Exception error) {
201 }
202 DictionaryEntry entry = new DictionaryEntry(description, locale);
203 description = null;
204 locale = null;
205 if(!dictionary_model.contains(entry)) {
206 dictionary_model.add(entry);
207 }
208 entry = null;
209 }
210 filename = null;
211 }
212 possible_dictionaries = null;
213 classes_folder = null;
214
215 // Extracted metadata
216 view_extracted_metadata_checkbox = new JCheckBox("Preferences.General.View_Extracted_Metadata", false);
217 if (Gatherer.config.get("general.view_extracted_metadata", Configuration.COLLECTION_SPECIFIC)) {
218 view_extracted_metadata_checkbox.setSelected(true);
219 }
220
221 // Show file sizes
222 show_file_size_checkbox = new JCheckBox("Preferences.General.Show_File_Size", false);
223 if (Gatherer.config.get("general.show_file_size", Configuration.COLLECTION_SPECIFIC)) {
224 show_file_size_checkbox.setSelected(true);
225 }
226
227 // Language
228 JPanel language_pane = new JPanel();
229 language_label = new JLabel("Preferences.General.Interface_Language");
230 language_label.setPreferredSize(LABEL_SIZE);
231 language_combobox = new JComboBox(dictionary_model.toArray());
232
233 // Connect
234 Gatherer.dictionary.register(view_extracted_metadata_checkbox, null, false);
235 Gatherer.dictionary.register(show_file_size_checkbox, null, false);
236 Gatherer.dictionary.register(language_label, null, false);
237 language_combobox.addActionListener(new LanguageComboboxListener());
238
239 // Layout
240 language_pane.setLayout(new BorderLayout());
241 language_pane.add(language_label, BorderLayout.WEST);
242 language_pane.add(language_combobox, BorderLayout.CENTER);
243
244 general_pane.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
245 general_pane.setLayout(new GridLayout(5,1,0,5));
246 general_pane.add(view_extracted_metadata_checkbox);
247 general_pane.add(show_file_size_checkbox);
248 general_pane.add(language_pane);
249
250 return general_pane;
251 }
252
253 /** The warning preferences are controlled through a checklist. */
254 private JPanel createWarningPreferences() {
255 // Retrieve all of the warning preferences settings.
256 HashMap warning_preferences = Gatherer.config.getAll("warning\\..*", true);
257 warning_preferences_check_list = new CheckList(false);
258 for(Iterator keys = warning_preferences.keySet().iterator(); keys.hasNext(); ) {
259 String property = (String) keys.next();
260 String value = (String) warning_preferences.get(property);
261 // Remove 'warning.'
262 String title = Gatherer.dictionary.get(property.substring(8) + ".Title");
263 Entry entry = new Entry(title, value.equalsIgnoreCase(TRUE));
264 entry.setProperty(property);
265 warning_preferences_check_list.addEntry(entry);
266 }
267 // Creation
268 JPanel warning_preferences_pane = new JPanel();
269 // Connection
270 // Layout
271 warning_preferences_pane.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
272 warning_preferences_pane.setLayout(new BorderLayout());
273 warning_preferences_pane.add(new JScrollPane(warning_preferences_check_list), BorderLayout.CENTER);
274
275 return warning_preferences_pane;
276 }
277
278 private JPanel createWorkflowPreferences() {
279 // Read in the predefined configurations file.
280 Vector predefined = new Vector();
281 Document predefined_document = Utility.parse("xml/workflows.xml", true);
282 Element predefined_element = predefined_document.getDocumentElement();
283 NodeList workflow_elements = predefined_element.getElementsByTagName("Workflow");
284 for(int i = 0; i < workflow_elements.getLength(); i++) {
285 predefined.add(new WorkflowElementWrapper((Element)workflow_elements.item(i)));
286 }
287 // Creation
288 JPanel workflow_preferences_pane = new JPanel();
289 JPanel checklist_pane = new JPanel();
290 title_label = new JLabel("Preferences.Workflow.Title");
291 title_label.setPreferredSize(ROW_SIZE);
292 workflow_browse = new JCheckBox("Preferences.Workflow.Browse", Gatherer.config.get("workflow.browse", false));
293 workflow_browse.setPreferredSize(ROW_SIZE);
294 workflow_mirror = new JCheckBox("Preferences.Workflow.Mirror", Gatherer.config.get("workflow.mirror", false));
295 workflow_mirror.setPreferredSize(ROW_SIZE);
296 workflow_gather = new JCheckBox("Preferences.Workflow.Gather", Gatherer.config.get("workflow.gather", false));
297 workflow_gather.setPreferredSize(ROW_SIZE);
298 workflow_enrich = new JCheckBox("Preferences.Workflow.Enrich", Gatherer.config.get("workflow.enrich", false));
299 workflow_enrich.setPreferredSize(ROW_SIZE);
300 workflow_design = new JCheckBox("Preferences.Workflow.Design", Gatherer.config.get("workflow.design", false));
301 workflow_design.setPreferredSize(ROW_SIZE);
302 workflow_export = new JCheckBox("Preferences.Workflow.Export", Gatherer.config.get("workflow.export", false));
303 workflow_export.setPreferredSize(ROW_SIZE);
304 workflow_create = new JCheckBox("Preferences.Workflow.Create", Gatherer.config.get("workflow.create", false));
305 workflow_create.setPreferredSize(ROW_SIZE);
306 workflow_preview = new JCheckBox("Preferences.Workflow.Preview", Gatherer.config.get("workflow.preview", false));
307 workflow_preview.setPreferredSize(ROW_SIZE);
308 JPanel predefined_pane = new JPanel();
309 predefined_label = new JLabel("Preferences.Workflow.Predefined.Label");
310 predefined_label.setPreferredSize(new Dimension(150,25));
311 JComboBox predefined_combobox = new JComboBox(predefined);
312 // Connection
313 Gatherer.dictionary.register(title_label, null, false);
314 Gatherer.dictionary.register(workflow_browse, null, false);
315 Gatherer.dictionary.register(workflow_mirror, null, false);
316 Gatherer.dictionary.register(workflow_gather, null, false);
317 Gatherer.dictionary.register(workflow_enrich, null, false);
318 Gatherer.dictionary.register(workflow_design, null, false);
319 Gatherer.dictionary.register(workflow_export, null, false);
320 Gatherer.dictionary.register(workflow_create, null, false);
321 Gatherer.dictionary.register(workflow_preview, null, false);
322 Gatherer.dictionary.register(predefined_label, null, false);
323 predefined_combobox.addActionListener(new PredefinedActionListener());
324 // Layout
325 checklist_pane.setLayout(new BoxLayout(checklist_pane, BoxLayout.Y_AXIS));
326 checklist_pane.add(title_label);
327 if(Gatherer.config.get("workflow.browse", true)) {
328 checklist_pane.add(workflow_browse);
329 }
330 if(Gatherer.config.get("workflow.mirror", true)) {
331 checklist_pane.add(workflow_mirror);
332 }
333 if(Gatherer.config.get("workflow.gather", true)) {
334 checklist_pane.add(workflow_gather);
335 }
336 if(Gatherer.config.get("workflow.enrich", true)) {
337 checklist_pane.add(workflow_enrich);
338 }
339 if(Gatherer.config.get("workflow.design", true)) {
340 checklist_pane.add(workflow_design);
341 }
342 if(Gatherer.config.get("workflow.export", true)) {
343 checklist_pane.add(workflow_export);
344 }
345 if(Gatherer.config.get("workflow.create", true)) {
346 checklist_pane.add(workflow_create);
347 }
348 if(Gatherer.config.get("workflow.preview", true)) {
349 checklist_pane.add(workflow_preview);
350 }
351 predefined_pane.setLayout(new BorderLayout());
352 predefined_pane.add(predefined_label, BorderLayout.WEST);
353 predefined_pane.add(predefined_combobox, BorderLayout.CENTER);
354
355 workflow_preferences_pane.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
356 workflow_preferences_pane.setLayout(new BorderLayout());
357 workflow_preferences_pane.add(checklist_pane, BorderLayout.CENTER);
358 workflow_preferences_pane.add(predefined_pane, BorderLayout.SOUTH);
359
360 return workflow_preferences_pane;
361 }
362
363 public void dispose() {
364 // Deregister dictionary components
365
366 // Connection
367 Gatherer.dictionary.deregister(library_path_label);
368 Gatherer.dictionary.deregister(use_proxy_checkbox);
369 Gatherer.dictionary.deregister(proxy_host_label);
370 Gatherer.dictionary.deregister(proxy_port_label);
371
372 // General
373 Gatherer.dictionary.deregister(view_extracted_metadata_checkbox);
374 Gatherer.dictionary.deregister(show_file_size_checkbox);
375 Gatherer.dictionary.deregister(language_label);
376
377 // Workflow
378 Gatherer.dictionary.deregister(title_label);
379 Gatherer.dictionary.deregister(workflow_browse);
380 Gatherer.dictionary.deregister(workflow_mirror);
381 Gatherer.dictionary.deregister(workflow_gather);
382 Gatherer.dictionary.deregister(workflow_enrich);
383 Gatherer.dictionary.deregister(workflow_design);
384 Gatherer.dictionary.deregister(workflow_export);
385 Gatherer.dictionary.deregister(workflow_create);
386 Gatherer.dictionary.deregister(workflow_preview);
387 Gatherer.dictionary.deregister(predefined_label);
388
389 // Dialog
390 Gatherer.dictionary.deregister(this);
391 Gatherer.dictionary.deregister(tab_pane);
392 Gatherer.dictionary.deregister(ok_button);
393 Gatherer.dictionary.deregister(apply_button);
394 Gatherer.dictionary.deregister(cancel_button);
395 // Dispose
396 super.dispose();
397 }
398
399 private class OKButtonListener
400 implements ActionListener {
401 private boolean close;
402 public OKButtonListener(boolean close) {
403 this.close = close;
404 }
405 public void actionPerformed(ActionEvent event) {
406 // Submit the various changes.
407 // Connection preferences
408 String library_path_string = library_path_field.getText();
409 Gatherer.config.setString("general.exec_address", true, library_path_string);
410 if (!library_path_string.equals("")) {
411 try {
412 Gatherer.config.exec_address = new URL(library_path_string);
413 }
414 catch (MalformedURLException error) {
415 ///ystem.err.println("Error: Bad address: " + exec_address_string);
416 }
417 }
418 Gatherer.config.set("general.use_proxy", true, use_proxy_checkbox.isSelected());
419 Gatherer.config.setString("general.proxy_host", true, proxy_host_field.getText());
420 Gatherer.config.setString("general.proxy_port", true, proxy_port_field.getText());
421 Gatherer.setProxy();
422
423 // General preferences
424 Gatherer.config.set("general.show_file_size", Configuration.COLLECTION_SPECIFIC, show_file_size_checkbox.isSelected());
425 Gatherer.g_man.collection_pane.refreshTrees();
426 Gatherer.g_man.metaedit_pane.refreshTrees();
427
428 Gatherer.config.set("general.view_extracted_metadata", Configuration.COLLECTION_SPECIFIC, view_extracted_metadata_checkbox.isSelected());
429 Gatherer.g_man.metaedit_pane.valueChanged((TreeSelectionEvent) null); // Refresh metadata table
430
431 Gatherer.config.setLocale("general.locale", Configuration.GENERAL_SETTING, ((DictionaryEntry)language_combobox.getSelectedItem()).getLocale());
432
433 // Warning preferences
434 for(int i = 0; i < warning_preferences_check_list.getEntryCount(); i++) {
435 Entry entry = warning_preferences_check_list.get(i);
436 Gatherer.config.set(entry.getProperty(), true, entry.isSelected());
437 }
438 // Workflow preferences
439 Gatherer.config.set("workflow.browse", false, workflow_browse.isSelected());
440 Gatherer.config.set("workflow.mirror", false, workflow_mirror.isSelected());
441 Gatherer.config.set("workflow.gather", false, workflow_gather.isSelected());
442 Gatherer.config.set("workflow.enrich", false, workflow_enrich.isSelected());
443 Gatherer.config.set("workflow.design", false, workflow_design.isSelected());
444 Gatherer.config.set("workflow.export", false, workflow_export.isSelected());
445 Gatherer.config.set("workflow.create", false, workflow_create.isSelected());
446 Gatherer.config.set("workflow.preview", false, workflow_preview.isSelected());
447 Gatherer.g_man.workflowUpdate("Browser", workflow_browse.isSelected());
448 Gatherer.g_man.workflowUpdate("Mirroring", workflow_mirror.isSelected());
449 Gatherer.g_man.workflowUpdate("Collection", workflow_gather.isSelected());
450 Gatherer.g_man.workflowUpdate("MetaEdit", workflow_enrich.isSelected());
451 Gatherer.g_man.workflowUpdate("Build", workflow_design.isSelected());
452 Gatherer.g_man.workflowUpdate("Export", workflow_export.isSelected());
453 Gatherer.g_man.workflowUpdate("Create", workflow_create.isSelected());
454 Gatherer.g_man.workflowUpdate("Preview", workflow_preview.isSelected());
455 // Hide dialog
456 if(close) {
457 self.dispose();
458 }
459 }
460 }
461
462 private class CancelButtonListener
463 implements ActionListener {
464 public void actionPerformed(ActionEvent event) {
465 self.dispose();
466 }
467 }
468
469 private class DictionaryEntry
470 implements Comparable {
471 private Locale locale;
472 private String description;
473 public DictionaryEntry(Locale locale) {
474 this.description = null;
475 this.locale = locale;
476 }
477 public DictionaryEntry(String description, Locale locale) {
478 this.description = description;
479 this.locale = locale;
480 }
481 public int compareTo(Object object) {
482 return toString().compareTo(object.toString());
483 }
484 public boolean equals(Object object) {
485 return toString().equals(object.toString());
486 }
487 public Locale getLocale() {
488 return locale;
489 }
490 public String toString() {
491 if(description != null) {
492 return description;
493 }
494 else {
495 return locale.getDisplayName();
496 }
497 }
498 }
499
500 private class PredefinedActionListener
501 implements ActionListener {
502 public void actionPerformed(ActionEvent event) {
503 JComboBox cb = (JComboBox) event.getSource();
504 WorkflowElementWrapper element = (WorkflowElementWrapper) cb.getSelectedItem();
505 CheckboxUpdater task = new CheckboxUpdater(element);
506 SwingUtilities.invokeLater(task);
507 }
508
509 private class CheckboxUpdater
510 implements Runnable {
511 private WorkflowElementWrapper element;
512 public CheckboxUpdater(WorkflowElementWrapper element) {
513 this.element = element;
514 }
515 public void run() {
516 workflow_browse.setSelected(element.getEnabled("browse"));
517 workflow_create.setSelected(element.getEnabled("create"));
518 workflow_mirror.setSelected(element.getEnabled("mirror"));
519 workflow_gather.setSelected(element.getEnabled("gather"));
520 workflow_enrich.setSelected(element.getEnabled("enrich"));
521 workflow_design.setSelected(element.getEnabled("design"));
522 workflow_export.setSelected(element.getEnabled("export"));
523 workflow_preview.setSelected(element.getEnabled("preview"));
524 }
525 }
526 }
527
528 private class LanguageComboboxListener
529 implements ActionListener {
530 public void actionPerformed(ActionEvent event) {
531 // Retrieve the entry
532 DictionaryEntry entry = (DictionaryEntry) language_combobox.getSelectedItem();
533 if(entry != null) {
534 Gatherer.dictionary.changeDictionary(entry.getLocale());
535 // Display message
536 JOptionPane.showMessageDialog(Gatherer.g_man, Gatherer.dictionary.get("Preferences.General.Restart_Required"), Gatherer.dictionary.get("Preferences.General.Restart_Required"), JOptionPane.WARNING_MESSAGE);
537 }
538 }
539 }
540
541 private class UseProxyListener
542 implements ActionListener {
543 public void actionPerformed(ActionEvent event) {
544 boolean enabled = use_proxy_checkbox.isSelected();
545 Gatherer.config.set("general.use_proxy", true, enabled);
546 // Fortunately this is already driven by the event thread.
547 proxy_host_field.setEnabled(enabled);
548 proxy_port_field.setEnabled(enabled);
549 }
550 }
551
552 private class WorkflowElementWrapper {
553 private Element element;
554 private String text;
555 public WorkflowElementWrapper(Element element) {
556 this.element = element;
557 }
558 public boolean getEnabled(String name) {
559 boolean result = true;
560 if(element.getAttribute(name).equalsIgnoreCase("false")) {
561 result = false;
562 }
563 return result;
564 }
565 public String toString() {
566 if(text == null) {
567 text = element.getFirstChild().getNodeValue();
568 }
569 return text;
570 }
571 }
572}
Note: See TracBrowser for help on using the repository browser.