1 package org.simantics.selectionview;
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;
12 abstract public class AbstractVariableTabContribution extends AbstractTabContribution<SelectionInput> {
14 public AbstractVariableTabContribution(ReadGraph graph, Resource configuration) throws DatabaseException {
15 super(graph, configuration);
19 public boolean accept(ReadGraph graph, Object input) throws DatabaseException {
20 if (!super.accept(graph, input))
22 Variable variable = getPossibleVariable(graph, input);
26 if(input instanceof SelectionInput) {
28 SelectionViewResources SEL = SelectionViewResources.getInstance(graph);
30 Variable configurationVariable = Variables.getVariable(graph, configuration);
31 Function f = configurationVariable.getPossiblePropertyValue(graph, SEL.AbstractVariableTabContribution_testFunction);
33 Boolean pass = Simantics.<Boolean>applySCLRead(graph, f, variable);
34 if(!pass) return false;
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());