001 /*
002 * Copyright (c) 1995-2010, 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: SubClassAction.html,v 1.0 2007/03/09 16:13:01 niraj Exp $
013 */
014 package gate.gui.ontology;
015
016 import gate.creole.ontology.*;
017 import gate.gui.MainFrame;
018
019 import java.awt.*;
020 import java.awt.event.ActionEvent;
021 import java.util.*;
022 import javax.swing.*;
023 import javax.swing.tree.DefaultMutableTreeNode;
024
025 /**
026 * Action to create a new subclass.
027 */
028 public class SubClassAction extends AbstractAction implements
029 TreeNodeSelectionListener {
030 private static final long serialVersionUID = 3258409543049359926L;
031
032 public SubClassAction(String s, Icon icon) {
033 super(s, icon);
034 mainPanel = new JPanel(new GridBagLayout());
035 GridBagConstraints gbc = new GridBagConstraints();
036 gbc.insets = new Insets(3, 3, 3, 3);
037 gbc.anchor = GridBagConstraints.WEST;
038
039 mainPanel.add(new JLabel("Name Space:"), gbc);
040 mainPanel.add(nameSpace = new JTextField(30), gbc);
041
042 gbc.gridy = 1;
043 mainPanel.add(new JLabel("Class Name:"), gbc);
044 mainPanel.add(className = new JTextField(30), gbc);
045 }
046
047 public void actionPerformed(ActionEvent actionevent) {
048 OResource selectedNode = ((OResourceNode)selectedNodes.get(0)
049 .getUserObject()).getResource();
050 String ns = selectedNode.getURI().getNameSpace();
051 if(gate.creole.ontology.Utils.hasSystemNameSpace(
052 selectedNode.getURI().toString())) {
053 ns = ontology.getDefaultNameSpace();
054 }
055 nameSpace.setText(ns);
056 ArrayList<OClass> arraylist = new ArrayList<OClass>();
057 for(int i = 0; i < selectedNodes.size(); i++) {
058 Object obj = ((OResourceNode)((DefaultMutableTreeNode)
059 selectedNodes.get(i)).getUserObject()).getResource();
060 if(obj instanceof OClass) arraylist.add((OClass)obj);
061 }
062
063 nameSpace.setText(ontology.getDefaultNameSpace() == null ?
064 "http://gate.ac.uk/example#" : ontology.getDefaultNameSpace());
065 JOptionPane pane = new JOptionPane(mainPanel, JOptionPane.QUESTION_MESSAGE,
066 JOptionPane.OK_CANCEL_OPTION, MainFrame.getIcon("ontology-subclass")) {
067 public void selectInitialValue() {
068 className.requestFocusInWindow();
069 className.selectAll();
070 }
071 };
072 pane.createDialog(MainFrame.getInstance(),"New Sub Class").setVisible(true);
073 Object selectedValue = pane.getValue();
074 if (selectedValue != null
075 && selectedValue instanceof Integer
076 && (Integer) selectedValue == JOptionPane.OK_OPTION) {
077 String s = nameSpace.getText();
078 if (!Utils.isValidNameSpace(s)) {
079 JOptionPane.showMessageDialog(MainFrame.getInstance(),
080 "Invalid Name Space: " + s + "\nExample: http://gate.ac.uk/example#");
081 return;
082 }
083 if(!Utils.isValidOntologyResourceName(className.getText())) {
084 JOptionPane.showMessageDialog(MainFrame.getInstance(),
085 "Invalid Class Name: " + className.getText());
086 return;
087 }
088 if(ontology.getOResourceFromMap(s + className.getText()) != null) {
089 JOptionPane.showMessageDialog(MainFrame.getInstance(),"<html>" +
090 "Resource <b>" + s+className.getText() + "</b> already exists.");
091 return;
092 }
093
094 OClass oclassimpl = ontology.addOClass(new URI(s + className.getText(),
095 false), OConstants.OWL_CLASS);
096 for(int k = 0; k < arraylist.size(); k++) {
097 (arraylist.get(k)).addSubClass(oclassimpl);
098 }
099 }
100 }
101
102 public Ontology getOntology() {
103 return ontology;
104 }
105
106 public void setOntology(Ontology ontology) {
107 this.ontology = ontology;
108 }
109
110 public void selectionChanged(ArrayList<DefaultMutableTreeNode> arraylist) {
111 selectedNodes = arraylist;
112 }
113
114 protected JTextField nameSpace;
115 protected JTextField className;
116 protected JPanel mainPanel;
117 protected ArrayList<DefaultMutableTreeNode> selectedNodes;
118 protected Ontology ontology;
119 }
|