All Downloads are FREE. Search and download functionalities are using the official Maven repository.

uk.ac.manchester.cs.owl.explanation.JustificationFrameExplanationDisplay Maven / Gradle / Ivy

There is a newer version: 2.0.0
Show newest version
package uk.ac.manchester.cs.owl.explanation;

import org.protege.editor.owl.OWLEditorKit;
import org.semanticweb.owl.explanation.api.Explanation;
import org.semanticweb.owlapi.model.OWLAxiom;
import uk.ac.manchester.cs.owl.explanation.*;

import javax.swing.*;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import java.awt.*;
import java.util.Set;

/**
 * Author: Matthew Horridge
* Stanford University
* Bio-Medical Informatics Research Group
* Date: 19/03/2012 */ public class JustificationFrameExplanationDisplay extends JPanel implements ExplanationDisplay, AxiomSelectionListener { private Explanation explanation; private JustificationFrame frame; private final JustificationFrameList frameList; private OWLEditorKit editorKit; private Explanation lacExp; private WorkbenchManager workbenchManager; private AxiomSelectionModel axiomSelectionModel; private boolean transmittingSelectionToModel = false; public JustificationFrameExplanationDisplay(OWLEditorKit editorKit, AxiomSelectionModel selectionModel, WorkbenchManager workbenchManager, Explanation explanation) { this.editorKit = editorKit; this.workbenchManager = workbenchManager; this.axiomSelectionModel = selectionModel; this.explanation = explanation; frame = new JustificationFrame(editorKit); setLayout(new BorderLayout()); frameList = new JustificationFrameList(editorKit, selectionModel, workbenchManager, frame); add(frameList, BorderLayout.NORTH); frame.setRootObject(explanation); frameList.setBorder(BorderFactory.createEmptyBorder(7, 10, 7, 10)); frameList.getSelectionModel().addListSelectionListener(new ListSelectionListener() { public void valueChanged(ListSelectionEvent e) { transmitSelectionToModel(); } }); axiomSelectionModel.addAxiomSelectionListener(new AxiomSelectionListener() { public void axiomAdded(AxiomSelectionModel source, OWLAxiom axiom) { respondToAxiomSelectionChange(); } public void axiomRemoved(AxiomSelectionModel source, OWLAxiom axiom) { respondToAxiomSelectionChange(); } }); } private void respondToAxiomSelectionChange() { if(!transmittingSelectionToModel) { frameList.clearSelection(); frameList.repaint(frameList.getVisibleRect()); } frameList.repaint(frameList.getVisibleRect()); } private void transmitSelectionToModel() { try { transmittingSelectionToModel = true; for(int i = 1; i < frameList.getModel().getSize(); i++) { Object element = frameList.getModel().getElementAt(i); if(element instanceof JustificationFrameSectionRow) { JustificationFrameSectionRow row = (JustificationFrameSectionRow) element; OWLAxiom ax = row.getAxiom(); axiomSelectionModel.setAxiomSelected(ax, frameList.isSelectedIndex(i)); } } } finally { transmittingSelectionToModel = false; } } public Explanation getExplanation() { return explanation; } public void dispose() { frame.dispose(); } public void setDisplayLaconicExplanation(boolean b) { if (b) { Explanation lacExp = getLaconicExplanation(); if (lacExp != null) { frame.setRootObject(lacExp); } } else { frame.setRootObject(explanation); } } private Explanation getLaconicExplanation() { if(lacExp != null) { return lacExp; } return workbenchManager.getJustificationManager().getLaconicJustification(explanation); } public void axiomAdded(AxiomSelectionModel source, OWLAxiom axiom) { System.out.println("SEL: " + axiom); } public void axiomRemoved(AxiomSelectionModel source, OWLAxiom axiom) { } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy