X-Git-Url: https://gerrit.simantics.org/r/gitweb?p=simantics%2Fplatform.git;a=blobdiff_plain;f=bundles%2Forg.simantics.structural2%2Fsrc%2Forg%2Fsimantics%2Fstructural2%2FStructuralRVIResolver.java;fp=bundles%2Forg.simantics.structural2%2Fsrc%2Forg%2Fsimantics%2Fstructural2%2FStructuralRVIResolver.java;h=b2913f3203eccc550c799d3632282c2372fd7d6c;hp=f27356b9f2c403bdef0e25feddea8dd3e4a03778;hb=90c1f0db31b0b505e065e4781cfdc1c3ed3d274d;hpb=ba85c75dd6893c597f4befa3d2c9f32bee2fc85d 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..b2913f320 100644 --- a/bundles/org.simantics.structural2/src/org/simantics/structural2/StructuralRVIResolver.java +++ b/bundles/org.simantics.structural2/src/org/simantics/structural2/StructuralRVIResolver.java @@ -45,6 +45,24 @@ public class StructuralRVIResolver extends StandardRVIResolver { 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); + } + 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; + return new RVIBuilder(base.getRVI(graph)).append(part).toRVI(); + } protected boolean isPartOfComponentType(ReadGraph graph, Resource resource) throws DatabaseException {