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

org.protege.editor.owl.ui.ontology.wizard.move.common.SignatureDependentSelectionPreviewPanel Maven / Gradle / Ivy

package org.protege.editor.owl.ui.ontology.wizard.move.common;

import org.protege.editor.core.ui.list.RemovableObjectList;
import org.protege.editor.core.ui.util.CheckList;
import org.protege.editor.core.ui.util.ComponentFactory;
import org.protege.editor.owl.ui.list.OWLObjectList;
import org.protege.editor.owl.ui.ontology.wizard.move.MoveAxiomsKitConfigurationPanel;
import org.protege.editor.owl.ui.renderer.OWLCellRenderer;
import org.semanticweb.owlapi.model.OWLAxiom;
import org.semanticweb.owlapi.model.OWLEntity;
import org.semanticweb.owlapi.model.OWLOntology;

import javax.swing.*;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Set;
import java.util.TreeSet;
/*
 * Copyright (C) 2008, University of Manchester
 *
 *
 */


/**
 * Author: Matthew Horridge
The University Of Manchester
Information Management Group
Date: * 23-Sep-2008

*/ public class SignatureDependentSelectionPreviewPanel extends MoveAxiomsKitConfigurationPanel { private SignatureSelection signatureSelection; private OWLObjectList previewList; private JLabel previewLabel; private RemovableObjectList signatureList; private CheckList list; private Timer previewTimer; public SignatureDependentSelectionPreviewPanel(SignatureSelection signatureSelection) { this.signatureSelection = signatureSelection; previewLabel = new JLabel("Axioms: "); } public void initialise() { setLayout(new BorderLayout(7, 7)); JPanel previewPanel = new JPanel(new BorderLayout(3, 3)); previewLabel = new JLabel("Axioms: Computing... "); previewPanel.add(previewLabel, BorderLayout.NORTH); previewList = new OWLObjectList<>(getEditorKit()); previewPanel.add(new JScrollPane(previewList)); previewPanel.setBorder(ComponentFactory.createTitledBorder("Preview")); add(previewPanel); OWLCellRenderer cellRenderer = new OWLCellRenderer(getEditorKit()); cellRenderer.setWrap(false); cellRenderer.setHighlightKeywords(true); previewList.setCellRenderer(cellRenderer); signatureList = new RemovableObjectList<>(); signatureList.setCellRenderer(cellRenderer); signatureList.setPreferredSize(new Dimension(300, 300)); JPanel signatureListPanel = new JPanel(new BorderLayout()); list = new CheckList(signatureList); list.addCheckListListener(new CheckList.CheckListListener() { public void itemChecked(Object item) { updatePreview(); } public void itemUnchecked(Object item) { updatePreview(); } }); signatureListPanel.add(new JScrollPane(list)); signatureListPanel.setBorder(ComponentFactory.createTitledBorder("Signature")); add(signatureListPanel, BorderLayout.WEST); signatureList.addMouseListener(new MouseAdapter() { public void mouseReleased(MouseEvent e) { updateSignature(); } }); previewTimer = new Timer(500, e -> { doPreviewUpdate(); }); previewTimer.setRepeats(false); } public void updateSignature() { Set sig = signatureSelection.getSignature(); Set newSig = new HashSet<>(getCheckedEntities()); if (!sig.equals(newSig)) { signatureSelection.setSignature(newSig); updatePreview(); } } public String getInstructions() { return "Confirm the signature"; } public void updatePreview() { // Slight delay previewTimer.restart(); } private void doPreviewUpdate() { previewLabel.setText("Axioms: Computing... "); previewLabel.repaint(); previewList.setListData(new OWLAxiom[0]); final Set entities = getCheckedEntities(); final Set sourceOntologies = getModel().getSourceOntologies(); Runnable runnable = () -> { final Set axioms = signatureSelection.getAxioms(sourceOntologies, entities); final java.util.List axs = new ArrayList<>(new TreeSet<>(axioms)); final int upperBound = 500 > axs.size() ? axs.size() : 500; SwingUtilities.invokeLater(() -> previewLabel.setText("Axioms (showing " + upperBound + " out of " + axioms.size() + " axioms)")); SwingUtilities.invokeLater(() -> previewList.setListData(axs.subList(0, upperBound).toArray(new OWLAxiom[axs.size()]))); }; Thread t = new Thread(runnable); t.start(); } private Set getCheckedEntities() { final Set entities = new HashSet<>(); for (Object o : list.getCheckedItems()) { RemovableObjectList.RemovableObjectListItem item = (RemovableObjectList.RemovableObjectListItem) o; entities.add(item.getObject()); } return entities; } public void dispose() { } public String getID() { return "modularity.selectlocalitytype"; } public String getTitle() { return "Module preview page"; } public void update() { Set sig = signatureSelection.getSignature(); signatureList.setListData(sig.toArray()); updatePreview(); } public void commit() { signatureSelection.setSignature(getCheckedEntities()); } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy