package org.dllearner.tools.protege; import java.util.ArrayList; import java.util.List; import javax.swing.Icon; import javax.swing.ImageIcon; import javax.swing.table.AbstractTableModel; import org.dllearner.core.EvaluatedDescription; import org.dllearner.learningproblems.EvaluatedDescriptionClass; import org.semanticweb.owlapi.model.OWLClassExpression; public class SuggestionsTableModel extends AbstractTableModel { private static final long serialVersionUID = -6920806148989403795L; private List<EvaluatedDescription> suggestionList; private final Icon inconsistentIcon = new ImageIcon(this.getClass().getResource("warning-icon.png")); private final Icon followsIcon = new ModelsIcon(); public SuggestionsTableModel(){ super(); suggestionList = new ArrayList<EvaluatedDescription>(); } public SuggestionsTableModel(List<EvaluatedDescription> suggestionList){ this.suggestionList = suggestionList; } @Override public int getColumnCount() { return 3; } @Override public int getRowCount() { return suggestionList.size(); } @Override public Object getValueAt(int rowIndex, int columnIndex) { EvaluatedDescription suggestion = suggestionList.get(rowIndex); switch (columnIndex) { case 0: return (int) (suggestion.getAccuracy() * 100); case 1: if(DLLearnerPreferences.getInstance().isCheckConsistencyWhileLearning()){ if (suggestion instanceof EvaluatedDescriptionClass && !((EvaluatedDescriptionClass)suggestion).isConsistent()) { return inconsistentIcon; } } if(suggestion instanceof EvaluatedDescriptionClass && ((EvaluatedDescriptionClass)suggestion).followsFromKB()){ return followsIcon; } break; case 2: return suggestion.getDescription(); } return null; } @Override public Class<? extends Object> getColumnClass(int columnIndex) { switch (columnIndex) { case 0: return String.class; case 1: return Icon.class; case 2: return OWLClassExpression.class; } return null; } @Override public String getColumnName(int column){ if(column == 0){ return "Accuracy"; } else if (column == 2){ return "Class expression"; } else { return ""; } } public EvaluatedDescription getEntryAtRow(int row){ if(suggestionList.size() >= row){ return suggestionList.get(row); } else { return null; } } public void clear(){ suggestionList.clear(); fireTableDataChanged(); } public void setSuggestions(List<? extends EvaluatedDescription> suggestionList){ this.suggestionList.clear(); this.suggestionList.addAll(suggestionList); fireTableDataChanged(); } public EvaluatedDescription getSelectedValue(int rowIndex){ return suggestionList.get(rowIndex); } public int getSelectionIndex(EvaluatedDescription e){ return suggestionList.indexOf(e); } }