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

org.protege.editor.owl.ui.view.cls.OWLClassDescriptionViewComponent Maven / Gradle / Ivy

package org.protege.editor.owl.ui.view.cls;

import org.protege.editor.owl.ui.frame.cls.OWLClassDescriptionFrame;
import org.protege.editor.owl.ui.frame.cls.OWLSubClassAxiomFrameSectionRow;
import org.protege.editor.owl.ui.framelist.CreateClosureAxiomAction;
import org.protege.editor.owl.ui.framelist.CreateNewEquivalentClassAction;
import org.protege.editor.owl.ui.framelist.OWLFrameList;
import org.protege.editor.owl.ui.framelist.OWLFrameListPopupMenuAction;
import org.semanticweb.owlapi.model.*;
import org.semanticweb.owlapi.util.CollectionFactory;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;


/**
 * Author: Matthew Horridge
* The University Of Manchester
* Bio-Health Informatics Group
* Date: 04-Feb-2007

*/ public class OWLClassDescriptionViewComponent extends AbstractOWLClassViewComponent { /** * */ private static final long serialVersionUID = -7899828024396593253L; private OWLFrameList list; public void initialiseClassView() throws Exception { list = new OWLFrameList<>(getOWLEditorKit(), new OWLClassDescriptionFrame(getOWLEditorKit())); setLayout(new BorderLayout()); JScrollPane sp = new JScrollPane(list); sp.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); add(sp); list.addToPopupMenu(new ConvertSelectionToEquivalentClassAction()); list.addToPopupMenu(new CreateNewEquivalentClassAction<>()); list.addToPopupMenu(new CreateClosureAxiomAction()); } /** * This method is called to request that the view is updated with * the specified class. * @param selectedClass The class that the view should be updated with. Note * that this may be null, which indicates that the view should * be cleared * @return The actual class that the view is displaying after it has been updated * (may be null) */ protected OWLClass updateView(OWLClass selectedClass) { list.setRootObject(selectedClass); return selectedClass; } public void disposeView() { list.dispose(); } private class ConvertSelectionToEquivalentClassAction extends OWLFrameListPopupMenuAction { protected void initialise() throws Exception { } protected void dispose() throws Exception { } protected String getName() { return "Convert selected rows to defined class"; } protected void updateState() { if (list.getSelectedValue() == null) { setEnabled(false); return; } for (Object selVal : list.getSelectedValuesList()) { if (!(selVal instanceof OWLSubClassAxiomFrameSectionRow)) { setEnabled(false); return; } } setEnabled(true); } public void actionPerformed(ActionEvent e) { convertSelectedRowsToDefinedClass(); } } private void convertSelectedRowsToDefinedClass() { final Object[] selVals = list.getSelectedValues(); if (selVals.length > 0){ Set descriptions = new HashSet<>(); List changes = new ArrayList<>(); for (Object selVal : selVals) { if (selVal instanceof OWLSubClassAxiomFrameSectionRow) { OWLSubClassAxiomFrameSectionRow row = (OWLSubClassAxiomFrameSectionRow) selVal; changes.add(new RemoveAxiom(row.getOntology(), row.getAxiom())); descriptions.add(row.getAxiom().getSuperClass()); } } OWLClassExpression equivalentClass; if (descriptions.size() == 1) { equivalentClass = descriptions.iterator().next(); } else { equivalentClass = getOWLDataFactory().getOWLObjectIntersectionOf(descriptions); } Set axiomOperands = CollectionFactory.createSet(list.getRootObject(), equivalentClass); changes.add(new AddAxiom(getOWLModelManager().getActiveOntology(), getOWLDataFactory().getOWLEquivalentClassesAxiom(axiomOperands))); getOWLModelManager().applyChanges(changes); } } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy