+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
+\r
+abstract public class AbstractTypedResourceTabContribution extends AbstractResourceTabContribution {\r
+\r
+ public AbstractTypedResourceTabContribution(ReadGraph graph, Resource configuration) throws DatabaseException {\r
+ super(graph, configuration);\r
+ }\r
+\r
+ \r
+ @Override\r
+ public boolean accept(ReadGraph graph, Object input) throws DatabaseException {\r
+\r
+ if (!(input instanceof Resource))\r
+ return false;\r
+ Resource resource = (Resource) input;\r
+\r
+ SelectionViewResources SEL = SelectionViewResources.getInstance(graph);\r
+\r
+ Resource type = graph.getPossibleObject(configuration, SEL.AbstractTypedResourceTabContribution_HasType);\r
+ if(type == null) throw new DatabaseException("No type for " + graph.getPossibleURI(configuration));\r
+\r
+ if(!graph.isInstanceOf(resource, type)) return false;\r
+ \r
+ return super.accept(graph, resource);\r
+ \r
+ }\r
+ \r
+}\r