]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.selectionview/src/org/simantics/selectionview/AbstractResourceTabContribution.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.selectionview / src / org / simantics / selectionview / AbstractResourceTabContribution.java
1 package org.simantics.selectionview;\r
2 \r
3 import java.util.Collection;\r
4 \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
11 \r
12 abstract public class AbstractResourceTabContribution implements TabContribution<Resource> {\r
13 \r
14         final protected Resource configuration;\r
15 \r
16         public AbstractResourceTabContribution(ReadGraph graph, Resource configuration) throws DatabaseException {\r
17                 this.configuration = configuration;\r
18         }\r
19 \r
20         public abstract void getContributors(ReadGraph graph, Resource resource, Integer priority, String label, Collection<ComparableTabContributor> result) throws DatabaseException;\r
21         \r
22         @Override\r
23         public boolean accept(ReadGraph graph, Object input) throws DatabaseException {\r
24 \r
25                 if (!(input instanceof Resource))\r
26                         return false;\r
27                 Resource resource = (Resource) input;\r
28 \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
33                 }\r
34                 \r
35                 return true;\r
36                 \r
37         }\r
38         \r
39         @Override\r
40         final public void contribute(ReadGraph graph, final Resource resource, Collection<ComparableTabContributor> result) throws DatabaseException {\r
41 \r
42                 Layer0 L0 = Layer0.getInstance(graph);\r
43                 SelectionViewResources SEL = SelectionViewResources.getInstance(graph);\r
44 \r
45                 Integer priority = graph.getPossibleRelatedValue(configuration, SEL.AbstractResourceTabContribution_HasPriority, Bindings.INTEGER);\r
46                 String label = graph.getPossibleRelatedValue(configuration, L0.HasLabel);\r
47 \r
48                 getContributors(graph, resource, priority, label, result);\r
49 \r
50         }\r
51 \r
52 }\r