Changeset 12667


Ignore:
Timestamp:
2006-09-05T11:48:02+12:00 (18 years ago)
Author:
kjdon
Message:

prompt for name when creating new element. don't prompt for confirmation when deleting element. change the tree selection path when element added/deleted. some coding style changes incl indenting. tree right click menu implemented here now, not in GEMS.java

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/gli/src/org/greenstone/gatherer/gems/MetadataSetTree.java

    r12564 r12667  
    3939import org.w3c.dom.Document;
    4040
     41import java.awt.*;
     42import java.awt.event.*;
     43import javax.swing.*;
    4144import javax.swing.tree.*;
    42 import javax.swing.JLabel;
    43 import javax.swing.JTree;
    44 import javax.swing.JOptionPane;
     45
    4546import java.util.Observer;
    4647import java.util.Observable;
    4748import java.util.ArrayList;
    48 import java.awt.event.*;
    49 import java.awt.*;
    50 import javax.swing.BorderFactory;
    51 
    52 import java.awt.Component;
    53 
     49
     50import org.greenstone.gatherer.Configuration;
    5451import org.greenstone.gatherer.Dictionary;
    5552
     
    5956 */
    6057public class MetadataSetTree
    61     extends JTree implements Observer,ActionListener {
     58    extends JTree
     59    implements Observer, ActionListener, MouseListener {
    6260   
    6361    private MetadataSetTree self;
    6462    private MetadataSetModel metadata_model;
     63
    6564    public MetadataSetTree(){
    6665
     
    7271        self = this;
    7372
    74     addMouseListener(new MouseAdapter(){
    75         public void mouseClicked(MouseEvent e){
    76             TreePath tse = self.getSelectionPath();
    77             if (tse!=null){
    78             DefaultMutableTreeNode snode= (DefaultMutableTreeNode)tse.getLastPathComponent();
    79              
    80             Object data = snode.getUserObject();
    81                
    82             if (data instanceof MetadataElementModel){
    83                
    84                 ((MetadataElementModel)data).notifyListeners(false);
    85             }
    86             else{
    87                 if (data instanceof MetadataSetInfo){
    88                 ((MetadataSetInfo)data).notifyListeners();
    89                 }
    90             }             
     73    addMouseListener(this);
     74    }
     75   
     76    public void mouseClicked(MouseEvent event) {
     77    // right click
     78    if (SwingUtilities.isRightMouseButton(event)) {
     79            new MetadataSetTreeRightClickMenu(this, event);
     80        } else {
     81        TreePath tse = self.getSelectionPath();
     82        if (tse!=null){
     83        DefaultMutableTreeNode snode= (DefaultMutableTreeNode)tse.getLastPathComponent();
     84       
     85        Object data = snode.getUserObject();
     86       
     87        if (data instanceof MetadataElementModel){
     88           
     89            ((MetadataElementModel)data).notifyListeners(false);
     90        }
     91        else{
     92            if (data instanceof MetadataSetInfo){
     93            ((MetadataSetInfo)data).notifyListeners();
    9194            }
    92         }
    93         }
    94              );
     95        }             
     96        }
     97    }
    9598   
    9699    }
     100   
     101    public void mouseEntered(MouseEvent event) { }
     102
     103    public void mouseExited(MouseEvent event) { }
     104
     105    public void mousePressed(MouseEvent event) { }
     106
     107    public void mouseReleased(MouseEvent event) { }
    97108
    98109    public void update(Observable o,Object arg){
     
    128139    }
    129140       
    130        if (command.equals(GEMSConstants.DELETE_ELEMENT)){
    131            deleteElement();
     141    if (command.equals(GEMSConstants.DELETE_ELEMENT)){
     142        deleteElement();
    132143    }         
    133144
    134145
    135        if (command.equals(GEMSConstants.MOVE_UP)){
    136            moveUpElement();
    137        }
     146    if (command.equals(GEMSConstants.MOVE_UP)){
     147        moveUpElement();
     148    }
    138149       
    139        if (command.equals(GEMSConstants.MOVE_DOWN)){
    140        moveDownElement();
    141        }
     150    if (command.equals(GEMSConstants.MOVE_DOWN)){
     151        moveDownElement();
     152    }
    142153       
    143154    }
     
    145156     
    146157    public void addElement(){
    147      TreePath tse = self.getSelectionPath();
    148          if (tse!=null){
    149              DefaultTreeModel dtm = (DefaultTreeModel)getModel();
    150          DefaultMutableTreeNode snode=(DefaultMutableTreeNode)tse.getLastPathComponent();
    151              MetadataElementModel element_model = new MetadataElementModel(metadata_model.getMetadataSetInfo());
    152          DefaultMutableTreeNode new_node = new DefaultMutableTreeNode(element_model);
    153              dtm.insertNodeInto(new_node,snode,snode.getChildCount());
    154          //update model
    155          Object data = snode.getUserObject();
    156          if (data instanceof MetadataElementModel){
    157                  MetadataElementModel model = (MetadataElementModel) data;
    158                  model.addChild(element_model);
    159          }
    160          else{
    161         if(data instanceof MetadataSetInfo){
    162                  metadata_model.addChild(element_model);
    163                                  
    164         }
    165          }
    166          
    167              dtm.reload(snode);
    168              expandPath(tse);
    169          element_model.notifyListeners(false);
    170      }
    171 
    172     }
     158    TreePath tse = self.getSelectionPath();
     159    if (tse == null) return;
     160    NewMetadataElementNamePrompt name_prompt = new NewMetadataElementNamePrompt(null);
     161    if (name_prompt.isCancelled()) {
     162        return;
     163    }
     164    String new_name = name_prompt.getName();
     165   
     166    DefaultTreeModel dtm = (DefaultTreeModel)getModel();
     167    DefaultMutableTreeNode snode=(DefaultMutableTreeNode)tse.getLastPathComponent();
     168    MetadataElementModel element_model = new MetadataElementModel(metadata_model.getMetadataSetInfo(), new_name);
     169    DefaultMutableTreeNode new_node = new DefaultMutableTreeNode(element_model);
     170    dtm.insertNodeInto(new_node,snode,snode.getChildCount());
     171    //update model
     172    Object data = snode.getUserObject();
     173    if (data instanceof MetadataElementModel){
     174        MetadataElementModel model = (MetadataElementModel) data;
     175        model.addChild(element_model);
     176    }
     177    else{
     178        if(data instanceof MetadataSetInfo){
     179        metadata_model.addChild(element_model);
     180       
     181        }
     182    }
     183   
     184    dtm.reload(snode);
     185    expandPath(tse);
     186    tse = tse.pathByAddingChild(new_node);
     187    self.setSelectionPath(tse);
     188    element_model.notifyListeners(false);
     189    }
     190   
     191   
    173192
    174193    public void deleteElement(){
    175     int result = JOptionPane.showOptionDialog(null, Dictionary.get("GEMS.Confirm_Removal", Dictionary.get("GEMS.Element") + " " +  Dictionary.get("GEMS.Cannot_Undo")), Dictionary.get("GEMS.Confirm_Removal_Title"), JOptionPane.DEFAULT_OPTION, JOptionPane.QUESTION_MESSAGE,null,GEMSConstants.DIALOG_OPTIONS,GEMSConstants.DIALOG_OPTIONS[0]);
    176194   
    177     if (result !=JOptionPane.OK_OPTION) return;
    178 
    179          TreePath tse = self.getSelectionPath();
     195    //int result = JOptionPane.showConfirmDialog(null, Dictionary.get("GEMS.Confirm_DeleteElement", "(Put name here)"), Dictionary.get("GEMS.Confirm_DeleteElement_Title"), JOptionPane.OK_CANCEL_OPTION);
     196    //if (result != JOptionPane.OK_OPTION) return;
     197
     198    TreePath tse = self.getSelectionPath();
    180199         
    181      if (tse!=null){
    182              DefaultTreeModel dtm = (DefaultTreeModel)getModel();
    183          DefaultMutableTreeNode snode=(DefaultMutableTreeNode)tse.getLastPathComponent();
    184              DefaultMutableTreeNode parent = (DefaultMutableTreeNode) snode.getParent();
    185              snode.removeFromParent();
     200    if (tse!=null){
     201        DefaultTreeModel dtm = (DefaultTreeModel)getModel();
     202        DefaultMutableTreeNode snode=(DefaultMutableTreeNode)tse.getLastPathComponent();
     203        DefaultMutableTreeNode parent = (DefaultMutableTreeNode) snode.getParent();
     204        snode.removeFromParent();
    186205           
    187          Object parent_data = parent.getUserObject();
    188              Object data = snode.getUserObject();
    189              MetadataElementModel selected_model =  null;
    190          if (parent_data instanceof MetadataElementModel){
    191                  MetadataElementModel parent_model = (MetadataElementModel) parent_data;
    192                  selected_model = (MetadataElementModel) data;
    193                   parent_model.removeChild(selected_model);
    194          }
    195          else{
     206        Object parent_data = parent.getUserObject();
     207        Object data = snode.getUserObject();
     208        MetadataElementModel selected_model =  null;
     209        if (parent_data instanceof MetadataElementModel){
     210        MetadataElementModel parent_model = (MetadataElementModel) parent_data;
     211        selected_model = (MetadataElementModel) data;
     212        parent_model.removeChild(selected_model);
     213        parent_model.notifyListeners(false);
     214        }
     215        else{
    196216        if(parent_data instanceof MetadataSetInfo){
    197217            selected_model = (MetadataElementModel) data;
    198218            metadata_model.removeChild(selected_model);
     219            ((MetadataSetInfo)parent_data).notifyListeners();
    199220           
    200221        }
    201          }
     222        }
    202223         
    203              dtm.reload(parent);
    204              selected_model.notifyListeners(true);// notify its listeners that it's been deleted
    205      } 
     224        dtm.reload(parent);
     225        self.setSelectionPath(tse.getParentPath());
     226        //selected_model.notifyListeners(true);// notify its listeners that it's been deleted
     227    } 
    206228
    207229    }
     
    255277                //top level element
    256278                if (element_model.getParent() == null){
    257            moved = metadata_model.moveDown(element_model);
     279            moved = metadata_model.moveDown(element_model);
    258280        }
    259281                else{
     
    305327    setModel(dtm);       
    306328             
    307     } 
     329    }
     330
     331    private class MetadataSetTreeRightClickMenu
     332    extends JPopupMenu {
     333
     334    private MetadataSetTreeRightClickMenu(MetadataSetTree meta_set_tree,
     335                          MouseEvent event)
     336    {
     337
     338        super();
     339       
     340            // the right click position
     341        boolean root_node = false;
     342            TreePath right_click_path = meta_set_tree.getPathForLocation(event.getX(), event.getY());
     343            if (right_click_path == null) {
     344        right_click_path = meta_set_tree.getPathForRow(0);
     345        root_node = true;
     346        } else if (right_click_path.equals(meta_set_tree.getPathForRow(0))) {
     347        root_node = true;
     348        }
     349       
     350        meta_set_tree.clearSelection();
     351        meta_set_tree.setSelectionPath(right_click_path);
     352
     353        JMenuItem add_element = new JMenuItem(Dictionary.get("GEMS.Popup.AddElement"));
     354        add_element.addActionListener(meta_set_tree);
     355        add_element.setActionCommand(GEMSConstants.ADD_ELEMENT);
     356        add(add_element);
     357        if (!root_node) {
     358        // delete element also
     359        JMenuItem delete_element = new JMenuItem(Dictionary.get("GEMS.Popup.DeleteElement"));
     360        delete_element.addActionListener(meta_set_tree);
     361        delete_element.setActionCommand(GEMSConstants.DELETE_ELEMENT);
     362        add(delete_element);
     363        }
     364
     365            // Show the popup menu on screen
     366            show(meta_set_tree, event.getX(), event.getY());
     367        }
     368
     369    }
    308370}
    309371
     
    312374   
    313375    private Color SELECTED_COLOR = Color.lightGray;
    314      private Color SELECTED_BORDER_COLOR = Color.gray;
     376    private Color SELECTED_BORDER_COLOR = Color.gray;
    315377     
    316378   
Note: See TracChangeset for help on using the changeset viewer.