DeleteOntologyResourceAction.java
001 /*
002  *  Copyright (c) 1995-2012, The University of Sheffield. See the file
003  *  COPYRIGHT.txt in the software or at http://gate.ac.uk/gate/COPYRIGHT.txt
004  *
005  *  This file is part of GATE (see http://gate.ac.uk/), and is free
006  *  software, licenced under the GNU Library General Public License,
007  *  Version 2, June 1991 (in the distribution as file licence.html,
008  *  and also available at http://gate.ac.uk/gate/licence.html).
009  *
010  *  Niraj Aswani, 09/March/07
011  *
012  *  $Id: DeleteOntologyResourceAction.html,v 1.0 2007/03/09 16:13:01 niraj Exp $
013  */
014 package gate.gui.ontology;
015 
016 import gate.creole.ontology.OClass;
017 import gate.creole.ontology.OInstance;
018 import gate.creole.ontology.OResource;
019 import gate.creole.ontology.OURI;
020 import gate.creole.ontology.Ontology;
021 import gate.creole.ontology.RDFProperty;
022 import gate.gui.MainFrame;
023 
024 import java.awt.event.ActionEvent;
025 import java.util.ArrayList;
026 
027 import javax.swing.AbstractAction;
028 import javax.swing.Icon;
029 import javax.swing.JList;
030 import javax.swing.JOptionPane;
031 import javax.swing.JScrollPane;
032 import javax.swing.tree.DefaultMutableTreeNode;
033 
034 /**
035  * Action to delete a resource from ontology.
036  */
037 public class DeleteOntologyResourceAction extends AbstractAction implements
038                                                                 TreeNodeSelectionListener {
039   private static final long serialVersionUID = 3257289136439439920L;
040 
041   public DeleteOntologyResourceAction(String caption, Icon icon) {
042     super(caption, icon);
043   }
044 
045   @Override
046   public void actionPerformed(ActionEvent actionevent) {
047     String[] resourcesToDelete = new String[selectedNodes.size()];
048     int i = 0;
049     for (DefaultMutableTreeNode node : selectedNodes) {
050       OResource object = ((OResourceNodenode.getUserObject()).getResource();
051       resourcesToDelete[i++= object.getONodeID().toString();
052     }
053     JList<String> list = new JList<String>(resourcesToDelete);
054     int choice = JOptionPane.showOptionDialog(MainFrame.getInstance(),
055       new Object[]{"Are you sure you want to delete the following resources?",
056       "\n\n"new JScrollPane(list)'\n'}"Delete resources",
057       JOptionPane.DEFAULT_OPTION, JOptionPane.QUESTION_MESSAGE, null,
058       new String[]{"Delete resources""Cancel"}"Cancel");
059     if (choice == JOptionPane.CLOSED_OPTION || choice == 1)  { return}
060     for (DefaultMutableTreeNode node : selectedNodes) {
061       Object object = ((OResourceNodenode.getUserObject()).getResource();
062       try {
063         if (object instanceof OClass) {
064           if (ontology.containsOClass(((OClassobject).getONodeID()))
065             ontology.removeOClass((OClassobject);
066           continue;
067         }
068         if (object instanceof OInstance) {
069           if (ontology.getOInstance((OURI)((OInstanceobject).getONodeID()) != null)
070             ontology.removeOInstance((OInstanceobject);
071           continue;
072         }
073         if ((object instanceof RDFProperty)
074           && Utils.getOResourceFromMap(ontology,
075             ((RDFPropertyobject).getONodeID().toString()) != null)
076           ontology.removeProperty((RDFPropertyobject);
077       }
078       catch (Exception re) {
079         re.printStackTrace();
080         JOptionPane.showMessageDialog(MainFrame.getInstance(), re.getMessage() +
081           "\nPlease see tab messages for more information!");
082       }
083     }
084   }
085 
086   public Ontology getOntology() {
087     return ontology;
088   }
089 
090   public void setOntology(Ontology ontology) {
091     this.ontology = ontology;
092   }
093 
094   @Override
095   public void selectionChanged(ArrayList<DefaultMutableTreeNode> arraylist) {
096     selectedNodes = arraylist;
097   }
098 
099   protected Ontology ontology;
100   protected ArrayList<DefaultMutableTreeNode> selectedNodes;
101 }