From ea1428e30648741b81834d4a3ac932ad51918450 Mon Sep 17 00:00:00 2001 From: reaboi <reaboi@fortiss.org> Date: Fri, 7 Sep 2018 13:42:31 +0200 Subject: [PATCH] 3293 deleting a component having a test suite GREEN To test Signed-off-by: reaboi <reaboi@fortiss.org> --- .../kernel/ui/internal/actions/.ratings | 2 +- .../ui/internal/actions/DeleteAction.java | 20 +++++++++++++++++-- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/internal/actions/.ratings b/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/internal/actions/.ratings index 1c97b0ac0..a4e3289f1 100644 --- a/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/internal/actions/.ratings +++ b/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/internal/actions/.ratings @@ -1,6 +1,6 @@ CopyAction.java cc58c9f52b8d0b8698a9905ffadff7c37976481b GREEN CutAction.java 6e963d94aeea85676beb38489748002b6d13346a GREEN -DeleteAction.java 788b5df59525e069365c4f272b39e0892133e9b9 GREEN +DeleteAction.java 96fd45832167c555b407d7169fc7a3dd03a8fe8d GREEN PasteAction.java f834f26660a664f138c19d82ace7b17ecc18603f GREEN RedoAction.java d91086533289a4175e7f5ee949b31a0edc86672a GREEN RenameAction.java f469d30cab3f692e2e0112c8f89c622ee0fa8db6 GREEN diff --git a/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/internal/actions/DeleteAction.java b/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/internal/actions/DeleteAction.java index 788b5df59..96fd45832 100644 --- a/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/internal/actions/DeleteAction.java +++ b/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/internal/actions/DeleteAction.java @@ -236,6 +236,10 @@ public class DeleteAction extends EObjectActionBase<EObject> { private static void doCompositorBasedDelete(List<EObject> targets) { // Sort list of deletion targets such that object whose eContainer() is not contained in // 'targets' are deleted first (e.g., free connectors in hierarchical element models). + + List<EObject> deleteObjects = new ArrayList<EObject>(); + List<EObject> disconnectObjects = new ArrayList<EObject>(); + Set<EObject> targetSet = new HashSet<EObject>(); targetSet.addAll(targets); @@ -260,9 +264,21 @@ public class DeleteAction extends EObjectActionBase<EObject> { for(EObject target : sortedTargets) { if(IElementCompositorService.getInstance().canDecompose(target)) { - IElementCompositorService.getInstance().decompose(target); + deleteObjects.add(target); } else if(IConnectionCompositorService.getInstance().canDisconnect(target)) { - IConnectionCompositorService.getInstance().disconnect(target); + disconnectObjects.add(target); + } + + if(!deleteObjects.isEmpty()) { + for(int index = 0; index < deleteObjects.size(); index++) { + IElementCompositorService.getInstance().decompose(deleteObjects.get(index)); + } + } + + if(!disconnectObjects.isEmpty()) { + for(int index = 0; index < disconnectObjects.size(); index++) { + IElementCompositorService.getInstance().decompose(disconnectObjects.get(index)); + } } } } -- GitLab