Changeset 8375


Ignore:
Timestamp:
2004-10-19T13:26:42+13:00 (20 years ago)
Author:
mdewsnip
Message:

First set of changes to improve the GEMS, by Attila Aros.

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  
    3333 * along with this program; if not, write to the Free Software
    3434 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
    35  *########################################################################
     35 *############################################## ##########################
    3636 */
    3737package org.greenstone.gatherer.gems;
     
    4242import java.util.*;
    4343import javax.swing.*;
     44import java.lang.String;
    4445import javax.swing.event.*;
    4546import javax.swing.filechooser.*;
     
    5455import org.greenstone.gatherer.gui.GLIButton;
    5556import org.greenstone.gatherer.gui.SmarterTable;
    56 import org.greenstone.gatherer.gui.SmarterTree;
    5757import org.greenstone.gatherer.gui.ModalDialog;
    5858import org.greenstone.gatherer.gui.NonWhitespaceField;
    5959import org.greenstone.gatherer.gui.TransformCharacterTextField;
    6060import org.greenstone.gatherer.help.HelpFrame;
     61//import org.greenstone.gatherer.cdm.*;
    6162import org.greenstone.gatherer.util.Codec;
    6263import org.greenstone.gatherer.util.Utility;
     
    8788    static final private String VALUES = "values";
    8889
    89     static private Configuration config = null;
     90    static public Configuration config = null;
    9091    static private MetadataSetManager msm = new MetadataSetManager();
    9192
    92     private AddElementActionListener add_element_action_listener = null;
     93    public AddElementActionListener add_element_action_listener = null;
    9394    private AddFileActionListener add_file_action_listener = null;
    94     private AddSetActionListener add_set_action_listener = null;
     95    public AddSetActionListener add_set_action_listener = null;
    9596    /** 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     private AddOrEditAttributeActionListener add_or_edit_attribute_action_listener = null;
     97    public AddOrEditAttributeActionListener add_or_edit_attribute_action_listener = null;
    9798    /** 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     private AddOrEditValueActionListener add_or_edit_value_action_listener = null;
     99    public AddOrEditValueActionListener add_or_edit_value_action_listener = null;
    99100    private boolean ignore = false;
    100101    /** A card layout is used to switch between the two differing detail views. */
     
    135136    private MetadataSet current_set = null;
    136137    private Object target = null;
    137     private RemoveSetActionListener remove_set_action_listener;
     138    public RemoveSetActionListener remove_set_action_listener;
    138139    private SmarterTable element_attributes = null;
    139140    private SmarterTable profile_attributes = null;
    140141    private SmarterTable set_attributes = null;
    141142    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;
    142148    /** A tree that represents the current metadata sets associated with this collection. */
    143149    private SmarterTree mds_tree = null;
     
    150156    // Parse arguments
    151157    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       // }
    153167    // Debugging control
    154168    if (go.debug) {
     
    232246    mds_tree.setSelectionColor(config.getColor("coloring.collection_selection_background", false));
    233247    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);
    235252    details_pane = new JPanel();
    236253    details_pane.setOpaque(false);
     
    244261    JLabel set_name_label = new JLabel();
    245262    set_name_label.setOpaque(false);
    246     Dictionary.setText(set_name_label, "MEM.Name");
     263    //Dictionary.setText(set_name_label, "MEM.Name");
    247264    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);
    250267         
    251268    JPanel set_attributes_pane = new JPanel();
     
    264281    set_attributes.setSelectedTextColor(config.getColor("coloring.collection_selection_foreground", false));
    265282    set_attributes.getSelectionModel().setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
    266          
     283    set_attributes.addMouseListener(popupListener);   
    267284    JPanel element_details_pane = new JPanel();
    268285    element_details_pane.setOpaque(false);
     
    272289    JLabel element_name_label = new JLabel();
    273290    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);
    278295         
    279296    JPanel element_inner_pane = new JPanel();
     
    294311    element_attributes.setSelectedTextColor(config.getColor("coloring.collection_selection_foreground", false));
    295312    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();
    298316    element_values_pane = new JPanel();
    299317    element_values_pane.setOpaque(false);
     
    315333    JLabel profile_name_label = new JLabel();
    316334    profile_name_label.setOpaque(false);
    317     Dictionary.setText(profile_name_label, "MEM.Name");
     335    //Dictionary.setText(profile_name_label, "MEM.Name");
    318336    profile_name = new JLabel();
    319337    profile_name.setBorder(BorderFactory.createLoweredBevelBorder());
     
    436454    profile_attributes.getSelectionModel().addListSelectionListener(new AttributesListSelectionListener(profile_attributes));
    437455    set_attributes.getSelectionModel().addListSelectionListener(new AttributesListSelectionListener(set_attributes));
    438     element_values.addTreeSelectionListener(new ElementValuesTreeSelectionListener());
     456    //element_values.addTreeSelectionListener(new ElementValuesTreeSelectionListener());
    439457    mds_tree.addTreeSelectionListener(new MDSTreeSelectionListener());
    440458    // Layout
     
    454472    set_details_pane.setBorder(BorderFactory.createCompoundBorder(BorderFactory.createTitledBorder(Dictionary.get("MEM.Set_Details")), BorderFactory.createEmptyBorder(2,2,2,2)));
    455473    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);
    457475    set_details_pane.add(set_attributes_pane, BorderLayout.CENTER);
    458476
    459477    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);
    462480               
    463481    element_attributes_scroll.setViewportView(element_attributes);
     
    468486         
    469487    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);
    472490    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());
    477495    element_inner_pane.add(element_attributes_pane);
    478     element_inner_pane.add(element_values_pane);
     496        //element_inner_pane.add(element_values_pane);
    479497         
    480498    element_details_pane.setBorder(BorderFactory.createCompoundBorder(BorderFactory.createTitledBorder(Dictionary.get("MEM.Element_Details")), BorderFactory.createEmptyBorder(2,2,2,2)));
     
    511529    button_label_pane.setLayout(new GridLayout(4,1,0,2));
    512530    button_label_pane.setBorder(BorderFactory.createEmptyBorder(0,0,0,2));
    513     button_label_pane.add(set_label);
     531    //button_label_pane.add(set_label);
    514532    // 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);
    518536
    519537    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);
    525544    // 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);
    535555         
    536556    button_pane.setBorder(BorderFactory.createEmptyBorder(5,0,0,0));
    537557    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);
    540560
    541561    content_pane.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
     
    553573    {
    554574    // Flush debug
     575        System.out.println("Final exit func");
    555576    DebugStream.closeDebugStream();
    556577
     
    575596    public JMenuItem edit_paste  = null;
    576597    public JMenuItem help_help   = null;
    577 
     598        public JMenuItem file_delete = null;
     599        public JMenuItem file_preferences = null;
    578600    public GEMSMenuBar()
    579601    {
    580602        file = new JMenu();
    581603        file.setMnemonic(KeyEvent.VK_F);
    582         Dictionary.registerText(file, "Menu.File");
     604        Dictionary.registerText(file, "Gems.Menu.File");
    583605
    584606        file_exit = new JMenuItem();
    585607        file_exit.addActionListener(this);
    586608        file_exit.setMnemonic(KeyEvent.VK_X);
    587         Dictionary.registerText(file_exit, "Menu.File_Exit");
     609        Dictionary.registerText(file_exit, "Gems.Menu.File_Exit");
    588610
    589611        file_new = new JMenuItem();
    590612        file_new.addActionListener(this);
    591613        file_new.setMnemonic(KeyEvent.VK_N);
    592         Dictionary.registerText(file_new, "Menu.File_New");
     614        Dictionary.registerText(file_new, "Gems.Menu.File_New");
    593615
    594616        file_open = new JMenuItem();
    595617        file_open.addActionListener(this);
    596618        file_open.setMnemonic(KeyEvent.VK_O);
    597         Dictionary.registerText(file_open, "Menu.File_Open");
     619        Dictionary.registerText(file_open, "Gems.Menu.File_Open");
    598620
    599621        file_save = new JMenuItem();
    600622        file_save.addActionListener(this);
    601623        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");
    603635
    604636        // Layout (file menu)
     
    606638        file.add(file_open);
    607639        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());
    609644        file.add(file_exit);
    610 
     645           
    611646        // Edit menu
    612647        edit = new JMenu();
    613648        edit.setMnemonic(KeyEvent.VK_E);
    614         Dictionary.registerText(edit, "Menu.Edit");
     649        Dictionary.registerText(edit, "Gems.Menu.Edit");
    615650
    616651        edit_cut = new JMenuItem();
    617652        edit_cut.addActionListener(this);
    618653        edit_cut.setMnemonic(KeyEvent.VK_X);
    619         Dictionary.registerText(edit_cut, "Menu.Edit_Cut");
     654        Dictionary.registerText(edit_cut, "Gems.Menu.Edit_Cut");
    620655
    621656        edit_copy = new JMenuItem();
    622657        edit_copy.addActionListener(this);
    623658        edit_copy.setMnemonic(KeyEvent.VK_C);
    624         Dictionary.registerText(edit_copy, "Menu.Edit_Copy");
     659        Dictionary.registerText(edit_copy, "Gems.Menu.Edit_Copy");
    625660
    626661        edit_paste = new JMenuItem();
    627662        edit_paste.addActionListener(this);
    628663        edit_paste.setMnemonic(KeyEvent.VK_V);
    629         Dictionary.registerText(edit_paste, "Menu.Edit_Paste");
     664        Dictionary.registerText(edit_paste, "Gems.Menu.Edit_Paste");
    630665
    631666        // Layout (edit menu)
     
    637672        help = new JMenu();
    638673        help.setIcon(Utility.HELP_ICON);
    639         Dictionary.setText(help, "Menu.Help");
     674        Dictionary.setText(help, "Gems.Menu.Help");
    640675
    641676        help_help = new JMenuItem();
    642677        help_help.addActionListener(this);
    643         Dictionary.registerText(help_help, "Menu.Help");
     678        Dictionary.registerText(help_help, "Gems.Menu.Help");
    644679
    645680        // Layout (help menu)
     
    662697        if (event_source == file_new) {
    663698        add_set.doClick();
     699                set_changed = true;
    664700        return;
    665701        }
     
    674710            model.add(null, metadata_set, GEMSNode.SET);
    675711        }
     712                 set_changed = true;
    676713        return;
    677714        }
     
    679716        // File -> Save
    680717        if (event_source == file_save) {
    681         // Don't actually need to do anything
     718        msm.save();
     719                set_changed = false;
    682720        return;
    683721        }
     
    685723        // File -> Exit
    686724        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                }
    688743        }
    689744
     
    825880    mds_tree = null;
    826881    target = null;
    827 
     882       
     883        popupListener = null;
    828884    // Dispose of inner dialogs
    829885    if (add_element_action_listener != null) {
     
    903959        Dictionary.setText(language_label, "MEM.Language");
    904960        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");
    905964        // !!! language_box.setRenderer(new LanguageListCellRenderer());
    906965        Dictionary.setTooltip(language_box, "MEM.Attribute_Language_Tooltip");
     
    9931052        if (success) {
    9941053            // Hide dialog
     1054                     set_changed = true;
    9951055            setVisible(false);
    9961056        }
     
    10161076        // Name combo box is enabled except when attributes are edited
    10171077        //name.setEnabled((source != edit_attribute));
     1078                System.out.println("elsed");
    10181079        name_to_values.clear();
    10191080        name.clear();
     
    11061167        }
    11071168        // 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) {
    11091170            add_type = true;
    11101171            Dictionary.setText(this, "MEM.AddAttribute");
     
    11191180            setVisible(true);
    11201181        }
     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               // }
    11211190        else if(current_attribute != -1) {
    11221191            AttributeTableModel model = null;
     
    13731442            element = null;
    13741443            setVisible(false);
     1444                     set_changed = true;
    13751445        }
    13761446        // Otherwise show an error message and do not proceed.
     
    16261696            set = null;
    16271697            setVisible(false);
     1698                     set_changed = true;
    16281699        }
    16291700        // Otherwise show a warning.
     
    18061877        // Hide dialog
    18071878        setVisible(false);
    1808 
     1879                 set_changed = true;
    18091880        }
    18101881        else if(source == cancel_button) {
     
    18941965        /** Invoked after nodes have been inserted into the tree. */
    18951966    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        //  }
    18991970    }
    19001971    /** Invoked after nodes have been removed from the tree. */
     
    19031974    /** Invoked after the tree has drastically changed structure from a given node down. */
    19041975    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()));
    19061977    }
    19071978    }
     
    19502021            remove_attribute.setEnabled(false);
    19512022            ignore = false;
     2023                     set_changed = true;
    19522024        }
    19532025        }
     
    19752047            card_layout.show(details_pane, BLANK);
    19762048            ignore = false;
     2049                     set_changed = true;
    19772050        }
    19782051        }
     
    20282101            card_layout.show(details_pane, BLANK);
    20292102            ignore = false;
     2103                     set_changed = true;
    20302104        }
    20312105        }
     
    20442118        if(result == 0) {
    20452119            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);
    20482122            // Meanwhile disable/enable controls given we had a value selected, but no longer do.
    20492123            edit_value.setEnabled(false);
    20502124            remove_value.setEnabled(false);
    20512125            ignore = false;
     2126                     set_changed = true;
    20522127        }
    20532128        }
     
    22622337    }
    22632338    }
    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 
    22652543    /** Wrap a ElementWrapper so we get its name when we ask for toString(), not its identifier. */
    22662544    private class NameElementWrapperEntry
  • trunk/gli/src/org/greenstone/gatherer/gems/GEMSNode.java

    r8274 r8375  
    4040import java.util.*;
    4141import javax.swing.tree.*;
     42import javax.swing.JPopupMenu;
     43import java.awt.event.*;
    4244import org.greenstone.gatherer.Configuration;
    4345import org.greenstone.gatherer.DebugStream;
     
    5153 */
    5254public class GEMSNode
    53     extends DefaultMutableTreeNode {
     55    extends DefaultMutableTreeNode{
    5456    private AttributeTableModel model = null;
    55     private int type = 0;
     57    public int type = 0;
    5658    private String text = null;
    5759    static final public int COLLECTION = 0;
     
    6365    public GEMSNode() {
    6466    this.type = ROOT;
     67       
    6568    }
    6669
     
    203206        NodeList elements = set.getElements();
    204207        for (int i = 0; i < elements.getLength(); i++) {
     208               
    205209        children.add(new GEMSNode(ELEMENT, new ElementWrapper((Element) elements.item(i)), this));
    206210        }
    207211    }
    208212    }
     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   
    209261}
  • trunk/gli/src/org/greenstone/gatherer/gems/MetadataSetManager.java

    r8270 r8375  
    4545import org.greenstone.gatherer.DebugStream;
    4646import org.greenstone.gatherer.util.Utility;
     47import org.greenstone.gatherer.collection.CollectionManager;
     48import org.greenstone.gatherer.file.*;
    4749import org.apache.xerces.parsers.*;
    4850import org.apache.xml.serialize.*;
     
    6365    /** The name of the hidden, or system, metadata set. */
    6466    static final public String HIDDEN = "hidden";
    65 
     67    static public CollectionManager col_man = null;
    6668    /** A mapping from metadata namespace to metadata set. */
    6769    static private Hashtable mds_hashtable = new Hashtable();
     
    7375    /** Constructor. */
    7476    public MetadataSetManager() {
     77        col_man = new CollectionManager();
    7578    }
    7679
     
    323326    // No such set. No such element.
    324327    }
    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    }
    327431    public void removeSet(MetadataSet set) {
    328432    mds_hashtable.remove(set.getNamespace());
Note: See TracChangeset for help on using the changeset viewer.