Changeset 8375
- Timestamp:
- 2004-10-19T13:26:42+13:00 (20 years ago)
- Location:
- trunk/gli/src/org/greenstone/gatherer/gems
- Files:
-
- 1 added
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/gli/src/org/greenstone/gatherer/gems/GEMS.java
r8274 r8375 33 33 * along with this program; if not, write to the Free Software 34 34 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 35 *############################################## ##########################35 *############################################## ########################## 36 36 */ 37 37 package org.greenstone.gatherer.gems; … … 42 42 import java.util.*; 43 43 import javax.swing.*; 44 import java.lang.String; 44 45 import javax.swing.event.*; 45 46 import javax.swing.filechooser.*; … … 54 55 import org.greenstone.gatherer.gui.GLIButton; 55 56 import org.greenstone.gatherer.gui.SmarterTable; 56 import org.greenstone.gatherer.gui.SmarterTree;57 57 import org.greenstone.gatherer.gui.ModalDialog; 58 58 import org.greenstone.gatherer.gui.NonWhitespaceField; 59 59 import org.greenstone.gatherer.gui.TransformCharacterTextField; 60 60 import org.greenstone.gatherer.help.HelpFrame; 61 //import org.greenstone.gatherer.cdm.*; 61 62 import org.greenstone.gatherer.util.Codec; 62 63 import org.greenstone.gatherer.util.Utility; … … 87 88 static final private String VALUES = "values"; 88 89 89 static p rivateConfiguration config = null;90 static public Configuration config = null; 90 91 static private MetadataSetManager msm = new MetadataSetManager(); 91 92 92 p rivateAddElementActionListener add_element_action_listener = null;93 public AddElementActionListener add_element_action_listener = null; 93 94 private AddFileActionListener add_file_action_listener = null; 94 p rivateAddSetActionListener add_set_action_listener = null;95 public AddSetActionListener add_set_action_listener = null; 95 96 /** The class used to handle add or edit attribute actions has to be globally available so that we can dispose of its dialog properly. */ 96 p rivateAddOrEditAttributeActionListener add_or_edit_attribute_action_listener = null;97 public AddOrEditAttributeActionListener add_or_edit_attribute_action_listener = null; 97 98 /** The class used to handle add or edit value actions has to be globally available so that we can dispose of its dialog properly. */ 98 p rivateAddOrEditValueActionListener add_or_edit_value_action_listener = null;99 public AddOrEditValueActionListener add_or_edit_value_action_listener = null; 99 100 private boolean ignore = false; 100 101 /** A card layout is used to switch between the two differing detail views. */ … … 135 136 private MetadataSet current_set = null; 136 137 private Object target = null; 137 p rivateRemoveSetActionListener remove_set_action_listener;138 public RemoveSetActionListener remove_set_action_listener; 138 139 private SmarterTable element_attributes = null; 139 140 private SmarterTable profile_attributes = null; 140 141 private SmarterTable set_attributes = null; 141 142 private SmarterTree element_values = null; 143 //PopupListener provides right-click functionality to any component that needs it 144 //It is a centralized manager for all popups, then we use evt.Source() and determine where the 145 //event was performed 146 private PopupListener popupListener = new PopupListener(); 147 private boolean set_changed = false; 142 148 /** A tree that represents the current metadata sets associated with this collection. */ 143 149 private SmarterTree mds_tree = null; … … 150 156 // Parse arguments 151 157 GetOpt go = new GetOpt(args); 152 158 //org.w3c.dom.Document attiladoc = Utility.parse(new String("xml/languages.xml"),false); 159 160 // attiladoc.getAttributes(); 161 // attiladoc.getAttributes(); 162 //System.out.println(attiladoc.getLocalName()); 163 //for(int k = 0; k < nnm.getLength(); k++) { 164 // System.out.println("My lang: " + nnm.item(k).toString()); 165 166 // } 153 167 // Debugging control 154 168 if (go.debug) { … … 232 246 mds_tree.setSelectionColor(config.getColor("coloring.collection_selection_background", false)); 233 247 mds_tree.setSelectedTextColor(config.getColor("coloring.collection_selection_foreground", false)); 234 248 249 //add popupevent handler for tree items 250 251 mds_tree.addMouseListener(popupListener); 235 252 details_pane = new JPanel(); 236 253 details_pane.setOpaque(false); … … 244 261 JLabel set_name_label = new JLabel(); 245 262 set_name_label.setOpaque(false); 246 Dictionary.setText(set_name_label, "MEM.Name");263 //Dictionary.setText(set_name_label, "MEM.Name"); 247 264 set_name = new JLabel(); 248 set_name.setBorder(BorderFactory.createLoweredBevelBorder());249 set_name.setOpaque(false);265 //set_name.setBorder(BorderFactory.createLoweredBevelBorder()); 266 //set_name.setOpaque(false); 250 267 251 268 JPanel set_attributes_pane = new JPanel(); … … 264 281 set_attributes.setSelectedTextColor(config.getColor("coloring.collection_selection_foreground", false)); 265 282 set_attributes.getSelectionModel().setSelectionMode(ListSelectionModel.SINGLE_SELECTION); 266 283 set_attributes.addMouseListener(popupListener); 267 284 JPanel element_details_pane = new JPanel(); 268 285 element_details_pane.setOpaque(false); … … 272 289 JLabel element_name_label = new JLabel(); 273 290 element_name_label.setOpaque(false); 274 Dictionary.setText(element_name_label, "MEM.Name");275 element_name = new JLabel();276 element_name.setBorder(BorderFactory.createLoweredBevelBorder());277 element_name.setOpaque(false);291 //Dictionary.setText(element_name_label, "MEM.Name"); 292 //element_name = new JLabel(); 293 //element_name.setBorder(BorderFactory.createLoweredBevelBorder()); 294 //element_name.setOpaque(false); 278 295 279 296 JPanel element_inner_pane = new JPanel(); … … 294 311 element_attributes.setSelectedTextColor(config.getColor("coloring.collection_selection_foreground", false)); 295 312 element_attributes.getSelectionModel().setSelectionMode(ListSelectionModel.SINGLE_SELECTION); 296 297 element_values_layout = new CardLayout(); 313 element_attributes.addMouseListener(popupListener); 314 315 element_values_layout = new CardLayout(); 298 316 element_values_pane = new JPanel(); 299 317 element_values_pane.setOpaque(false); … … 315 333 JLabel profile_name_label = new JLabel(); 316 334 profile_name_label.setOpaque(false); 317 Dictionary.setText(profile_name_label, "MEM.Name");335 //Dictionary.setText(profile_name_label, "MEM.Name"); 318 336 profile_name = new JLabel(); 319 337 profile_name.setBorder(BorderFactory.createLoweredBevelBorder()); … … 436 454 profile_attributes.getSelectionModel().addListSelectionListener(new AttributesListSelectionListener(profile_attributes)); 437 455 set_attributes.getSelectionModel().addListSelectionListener(new AttributesListSelectionListener(set_attributes)); 438 element_values.addTreeSelectionListener(new ElementValuesTreeSelectionListener());456 //element_values.addTreeSelectionListener(new ElementValuesTreeSelectionListener()); 439 457 mds_tree.addTreeSelectionListener(new MDSTreeSelectionListener()); 440 458 // Layout … … 454 472 set_details_pane.setBorder(BorderFactory.createCompoundBorder(BorderFactory.createTitledBorder(Dictionary.get("MEM.Set_Details")), BorderFactory.createEmptyBorder(2,2,2,2))); 455 473 set_details_pane.setLayout(new BorderLayout()); 456 //set_details_pane.add(set_name_pane, BorderLayout.NORTH);474 set_details_pane.add(set_name_pane, BorderLayout.NORTH); 457 475 set_details_pane.add(set_attributes_pane, BorderLayout.CENTER); 458 476 459 477 element_name_pane.setLayout(new BorderLayout()); 460 element_name_pane.add(element_name_label, BorderLayout.WEST);461 element_name_pane.add(element_name, BorderLayout.CENTER);478 //element_name_pane.add(element_name_label, BorderLayout.WEST); 479 //element_name_pane.add(element_name, BorderLayout.CENTER); 462 480 463 481 element_attributes_scroll.setViewportView(element_attributes); … … 468 486 469 487 element_values_pane.setBorder(BorderFactory.createCompoundBorder(BorderFactory.createTitledBorder(Dictionary.get("MEM.Values")), BorderFactory.createEmptyBorder(2,2,2,2))); 470 //element_values_pane.setLayout(new BorderLayout());471 //element_values_pane.add(new JScrollPane(element_values), BorderLayout.CENTER);488 element_values_pane.setLayout(new BorderLayout()); 489 element_values_pane.add(new JScrollPane(element_values), BorderLayout.CENTER); 472 490 element_values_pane.setLayout(element_values_layout); 473 element_values_pane.add(element_novalues_pane, BLANK);474 element_values_pane.add(new JScrollPane(element_values), VALUES);475 476 element_inner_pane.setLayout(new GridLayout(2,1));491 //element_values_pane.add(element_novalues_pane, BLANK); 492 //element_values_pane.add(new JScrollPane(element_values), VALUES); 493 494 element_inner_pane.setLayout(new BorderLayout()); 477 495 element_inner_pane.add(element_attributes_pane); 478 element_inner_pane.add(element_values_pane);496 //element_inner_pane.add(element_values_pane); 479 497 480 498 element_details_pane.setBorder(BorderFactory.createCompoundBorder(BorderFactory.createTitledBorder(Dictionary.get("MEM.Element_Details")), BorderFactory.createEmptyBorder(2,2,2,2))); … … 511 529 button_label_pane.setLayout(new GridLayout(4,1,0,2)); 512 530 button_label_pane.setBorder(BorderFactory.createEmptyBorder(0,0,0,2)); 513 button_label_pane.add(set_label);531 //button_label_pane.add(set_label); 514 532 // button_label_pane.add(file_label); 515 button_label_pane.add(element_label);516 button_label_pane.add(attribute_label);517 button_label_pane.add(value_label);533 //button_label_pane.add(element_label); 534 //button_label_pane.add(attribute_label); 535 //button_label_pane.add(value_label); 518 536 519 537 inner_button_pane.setLayout(new GridLayout(4,3,0,2)); 520 inner_button_pane.add(add_set); 521 inner_button_pane.add(edit_set_pane); 522 inner_button_pane.add(remove_set); 523 // inner_button_pane.add(add_file); 524 // inner_button_pane.add(edit_file_pane); 538 //inner_button_pane.add(add_set); 539 //inner_button_pane.add(edit_set_pane); 540 //inner_button_pane.add(remove_set); 541 542 //inner_button_pane.add(add_file); 543 //inner_button_pane.add(edit_file_pane); 525 544 // inner_button_pane.add(remove_file); 526 inner_button_pane.add(add_element); 527 inner_button_pane.add(edit_element_pane); 528 inner_button_pane.add(remove_element); 529 inner_button_pane.add(add_attribute); 530 inner_button_pane.add(edit_attribute); 531 inner_button_pane.add(remove_attribute); 532 inner_button_pane.add(add_value); 533 inner_button_pane.add(edit_value); 534 inner_button_pane.add(remove_value); 545 546 //inner_button_pane.add(add_element); 547 //inner_button_pane.add(edit_element_pane); 548 //inner_button_pane.add(remove_element); 549 //inner_button_pane.add(add_attribute); 550 //inner_button_pane.add(edit_attribute); 551 //inner_button_pane.add(remove_attribute); 552 //inner_button_pane.add(add_value); 553 //inner_button_pane.add(edit_value); 554 //inner_button_pane.add(remove_value); 535 555 536 556 button_pane.setBorder(BorderFactory.createEmptyBorder(5,0,0,0)); 537 557 button_pane.setLayout(new BorderLayout()); 538 button_pane.add(button_label_pane, BorderLayout.WEST);539 button_pane.add(inner_button_pane, BorderLayout.CENTER);558 //button_pane.add(button_label_pane, BorderLayout.WEST); 559 //button_pane.add(inner_button_pane, BorderLayout.CENTER); 540 560 541 561 content_pane.setBorder(BorderFactory.createEmptyBorder(5,5,5,5)); … … 553 573 { 554 574 // Flush debug 575 System.out.println("Final exit func"); 555 576 DebugStream.closeDebugStream(); 556 577 … … 575 596 public JMenuItem edit_paste = null; 576 597 public JMenuItem help_help = null; 577 598 public JMenuItem file_delete = null; 599 public JMenuItem file_preferences = null; 578 600 public GEMSMenuBar() 579 601 { 580 602 file = new JMenu(); 581 603 file.setMnemonic(KeyEvent.VK_F); 582 Dictionary.registerText(file, " Menu.File");604 Dictionary.registerText(file, "Gems.Menu.File"); 583 605 584 606 file_exit = new JMenuItem(); 585 607 file_exit.addActionListener(this); 586 608 file_exit.setMnemonic(KeyEvent.VK_X); 587 Dictionary.registerText(file_exit, " Menu.File_Exit");609 Dictionary.registerText(file_exit, "Gems.Menu.File_Exit"); 588 610 589 611 file_new = new JMenuItem(); 590 612 file_new.addActionListener(this); 591 613 file_new.setMnemonic(KeyEvent.VK_N); 592 Dictionary.registerText(file_new, " Menu.File_New");614 Dictionary.registerText(file_new, "Gems.Menu.File_New"); 593 615 594 616 file_open = new JMenuItem(); 595 617 file_open.addActionListener(this); 596 618 file_open.setMnemonic(KeyEvent.VK_O); 597 Dictionary.registerText(file_open, " Menu.File_Open");619 Dictionary.registerText(file_open, "Gems.Menu.File_Open"); 598 620 599 621 file_save = new JMenuItem(); 600 622 file_save.addActionListener(this); 601 623 file_save.setMnemonic(KeyEvent.VK_S); 602 Dictionary.registerText(file_save, "Menu.File_Save"); 624 Dictionary.registerText(file_save, "Gems.Menu.File_Save"); 625 626 file_delete = new JMenuItem(); 627 file_delete.addActionListener(new RemoveSetActionListener()); 628 file_delete.setMnemonic(KeyEvent.VK_S); 629 Dictionary.registerText(file_delete, "Gems.Menu.File_Delete"); 630 631 file_preferences = new JMenuItem(); 632 file_preferences.addActionListener(this); 633 file_preferences.setMnemonic(KeyEvent.VK_S); 634 Dictionary.registerText(file_preferences, "Gems.Menu.File_Preferences"); 603 635 604 636 // Layout (file menu) … … 606 638 file.add(file_open); 607 639 file.add(file_save); 608 file.add(new JSeparator()); 640 file.add(file_delete); 641 // file.add(new JSeparator()); 642 // file.add(file_preferences); 643 file.add(new JSeparator()); 609 644 file.add(file_exit); 610 645 611 646 // Edit menu 612 647 edit = new JMenu(); 613 648 edit.setMnemonic(KeyEvent.VK_E); 614 Dictionary.registerText(edit, " Menu.Edit");649 Dictionary.registerText(edit, "Gems.Menu.Edit"); 615 650 616 651 edit_cut = new JMenuItem(); 617 652 edit_cut.addActionListener(this); 618 653 edit_cut.setMnemonic(KeyEvent.VK_X); 619 Dictionary.registerText(edit_cut, " Menu.Edit_Cut");654 Dictionary.registerText(edit_cut, "Gems.Menu.Edit_Cut"); 620 655 621 656 edit_copy = new JMenuItem(); 622 657 edit_copy.addActionListener(this); 623 658 edit_copy.setMnemonic(KeyEvent.VK_C); 624 Dictionary.registerText(edit_copy, " Menu.Edit_Copy");659 Dictionary.registerText(edit_copy, "Gems.Menu.Edit_Copy"); 625 660 626 661 edit_paste = new JMenuItem(); 627 662 edit_paste.addActionListener(this); 628 663 edit_paste.setMnemonic(KeyEvent.VK_V); 629 Dictionary.registerText(edit_paste, " Menu.Edit_Paste");664 Dictionary.registerText(edit_paste, "Gems.Menu.Edit_Paste"); 630 665 631 666 // Layout (edit menu) … … 637 672 help = new JMenu(); 638 673 help.setIcon(Utility.HELP_ICON); 639 Dictionary.setText(help, " Menu.Help");674 Dictionary.setText(help, "Gems.Menu.Help"); 640 675 641 676 help_help = new JMenuItem(); 642 677 help_help.addActionListener(this); 643 Dictionary.registerText(help_help, " Menu.Help");678 Dictionary.registerText(help_help, "Gems.Menu.Help"); 644 679 645 680 // Layout (help menu) … … 662 697 if (event_source == file_new) { 663 698 add_set.doClick(); 699 set_changed = true; 664 700 return; 665 701 } … … 674 710 model.add(null, metadata_set, GEMSNode.SET); 675 711 } 712 set_changed = true; 676 713 return; 677 714 } … … 679 716 // File -> Save 680 717 if (event_source == file_save) { 681 // Don't actually need to do anything 718 msm.save(); 719 set_changed = false; 682 720 return; 683 721 } … … 685 723 // File -> Exit 686 724 if (event_source == file_exit) { 687 exit(); 725 726 if(set_changed == true) { 727 int result = JOptionPane.showOptionDialog(self, Dictionary.get("Gems.Menu.Confirm_Exit_Save", Dictionary.get("MEM.Element")), Dictionary.get("Gems.Menu.Confirm_Exit_Save_Title"), JOptionPane.DEFAULT_OPTION, JOptionPane.QUESTION_MESSAGE, null, dialog_options, dialog_options[0]); 728 729 System.out.println("Exit: "+result); 730 if(result == 0) { 731 msm.save(); 732 exit(); 733 } 734 else{ 735 exit(); 736 } 737 738 } 739 else{ 740 741 exit(); 742 } 688 743 } 689 744 … … 825 880 mds_tree = null; 826 881 target = null; 827 882 883 popupListener = null; 828 884 // Dispose of inner dialogs 829 885 if (add_element_action_listener != null) { … … 903 959 Dictionary.setText(language_label, "MEM.Language"); 904 960 language_box = new JComboBox(); // !!! Gatherer.g_man.design_pane.getLanguageCodes().toArray()); 961 //LanguageManager languageManager = new LanguageManager(org.w3c.dom.Element()); 962 963 System.out.println("f"); 905 964 // !!! language_box.setRenderer(new LanguageListCellRenderer()); 906 965 Dictionary.setTooltip(language_box, "MEM.Attribute_Language_Tooltip"); … … 993 1052 if (success) { 994 1053 // Hide dialog 1054 set_changed = true; 995 1055 setVisible(false); 996 1056 } … … 1016 1076 // Name combo box is enabled except when attributes are edited 1017 1077 //name.setEnabled((source != edit_attribute)); 1078 System.out.println("elsed"); 1018 1079 name_to_values.clear(); 1019 1080 name.clear(); … … 1106 1167 } 1107 1168 // Now pritty up the dialog depending on the action type 1108 if(source == add_attribute ) {1169 if(source == add_attribute || source == popupListener.menuAddAttributeElement || source == popupListener.menuAddAttributeAttribute) { 1109 1170 add_type = true; 1110 1171 Dictionary.setText(this, "MEM.AddAttribute"); … … 1119 1180 setVisible(true); 1120 1181 } 1182 // else if(source == popupListener.menuAddAttributeAttribute){ 1183 1184 // System.out.println("fromattrib table"); 1185 // } 1186 // else if(source == popupListener.menuAddAttributeElement){ 1187 1188 // System.out.println("from elements"); 1189 // } 1121 1190 else if(current_attribute != -1) { 1122 1191 AttributeTableModel model = null; … … 1373 1442 element = null; 1374 1443 setVisible(false); 1444 set_changed = true; 1375 1445 } 1376 1446 // Otherwise show an error message and do not proceed. … … 1626 1696 set = null; 1627 1697 setVisible(false); 1698 set_changed = true; 1628 1699 } 1629 1700 // Otherwise show a warning. … … 1806 1877 // Hide dialog 1807 1878 setVisible(false); 1808 1879 set_changed = true; 1809 1880 } 1810 1881 else if(source == cancel_button) { … … 1894 1965 /** Invoked after nodes have been inserted into the tree. */ 1895 1966 public void treeNodesInserted(TreeModelEvent e) { 1896 if(element_values != null && element_values.getModel() != null && element_values.getModel().getRoot() != null) {1897 element_values.expandPath(new TreePath(element_values.getModel().getRoot()));1898 }1967 // if(element_values != null && element_values.getModel() != null && element_values.getModel().getRoot() != null) { 1968 // element_values.expandPath(new TreePath(element_values.getModel().getRoot())); 1969 // } 1899 1970 } 1900 1971 /** Invoked after nodes have been removed from the tree. */ … … 1903 1974 /** Invoked after the tree has drastically changed structure from a given node down. */ 1904 1975 public void treeStructureChanged(TreeModelEvent e) { 1905 element_values.expandPath(new TreePath(element_values.getModel().getRoot()));1976 // element_values.expandPath(new TreePath(element_values.getModel().getRoot())); 1906 1977 } 1907 1978 } … … 1950 2021 remove_attribute.setEnabled(false); 1951 2022 ignore = false; 2023 set_changed = true; 1952 2024 } 1953 2025 } … … 1975 2047 card_layout.show(details_pane, BLANK); 1976 2048 ignore = false; 2049 set_changed = true; 1977 2050 } 1978 2051 } … … 2028 2101 card_layout.show(details_pane, BLANK); 2029 2102 ignore = false; 2103 set_changed = true; 2030 2104 } 2031 2105 } … … 2044 2118 if(result == 0) { 2045 2119 ignore = true; 2046 GValueModel model = (GValueModel) element_values.getModel();2047 model.removeValue(current_value_node);2120 // GValueModel model = (GValueModel) element_values.getModel(); 2121 // model.removeValue(current_value_node); 2048 2122 // Meanwhile disable/enable controls given we had a value selected, but no longer do. 2049 2123 edit_value.setEnabled(false); 2050 2124 remove_value.setEnabled(false); 2051 2125 ignore = false; 2126 set_changed = true; 2052 2127 } 2053 2128 } … … 2262 2337 } 2263 2338 } 2264 2339 2340 //PopupListener is our main manager for all right-click popups 2341 class PopupListener extends MouseAdapter implements ActionListener{ 2342 JPopupMenu setPopup; 2343 JPopupMenu subfieldPopup; 2344 JPopupMenu elementPopup; 2345 JPopupMenu attributePopup; 2346 //all of our popup menu items EVER! 2347 JMenuItem menuAddSet; 2348 JMenuItem menuRenameSet; 2349 JMenuItem menuAddElement; 2350 2351 JMenuItem menuRenameSubfield; 2352 JMenuItem menuDeleteSubfield; 2353 JMenuItem menuAddAttributeSubfield; 2354 JMenuItem menuRenameElement; 2355 2356 JMenuItem menuDeleteElement; 2357 JMenuItem menuAddAttributeElement; 2358 JMenuItem menuAddSubfield; 2359 2360 JMenuItem menuEditValue; 2361 JMenuItem menuDeleteAttribute; 2362 JMenuItem menuAddAttributeAttribute; 2363 2364 JMenuItem menuRemoveSet; 2365 //all of our popup menu items above 2366 static final public int COLLECTION = 0; 2367 static final public int ELEMENT = 1; 2368 static final public int PROFILER = 2; 2369 static final public int ROOT = 3; 2370 static final public int SET = 4; 2371 PopupListener() { 2372 setPopup = new JPopupMenu(); 2373 subfieldPopup = new JPopupMenu(); 2374 elementPopup = new JPopupMenu(); 2375 attributePopup = new JPopupMenu(); 2376 2377 2378 //create the MenuItems 2379 2380 //set related popups 2381 menuAddSet = new JMenuItem(); 2382 Dictionary.setText(menuAddSet,"Gems.Popup.menuAddSet"); 2383 2384 menuRenameSet = new JMenuItem(); 2385 Dictionary.setText(menuRenameSet,"Gems.Popup.menuRenameSet"); 2386 2387 menuAddElement =new JMenuItem(); 2388 Dictionary.setText(menuAddElement,"Gems.Popup.menuAddElement"); 2389 2390 menuRemoveSet = new JMenuItem(); 2391 Dictionary.setText(menuRemoveSet,"Gems.Popup.menuRemoveSet"); 2392 //subfield related Gems.Popups 2393 menuRenameSubfield = new JMenuItem(); 2394 Dictionary.setText(menuRenameSubfield,"Gems.Popup.menuRenameSubfield"); 2395 2396 menuDeleteSubfield=new JMenuItem(); 2397 Dictionary.setText(menuDeleteSubfield,"Gems.Popup.menuDeleteSubfield"); 2398 2399 menuAddAttributeSubfield=new JMenuItem(); 2400 Dictionary.setText(menuAddAttributeSubfield,"Gems.Popup.menuAddAttributeSubfield"); 2401 2402 //element related Gems.Popups 2403 menuRenameElement=new JMenuItem(); 2404 Dictionary.setText(menuRenameElement,"Gems.Popup.menuRenameElement"); 2405 2406 menuDeleteElement=new JMenuItem(); 2407 Dictionary.setText(menuDeleteElement,"Gems.Popup.menuDeleteElement"); 2408 2409 menuAddAttributeElement=new JMenuItem(); 2410 Dictionary.setText(menuAddAttributeElement,"Gems.Popup.menuAddAttributeElement"); 2411 2412 menuAddSubfield=new JMenuItem(); 2413 Dictionary.setText(menuAddSubfield,"Gems.Popup.menuAddSubfield"); 2414 2415 //attribute related Gems.Popups 2416 menuEditValue=new JMenuItem(); 2417 Dictionary.setText(menuEditValue,"Gems.Popup.menuEditValue"); 2418 2419 menuDeleteAttribute=new JMenuItem(); 2420 Dictionary.setText(menuDeleteAttribute,"Gems.Popup.menuDeleteAttribute"); 2421 2422 menuAddAttributeAttribute=new JMenuItem(); 2423 Dictionary.setText(menuAddAttributeAttribute,"Gems.Popup.menuAddAttributeAttribute"); 2424 2425 //start Associate the menu items with the appropriate popups: 2426 //setPopup.add(menuRenameSet); 2427 setPopup.add(menuAddSet); 2428 setPopup.add(menuAddElement); 2429 setPopup.add(menuRemoveSet); 2430 2431 //subfieldPopup.add(menuRenameSubfield); 2432 subfieldPopup.add(menuDeleteSubfield); 2433 subfieldPopup.add(menuAddAttributeSubfield); 2434 2435 //elementPopup.add(menuRenameElement); 2436 elementPopup.add(menuDeleteElement); 2437 elementPopup.add(menuAddAttributeElement); 2438 elementPopup.add(menuAddSubfield); 2439 2440 attributePopup.add(menuEditValue); 2441 attributePopup.add(menuDeleteAttribute); 2442 attributePopup.add(menuAddAttributeAttribute); 2443 //end Associate the menu items with the appropriate popups: 2444 2445 2446 menuRemoveSet.addActionListener(new RemoveSetActionListener()); 2447 menuAddSet.addActionListener(new AddSetActionListener()); 2448 menuAddElement.addActionListener(new AddElementActionListener()); 2449 2450 menuRenameSubfield.addActionListener(this); 2451 menuDeleteSubfield.addActionListener(this); 2452 menuAddAttributeSubfield.addActionListener(this); 2453 2454 menuRenameElement.addActionListener(this); 2455 menuDeleteElement.addActionListener(new RemoveElementActionListener()); 2456 menuAddAttributeElement.addActionListener(new AddOrEditAttributeActionListener()); 2457 menuAddSubfield.addActionListener(this); 2458 2459 menuEditValue.addActionListener(new AddOrEditAttributeActionListener()); 2460 menuDeleteAttribute.addActionListener(new RemoveAttributeActionListener()); 2461 menuAddAttributeAttribute.addActionListener(new AddOrEditAttributeActionListener()); 2462 2463 } 2464 public void mouseClicked(MouseEvent e) { 2465 maybeShowPopup(e); 2466 } 2467 public void mousePressed(MouseEvent e){ 2468 maybeShowPopup(e); 2469 2470 } 2471 public void mouseReleased(MouseEvent e) { 2472 maybeShowPopup(e); 2473 } 2474 2475 private void maybeShowPopup(MouseEvent e) { 2476 2477 //TreeNode oTreeNode = e.getSource(). 2478 int selRow = mds_tree.getRowForLocation(e.getX(), e.getY()); 2479 TreePath selPath = mds_tree.getPathForLocation(e.getX(), e.getY()); 2480 if (e.isPopupTrigger()) { 2481 // setPopup.show(e.getComponent(), 2482 // e.getX(), e.getY()); 2483 2484 if(e.getSource() == mds_tree) { 2485 try { 2486 2487 GEMSNode t = (GEMSNode)selPath.getLastPathComponent(); 2488 2489 2490 2491 if(t.type == ELEMENT){ 2492 2493 elementPopup.show(e.getComponent(), 2494 e.getX(), e.getY()); 2495 } 2496 else if(t.type == ELEMENT){ 2497 2498 subfieldPopup.show(e.getComponent(), 2499 e.getX(), e.getY()); 2500 } 2501 else if(t.type == ROOT){ 2502 2503 setPopup.show(e.getComponent(), 2504 e.getX(), e.getY()); 2505 } 2506 else if(t.type == SET){ 2507 2508 setPopup.show(e.getComponent(), 2509 e.getX(), e.getY()); 2510 } 2511 } 2512 finally { 2513 ; 2514 2515 } 2516 2517 2518 } 2519 else if(e.getSource() == set_attributes){ 2520 2521 attributePopup.show(e.getComponent(), 2522 e.getX(), e.getY()); 2523 2524 } 2525 else if(e.getSource() == element_attributes) { 2526 attributePopup.show(e.getComponent(), 2527 e.getX(), e.getY()); 2528 2529 } 2530 2531 2532 2533 } 2534 2535 } 2536 2537 public void actionPerformed(ActionEvent e) { 2538 System.out.println("dsf"); 2539 } 2540 2541 } 2542 2265 2543 /** Wrap a ElementWrapper so we get its name when we ask for toString(), not its identifier. */ 2266 2544 private class NameElementWrapperEntry -
trunk/gli/src/org/greenstone/gatherer/gems/GEMSNode.java
r8274 r8375 40 40 import java.util.*; 41 41 import javax.swing.tree.*; 42 import javax.swing.JPopupMenu; 43 import java.awt.event.*; 42 44 import org.greenstone.gatherer.Configuration; 43 45 import org.greenstone.gatherer.DebugStream; … … 51 53 */ 52 54 public class GEMSNode 53 extends DefaultMutableTreeNode 55 extends DefaultMutableTreeNode{ 54 56 private AttributeTableModel model = null; 55 p rivateint type = 0;57 public int type = 0; 56 58 private String text = null; 57 59 static final public int COLLECTION = 0; … … 63 65 public GEMSNode() { 64 66 this.type = ROOT; 67 65 68 } 66 69 … … 203 206 NodeList elements = set.getElements(); 204 207 for (int i = 0; i < elements.getLength(); i++) { 208 205 209 children.add(new GEMSNode(ELEMENT, new ElementWrapper((Element) elements.item(i)), this)); 206 210 } 207 211 } 208 212 } 213 214 class GemsNodeMouseAdapter 215 extends MouseAdapter { 216 217 218 219 public void mouseClicked(MouseEvent e) { 220 JPopupMenu setPopup = new JPopupMenu("asdf"); 221 if (e.isPopupTrigger()) { 222 223 setPopup.show(e.getComponent(), 224 e.getX(), e.getY()); 225 226 227 } 228 } 229 230 public void mouseEntered(MouseEvent e) { 231 } 232 233 public void mouseExited(MouseEvent e) { 234 } 235 236 public void mousePressed(MouseEvent e) { 237 JPopupMenu setPopup = new JPopupMenu("asdf"); 238 if (e.isPopupTrigger()) { 239 240 setPopup.show(e.getComponent(), 241 e.getX(), e.getY()); 242 243 244 } 245 } 246 247 public void mouseReleased(MouseEvent e) { 248 JPopupMenu setPopup = new JPopupMenu("asdf"); 249 if (e.isPopupTrigger()) { 250 251 setPopup.show(e.getComponent(), 252 e.getX(), e.getY()); 253 254 255 } 256 } 257 258 259 } 260 209 261 } -
trunk/gli/src/org/greenstone/gatherer/gems/MetadataSetManager.java
r8270 r8375 45 45 import org.greenstone.gatherer.DebugStream; 46 46 import org.greenstone.gatherer.util.Utility; 47 import org.greenstone.gatherer.collection.CollectionManager; 48 import org.greenstone.gatherer.file.*; 47 49 import org.apache.xerces.parsers.*; 48 50 import org.apache.xml.serialize.*; … … 63 65 /** The name of the hidden, or system, metadata set. */ 64 66 static final public String HIDDEN = "hidden"; 65 67 static public CollectionManager col_man = null; 66 68 /** A mapping from metadata namespace to metadata set. */ 67 69 static private Hashtable mds_hashtable = new Hashtable(); … … 73 75 /** Constructor. */ 74 76 public MetadataSetManager() { 77 col_man = new CollectionManager(); 75 78 } 76 79 … … 323 326 // No such set. No such element. 324 327 } 325 326 328 /*Following write() and write() and save() were taken from msm/metadatasetmanager.java and converted to 329 *the gems standard 330 */ 331 private void write(ElementWrapper element, GValueModel model, String etc_dir) { 332 try { 333 File out_file = new File(etc_dir + element.getName() + ".txt"); 334 FileOutputStream fos = new FileOutputStream(out_file); 335 OutputStreamWriter osw = new OutputStreamWriter(fos, "UTF-8"); 336 BufferedWriter bw = new BufferedWriter(osw, Utility.BUFFER_SIZE); 337 Vector all_values = model.traverseTree(); 338 for(int i = 0; i < all_values.size(); i++) { 339 GValueNode node = (GValueNode)all_values.get(i); 340 TreePath path = new TreePath(node.getPath()); 341 String full_value = node.getFullPath(false); 342 String index = model.getHIndex(full_value); 343 344 write(bw, "\"" + full_value + "\"\t" + index + "\t\"" + node.toString(GValueNode.GREENSTONE) + "\""); 345 } 346 // Very important we do this, or else buffer may not be flushed 347 bw.flush(); 348 bw.close(); 349 } 350 catch(Exception error) { 351 error.printStackTrace(); 352 } 353 } 354 355 private void write(Writer w, String text) 356 throws Exception { 357 text = text + "\r\n"; 358 char buffer[] = text.toCharArray(); 359 w.write(buffer, 0, buffer.length); 360 } 361 public void save() { 362 // Create the correct file to save these sets to... 363 //File file = new File(Gatherer.self.getCollectionMetadata()); 364 File file = new File("/home/arosmain/gsdl/gli/metadata"); 365 366 System.out.println("saving..."); 367 if (!file.exists()) { 368 //DebugStream.println("trying to save a collection and the metadata directory does not exist - creating it!"); 369 System.out.println("trying to save a collection and the metadata directory does not exist - creating it!"); 370 371 file.mkdir(); 372 } 373 // And make back ups of all existing metadata set files. 374 File temp[] = file.listFiles(); 375 for(int i = temp.length - 1; i >= 0; i--) { 376 if(temp[i].getName().endsWith(".mds") ) { 377 File backup = new File(temp[i].getAbsolutePath() + "~attela"); 378 379 System.out.println(temp[i].getAbsolutePath()+ "asdf\n backupfile:"+ backup.toString()); 380 381 382 //backup.deleteOnExit(); 383 if(!temp[i].renameTo(backup)) { 384 //DebugStream.println("Error in MetadataSetManager.save(): FileRenamedException"); 385 System.out.println("Error in MetadataSetManager.save(): FileRenamedException"); 386 } 387 } 388 } 389 // Now save the latest versions of the metadata sets. 390 for(Enumeration keys = mds_hashtable.keys(); keys.hasMoreElements(); ) { 391 String namespace = (String) keys.nextElement(); 392 MetadataSet set = (MetadataSet) mds_hashtable.get(namespace); 393 // 394 //col_man.loadCollection(GEMS.config.getString("general.open_collection",true)); 395 // 396 try { 397 File mds_file = new File(file, set.getNamespace() + ".mds"); 398 399 //Saves the DOM obj that set.getDocument returns to mds_file name 400 Utility.export(set.getDocument(), mds_file); 401 //What does setfile do? 402 set.setFile(mds_file); 403 // Now for each element attempt to save its value tree. 404 //NodeList elements = set.getElements(); 405 //for(int i = elements.getLength() - 1; i >= 0; i--) { 406 // ElementWrapper value_element = new ElementWrapper((Element)elements.item(i)); 407 //if(value_element.hasValueTree()) { 408 //GValueModel value_tree = set.getValueTree(value_element); 409 //if(value_tree != null) { 410 //File value_file = new File(file, value_element.getName() + ".mdv"); 411 ///ystem.err.println("Saving value file: " + value_file.toString()); 412 //Utility.export(value_tree.getDocument(), value_file); 413 // If this is a hierarchy element, write hierarchy file. 414 //if(value_element.getNamespace().equals(MetadataSetManager.HIDDEN) || value_tree.isHierarchy()) { 415 //System.out.println("Val Tree: " +value_file.toString() + "\n"); 416 // value_element. 417 // System.out.println(col_man.getCollectionEtc() + "<--getColEtc\n"); 418 // write(value_element, value_tree, new String("/home/arosmain/gsdl/gli/")); 419 //} 420 //} 421 //} 422 //System.out.println("Val element: "+value_element.toString() + "\n"); 423 //} 424 } 425 catch (Exception error) { 426 error.printStackTrace(); 427 } 428 } 429 //profiler.save(); 430 } 327 431 public void removeSet(MetadataSet set) { 328 432 mds_hashtable.remove(set.getNamespace());
Note:
See TracChangeset
for help on using the changeset viewer.