Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/infra/org.eclipse.papyrus.infra.onefile/src/org')
-rw-r--r--plugins/infra/org.eclipse.papyrus.infra.onefile/src/org/eclipse/papyrus/infra/onefile/action/PapyrusCopyFilesAndFoldersOperation.java55
-rw-r--r--plugins/infra/org.eclipse.papyrus.infra.onefile/src/org/eclipse/papyrus/infra/onefile/providers/PapyrusEditActionProvider.java13
2 files changed, 47 insertions, 21 deletions
diff --git a/plugins/infra/org.eclipse.papyrus.infra.onefile/src/org/eclipse/papyrus/infra/onefile/action/PapyrusCopyFilesAndFoldersOperation.java b/plugins/infra/org.eclipse.papyrus.infra.onefile/src/org/eclipse/papyrus/infra/onefile/action/PapyrusCopyFilesAndFoldersOperation.java
index 79985ec5cad..691de191cdb 100644
--- a/plugins/infra/org.eclipse.papyrus.infra.onefile/src/org/eclipse/papyrus/infra/onefile/action/PapyrusCopyFilesAndFoldersOperation.java
+++ b/plugins/infra/org.eclipse.papyrus.infra.onefile/src/org/eclipse/papyrus/infra/onefile/action/PapyrusCopyFilesAndFoldersOperation.java
@@ -15,7 +15,9 @@
package org.eclipse.papyrus.infra.onefile.action;
import java.io.IOException;
+import java.util.ArrayList;
import java.util.HashMap;
+import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
@@ -29,8 +31,11 @@ import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.papyrus.infra.core.resource.ModelMultiException;
import org.eclipse.papyrus.infra.core.resource.ModelSet;
import org.eclipse.papyrus.infra.core.resource.sasheditor.DiModel;
+import org.eclipse.papyrus.infra.core.resource.sasheditor.SashModel;
+import org.eclipse.papyrus.infra.core.resource.sasheditor.SashModelUtils;
import org.eclipse.papyrus.infra.core.utils.DiResourceSet;
import org.eclipse.papyrus.infra.emf.resource.DependencyManagementHelper;
import org.eclipse.papyrus.infra.emf.resource.MoveFileURIReplacementStrategy;
@@ -61,7 +66,7 @@ public class PapyrusCopyFilesAndFoldersOperation extends CopyFilesAndFoldersOper
/*
* (non-Javadoc)
- *
+ *
* @see org.eclipse.papyrus.infra.onefile.action.CopyFilesAndFoldersOperation#performCopyWithAutoRename(org.eclipse.core.resources.IResource[],
* org.eclipse.core.runtime.IPath, org.eclipse.core.runtime.IProgressMonitor)
*/
@@ -109,7 +114,7 @@ public class PapyrusCopyFilesAndFoldersOperation extends CopyFilesAndFoldersOper
/*
* (non-Javadoc)
- *
+ *
* @see org.eclipse.papyrus.infra.onefile.action.CopyFilesAndFoldersOperation#performCopy(org.eclipse.core.resources.IResource[],
* org.eclipse.core.runtime.IPath, org.eclipse.core.runtime.IProgressMonitor)
*/
@@ -129,7 +134,7 @@ public class PapyrusCopyFilesAndFoldersOperation extends CopyFilesAndFoldersOper
/*
* (non-Javadoc)
- *
+ *
* @see org.eclipse.papyrus.infra.onefile.action.CopyFilesAndFoldersOperation#copyResources(org.eclipse.core.resources.IResource[],
* org.eclipse.core.resources.IContainer)
*/
@@ -138,11 +143,13 @@ public class PapyrusCopyFilesAndFoldersOperation extends CopyFilesAndFoldersOper
public IResource[] copyResources(IResource[] resources, IContainer destination) {
IResource[] copyResources = super.copyResources(resources, destination);
try {
- ModelSet modelSet = initModelSet(copyResources);
+ List<ModelSet> modelSetList = initModelSet(copyResources);
Map<URI, URI> constructInternalMapping = constructInternalMapping(copyResources);
for (int i = 0; i < resources.length; i++) {
- if (checkResource(modelSet, resources[i])) {
- restoreAllLink(modelSet, constructInternalMapping, copyResources[i], destinationPaths[i]);
+ for (ModelSet modelSet : modelSetList) {
+ if (checkResource(modelSet, resources[i])) {
+ restoreAllLink(modelSet, constructInternalMapping, copyResources[i], destinationPaths[i]);
+ }
}
}
} catch (IOException e) {
@@ -157,17 +164,23 @@ public class PapyrusCopyFilesAndFoldersOperation extends CopyFilesAndFoldersOper
* @param resources
* @return
*/
- protected ModelSet initModelSet(IResource[] resources) {
- ModelSet modelSet = new DiResourceSet();
+ protected List<ModelSet> initModelSet(IResource[] resources) {
+ List<ModelSet> modelSetList = new ArrayList<ModelSet>();
for (IResource iResource : resources) {
IPath fullPath = iResource.getFullPath();
if (DiModel.MODEL_FILE_EXTENSION.equals(fullPath.getFileExtension())) {
if (iResource instanceof IFile) {
- modelSet.createsModels((IFile) iResource);
+ try {
+ ModelSet modelSet = new DiResourceSet();
+ modelSet.loadModels((IFile) iResource);
+ modelSetList.add(modelSet);
+ } catch (ModelMultiException e) {
+ Activator.log.error("It was not possible to load models", e); //$NON-NLS-1$
+ }
}
}
}
- return modelSet;
+ return modelSetList;
}
/**
@@ -210,8 +223,27 @@ public class PapyrusCopyFilesAndFoldersOperation extends CopyFilesAndFoldersOper
DependencyManagementHelper.updateDependencies(oneInternalCopyMapping.getKey(), oneInternalCopyMapping.getValue(), resource);
}
resource.save(ResourceUtils.getSaveOptions());
- }
+ IPath fullPath = copyResources.getFullPath();
+ Resource sashResource = null;
+ // restore links for sash
+ if (DiModel.MODEL_FILE_EXTENSION.equals(fullPath.getFileExtension())) {
+ SashModel sashModel = SashModelUtils.getSashModel(modelSet);
+ if (sashModel != null && !constructInternalMapping.containsKey(sashModel.getURI())) { // Kepler and earlier stored the sash model in the DI
+ sashResource = sashModel.getResource();
+ for (Entry<URI, URI> oneInternalCopyMapping : constructInternalMapping.entrySet()) {
+ DependencyManagementHelper.updateDependencies(oneInternalCopyMapping.getKey(), oneInternalCopyMapping.getValue(), sashResource);
+ }
+ }
+ if (sashResource != null) { // save new sash model
+ ModelSet tempModelSet = new DiResourceSet();
+ tempModelSet.createModels(uri);
+ URI newsashModelURI = SashModelUtils.getSashModel(tempModelSet).getURI();
+ sashResource.setURI(newsashModelURI);
+ sashResource.save(ResourceUtils.getSaveOptions());
+ }
+ }
+ }
/**
* Construct an URI mapping from source to target
@@ -230,5 +262,4 @@ public class PapyrusCopyFilesAndFoldersOperation extends CopyFilesAndFoldersOper
}
return internalCopyMapping;
}
-
}
diff --git a/plugins/infra/org.eclipse.papyrus.infra.onefile/src/org/eclipse/papyrus/infra/onefile/providers/PapyrusEditActionProvider.java b/plugins/infra/org.eclipse.papyrus.infra.onefile/src/org/eclipse/papyrus/infra/onefile/providers/PapyrusEditActionProvider.java
index 2c2b79c21aa..1960608988d 100644
--- a/plugins/infra/org.eclipse.papyrus.infra.onefile/src/org/eclipse/papyrus/infra/onefile/providers/PapyrusEditActionProvider.java
+++ b/plugins/infra/org.eclipse.papyrus.infra.onefile/src/org/eclipse/papyrus/infra/onefile/providers/PapyrusEditActionProvider.java
@@ -19,7 +19,6 @@ import java.util.List;
import org.eclipse.core.resources.IResource;
import org.eclipse.jface.action.Action;
-import org.eclipse.jface.action.IAction;
import org.eclipse.jface.action.IMenuManager;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.TreeSelection;
@@ -36,7 +35,6 @@ import org.eclipse.ui.actions.ActionContext;
import org.eclipse.ui.actions.ActionFactory;
import org.eclipse.ui.navigator.CommonActionProvider;
import org.eclipse.ui.navigator.ICommonActionExtensionSite;
-import org.eclipse.ui.navigator.ICommonMenuConstants;
import org.eclipse.ui.navigator.ICommonViewerWorkbenchSite;
/**
@@ -55,21 +53,18 @@ public class PapyrusEditActionProvider extends CommonActionProvider {
@Override
public void fillActionBars(IActionBars actionBars) {
+ super.fillActionBars(actionBars);
if (fInViewPart) {
actionBars.setGlobalActionHandler(ActionFactory.PASTE.getId(), pasteAction);
}
- super.fillActionBars(actionBars);
}
@Override
public void fillContextMenu(IMenuManager menu) {
super.fillContextMenu(menu);
- appendToGroup(menu, pasteAction, ICommonMenuConstants.GROUP_EDIT);
- }
-
- private void appendToGroup(IMenuManager menu, IAction action, String id) {
- if (action != null && action.isEnabled()) {
- menu.appendToGroup(id, action);
+ if (pasteAction != null && pasteAction.isEnabled()) {
+ menu.insertAfter(PapyrusModelPasteAction.ID, pasteAction); // same as the internal org.eclipse.ui.internal.navigator.resources.actions.PasteAction.ID
+ menu.remove(PapyrusModelPasteAction.ID);
}
}

Back to the top