/* * Created on May 20, 2004 * * TODO To change the template for this generated file go to * Window - Preferences - Java - Code Generation - Code and Comments */ package org.mindswap.swoop.utils.ui; import java.awt.BorderLayout; import java.awt.Font; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.net.URI; import java.net.URISyntaxException; import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Set; import javax.swing.BoxLayout; import javax.swing.JButton; import javax.swing.JDialog; import javax.swing.JEditorPane; import javax.swing.JPanel; import javax.swing.JScrollPane; import org.mindswap.swoop.SwoopModel; import org.mindswap.swoop.TermsDisplay; import org.mindswap.swoop.refactoring.Segmentation; import org.semanticweb.owl.model.OWLClass; import org.semanticweb.owl.model.OWLEntity; import org.semanticweb.owl.model.OWLException; import org.semanticweb.owl.model.OWLOntology; /** * @author Aditya * * */ public class ComparatorFrame extends JDialog { List owlEntities = null, entitiesRendered = null, entitiesSource = null; TermsDisplay termHandler; public ComparatorFrame(TermsDisplay termHandler) { this.termHandler = termHandler; owlEntities = new ArrayList(); entitiesRendered = new ArrayList(); entitiesSource = new ArrayList(); setLocation(100, 50); setSize(275, 500); setVisible(false); setTitle("Resource Holder"); } public void addEntity(String source, URI entityURI, String entityRendered) { //if (!owlEntities.contains(entity)) { entitiesSource.add(source); owlEntities.add(entityURI); entitiesRendered.add(entityRendered); //} redraw(); } public void removeEntity(String source, URI entityURI, String entityRendered) { entitiesSource.remove(source); owlEntities.remove(entityURI); entitiesRendered.remove(entityRendered); redraw(); } public List getEntities() { return owlEntities; } public void redraw() { // re-draw resource holder panel whenever entity has been added // or removed from comparator //this.removeAll(); int numEntities = owlEntities.size(); // //JPanel panelBig = new JPanel(new GridLayout(2, 1)); JPanel panelBig = new JPanel(new BorderLayout()); // JPanel panelButtons = new JPanel(); panelButtons.setLayout(new GridLayout(2, 1)); // JPanel panel = new JPanel(); panel.setLayout(new GridLayout(1, numEntities)); // This is for Segmentation purposes //Add Extract module button JButton moduleBtn = new JButton("Extract module for All Entities in the holder"); moduleBtn.setFont(new Font("Tahoma", Font.PLAIN, 11)); moduleBtn.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { Segmentation seg = null; SwoopModel swoopModel = termHandler.getSwoopModel(); if(!swoopModel.segmentation.containsKey(swoopModel.getSelectedOntology())){ try { seg = new Segmentation(swoopModel.getSelectedOntology(), false, false); } catch (URISyntaxException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } catch (OWLException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } //No dual roles Map aux = new HashMap(); aux = swoopModel.getSegmentation(); aux.put(swoopModel.getSelectedOntology(), seg); swoopModel.setSegmentation(aux); } else{ seg = (Segmentation) swoopModel.getSegmentation().get(swoopModel.getSelectedOntology()); seg.setDualConcepts(false); seg.setDualRoles(false); } Set allClasses; try { allClasses = swoopModel.getSelectedOntology().getClasses(); Set allProperties = swoopModel.getSelectedOntology().getObjectProperties(); allProperties.addAll(swoopModel.getSelectedOntology().getDataProperties()); Set allEntities = new HashSet(); allEntities.addAll(allClasses); allEntities.addAll(allProperties); Set allAxioms = seg.getAllAxioms(); Map axSignature = seg.getAxiomsToSignature(); Map sigToAxioms = seg.getSignatureToAxioms(); Set sig = new HashSet(); Iterator iter = getEntities().iterator(); while(iter.hasNext()){ URI uri = (URI)iter.next(); OWLEntity ent = swoopModel.getEntity(swoopModel.getSelectedOntology(),uri,false); sig.add(ent); } //sig.addAll(getEntities()); URI uriOntology = swoopModel.getSelectedOntology().getURI(); System.out.println("Getting Module"); OWLOntology module = seg.getModule(allAxioms, sig, axSignature, sigToAxioms, uriOntology, (OWLClass)swoopModel.getSelectedEntity()); System.out.println("Got Module"); swoopModel.addOntology(module); } catch (OWLException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } catch (Exception e2) { // TODO Auto-generated catch block e2.printStackTrace(); } } }); panelButtons.add(moduleBtn); JButton moduleDualBtn = new JButton("Extract Dual module for All Entities in the holder"); moduleDualBtn.setFont(new Font("Tahoma", Font.PLAIN, 11)); moduleDualBtn.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { Segmentation seg = null; SwoopModel swoopModel = termHandler.getSwoopModel(); if(!swoopModel.segmentation.containsKey(swoopModel.getSelectedOntology())){ try { seg = new Segmentation(swoopModel.getSelectedOntology(), true, true); } catch (URISyntaxException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } catch (OWLException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } //No dual roles Map aux = new HashMap(); aux = swoopModel.getSegmentation(); aux.put(swoopModel.getSelectedOntology(), seg); swoopModel.setSegmentation(aux); } else{ seg = (Segmentation) swoopModel.getSegmentation().get(swoopModel.getSelectedOntology()); seg.setDualConcepts(true); seg.setDualRoles(true); } Set allClasses; try { allClasses = swoopModel.getSelectedOntology().getClasses(); Set allProperties = swoopModel.getSelectedOntology().getObjectProperties(); allProperties.addAll(swoopModel.getSelectedOntology().getDataProperties()); Set allEntities = new HashSet(); allEntities.addAll(allClasses); allEntities.addAll(allProperties); Set allAxioms = seg.getAllAxioms(); Map axSignature = seg.getAxiomsToSignature(); Map sigToAxioms = seg.getSignatureToAxioms(); Set sig = new HashSet(); Iterator iter = getEntities().iterator(); while(iter.hasNext()){ URI uri = (URI)iter.next(); OWLEntity ent = swoopModel.getEntity(swoopModel.getSelectedOntology(),uri,false); sig.add(ent); } //sig.addAll(getEntities()); URI uriOntology = swoopModel.getSelectedOntology().getURI(); System.out.println("Getting Module"); OWLOntology module = seg.getModule(allAxioms, sig, axSignature, sigToAxioms, uriOntology, (OWLClass)swoopModel.getSelectedEntity()); System.out.println("Got Module"); swoopModel.addOntology(module); } catch (OWLException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } catch (Exception e2) { // TODO Auto-generated catch block e2.printStackTrace(); } } }); panelButtons.add(moduleDualBtn); for (int i=0; i<numEntities; i++) { // create editor pane for each entity JEditorPane renderer = new JEditorPane(); renderer.addHyperlinkListener(termHandler); renderer.setContentType("text/html"); renderer.setEditable(false); String text = "[[[ <b>Source:</b> "+entitiesSource.get(i).toString()+" ]]]<br><br>"; text += entitiesRendered.get(i).toString(); renderer.setText(text); renderer.setCaretPosition(0); JScrollPane rendererPane = new JScrollPane(renderer); JPanel rendererPanel = new JPanel(); rendererPanel.setLayout(new BorderLayout()); rendererPanel.add(rendererPane, "Center"); // add remove button final String source = entitiesSource.get(i).toString(); final URI entityURI = (URI) owlEntities.get(i); final String entityRendered = entitiesRendered.get(i).toString(); JButton removeBtn = new JButton("Remove this Entity"); removeBtn.setFont(new Font("Tahoma", Font.PLAIN, 11)); removeBtn.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { removeEntity(source, entityURI, entityRendered); } }); rendererPanel.add(removeBtn, "South"); //panel.add(rendererPanel); panel.add(rendererPanel); // } panelButtons.updateUI(); panel.updateUI(); /* getContentPane().removeAll(); getContentPane().setLayout(new GridLayout(1,1)); getContentPane().add(panel); */ // panelBig.add(panel, "Center"); panelBig.add(panelButtons, "North"); panelBig.updateUI(); getContentPane().removeAll(); //getContentPane().setLayout(new GridLayout(1,1)); getContentPane().add(panelBig); //panelBig.updateUI(); // setVisible(true); setSize(numEntities*275, 400); show(); } }