1 package org.simantics.selectionview;
\r
3 import java.util.Collection;
\r
5 import org.simantics.databoard.Bindings;
\r
6 import org.simantics.db.ReadGraph;
\r
7 import org.simantics.db.Resource;
\r
8 import org.simantics.db.common.utils.Functions;
\r
9 import org.simantics.db.exception.DatabaseException;
\r
10 import org.simantics.layer0.Layer0;
\r
12 abstract public class AbstractResourceTabContribution implements TabContribution<Resource> {
\r
14 final protected Resource configuration;
\r
16 public AbstractResourceTabContribution(ReadGraph graph, Resource configuration) throws DatabaseException {
\r
17 this.configuration = configuration;
\r
20 public abstract void getContributors(ReadGraph graph, Resource resource, Integer priority, String label, Collection<ComparableTabContributor> result) throws DatabaseException;
\r
23 public boolean accept(ReadGraph graph, Object input) throws DatabaseException {
\r
25 if (!(input instanceof Resource))
\r
27 Resource resource = (Resource) input;
\r
29 SelectionViewResources SEL = SelectionViewResources.getInstance(graph);
\r
30 for(Resource r : graph.getObjects(configuration, SEL.AbstractResourceTabContribution_HasTest)) {
\r
31 Boolean pass = Functions.exec(graph, r, graph, resource);
\r
32 if(!pass) return false;
\r
40 final public void contribute(ReadGraph graph, final Resource resource, Collection<ComparableTabContributor> result) throws DatabaseException {
\r
42 Layer0 L0 = Layer0.getInstance(graph);
\r
43 SelectionViewResources SEL = SelectionViewResources.getInstance(graph);
\r
45 Integer priority = graph.getPossibleRelatedValue(configuration, SEL.AbstractResourceTabContribution_HasPriority, Bindings.INTEGER);
\r
46 String label = graph.getPossibleRelatedValue(configuration, L0.HasLabel);
\r
48 getContributors(graph, resource, priority, label, result);
\r