X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.scenegraph.profile%2Fsrc%2Forg%2Fsimantics%2Fscenegraph%2Fprofile%2Frequest%2FRuntimeProfileActiveEntryResources.java;h=f59c1d71a0978addc151df7c0705e23543ffbeb2;hb=735e51894a89f6f86629a142c789d94591f3ba8e;hp=762ee12bdd0cbf7c10c5db51fda81c7953a64e03;hpb=0ae2b770234dfc3cbb18bd38f324125cf0faca07;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.scenegraph.profile/src/org/simantics/scenegraph/profile/request/RuntimeProfileActiveEntryResources.java b/bundles/org.simantics.scenegraph.profile/src/org/simantics/scenegraph/profile/request/RuntimeProfileActiveEntryResources.java index 762ee12bd..f59c1d71a 100644 --- a/bundles/org.simantics.scenegraph.profile/src/org/simantics/scenegraph/profile/request/RuntimeProfileActiveEntryResources.java +++ b/bundles/org.simantics.scenegraph.profile/src/org/simantics/scenegraph/profile/request/RuntimeProfileActiveEntryResources.java @@ -13,12 +13,15 @@ package org.simantics.scenegraph.profile.request; import java.util.ArrayList; import java.util.Collection; +import java.util.List; import org.simantics.db.ReadGraph; import org.simantics.db.Resource; +import org.simantics.db.common.NamedResource; import org.simantics.db.common.request.ResourceRead; import org.simantics.db.exception.DatabaseException; import org.simantics.diagram.stubs.DiagramResource; +import org.simantics.scenegraph.profile.ProfileUtils; /** * @author Antti Villberg @@ -34,15 +37,33 @@ public class RuntimeProfileActiveEntryResources extends ResourceRead result = new ArrayList(); - Resource activeProfile = graph.getPossibleObject(resource, DIA.RuntimeDiagram_HasRuntimeProfile); - if (activeProfile == null) - return result; + + result.addAll(graph.syncRequest(new ProfileEntryContributions(resource))); + Resource activeProfile = graph.getPossibleObject(resource, DIA.RuntimeDiagram_HasRuntimeProfile); + if (activeProfile == null) { + + List available = graph.syncRequest(new AvailableProfiles(resource)); + if(available.size() != 1) return result; + + activeProfile = available.iterator().next().getResource(); + + } + Resource rootEntries = graph.getPossibleObject(activeProfile, DIA.HasEntries); if (rootEntries == null) return result; - return graph.syncRequest(new ProfileActiveEntryResources(activeProfile, rootEntries)); + if(graph.isImmutable(activeProfile)) { + Resource activationState = ProfileUtils.getPossibleProfileActivationState(graph, resource, activeProfile); + if(activationState != null) { + result.addAll(graph.syncRequest(new ProfileActiveEntryResources(activationState, rootEntries))); + } + } else { + result.addAll(graph.syncRequest(new ProfileActiveEntryResources(activeProfile, rootEntries))); + } + + return result; }