Skip to content

Commit

Permalink
Closes #577
Browse files Browse the repository at this point in the history
  • Loading branch information
matthewhorridge committed Nov 7, 2016
1 parent 0ac21f5 commit 0ea5504
Show file tree
Hide file tree
Showing 5 changed files with 156 additions and 47 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
package org.protege.editor.owl.model;

import org.protege.editor.owl.OWLEditorKit;
import org.semanticweb.owlapi.model.IRI;
import org.semanticweb.owlapi.model.OWLEntity;
import org.semanticweb.owlapi.util.IRIShortFormProvider;
import org.semanticweb.owlapi.util.SimpleIRIShortFormProvider;

import javax.annotation.Nonnull;

import java.util.Set;

import static com.google.common.base.Preconditions.checkNotNull;

/**
* Matthew Horridge
* Stanford Center for Biomedical Informatics Research
* 7 Nov 2016
*/
public class OWLEditorKitIRIShortFormProvider implements IRIShortFormProvider {

private final OWLEditorKit editorKit;

private final SimpleIRIShortFormProvider delegateIRIShortFormProvider;

public OWLEditorKitIRIShortFormProvider(@Nonnull OWLEditorKit editorKit,
@Nonnull SimpleIRIShortFormProvider delegateIRIShortFormProvider) {
this.editorKit = checkNotNull(editorKit);
this.delegateIRIShortFormProvider = checkNotNull(delegateIRIShortFormProvider);
}

@Nonnull
@Override
public String getShortForm(@Nonnull IRI iri) {
OWLModelManager manager = editorKit.getOWLModelManager();
Set<OWLEntity> entityWithIri = manager.getActiveOntology().getEntitiesInSignature(iri);
if(entityWithIri.isEmpty()) {
return delegateIRIShortFormProvider.getShortForm(iri);
}
else {
return manager.getRendering(entityWithIri.iterator().next());
}
}
}
Original file line number Diff line number Diff line change
@@ -1,12 +1,22 @@
package org.protege.editor.owl.ui.axiom;

import org.protege.editor.owl.OWLEditorKit;
import org.protege.editor.owl.model.OWLEditorKitIRIShortFormProvider;
import org.protege.editor.owl.model.OWLEditorKitOntologyShortFormProvider;
import org.protege.editor.owl.model.OWLEditorKitShortFormProvider;
import org.protege.editor.owl.model.util.OWLAxiomInstance;
import org.protege.editor.owl.ui.renderer.OWLCellRenderer;
import org.protege.editor.owl.ui.renderer.context.OWLObjectRenderingContext;
import org.protege.editor.owl.ui.renderer.styledstring.OWLObjectStyledStringRenderer;
import org.protege.editor.owl.ui.renderer.styledstring.StyledString;
import org.protege.editor.owl.ui.renderer.styledstring.StyledStringPanel;
import org.semanticweb.owlapi.model.OWLAxiom;
import org.semanticweb.owlapi.util.SimpleIRIShortFormProvider;

import javax.swing.*;
import java.awt.*;

