X-Git-Url: https://gerrit.simantics.org/r/gitweb?p=simantics%2Fplatform.git;a=blobdiff_plain;f=bundles%2Forg.simantics.diagram%2Fsrc%2Forg%2Fsimantics%2Fdiagram%2Fflag%2FFlagUtil.java;h=27dc9e307e69038ac40daa53f5c24dc8057b412e;hp=6f884e06afbf8651906977be9ac17df04802eb90;hb=c78854f7886d52b5375e11b3d6d8daacb12c287e;hpb=11c9c84985a71ff11b54b1a26703ecc7d127bbde;ds=sidebyside diff --git a/bundles/org.simantics.diagram/src/org/simantics/diagram/flag/FlagUtil.java b/bundles/org.simantics.diagram/src/org/simantics/diagram/flag/FlagUtil.java index 6f884e06a..27dc9e307 100644 --- a/bundles/org.simantics.diagram/src/org/simantics/diagram/flag/FlagUtil.java +++ b/bundles/org.simantics.diagram/src/org/simantics/diagram/flag/FlagUtil.java @@ -247,14 +247,25 @@ public final class FlagUtil { RemoverUtil.remove(graph, flag); } + /** + * @param graph + * @param flag + * @return true only if the specified flag is joined only + * within the single diagram it resides in + * @throws DatabaseException + */ public static boolean isJoinedInSingleDiagram(ReadGraph graph, Resource flag) throws DatabaseException { - DiagramResource DIA = DiagramResource.getInstance(graph); - Resource counterpart = getPossibleCounterpart(graph, flag); - if (counterpart == null) + Collection counterparts = getCounterparts(graph, flag); + if (counterparts.isEmpty()) return false; - return !Collections.disjoint( - OrderedSetUtils.getOwnerLists(graph, flag, DIA.Diagram), - OrderedSetUtils.getOwnerLists(graph, counterpart, DIA.Diagram)); + DiagramResource DIA = DiagramResource.getInstance(graph); + Collection flagDiagrams = OrderedSetUtils.getOwnerLists(graph, flag, DIA.Diagram); + for (Resource counterpart : counterparts) { + if (Collections.disjoint(flagDiagrams, + OrderedSetUtils.getOwnerLists(graph, counterpart, DIA.Diagram))) + return false; + } + return true; } public static boolean isJoinedBetweenDiagrams(ReadGraph graph, Resource flag) throws DatabaseException {