diff options
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.java | 22 |
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(); |