001 /**
002 * Copyright (C) 2007-2009, Jens Lehmann
003 *
004 * This file is part of DL-Learner.
005 *
006 * DL-Learner is free software; you can redistribute it and/or modify
007 * it under the terms of the GNU General Public License as published by
008 * the Free Software Foundation; either version 3 of the License, or
009 * (at your option) any later version.
010 *
011 * DL-Learner is distributed in the hope that it will be useful,
012 * but WITHOUT ANY WARRANTY; without even the implied warranty of
013 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
014 * GNU General Public License for more details.
015 *
016 * You should have received a copy of the GNU General Public License
017 * along with this program. If not, see <http://www.gnu.org/licenses/>.
018 *
019 */
020 package org.dllearner.tools.protege;
021
022 import java.awt.event.MouseEvent;
023 import java.awt.event.MouseListener;
024 import java.awt.event.MouseMotionListener;
025 import java.beans.PropertyChangeEvent;
026 import java.beans.PropertyChangeListener;
027 import java.util.Set;
028 import java.util.Vector;
029
030 import javax.swing.JComboBox;
031 import javax.swing.plaf.basic.BasicComboPopup;
032
033 import org.dllearner.core.EvaluatedDescription;
034 import org.dllearner.core.owl.Individual;
035 import org.dllearner.learningproblems.EvaluatedDescriptionClass;
036
037 /**
038 * This class takes care of all events happening in the GraphicalCoveragePanel.
039 *
040 * @author Christian Koetteritzsch
041 *
042 */
043 public class GraphicalCoveragePanelHandler implements MouseMotionListener,
044 MouseListener, PropertyChangeListener {
045
046 private final GraphicalCoveragePanel panel;
047 private final EvaluatedDescription description;
048 private final DLLearnerModel model;
049 private BasicComboPopup scrollPopup;
050 private final Vector<String> individualComboBox;
051 private JComboBox indiBox;
052
053 /**
054 * This is the constructor for the handler.
055 *
056 * @param p
057 * GraphicalCoveragePanel
058 * @param eval
059 * EvaluatedDescription
060 * @param m
061 * DLLearnerModel
062 */
063 public GraphicalCoveragePanelHandler(GraphicalCoveragePanel p,
064 EvaluatedDescription eval, DLLearnerModel m) {
065 this.panel = p;
066 description = eval;
067 model = m;
068 individualComboBox = new Vector<String>();
069
070 }
071
072 @Override
073 public void mouseDragged(MouseEvent arg0) {
074 // TODO Auto-generated method stub
075
076 }
077
078 @Override
079 public void mouseMoved(MouseEvent m) {
080 panel.getMoreDetailForSuggestedConceptsPanel().repaint();
081 if (m.getX() >= panel.getX1() + panel.getShiftCovered()
082 && m.getX() <= panel.getX2() + panel.getShiftCovered()
083 && m.getY() >= panel.getY1() && m.getY() <= panel.getY2()
084 || m.getX() >= panel.getX1() + panel.getShiftNewConcept()
085 && m.getX() <= panel.getX2() + panel.getShiftNewConcept()
086 && m.getY() >= panel.getY1() && m.getY() <= panel.getY2()
087 || m.getX() >= panel.getX1() + panel.getShiftNewConceptX()
088 && m.getX() <= panel.getX2() + panel.getShiftNewConceptX()
089 && m.getY() >= panel.getY1() + panel.getShiftNewConcept()
090 && m.getY() <= panel.getY2() + panel.getShiftNewConcept()
091 || m.getX() >= panel.getX1() - panel.getShiftOldConcept()
092 && m.getX() <= panel.getX2() - panel.getShiftOldConcept()
093 && m.getY() >= panel.getY1() && m.getY() <= panel.getY2()) {
094 panel.getGraphicalCoveragePanel().setToolTipText(
095 "To view all Individuals please click on the plus");
096 }
097
098 Vector<IndividualPoint> v = panel.getIndividualVector();
099 for (int i = 0; i < v.size(); i++) {
100 if (v.get(i).getXAxis() >= m.getX() - 5
101 && v.get(i).getXAxis() <= m.getX() + 5
102 && v.get(i).getYAxis() >= m.getY() - 5
103 && v.get(i).getYAxis() <= m.getY() + 5) {
104 panel.getGraphicalCoveragePanel().setToolTipText(
105 v.get(i).getIndividualName());
106 }
107 }
108 }
109
110 @Override
111 public void propertyChange(PropertyChangeEvent arg0) {
112 panel.getMoreDetailForSuggestedConceptsPanel().repaint();
113 panel.repaint();
114 }
115
116 @Override
117 public void mouseClicked(MouseEvent arg0) {
118 if (panel.getEvaluateddescription() != null) {
119 if (arg0.getX() >= panel.getX1() + panel.getShiftCovered()
120 && arg0.getX() <= panel.getX2() + panel.getShiftCovered()
121 && arg0.getY() >= panel.getY1()
122 && arg0.getY() <= panel.getY2()) {
123
124 // panel.getMoreDetailForSuggestedConceptsPanel().repaint();
125 individualComboBox.clear();
126
127 Set<Individual> covInd = ((EvaluatedDescriptionClass) description)
128 .getCoveredInstances();
129 int i = covInd.size();
130 if (i > 0) {
131 for (Individual ind : covInd) {
132 Set<String> uriString = model.getOntologyURIString();
133 for(String uri : uriString) {
134 if(ind.toString().contains(uri)) {
135 individualComboBox.add(ind.toManchesterSyntaxString(uri, null));
136 }
137 }
138 }
139 indiBox = new JComboBox(individualComboBox);
140 scrollPopup = new BasicComboPopup(indiBox);
141 scrollPopup.setAutoscrolls(true);
142 scrollPopup.show(panel, arg0.getX(), arg0.getY());
143 // panel.getMoreDetailForSuggestedConceptsPanel().repaint();
144 }
145 }
146
147 if (arg0.getX() >= panel.getX1() + panel.getShiftNewConcept()
148 && arg0.getX() <= panel.getX2()
149 + panel.getShiftNewConcept()
150 && arg0.getY() >= panel.getY1()
151 && arg0.getY() <= panel.getY2()
152 || arg0.getX() >= panel.getX1()
153 + panel.getShiftNewConceptX()
154 && arg0.getX() <= panel.getX2()
155 + panel.getShiftNewConceptX()
156 && arg0.getY() >= panel.getY1()
157 + panel.getShiftNewConcept()
158 && arg0.getY() <= panel.getY2()
159 + panel.getShiftNewConcept()) {
160
161 // panel.getMoreDetailForSuggestedConceptsPanel().repaint();
162 individualComboBox.clear();
163 Set<Individual> addInd = ((EvaluatedDescriptionClass) description)
164 .getAdditionalInstances();
165 int i = addInd.size();
166 if (i > 0) {
167 for (Individual ind : addInd) {
168 Set<String> uriString = model.getOntologyURIString();
169 for(String uri : uriString) {
170 if(ind.toString().contains(uri)) {
171 individualComboBox.add(ind.toManchesterSyntaxString(uri, null));
172 }
173 }
174 }
175 indiBox = new JComboBox(individualComboBox);
176 scrollPopup = new BasicComboPopup(indiBox);
177 scrollPopup.setAutoscrolls(true);
178 scrollPopup.show(panel, arg0.getX(), arg0.getY());
179 // panel.getMoreDetailForSuggestedConceptsPanel().repaint();
180 }
181 }
182
183 if (arg0.getX() >= panel.getX1() - panel.getShiftOldConcept()
184 && arg0.getX() <= panel.getX2()
185 - panel.getShiftOldConcept()
186 && arg0.getY() >= panel.getY1()
187 && arg0.getY() <= panel.getY2()) {
188
189 // panel.getMoreDetailForSuggestedConceptsPanel().repaint();
190 individualComboBox.clear();
191 Set<Individual> notCovInd = model.getReasoner().getIndividuals(
192 model.getCurrentConcept());
193 notCovInd.removeAll(((EvaluatedDescriptionClass) description)
194 .getCoveredInstances());
195 int i = notCovInd.size();
196 if (i > 0) {
197 for (Individual ind : notCovInd) {
198 Set<String> uriString = model.getOntologyURIString();
199 for(String uri : uriString) {
200 if(ind.toString().contains(uri)) {
201 individualComboBox.add(ind.toManchesterSyntaxString(uri, null));
202 }
203 }
204 }
205 indiBox = new JComboBox(individualComboBox);
206 scrollPopup = new BasicComboPopup(indiBox);
207 scrollPopup.setAutoscrolls(true);
208 scrollPopup.show(panel, arg0.getX(), arg0.getY());
209 // panel.getMoreDetailForSuggestedConceptsPanel().repaint();
210 }
211 }
212 }
213 }
214
215 @Override
216 public void mouseEntered(MouseEvent arg0) {
217 // TODO Auto-generated method stub
218
219 }
220
221 @Override
222 public void mouseExited(MouseEvent arg0) {
223 // TODO Auto-generated method stub
224
225 }
226
227 @Override
228 public void mousePressed(MouseEvent arg0) {
229 // TODO Auto-generated method stub
230
231 }
232
233 @Override
234 public void mouseReleased(MouseEvent arg0) {
235 // TODO Auto-generated method stub
236
237 }
238
239 }