1 package org.simantics.modeling.ui.viewpoint;
\r
3 import java.util.Collection;
\r
4 import java.util.Collections;
\r
6 import org.simantics.browsing.ui.model.children.ChildRule;
\r
7 import org.simantics.databoard.Bindings;
\r
8 import org.simantics.db.ReadGraph;
\r
9 import org.simantics.db.Resource;
\r
10 import org.simantics.db.exception.DatabaseException;
\r
11 import org.simantics.db.layer0.variable.Variable;
\r
12 import org.simantics.layer0.Layer0;
\r
13 import org.simantics.scl.runtime.function.Function;
\r
14 import org.simantics.simulation.ontology.SimulationResource;
\r
15 import org.simantics.structural.stubs.StructuralResource2;
\r
17 public class ChildrenInActiveExperiment implements ChildRule {
\r
20 SimulationResource SIMU;
\r
21 StructuralResource2 STR;
\r
23 public ChildrenInActiveExperiment(ReadGraph graph) {
\r
24 this.L0 = Layer0.getInstance(graph);
\r
25 this.SIMU = SimulationResource.getInstance(graph);
\r
26 this.STR = StructuralResource2.getInstance(graph);
\r
29 private Variable getVariable(ReadGraph graph, Resource r) throws DatabaseException {
\r
30 Resource model = graph.getPossibleObject(r, SIMU.IsConfigurationOf);
\r
32 return (Variable)graph.adapt(SIMU.ActiveExperiment, Function.class)
\r
33 .apply(graph, model);
\r
35 String name = graph.getPossibleRelatedValue(r, L0.HasName, Bindings.STRING);
\r
36 Resource parent = graph.getPossibleObject(r, L0.PartOf);
\r
37 if(name == null || parent == null)
\r
39 Variable parentVariable = getVariable(graph, parent);
\r
40 if(parentVariable == null)
\r
42 return parentVariable.getPossibleChild(graph, name);
\r
46 public boolean isCompatible(Class<?> contentType) {
\r
47 return contentType.equals(Resource.class);
\r
51 public Collection<?> getChildren(ReadGraph graph, Object parent_)
\r
52 throws DatabaseException {
\r
53 Resource parent = (Resource)parent_;
\r
54 if(graph.isInstanceOf(parent, STR.Composite))
\r
55 return Collections.emptyList();
\r
56 Variable variable = getVariable(graph, parent);
\r
57 if(variable == null)
\r
58 return Collections.emptyList();
\r
59 Collection<Variable> children = variable.getChildren(graph);
\r
60 return VariableChildren.filterByClassification(graph, children, StructuralResource2.URIs.Component);
\r
64 public Collection<?> getParents(ReadGraph graph, Object child)
\r
65 throws DatabaseException {
\r
66 return Collections.emptyList();
\r