package org.dllearner.tools.protege; import java.awt.event.MouseEvent; import java.util.Comparator; import java.util.List; import org.dllearner.core.EvaluatedDescription; import org.dllearner.learningproblems.EvaluatedDescriptionClass; import org.jdesktop.swingx.JXTable; import org.protege.editor.owl.OWLEditorKit; import org.protege.editor.owl.ui.renderer.OWLCellRenderer; public class SuggestionsTable extends JXTable { private static final long serialVersionUID = -497294373160119210L; private final OWLCellRenderer owlRenderer; private final ProgressBarTableCellRenderer progressRenderer; private EvaluatedDescription old; public SuggestionsTable(OWLEditorKit editorKit){ super(new SuggestionsTableModel()); progressRenderer = new ProgressBarTableCellRenderer(); progressRenderer.setBackground(getBackground()); getColumn(0).setCellRenderer(progressRenderer); owlRenderer = new OWLCellRenderer(editorKit, false, false); owlRenderer.setHighlightKeywords(true); owlRenderer.setHighlightUnsatisfiableClasses(false); owlRenderer.setHighlightUnsatisfiableProperties(false); owlRenderer.setWrap(false); getColumn(2).setCellRenderer(owlRenderer); setColumnSizes(); Comparator<Integer> comparator = new Comparator<Integer>() { @Override public int compare(Integer o1, Integer o2) { return o1.compareTo(o2); } }; getColumnExt(0).setComparator(comparator); } private void setColumnSizes(){ getColumn(0).setMaxWidth(100); getColumn(1).setMaxWidth(20); getColumn(2).setPreferredWidth(430); } public void clear(){ ((SuggestionsTableModel)getModel()).clear(); } public void setSuggestions(List<? extends EvaluatedDescription> suggestionList){ if(getSelectedRow() >= 0){ old = getSelectedSuggestion(); } ((SuggestionsTableModel)getModel()).setSuggestions(suggestionList); if(old != null){ int newRowIndex = ((SuggestionsTableModel)getModel()).getSelectionIndex(old); if(newRowIndex >= 0){ getSelectionModel().setSelectionInterval(newRowIndex, newRowIndex); } } } public EvaluatedDescription getSelectedSuggestion(){ return ((SuggestionsTableModel)getModel()).getSelectedValue(getSelectedRow()); } @Override public String getToolTipText(MouseEvent event) { int column = columnAtPoint(event.getPoint()); int row = rowAtPoint(event.getPoint()); if(column == 1 && row != -1){ EvaluatedDescription ec = ((SuggestionsTableModel)getModel()).getEntryAtRow(row); String text = null; if(ec instanceof EvaluatedDescriptionClass && ((EvaluatedDescriptionClass)ec).followsFromKB()){ text = "This axiom follows implicitly from knowledge base!"; } else if(DLLearnerPreferences.getInstance().isCheckConsistencyWhileLearning() && !((EvaluatedDescriptionClass)ec).isConsistent()){ text = "Adding this axiom may lead to an inconsistent knowledge base!"; } return text; } return super.getToolTipText(event); } }