]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.selectionview/src/org/simantics/selectionview/AbstractVariableTabContribution.java
Add createSVGElementR which returns the created resource
[simantics/platform.git] / bundles / org.simantics.selectionview / src / org / simantics / selectionview / AbstractVariableTabContribution.java
1 package org.simantics.selectionview;
2
3 import org.simantics.Simantics;
4 import org.simantics.db.ReadGraph;
5 import org.simantics.db.Resource;
6 import org.simantics.db.exception.DatabaseException;
7 import org.simantics.db.layer0.variable.Variable;
8 import org.simantics.db.layer0.variable.Variables;
9 import org.simantics.scl.runtime.function.Function;
10 import org.simantics.ui.selection.WorkbenchSelectionUtils;
11
12 abstract public class AbstractVariableTabContribution extends AbstractTabContribution<SelectionInput> {
13
14         public AbstractVariableTabContribution(ReadGraph graph, Resource configuration) throws DatabaseException {
15             super(graph, configuration);
16         }
17
18     @Override
19     public boolean accept(ReadGraph graph, Object input) throws DatabaseException {
20         if (!super.accept(graph, input))
21             return false;
22         Variable variable = getPossibleVariable(graph, input);
23         if (variable == null)
24             return false;
25
26                 if(input instanceof SelectionInput) {
27                 
28                         SelectionViewResources SEL = SelectionViewResources.getInstance(graph);
29                 
30                         Variable configurationVariable = Variables.getVariable(graph, configuration);
31                         Function f = configurationVariable.getPossiblePropertyValue(graph, SEL.AbstractVariableTabContribution_testFunction);
32                         if(f != null) {
33                                 Boolean pass = Simantics.<Boolean>applySCLRead(graph, f, variable);
34                                 if(!pass) return false;
35                         }
36                         
37                 } else {
38                         return false;
39                 }
40                 return true;
41         }
42         
43         final private Variable getPossibleVariable(ReadGraph graph, Object selection) throws DatabaseException {
44                 if(selection instanceof SelectionInput) {
45                         SelectionInput si = (SelectionInput)selection;
46                         if(si.getElements().size() == 1) {
47                                 return WorkbenchSelectionUtils.getPossibleVariable(graph, si.getElements().iterator().next());
48                         }
49                 }
50                 return null;
51         } 
52 }