- Timestamp:
- 2003-08-18T14:10:31+12:00 (21 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/gli/src/org/greenstone/gatherer/gui/Preferences.java
r5042 r5164 3 3 import java.awt.*; 4 4 import java.awt.event.*; 5 import java.io.*; 5 6 import java.net.*; 6 7 import java.util.*; 7 8 import javax.swing.*; 9 import javax.swing.event.*; 10 import org.greenstone.gatherer.Configuration; 8 11 import org.greenstone.gatherer.Gatherer; 9 12 import org.greenstone.gatherer.checklist.CheckList; … … 13 16 import org.greenstone.gatherer.gui.NumberField; 14 17 import org.greenstone.gatherer.gui.SimpleMenuBar; 18 import org.greenstone.gatherer.util.StaticStrings; 15 19 import org.greenstone.gatherer.util.Utility; 16 20 import org.greenstone.gatherer.util.XORToggleButtonGroup; … … 33 37 private JCheckBox workflow_export; 34 38 private JCheckBox workflow_preview; 39 private JComboBox language_combobox; 40 private JLabel extracted_metadata_label; 41 private JLabel file_size_label; 42 private JLabel language_label; 43 private JLabel library_path_label; 44 private JLabel predefined_label; 45 private JLabel proxy_host_label; 46 private JLabel proxy_port_label; 47 private JLabel title_label; 48 private JRadioButton hide_extracted_metadata_radio_button; 49 private JRadioButton hide_file_size_radio_button; 50 private JRadioButton show_file_size_radio_button; 51 private JRadioButton view_extracted_metadata_radio_button; 35 52 private JTabbedPane tab_pane; 36 53 private JTextField library_path_field; … … 39 56 private Preferences self; 40 57 41 static final Dimension LABEL_SIZE = new Dimension(1 00, 25);42 static final Dimension ROW_SIZE = new Dimension( 380, 25);43 static final Dimension SIZE = new Dimension(4 00, 345);58 static final Dimension LABEL_SIZE = new Dimension(150, 25); 59 static final Dimension ROW_SIZE = new Dimension(450, 25); 60 static final Dimension SIZE = new Dimension(450, 345); 44 61 static final String TRUE = "true"; 45 62 … … 54 71 JPanel content_pane = (JPanel) getContentPane(); 55 72 tab_pane = new JTabbedPane(); 73 tab_pane.add("Preferences.General", createGeneralPreferences()); 56 74 tab_pane.add("Preferences.Workflow", createWorkflowPreferences()); 57 75 tab_pane.add("Preferences.Connection", createConnectionPreferences()); … … 101 119 JPanel library_path_pane = new JPanel(); 102 120 library_path_pane.setPreferredSize(ROW_SIZE); 103 JLabellibrary_path_label = new JLabel("Preferences.Connection.Library_Path");121 library_path_label = new JLabel("Preferences.Connection.Library_Path"); 104 122 library_path_label.setPreferredSize(LABEL_SIZE); 105 123 library_path_field = new JTextField(Gatherer.config.getString("general.exec_address", true)); … … 113 131 JPanel proxy_host_pane = new JPanel(); 114 132 proxy_host_pane.setPreferredSize(ROW_SIZE); 115 JLabelproxy_host_label = new JLabel("Preferences.Connection.Proxy_Host");133 proxy_host_label = new JLabel("Preferences.Connection.Proxy_Host"); 116 134 proxy_host_label.setPreferredSize(LABEL_SIZE); 117 135 proxy_host_field = new JTextField(Gatherer.config.getString("general.proxy_host", true)); … … 119 137 JPanel proxy_port_pane = new JPanel(); 120 138 proxy_port_pane.setPreferredSize(ROW_SIZE); 121 JLabelproxy_port_label = new JLabel("Preferences.Connection.Proxy_Port");139 proxy_port_label = new JLabel("Preferences.Connection.Proxy_Port"); 122 140 proxy_port_label.setPreferredSize(LABEL_SIZE); 123 141 proxy_port_field = new NumberField(Gatherer.config.getString("general.proxy_port", true)); … … 152 170 } 153 171 172 private JPanel createGeneralPreferences() { 173 JPanel general_pane = new JPanel(); 174 175 // Build the model of available languages 176 ArrayList dictionary_model = new ArrayList(); 177 178 Locale french = new Locale("fr","FR"); 179 System.err.println("French locale: " + french); 180 181 182 dictionary_model.add(new DictionaryEntry(Locale.ENGLISH)); 183 File classes_folder = new File(Utility.BASE_DIR + StaticStrings.CLASSES_FOLDER); 184 File[] possible_dictionaries = classes_folder.listFiles(); 185 for(int i = 0; i < possible_dictionaries.length; i++) { 186 String filename = possible_dictionaries[i].getName(); 187 if(filename.endsWith(StaticStrings.PROPERTIES_FILE_EXTENSION) && filename.indexOf(StaticStrings.UNDERSCORE_CHARACTER) != -1) { 188 StringTokenizer tokenizer = new StringTokenizer(filename.substring(filename.indexOf(StaticStrings.UNDERSCORE_CHARACTER) + 1, filename.indexOf(StaticStrings.STOP_CHARACTER)), StaticStrings.UNDERSCORE_CHARACTER); 189 Locale locale = null; 190 switch(tokenizer.countTokens()) { 191 case 1: 192 locale = new Locale(tokenizer.nextToken().toLowerCase()); 193 break; 194 case 2: 195 locale = new Locale(tokenizer.nextToken().toLowerCase(), tokenizer.nextToken().toUpperCase()); 196 break; 197 } 198 tokenizer = null; 199 // Open the file and read the first line 200 String description = null; 201 try { 202 BufferedReader br = new BufferedReader(new FileReader(possible_dictionaries[i])); 203 String first_line = br.readLine(); 204 br.close(); 205 description = first_line.substring(first_line.indexOf(StaticStrings.COLON_CHARACTER) + 1); 206 } 207 catch(Exception error) { 208 } 209 DictionaryEntry entry = new DictionaryEntry(description, locale); 210 description = null; 211 locale = null; 212 if(!dictionary_model.contains(entry)) { 213 dictionary_model.add(entry); 214 } 215 entry = null; 216 } 217 filename = null; 218 } 219 possible_dictionaries = null; 220 classes_folder = null; 221 222 // Extracted metadata 223 JPanel extracted_metadata_pane = new JPanel(); 224 extracted_metadata_label = new JLabel("NewCollectionPrompt.Extracted_Metadata"); 225 ButtonGroup extracted_metadata_button_group = new ButtonGroup(); 226 view_extracted_metadata_radio_button = new JRadioButton("NewCollectionPrompt.View_Extracted_Metadata"); 227 view_extracted_metadata_radio_button.setEnabled(Gatherer.c_man.ready()); 228 view_extracted_metadata_radio_button.setOpaque(false); 229 extracted_metadata_button_group.add(view_extracted_metadata_radio_button); 230 hide_extracted_metadata_radio_button = new JRadioButton("NewCollectionPrompt.Hide_Extracted_Metadata"); 231 hide_extracted_metadata_radio_button.setEnabled(Gatherer.c_man.ready()); 232 hide_extracted_metadata_radio_button.setOpaque(false); 233 extracted_metadata_button_group.add(hide_extracted_metadata_radio_button); 234 if(Gatherer.config.get("general.view_extracted_metadata", Configuration.COLLECTION_SPECIFIC)) { 235 view_extracted_metadata_radio_button.setSelected(true); 236 } 237 else { 238 hide_extracted_metadata_radio_button.setSelected(true); 239 } 240 241 // Show file sizes 242 JPanel file_size_pane = new JPanel(); 243 file_size_label = new JLabel("Prefereces.General.File_Size"); 244 ButtonGroup file_size_button_group = new ButtonGroup(); 245 show_file_size_radio_button = new JRadioButton("Prefereces.General.Show_File_Size"); 246 show_file_size_radio_button.setEnabled(Gatherer.c_man.ready()); 247 show_file_size_radio_button.setOpaque(false); 248 file_size_button_group.add(show_file_size_radio_button); 249 hide_file_size_radio_button = new JRadioButton("Prefereces.General.Hide_File_Size"); 250 hide_file_size_radio_button.setEnabled(Gatherer.c_man.ready()); 251 hide_file_size_radio_button.setOpaque(false); 252 file_size_button_group.add(hide_file_size_radio_button); 253 if(Gatherer.config.get("general.show_file_size", Configuration.COLLECTION_SPECIFIC)) { 254 show_file_size_radio_button.setSelected(true); 255 } 256 else { 257 hide_file_size_radio_button.setSelected(true); 258 } 259 260 // Language 261 JPanel language_pane = new JPanel(); 262 language_label = new JLabel("Preferences.General.Interface_Language"); 263 language_label.setPreferredSize(LABEL_SIZE); 264 language_combobox = new JComboBox(dictionary_model.toArray()); 265 266 // Connect 267 Gatherer.dictionary.register(file_size_label, null, false); 268 Gatherer.dictionary.register(show_file_size_radio_button, null, false); 269 Gatherer.dictionary.register(hide_file_size_radio_button, null, false); 270 Gatherer.dictionary.register(view_extracted_metadata_radio_button, null, false); 271 Gatherer.dictionary.register(hide_extracted_metadata_radio_button, null, false); 272 Gatherer.dictionary.register(language_label, null, false); 273 language_combobox.addActionListener(new LanguageComboboxListener()); 274 // Layout 275 276 file_size_pane.setLayout(new GridLayout(1,3,5,0)); 277 file_size_pane.add(show_file_size_radio_button); 278 file_size_pane.add(hide_file_size_radio_button); 279 280 extracted_metadata_pane.setLayout(new GridLayout(1,3,5,0)); 281 extracted_metadata_pane.add(view_extracted_metadata_radio_button); 282 extracted_metadata_pane.add(hide_extracted_metadata_radio_button); 283 284 language_pane.setLayout(new BorderLayout()); 285 language_pane.add(language_label, BorderLayout.WEST); 286 language_pane.add(language_combobox, BorderLayout.CENTER); 287 288 general_pane.setBorder(BorderFactory.createEmptyBorder(5,5,5,5)); 289 general_pane.setLayout(new GridLayout(5,1,0,5)); 290 general_pane.add(extracted_metadata_pane); 291 general_pane.add(file_size_pane); 292 general_pane.add(language_pane); 293 294 return general_pane; 295 } 296 154 297 /** The warning preferences are controlled through a checklist. */ 155 298 private JPanel createWarningPreferences() { 156 299 // Retrieve all of the warning preferences settings. 157 300 HashMap warning_preferences = Gatherer.config.getAll("warning\\..*", true); 158 warning_preferences_check_list = new CheckList( );301 warning_preferences_check_list = new CheckList(false); 159 302 for(Iterator keys = warning_preferences.keySet().iterator(); keys.hasNext(); ) { 160 303 String property = (String) keys.next(); … … 189 332 JPanel workflow_preferences_pane = new JPanel(); 190 333 JPanel checklist_pane = new JPanel(); 191 JLabeltitle_label = new JLabel("Preferences.Workflow.Title");334 title_label = new JLabel("Preferences.Workflow.Title"); 192 335 title_label.setPreferredSize(ROW_SIZE); 193 336 XORToggleButtonGroup checkbox_group = new XORToggleButtonGroup(); … … 209 352 workflow_preview.setPreferredSize(ROW_SIZE); 210 353 JPanel predefined_pane = new JPanel(); 211 JLabelpredefined_label = new JLabel("Preferences.Workflow.Predefined.Label");354 predefined_label = new JLabel("Preferences.Workflow.Predefined.Label"); 212 355 predefined_label.setPreferredSize(new Dimension(150,25)); 213 356 JComboBox predefined_combobox = new JComboBox(predefined); … … 272 415 public void dispose() { 273 416 // Deregister dictionary components 417 418 // Connection 419 Gatherer.dictionary.deregister(library_path_label); 420 Gatherer.dictionary.deregister(use_proxy_checkbox); 421 Gatherer.dictionary.deregister(proxy_host_label); 422 Gatherer.dictionary.deregister(proxy_port_label); 423 424 // General 425 Gatherer.dictionary.deregister(file_size_label); 426 Gatherer.dictionary.deregister(show_file_size_radio_button); 427 Gatherer.dictionary.deregister(hide_file_size_radio_button); 428 Gatherer.dictionary.deregister(extracted_metadata_label); 429 Gatherer.dictionary.deregister(view_extracted_metadata_radio_button); 430 Gatherer.dictionary.deregister(hide_extracted_metadata_radio_button); 431 Gatherer.dictionary.deregister(language_label); 432 433 // Workflow 434 Gatherer.dictionary.deregister(title_label); 435 Gatherer.dictionary.deregister(workflow_browse); 436 Gatherer.dictionary.deregister(workflow_mirror); 437 Gatherer.dictionary.deregister(workflow_gather); 438 Gatherer.dictionary.deregister(workflow_enrich); 439 Gatherer.dictionary.deregister(workflow_design); 440 Gatherer.dictionary.deregister(workflow_export); 441 Gatherer.dictionary.deregister(workflow_create); 442 Gatherer.dictionary.deregister(workflow_preview); 443 Gatherer.dictionary.deregister(predefined_label); 444 445 // Dialog 274 446 Gatherer.dictionary.deregister(this); 275 447 Gatherer.dictionary.deregister(tab_pane); … … 288 460 } 289 461 public void actionPerformed(ActionEvent event) { 290 291 462 // Submit the various changes. 463 // Connection preferences 292 464 String library_path_string = library_path_field.getText(); 293 465 Gatherer.config.setString("general.exec_address", true, library_path_string); … … 300 472 } 301 473 } 302 303 474 Gatherer.config.set("general.use_proxy", true, use_proxy_checkbox.isSelected()); 304 475 Gatherer.config.setString("general.proxy_host", true, proxy_host_field.getText()); 305 476 Gatherer.config.setString("general.proxy_port", true, proxy_port_field.getText()); 306 477 Gatherer.setProxy(); 307 // Warning preferences 478 479 // General preferences 480 Gatherer.config.set("general.show_file_size", Configuration.COLLECTION_SPECIFIC, show_file_size_radio_button.isSelected()); 481 if(Gatherer.g_man.mirror_pane != null) { 482 Gatherer.g_man.mirror_pane.refreshTrees(); 483 } 484 Gatherer.g_man.collection_pane.refreshTrees(); 485 Gatherer.g_man.metaedit_pane.refreshTrees(); 486 487 Gatherer.config.set("general.view_extracted_metadata", Configuration.COLLECTION_SPECIFIC, view_extracted_metadata_radio_button.isSelected()); 488 Gatherer.g_man.metaedit_pane.valueChanged((TreeSelectionEvent) null); // Refresh metadata table 489 490 Gatherer.config.setLocale("general.locale", Configuration.GENERAL_SETTING, ((DictionaryEntry)language_combobox.getSelectedItem()).getLocale()); 491 492 // Warning preferences 308 493 for(int i = 0; i < warning_preferences_check_list.getEntryCount(); i++) { 309 494 Entry entry = warning_preferences_check_list.get(i); 310 495 Gatherer.config.set(entry.getProperty(), true, entry.isSelected()); 311 496 } 312 497 // Workflow preferences 313 498 Gatherer.config.set("workflow.browse", false, workflow_browse.isSelected()); 314 499 Gatherer.config.set("workflow.mirror", false, workflow_mirror.isSelected()); … … 327 512 Gatherer.g_man.workflowUpdate("Create", workflow_create.isSelected()); 328 513 Gatherer.g_man.workflowUpdate("Preview", workflow_preview.isSelected()); 329 514 // Hide dialog 330 515 if(close) { 331 516 self.dispose(); … … 338 523 public void actionPerformed(ActionEvent event) { 339 524 self.dispose(); 525 } 526 } 527 528 private class DictionaryEntry 529 implements Comparable { 530 private Locale locale; 531 private String description; 532 public DictionaryEntry(Locale locale) { 533 this.description = null; 534 this.locale = locale; 535 } 536 public DictionaryEntry(String description, Locale locale) { 537 this.description = description; 538 this.locale = locale; 539 } 540 public int compareTo(Object object) { 541 return toString().compareTo(object.toString()); 542 } 543 public boolean equals(Object object) { 544 return toString().equals(object.toString()); 545 } 546 public Locale getLocale() { 547 return locale; 548 } 549 public String toString() { 550 if(description != null) { 551 return description; 552 } 553 else { 554 return locale.getDisplayName(); 555 } 340 556 } 341 557 } … … 369 585 } 370 586 587 private class LanguageComboboxListener 588 implements ActionListener { 589 public void actionPerformed(ActionEvent event) { 590 // Retrieve the entry 591 DictionaryEntry entry = (DictionaryEntry) language_combobox.getSelectedItem(); 592 if(entry != null) { 593 Gatherer.dictionary.changeDictionary(entry.getLocale()); 594 // Display message 595 JOptionPane.showMessageDialog(Gatherer.g_man, Gatherer.dictionary.get("Preferences.General.Restart_Required"), Gatherer.dictionary.get("Preferences.General.Restart_Required"), JOptionPane.WARNING_MESSAGE); 596 } 597 } 598 } 599 371 600 private class UseProxyListener 372 601 implements ActionListener {
Note:
See TracChangeset
for help on using the changeset viewer.