TopClassAction.java
01 /*
02  *  Copyright (c) 1995-2012, The University of Sheffield. See the file
03  *  COPYRIGHT.txt in the software or at http://gate.ac.uk/gate/COPYRIGHT.txt
04  *
05  *  This file is part of GATE (see http://gate.ac.uk/), and is free
06  *  software, licenced under the GNU Library General Public License,
07  *  Version 2, June 1991 (in the distribution as file licence.html,
08  *  and also available at http://gate.ac.uk/gate/licence.html).
09  *
10  *  Niraj Aswani, 09/March/07
11  *
12  *  $Id: TopClassAction.html,v 1.0 2007/03/09 16:13:01 niraj Exp $
13  */
14 package gate.gui.ontology;
15 
16 import gate.creole.ontology.*;
17 import gate.gui.MainFrame;
18 
19 import java.awt.*;
20 import java.awt.event.ActionEvent;
21 import javax.swing.*;
22 
23 /**
24  * Action to create a new Top Class.
25  */
26 public class TopClassAction extends AbstractAction {
27   private static final long serialVersionUID = 3258409543049359926L;
28 
29   public TopClassAction(String s, Icon icon) {
30     super(s, icon);
31     mainPanel = new JPanel(new GridBagLayout());
32     GridBagConstraints gbc = new GridBagConstraints();
33     gbc.insets = new Insets(3333);
34     gbc.anchor = GridBagConstraints.WEST;
35 
36     mainPanel.add(new JLabel("Name Space:"), gbc);
37     mainPanel.add(nameSpace = new JTextField(30), gbc);
38 
39     gbc.gridy = 1;
40     mainPanel.add(new JLabel("Class Name:"), gbc);
41     mainPanel.add(className = new JTextField(30), gbc);
42   }
43 
44   @Override
45   public void actionPerformed(ActionEvent actionevent) {
46     nameSpace.setText(ontology.getDefaultNameSpace() == null ?
47       "http://gate.ac.uk/example#" : ontology.getDefaultNameSpace());
48     @SuppressWarnings("serial")
49     JOptionPane pane = new JOptionPane(mainPanel, JOptionPane.QUESTION_MESSAGE,
50       JOptionPane.OK_CANCEL_OPTION, MainFrame.getIcon("ontology-topclass")) {
51       @Override
52       public void selectInitialValue() {
53         className.requestFocusInWindow();
54         className.selectAll();
55       }
56     };
57     pane.createDialog(MainFrame.getInstance(),"New Top Class").setVisible(true);
58     Object selectedValue = pane.getValue();
59     if (selectedValue != null
60     && selectedValue instanceof Integer
61     && (IntegerselectedValue == JOptionPane.OK_OPTION) {
62       String s = nameSpace.getText();
63       if (!Utils.isValidNameSpace(s)) {
64         JOptionPane.showMessageDialog(MainFrame.getInstance(),
65           "Invalid Name Space: " + s + "\nExample: http://gate.ac.uk/example#");
66         return;
67       }
68       if(!Utils.isValidOntologyResourceName(className.getText())) {
69         JOptionPane.showMessageDialog(MainFrame.getInstance(),
70           "Invalid Class Name: " + className.getText());
71         return;
72       }
73       if(Utils.getOResourceFromMap(ontology,s + className.getText()) != null) {
74         JOptionPane.showMessageDialog(MainFrame.getInstance(),"<html>" +
75           "Resource <b>" + s+className.getText() "</b> already exists.");
76         return;
77       }
78       ontology.addOClass(ontology.createOURI(nameSpace.getText() + className.getText()));
79     }
80   }
81 
82   public Ontology getOntology() {
83     return ontology;
84   }
85 
86   public void setOntology(Ontology ontology) {
87     this.ontology = ontology;
88   }
89 
90   protected JTextField nameSpace;
91   protected JTextField className;
92   protected JPanel mainPanel;
93   protected Ontology ontology;
94 }