-package org.simantics.selectionview;\r
-\r
-import java.util.Collection;\r
-\r
-import org.simantics.Simantics;\r
-import org.simantics.databoard.Bindings;\r
-import org.simantics.db.ReadGraph;\r
-import org.simantics.db.Resource;\r
-import org.simantics.db.common.utils.Functions;\r
-import org.simantics.db.exception.DatabaseException;\r
-import org.simantics.db.layer0.variable.Variable;\r
-import org.simantics.db.layer0.variable.Variables;\r
-import org.simantics.layer0.Layer0;\r
-import org.simantics.scl.runtime.function.Function;\r
-import org.simantics.ui.selection.WorkbenchSelectionUtils;\r
-\r
-abstract public class AbstractVariableTabContribution implements TabContribution<Object> {\r
-\r
- final private String uri;\r
- final protected Resource configuration;\r
-\r
- public AbstractVariableTabContribution(ReadGraph graph, Resource configuration) throws DatabaseException {\r
- this.configuration = configuration;\r
- this.uri = graph.getURI(configuration);\r
- }\r
-\r
- public abstract void getContributors(ReadGraph graph, Variable variable, Integer priority, String label, Collection<ComparableTabContributor> result) throws DatabaseException;\r
-\r
- @Override\r
- public boolean accept(ReadGraph graph, Object input) throws DatabaseException {\r
- return true;\r
- }\r
-\r
- public boolean accept(ReadGraph graph, Variable variable, Object selection) throws DatabaseException {\r
-\r
- if(selection instanceof SelectionInput) {\r
- \r
- SelectionViewResources SEL = SelectionViewResources.getInstance(graph);\r
- for(Resource r : graph.getObjects(configuration, SEL.AbstractVariableTabContribution_HasTest)) {\r
- Boolean pass = Functions.exec(graph, r, graph, (SelectionInput)selection);\r
- if(!pass) return false;\r
- }\r
- \r
- Variable configurationVariable = Variables.getVariable(graph, configuration);\r
- Function f = configurationVariable.getPossiblePropertyValue(graph, SEL.AbstractVariableTabContribution_testFunction);\r
- if(f != null) {\r
- Boolean pass = Simantics.<Boolean>applySCLRead(graph, f, variable);\r
- if(!pass) return false;\r
- }\r
- \r
- } else {\r
- \r
- return false;\r
- \r
- }\r
- \r
- return true;\r
- \r
- }\r
- \r
- final private Variable getPossibleVariable(ReadGraph graph, Object selection) throws DatabaseException {\r
- if(selection instanceof SelectionInput) {\r
- SelectionInput si = (SelectionInput)selection;\r
- if(si.getElements().size() == 1) {\r
- return WorkbenchSelectionUtils.getPossibleVariable(graph, si.getElements().iterator().next());\r
- }\r
- }\r
- return null;\r
- } \r
- \r
- @Override\r
- final public void contribute(ReadGraph graph, final Object selection, Collection<ComparableTabContributor> result) throws DatabaseException {\r
- \r
- Variable variable = getPossibleVariable(graph, selection);\r
- if(variable == null) return;\r
-\r
- Layer0 L0 = Layer0.getInstance(graph);\r
- SelectionViewResources SEL = SelectionViewResources.getInstance(graph);\r
-\r
- Integer priority = graph.getPossibleRelatedValue(configuration, SEL.AbstractVariableTabContribution_HasPriority, Bindings.INTEGER);\r
- String label = graph.getPossibleRelatedValue(configuration, L0.HasLabel);\r
- \r
- if(!accept(graph, variable, selection)) return;\r
-\r
- getContributors(graph, variable, priority, label, result); \r
-\r
- }\r
- \r
- @Override\r
- public String toString() {\r
- return "AbstractVariableTabContribution[" + uri + "]";\r
- }\r
-\r
-}\r
+package org.simantics.selectionview;
+
+import java.util.Collection;
+
+import org.simantics.Simantics;
+import org.simantics.databoard.Bindings;
+import org.simantics.db.ReadGraph;
+import org.simantics.db.Resource;
+import org.simantics.db.common.utils.Functions;
+import org.simantics.db.exception.DatabaseException;
+import org.simantics.db.layer0.variable.Variable;
+import org.simantics.db.layer0.variable.Variables;
+import org.simantics.layer0.Layer0;
+import org.simantics.scl.runtime.function.Function;
+import org.simantics.ui.selection.WorkbenchSelectionUtils;
+
+abstract public class AbstractVariableTabContribution implements TabContribution<Object> {
+
+ final private String uri;
+ final protected Resource configuration;
+
+ public AbstractVariableTabContribution(ReadGraph graph, Resource configuration) throws DatabaseException {
+ this.configuration = configuration;
+ this.uri = graph.getURI(configuration);
+ }
+
+ public abstract void getContributors(ReadGraph graph, Variable variable, Integer priority, String label, Collection<ComparableTabContributor> result) throws DatabaseException;
+
+ @Override
+ public boolean accept(ReadGraph graph, Object input) throws DatabaseException {
+ return true;
+ }
+
+ public boolean accept(ReadGraph graph, Variable variable, Object selection) throws DatabaseException {
+
+ if(selection instanceof SelectionInput) {
+
+ SelectionViewResources SEL = SelectionViewResources.getInstance(graph);
+ for(Resource r : graph.getObjects(configuration, SEL.AbstractVariableTabContribution_HasTest)) {
+ Boolean pass = Functions.exec(graph, r, graph, (SelectionInput)selection);
+ if(!pass) return false;
+ }
+
+ Variable configurationVariable = Variables.getVariable(graph, configuration);
+ Function f = configurationVariable.getPossiblePropertyValue(graph, SEL.AbstractVariableTabContribution_testFunction);
+ if(f != null) {
+ Boolean pass = Simantics.<Boolean>applySCLRead(graph, f, variable);
+ if(!pass) return false;
+ }
+
+ } else {
+
+ return false;
+
+ }
+
+ return true;
+
+ }
+
+ final private Variable getPossibleVariable(ReadGraph graph, Object selection) throws DatabaseException {
+ if(selection instanceof SelectionInput) {
+ SelectionInput si = (SelectionInput)selection;
+ if(si.getElements().size() == 1) {
+ return WorkbenchSelectionUtils.getPossibleVariable(graph, si.getElements().iterator().next());
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public void contribute(ReadGraph graph, final Object selection, Collection<ComparableTabContributor> result) throws DatabaseException {
+
+ Variable variable = getPossibleVariable(graph, selection);
+ if(variable == null) return;
+
+ Layer0 L0 = Layer0.getInstance(graph);
+ SelectionViewResources SEL = SelectionViewResources.getInstance(graph);
+
+ Integer priority = graph.getPossibleRelatedValue(configuration, SEL.AbstractVariableTabContribution_HasPriority, Bindings.INTEGER);
+ String label = graph.getPossibleRelatedValue(configuration, L0.HasLabel);
+
+ if(!accept(graph, variable, selection)) return;
+
+ getContributors(graph, variable, priority, label, result);
+
+ }
+
+ @Override
+ public String toString() {
+ return "AbstractVariableTabContribution[" + uri + "]";
+ }
+
+}