X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;ds=sidebyside;f=org.simantics.district.selection%2Fsrc%2Forg%2Fsimantics%2Fdistrict%2Fselection%2FElementSelector.java;fp=org.simantics.district.selection%2Fsrc%2Forg%2Fsimantics%2Fdistrict%2Fselection%2FElementSelector.java;h=7d429e4e04a5669667b11d35d678851f0af06874;hb=c21f2dc656cbd621185a0bb88175db618d78eef9;hp=a45839c9325198907bc9c5f7ed2c1ed2a5f7039c;hpb=c555dea3cbfd7c0f8e7f4fc02784fe30caf2def4;p=simantics%2Fdistrict.git diff --git a/org.simantics.district.selection/src/org/simantics/district/selection/ElementSelector.java b/org.simantics.district.selection/src/org/simantics/district/selection/ElementSelector.java index a45839c9..7d429e4e 100644 --- a/org.simantics.district.selection/src/org/simantics/district/selection/ElementSelector.java +++ b/org.simantics.district.selection/src/org/simantics/district/selection/ElementSelector.java @@ -13,7 +13,6 @@ import org.simantics.db.Resource; import org.simantics.db.common.request.ResourceRead; import org.simantics.db.common.utils.ListUtils; import org.simantics.db.exception.DatabaseException; -import org.simantics.db.exception.ServiceException; import org.simantics.db.layer0.request.ActiveModels; import org.simantics.db.layer0.request.ActiveRuns; import org.simantics.db.layer0.request.Configuration; @@ -287,7 +286,12 @@ public class ElementSelector { } } - private static Collection elementsOfDiagram(ReadGraph graph, Resource diagram) throws ServiceException { + private static Collection elementsOfDiagram(ReadGraph graph, Resource diagram) throws DatabaseException { + if (graph.isInstanceOf(diagram, STR.Composite)) { + // Resource is a composite - get diagram + return elementsOfDiagram(graph, graph.getSingleObject(diagram, MOD.CompositeToDiagram)); + } + Collection elements = graph.getObjects(diagram, L0.ConsistsOf); Collection result = new ArrayList<>(); for (Resource r : elements) @@ -466,7 +470,8 @@ public class ElementSelector { result2.sort((t1, t2) -> smallest ? Double.compare((Double) t1.c1, (Double) t2.c1) : Double.compare((Double) t2.c1, (Double) t1.c1)); - result2 = result2.subList(0, resultCount); + if (resultCount < result2.size()) + result2 = result2.subList(0, resultCount); result = Lists.map(new FunctionImpl1() { @Override