Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.commands/src/org/eclipse')
-rw-r--r--plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.commands/src/org/eclipse/papyrus/commands/DestroyElementPapyrusCommand.java22
1 files changed, 18 insertions, 4 deletions
diff --git a/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.commands/src/org/eclipse/papyrus/commands/DestroyElementPapyrusCommand.java b/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.commands/src/org/eclipse/papyrus/commands/DestroyElementPapyrusCommand.java
index 2d2865450c0..6388a2b7950 100644
--- a/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.commands/src/org/eclipse/papyrus/commands/DestroyElementPapyrusCommand.java
+++ b/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.commands/src/org/eclipse/papyrus/commands/DestroyElementPapyrusCommand.java
@@ -18,12 +18,17 @@ package org.eclipse.papyrus.commands;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
+import java.util.HashSet;
import java.util.List;
+import java.util.Set;
+import org.eclipse.core.resources.IFile;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EReference;
import org.eclipse.emf.ecore.EStructuralFeature.Setting;
+import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.emf.workspace.util.WorkspaceSynchronizer;
import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand;
import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest;
import org.eclipse.papyrus.infra.emf.utils.EMFHelper;
@@ -65,18 +70,27 @@ public class DestroyElementPapyrusCommand extends DestroyElementCommand {
protected List fileOfIncomingReferences(EObject destructee) {
if (destructee != null) {
Collection<Setting> usages = EMFHelper.getUsages(destructee);
- List<Object> result = new ArrayList<Object>();
+ List<Object> result = new ArrayList<>();
+ Set<Resource> resources = new HashSet<>();
for (Setting setting : usages) {
if (setting.getEStructuralFeature() instanceof EReference) {
EReference eRef = (EReference) setting.getEStructuralFeature();
if (eRef.isChangeable() && (eRef.isDerived() == false) && (eRef.isContainment() == false) && (eRef.isContainer() == false)) {
- List files = getWorkspaceFiles(setting.getEObject());
- if (files != null) {
- result.addAll(files);
+ Resource resource = setting.getEObject().eResource();
+ if (resource != null) {
+ resources.add(resource);
}
}
}
}
+ for (Resource resource : resources) {
+ IFile file = WorkspaceSynchronizer.getFile(resource);
+ if (file != null) {
+ result.add(file);
+ }
+ }
+
+
return result;
}
return Collections.emptyList();

Back to the top