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
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 {