--- /dev/null
+package org.simantics.selectionview;\r
+\r
+import org.simantics.db.ReadGraph;\r
+import org.simantics.db.Resource;\r
+import org.simantics.db.exception.DatabaseException;\r
+import org.simantics.db.layer0.variable.Variable;\r
+\r
+abstract public class AbstractTypedVariableTabContribution extends AbstractVariableTabContribution {\r
+\r
+ public AbstractTypedVariableTabContribution(ReadGraph graph, Resource configuration) throws DatabaseException {\r
+ super(graph, configuration);\r
+ }\r
+\r
+ @Override\r
+ public boolean accept(ReadGraph graph, Variable variable, Object selection) throws DatabaseException {\r
+\r
+ SelectionViewResources SEL = SelectionViewResources.getInstance(graph);\r
+\r
+ Resource type = graph.getPossibleObject(configuration, SEL.AbstractTypedVariableTabContribution_HasType);\r
+ if(type == null) throw new DatabaseException("No type for " + graph.getPossibleURI(configuration));\r
+\r
+ Resource resource = variable.getPossibleRepresents(graph);\r
+ if(resource == null) return false;\r
+ \r
+ if(!graph.isInstanceOf(resource, type)) return false;\r
+ \r
+ return super.accept(graph, variable, selection);\r
+ \r
+ }\r
+ \r
+}\r