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

org.protege.editor.owl.ui.tree.OWLModelManagerTree Maven / Gradle / Ivy

Go to download

OWL ontology editing infrastructure used by the Protege desktop application.

The newest version!
package org.protege.editor.owl.ui.tree;

import org.protege.editor.core.ui.RefreshableComponent;
import org.protege.editor.owl.OWLEditorKit;
import org.protege.editor.owl.model.event.EventType;
import org.protege.editor.owl.model.event.OWLModelManagerChangeEvent;
import org.protege.editor.owl.model.event.OWLModelManagerListener;
import org.protege.editor.owl.model.hierarchy.OWLObjectHierarchyProvider;
import org.protege.editor.owl.ui.renderer.OWLEntityRendererListener;
import org.protege.editor.owl.ui.renderer.OWLModelManagerEntityRenderer;
import org.semanticweb.owlapi.model.OWLEntity;
import org.semanticweb.owlapi.model.OWLObject;

import javax.swing.tree.DefaultTreeModel;
import javax.swing.tree.TreeCellRenderer;
import javax.swing.tree.TreePath;
import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.Set;


/**
 * Author: Matthew Horridge
* The University Of Manchester
* Medical Informatics Group
* Date: 01-Jun-2006

* [email protected]
* www.cs.man.ac.uk/~horridgm

*/ public class OWLModelManagerTree extends OWLObjectTree implements RefreshableComponent { private OWLModelManagerListener listener; private OWLEntityRendererListener rendererListener; public OWLModelManagerEntityRenderer currentRenderer = null; // only use to clean up old listeners public OWLModelManagerTree(OWLEditorKit owlEditorKit, OWLObjectHierarchyProvider provider) { super(owlEditorKit, provider); initialise(owlEditorKit); } public OWLModelManagerTree(OWLEditorKit owlEditorKit, OWLObjectHierarchyProvider provider, Set rootObjects) { super(owlEditorKit, provider, rootObjects, owlEditorKit.getModelManager().getOWLObjectComparator()); initialise(owlEditorKit); } private void initialise(OWLEditorKit owlEditorKit) { final OWLObjectTreeCellRenderer renderer = new OWLObjectTreeCellRenderer(owlEditorKit); renderer.setWrap(false); setCellRenderer(renderer); setHighlightKeywords(false); setupListener(); installPopupMenu(); setRowHeight(-1); autoExpandTree(); } public void reload() { super.reload(); autoExpandTree(); } public void setHighlightKeywords(boolean b) { TreeCellRenderer ren = getCellRenderer(); if (ren instanceof OWLObjectTreeCellRenderer) { ((OWLObjectTreeCellRenderer) ren).setHighlightKeywords(b); } } private void autoExpandTree() { OWLTreePreferences prefs = OWLTreePreferences.getInstance(); if (!prefs.isAutoExpandEnabled()) { return; } OWLObjectHierarchyProvider prov = getProvider(); for (N root : prov.getRoots()) { autoExpand(root, 0); } } private void autoExpand(N node, int currentDepth) { OWLTreePreferences prefs = OWLTreePreferences.getInstance(); int maxDepth = prefs.getAutoExpansionDepthLimit(); if (currentDepth >= maxDepth) { return; } OWLObjectHierarchyProvider prov = getProvider(); int childCountLimit = prefs.getAutoExpansionChildLimit(); Set children = prov.getChildren(node); if (children.size() <= childCountLimit) { for (OWLObjectTreeNode treeNode : getNodes(node)) { TreePath path = new TreePath(treeNode.getPath()); expandPath(path); } for(N child : prov.getChildren(node)) { autoExpand(child, currentDepth + 1); } } } private void setupListener() { listener = event -> { if (event.isType(EventType.ENTITY_RENDERER_CHANGED)) { refreshEntityRenderer(); } }; getOWLModelManager().addListener(listener); rendererListener = (entity, renderer) -> handleRenderingChanged(entity); refreshEntityRenderer(); } private void handleRenderingChanged(OWLEntity entity) { try { for (OWLObjectTreeNode node : getNodes(entity)) { DefaultTreeModel model = (DefaultTreeModel) getModel(); model.nodeStructureChanged(node); } } catch (ClassCastException e) { } } private void refreshEntityRenderer() { invalidate(); if (currentRenderer != null){ currentRenderer.removeListener(rendererListener); } currentRenderer = getOWLModelManager().getOWLEntityRenderer(); currentRenderer.addListener(rendererListener); } private void installPopupMenu() { addMouseListener(new MouseAdapter() { public void mousePressed(MouseEvent e) { handleMouseEvent(e); } public void mouseReleased(MouseEvent e) { handleMouseEvent(e); } }); } protected void handleMouseEvent(MouseEvent e) { if (e.isPopupTrigger()) { TreePath treePath = getPathForLocation(e.getX(), e.getY()); if (treePath != null) { handlePopupMenuInvoked(treePath, e.getPoint()); } } } protected void handlePopupMenuInvoked(TreePath path, Point pt) { } public void dispose() { super.dispose(); getOWLModelManager().removeListener(listener); getOWLModelManager().getOWLEntityRenderer().removeListener(rendererListener); } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy