Changeset 12667
- Timestamp:
- 2006-09-05T11:48:02+12:00 (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/gli/src/org/greenstone/gatherer/gems/MetadataSetTree.java
r12564 r12667 39 39 import org.w3c.dom.Document; 40 40 41 import java.awt.*; 42 import java.awt.event.*; 43 import javax.swing.*; 41 44 import javax.swing.tree.*; 42 import javax.swing.JLabel; 43 import javax.swing.JTree; 44 import javax.swing.JOptionPane; 45 45 46 import java.util.Observer; 46 47 import java.util.Observable; 47 48 import 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 50 import org.greenstone.gatherer.Configuration; 54 51 import org.greenstone.gatherer.Dictionary; 55 52 … … 59 56 */ 60 57 public class MetadataSetTree 61 extends JTree implements Observer,ActionListener { 58 extends JTree 59 implements Observer, ActionListener, MouseListener { 62 60 63 61 private MetadataSetTree self; 64 62 private MetadataSetModel metadata_model; 63 65 64 public MetadataSetTree(){ 66 65 … … 72 71 self = this; 73 72 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(); 91 94 } 92 } 93 } 94 );95 } 96 } 97 } 95 98 96 99 } 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) { } 97 108 98 109 public void update(Observable o,Object arg){ … … 128 139 } 129 140 130 131 141 if (command.equals(GEMSConstants.DELETE_ELEMENT)){ 142 deleteElement(); 132 143 } 133 144 134 145 135 136 137 146 if (command.equals(GEMSConstants.MOVE_UP)){ 147 moveUpElement(); 148 } 138 149 139 140 moveDownElement();141 150 if (command.equals(GEMSConstants.MOVE_DOWN)){ 151 moveDownElement(); 152 } 142 153 143 154 } … … 145 156 146 157 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 173 192 174 193 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]);176 194 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(); 180 199 181 182 183 184 185 200 if (tse!=null){ 201 DefaultTreeModel dtm = (DefaultTreeModel)getModel(); 202 DefaultMutableTreeNode snode=(DefaultMutableTreeNode)tse.getLastPathComponent(); 203 DefaultMutableTreeNode parent = (DefaultMutableTreeNode) snode.getParent(); 204 snode.removeFromParent(); 186 205 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{ 196 216 if(parent_data instanceof MetadataSetInfo){ 197 217 selected_model = (MetadataElementModel) data; 198 218 metadata_model.removeChild(selected_model); 219 ((MetadataSetInfo)parent_data).notifyListeners(); 199 220 200 221 } 201 222 } 202 223 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 } 206 228 207 229 } … … 255 277 //top level element 256 278 if (element_model.getParent() == null){ 257 moved = metadata_model.moveDown(element_model);279 moved = metadata_model.moveDown(element_model); 258 280 } 259 281 else{ … … 305 327 setModel(dtm); 306 328 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 } 308 370 } 309 371 … … 312 374 313 375 private Color SELECTED_COLOR = Color.lightGray; 314 376 private Color SELECTED_BORDER_COLOR = Color.gray; 315 377 316 378
Note:
See TracChangeset
for help on using the changeset viewer.