X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.structural2%2Fsrc%2Forg%2Fsimantics%2Fstructural2%2FStructuralRVIResolver.java;h=8cf61b3e0ade8e4dc74ed2e44ca334d655a6ee0c;hb=16ce2fab4f52fcabe55a07d41c691899ca95c4ec;hp=f27356b9f2c403bdef0e25feddea8dd3e4a03778;hpb=0ae2b770234dfc3cbb18bd38f324125cf0faca07;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.structural2/src/org/simantics/structural2/StructuralRVIResolver.java b/bundles/org.simantics.structural2/src/org/simantics/structural2/StructuralRVIResolver.java index f27356b9f..8cf61b3e0 100644 --- a/bundles/org.simantics.structural2/src/org/simantics/structural2/StructuralRVIResolver.java +++ b/bundles/org.simantics.structural2/src/org/simantics/structural2/StructuralRVIResolver.java @@ -40,10 +40,34 @@ public class StructuralRVIResolver extends StandardRVIResolver { Binding rviBinding = databoard.getBindingUnchecked( RVI.class ); return RVI.empty(rviBinding); } - Variable base = variable.getParent(graph); - while(!isRVIBase(graph, base)) base = base.getParent(graph); - RVIPart part = getRVIPart(graph, variable); - return new RVIBuilder(base.getRVI(graph)).append(part).toRVI(); + else { + Variable base = variable.getParent(graph); + while(!isRVIBase(graph, base)) base = base.getParent(graph); + RVIPart part = getRVIPart(graph, variable); + return new RVIBuilder(base.getRVI(graph)).append(part).toRVI(); + } + } + + @Override + public RVI getPossibleRVI(ReadGraph graph, Variable variable) throws DatabaseException { + if (Variables.isContext(graph, variable)) { + Databoard databoard = graph.getService( Databoard.class ); + Binding rviBinding = databoard.getBindingUnchecked( RVI.class ); + return RVI.empty(rviBinding); + } + else { + Variable base = variable.getParent(graph); + if(base == null) return null; + while(!isRVIBase(graph, base)) { + base = base.getParent(graph); + if(base == null) return null; + } + RVIPart part = getRVIPart(graph, variable); + if(part == null) return null; + RVI baseRVI = base.getPossibleRVI(graph); + if(baseRVI == null) return null; + return new RVIBuilder(baseRVI).append(part).toRVI(); + } } protected boolean isPartOfComponentType(ReadGraph graph, Resource resource)