import static com.google.common.base.Preconditions.checkNotNull;
/*
* Copyright (C) 2007, University of Manchester
*
Expand All @@ -16,62 +26,64 @@
/**
* Author: drummond<br>
* http://www.cs.man.ac.uk/~drummond/<br><br>
* <p>
* The University Of Manchester<br>
* Bio Health Informatics Group<br>
* Date: Sep 3, 2008<br><br>
*/
public class AxiomAnnotationPanel extends JComponent {

private static final int PREF_WIDTH = 500;

private AxiomAnnotationsList annotationsComponent;

private DefaultListModel<OWLAxiom> model;
private final OWLEditorKit editorKit;

private final StyledStringPanel axiomPanel = new StyledStringPanel();

public AxiomAnnotationPanel(OWLEditorKit eKit) {
this.editorKit = checkNotNull(eKit);
setLayout(new BorderLayout(6, 6));
setPreferredSize(new Dimension(500, 300));

// we need to use the OWLCellRenderer, so create a singleton JList
final OWLCellRenderer ren = new OWLCellRenderer(eKit);
ren.setHighlightKeywords(true);

model = new DefaultListModel<>();
JList<OWLAxiom> label = new JList<>(model);
label.setBackground(getBackground());
label.setEnabled(false);
label.setOpaque(true);
label.setCellRenderer(ren);
setPreferredSize(new Dimension(PREF_WIDTH, 300));

annotationsComponent = new AxiomAnnotationsList(eKit);

final JScrollPane scroller = new JScrollPane(annotationsComponent);

add(label, BorderLayout.NORTH);
add(scroller, BorderLayout.CENTER);
axiomPanel.setPreferredSize(new Dimension(PREF_WIDTH, 50));
add(axiomPanel, BorderLayout.NORTH);
add(new JScrollPane(annotationsComponent), BorderLayout.CENTER);

setVisible(true);
}

private StyledString getAxiomRendering(OWLAxiom axiom) {
OWLEditorKitShortFormProvider sfp = new OWLEditorKitShortFormProvider(editorKit);
OWLEditorKitOntologyShortFormProvider ontologySfp = new OWLEditorKitOntologyShortFormProvider(editorKit);
OWLEditorKitIRIShortFormProvider iriSfp = new OWLEditorKitIRIShortFormProvider(editorKit, new SimpleIRIShortFormProvider());
OWLObjectRenderingContext renderingContext = new OWLObjectRenderingContext(sfp, iriSfp, ontologySfp);
OWLObjectStyledStringRenderer renderer = new OWLObjectStyledStringRenderer(renderingContext);
return renderer.getRendering(axiom);
}


public void setAxiomInstance(OWLAxiomInstance axiomInstance){
model.clear();
if (axiomInstance != null){
model.addElement(axiomInstance.getAxiom());
public void setAxiomInstance(OWLAxiomInstance axiomInstance) {
axiomPanel.setStyledString(StyledString.EMPTY_STYLED_STRING);
if (axiomInstance != null) {
StyledString axiomRendering = getAxiomRendering(axiomInstance.getAxiom());
axiomPanel.setStyledString(axiomRendering);
annotationsComponent.setRootObject(axiomInstance);
}
else{
else {
annotationsComponent.setRootObject(null);
}
}


public OWLAxiomInstance getAxiom(){
public OWLAxiomInstance getAxiom() {
return annotationsComponent.getRoot();
}


public void dispose(){
public void dispose() {
annotationsComponent.dispose();
}
}
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
package org.protege.editor.owl.ui.renderer.context;

import org.semanticweb.owlapi.util.OntologyIRIShortFormProvider;
import org.semanticweb.owlapi.util.ShortFormProvider;
import org.semanticweb.owlapi.util.SimpleShortFormProvider;
import org.semanticweb.owlapi.util.*;

/**
* Author: Matthew Horridge<br>
Expand All @@ -12,35 +10,81 @@
*/
public class OWLObjectRenderingContext {

final private DeprecatedObjectChecker deprecatedObjectChecker;
private final DeprecatedObjectChecker deprecatedObjectChecker;

final private ClassSatisfiabilityChecker classSatisfiabilityChecker;
private final ClassSatisfiabilityChecker classSatisfiabilityChecker;

final private ObjectPropertySatisfiabilityChecker objectPropertySatisfiabilityChecker;
private final ObjectPropertySatisfiabilityChecker objectPropertySatisfiabilityChecker;

final private DataPropertySatisfiabilityChecker dataPropertySatisfiabilityChecker;
private final DataPropertySatisfiabilityChecker dataPropertySatisfiabilityChecker;

final private LinkFactory linkFactory;
private final LinkFactory linkFactory;

final private ShortFormProvider shortFormProvider;
private final ShortFormProvider shortFormProvider;

private final IRIShortFormProvider iriShortFormProvider;

final private OntologyIRIShortFormProvider ontologyIRIShortFormProvider;


public OWLObjectRenderingContext(DeprecatedObjectChecker deprecatedObjectChecker, ClassSatisfiabilityChecker classSatisfiabilityChecker, ObjectPropertySatisfiabilityChecker objectPropertySatisfiabilityChecker, DataPropertySatisfiabilityChecker dataPropertySatisfiabilityChecker, LinkFactory linkFactory, ShortFormProvider shortFormProvider, OntologyIRIShortFormProvider ontologyIRIShortFormProvider) {
public OWLObjectRenderingContext(DeprecatedObjectChecker deprecatedObjectChecker,
ClassSatisfiabilityChecker classSatisfiabilityChecker,
ObjectPropertySatisfiabilityChecker objectPropertySatisfiabilityChecker,
DataPropertySatisfiabilityChecker dataPropertySatisfiabilityChecker,
LinkFactory linkFactory,
ShortFormProvider shortFormProvider,
OntologyIRIShortFormProvider ontologyIRIShortFormProvider) {
this.deprecatedObjectChecker = deprecatedObjectChecker;
this.classSatisfiabilityChecker = classSatisfiabilityChecker;
this.objectPropertySatisfiabilityChecker = objectPropertySatisfiabilityChecker;
this.dataPropertySatisfiabilityChecker = dataPropertySatisfiabilityChecker;
this.linkFactory = linkFactory;
this.shortFormProvider = shortFormProvider;
this.ontologyIRIShortFormProvider = ontologyIRIShortFormProvider;
this.iriShortFormProvider = new SimpleIRIShortFormProvider();
}

public OWLObjectRenderingContext(ShortFormProvider shortFormProvider, OntologyIRIShortFormProvider ontologyIRIShortFormProvider) {
this(new NullDeprecatedObjectChecker(), new NullClassSatisfiabilityChecker(), new NullObjectPropertySatisfiabilityChecker(), new NullDataPropertySatisfiabilityChecker(), new NullLinkFactory(), shortFormProvider, ontologyIRIShortFormProvider);
public OWLObjectRenderingContext(DeprecatedObjectChecker deprecatedObjectChecker,
ClassSatisfiabilityChecker classSatisfiabilityChecker,
ObjectPropertySatisfiabilityChecker objectPropertySatisfiabilityChecker,
DataPropertySatisfiabilityChecker dataPropertySatisfiabilityChecker,
LinkFactory linkFactory,
ShortFormProvider shortFormProvider,
IRIShortFormProvider iriShortFormProvider,
OntologyIRIShortFormProvider ontologyIRIShortFormProvider) {
this.deprecatedObjectChecker = deprecatedObjectChecker;
this.classSatisfiabilityChecker = classSatisfiabilityChecker;
this.objectPropertySatisfiabilityChecker = objectPropertySatisfiabilityChecker;
this.dataPropertySatisfiabilityChecker = dataPropertySatisfiabilityChecker;
this.linkFactory = linkFactory;
this.shortFormProvider = shortFormProvider;
this.iriShortFormProvider = iriShortFormProvider;
this.ontologyIRIShortFormProvider = ontologyIRIShortFormProvider;
}

public OWLObjectRenderingContext(ShortFormProvider shortFormProvider,
OntologyIRIShortFormProvider ontologyIRIShortFormProvider) {
this(new NullDeprecatedObjectChecker(),
new NullClassSatisfiabilityChecker(),
new NullObjectPropertySatisfiabilityChecker(),
new NullDataPropertySatisfiabilityChecker(),
new NullLinkFactory(),
shortFormProvider,
ontologyIRIShortFormProvider);
}

public OWLObjectRenderingContext(ShortFormProvider shortFormProvider,
IRIShortFormProvider iriShortFormProvider,
OntologyIRIShortFormProvider ontologyIRIShortFormProvider) {
this(new NullDeprecatedObjectChecker(),
new NullClassSatisfiabilityChecker(),
new NullObjectPropertySatisfiabilityChecker(),
new NullDataPropertySatisfiabilityChecker(),
new NullLinkFactory(),
shortFormProvider,
iriShortFormProvider,
ontologyIRIShortFormProvider);
}

public OWLObjectRenderingContext() {
deprecatedObjectChecker = new NullDeprecatedObjectChecker();
Expand All @@ -50,6 +94,7 @@ public OWLObjectRenderingContext() {
linkFactory = new NullLinkFactory();
shortFormProvider = new SimpleShortFormProvider();
ontologyIRIShortFormProvider = new OntologyIRIShortFormProvider();
iriShortFormProvider = new SimpleIRIShortFormProvider();
}

public ShortFormProvider getShortFormProvider() {
Expand All @@ -66,7 +111,13 @@ public ClassSatisfiabilityChecker getClassSatisfiabilityChecker() {


public OWLObjectRenderingContext setClassSatisfiabilityChecker(ClassSatisfiabilityChecker classSatisfiabilityChecker) {
return new OWLObjectRenderingContext(this.deprecatedObjectChecker, classSatisfiabilityChecker, this.objectPropertySatisfiabilityChecker, this.dataPropertySatisfiabilityChecker, this.linkFactory, this.shortFormProvider, this.ontologyIRIShortFormProvider);
return new OWLObjectRenderingContext(this.deprecatedObjectChecker,
classSatisfiabilityChecker,
this.objectPropertySatisfiabilityChecker,
this.dataPropertySatisfiabilityChecker,
this.linkFactory,
this.shortFormProvider,
this.ontologyIRIShortFormProvider);
}


Expand All @@ -86,4 +137,8 @@ public DeprecatedObjectChecker getDeprecatedObjectChecker() {
public LinkFactory getLinkFactory() {
return linkFactory;
}

public IRIShortFormProvider getIriShortFormProvider() {
return iriShortFormProvider;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -293,11 +293,14 @@ private void renderPropertyAssertion(OWLPropertyAssertionAxiom<?, ?> axiom) {
}

public void visit(OWLAnnotationAssertionAxiom axiom) {
axiom.getSubject().accept(this);
renderSpace();
axiom.getProperty().accept(this);
if(axiom.getSubject() instanceof IRI) {
builder.append(renderingContext.getIriShortFormProvider().getShortForm((IRI) axiom.getSubject()));
}
else {
axiom.getSubject().accept(this);
}
renderSpace();
axiom.getValue().accept(this);
axiom.getAnnotation().accept(this);
}

public void visit(OWLSymmetricObjectPropertyAxiom axiom) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,11 +26,6 @@
*/
public class OWLAxiomAnnotationsView extends AbstractOWLViewComponent {

/**
*
*/
private static final long serialVersionUID = -6288372193137254393L;

private OWLSelectionModelListener selListener = new OWLSelectionModelAdapter(){
public void selectionChanged() throws Exception {
final OWLSelectionModel selModel = getOWLWorkspace().getOWLSelectionModel();
Expand Down

0 comments on commit 0ea5504

Please sign in to comment.