Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoreperico2011-01-10 16:10:54 +0000
committereperico2011-01-10 16:10:54 +0000
commitf1f44ac99811a62990636604027b1eea724ab102 (patch)
tree08a2503a07684f46fec58aca9fc060ca2764e1c3
parentf77ff506ae58ae11614a4c36513067f774bfaf5a (diff)
downloadorg.eclipse.papyrus-f1f44ac99811a62990636604027b1eea724ab102.tar.gz
org.eclipse.papyrus-f1f44ac99811a62990636604027b1eea724ab102.tar.xz
org.eclipse.papyrus-f1f44ac99811a62990636604027b1eea724ab102.zip
ASSIGNED - bug 277680: Control mode
https://bugs.eclipse.org/bugs/show_bug.cgi?id=277680 - fix problem with children assignment for specific cases of control
-rw-r--r--plugins/core/org.eclipse.papyrus.controlmode/src/org/eclipse/papyrus/controlmode/action/PapyrusControlAction.java3
-rw-r--r--plugins/core/org.eclipse.papyrus.controlmode/src/org/eclipse/papyrus/controlmode/commands/ControlCommand.java25
-rw-r--r--plugins/core/org.eclipse.papyrus.core.resourceloading/src/org/eclipse/papyrus/core/resourceloading/ControledResourceAdapter.java6
3 files changed, 19 insertions, 15 deletions
diff --git a/plugins/core/org.eclipse.papyrus.controlmode/src/org/eclipse/papyrus/controlmode/action/PapyrusControlAction.java b/plugins/core/org.eclipse.papyrus.controlmode/src/org/eclipse/papyrus/controlmode/action/PapyrusControlAction.java
index 54779206f49..21e92bdd041 100644
--- a/plugins/core/org.eclipse.papyrus.controlmode/src/org/eclipse/papyrus/controlmode/action/PapyrusControlAction.java
+++ b/plugins/core/org.eclipse.papyrus.controlmode/src/org/eclipse/papyrus/controlmode/action/PapyrusControlAction.java
@@ -102,9 +102,8 @@ public class PapyrusControlAction extends ControlAction {
private boolean getDiagram(EObject eObject) {
Resource modelResource = eObject.eResource();
if (modelResource != null) {
- // only check for diagrams in the relative notation resource (same name as the opened resource), use ModelSetQueryAdapter instead
+ // only check for diagrams in the relative notation resource (same name as the opened resource)
Resource notationResource = modelResource.getResourceSet().getResource(modelResource.getURI().trimFileExtension().appendFileExtension(NotationModel.NOTATION_FILE_EXTENSION), true);
- //ModelSetQueryAdapter.getExistingTypeCacheAdapter(eObject).getReachableObjectsOfType(eObject, NotationPackage.Literals.DIAGRAM);
if (notationResource != null) {
for (EObject o : notationResource.getContents()) {
if (o instanceof Diagram) {
diff --git a/plugins/core/org.eclipse.papyrus.controlmode/src/org/eclipse/papyrus/controlmode/commands/ControlCommand.java b/plugins/core/org.eclipse.papyrus.controlmode/src/org/eclipse/papyrus/controlmode/commands/ControlCommand.java
index 1eeb33a5b8f..be5e61c1f5e 100644
--- a/plugins/core/org.eclipse.papyrus.controlmode/src/org/eclipse/papyrus/controlmode/commands/ControlCommand.java
+++ b/plugins/core/org.eclipse.papyrus.controlmode/src/org/eclipse/papyrus/controlmode/commands/ControlCommand.java
@@ -37,6 +37,7 @@ import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.emf.edit.command.AddCommand;
+import org.eclipse.emf.edit.command.RemoveCommand;
import org.eclipse.emf.edit.domain.EditingDomain;
import org.eclipse.emf.edit.ui.EMFEditUIPlugin;
import org.eclipse.emf.transaction.TransactionalEditingDomain;
@@ -401,27 +402,31 @@ public class ControlCommand extends AbstractTransactionalCommand {
URI newResolvedURIFromChild = fullPathParent.deresolve(controledURIFullPath);
ControledResource aNewOne = historyFactory.eINSTANCE.createControledResource();
aNewOne.setResourceURL(newResolvedURIFromChild.toString());
+ // add new control resource to the new history
compoundCommand.append(new AddCommand(domain, getControledResource(controlledDI, URI.createURI(controledResourceURL).lastSegment(), compoundCommand, getEditingDomain()), historyPackage.Literals.CONTROLED_RESOURCE__CHILDREN, aNewOne));
+ // remove old controlled resource from the parent resource
+ compoundCommand.append(RemoveCommand.create(domain, r.eContainer(), historyPackage.Literals.CONTROLED_RESOURCE__CHILDREN, r));
+
// manage notation
URI newNotation = newResolvedURIFromChild.trimFileExtension().appendFileExtension(NotationModel.NOTATION_FILE_EXTENSION);
ControledResource aNewOneNotation = historyFactory.eINSTANCE.createControledResource();
aNewOneNotation.setResourceURL(newNotation.toString());
+ // add new control resource to the new history
compoundCommand.append(new AddCommand(domain, getControledResource(controlledDI, URI.createURI(URI.createURI(controledResourceURL).trimFileExtension().appendFileExtension(NotationModel.NOTATION_FILE_EXTENSION).toString()).lastSegment(), compoundCommand, getEditingDomain()), historyPackage.Literals.CONTROLED_RESOURCE__CHILDREN, aNewOneNotation));
-
+ // remove old controlled resource from the parent resource
+ URI notationParentURL = URI.createURI(r.getParent().getResourceURL()).trimFileExtension().appendFileExtension(NotationModel.NOTATION_FILE_EXTENSION);
+ ControledResource notationParent = getControledResource(r.eResource(), notationParentURL.toString(), compoundCommand, domain);
+ for (ControledResource notationChild : notationParent.getChildren()) {
+ URI notationURI = newResolvedURIFromChild.trimFileExtension().appendFileExtension(NotationModel.NOTATION_FILE_EXTENSION);
+ if (notationChild.getResourceURL().equals(notationURI.toString())) {
+ compoundCommand.append(RemoveCommand.create(domain, notationParent, historyPackage.Literals.CONTROLED_RESOURCE__CHILDREN, notationChild));
+ }
+ }
}
}
}
}
}
-
-// protected HistoryModel getHistoryModel() {
-// HistoryModel historyModel = HistoryUtils.getHistoryModel(diResourceSet);
-// if(historyModel == null) {
-// diResourceSet.createsModels(new ModelIdentifiers(HistoryModel.MODEL_ID));
-// historyModel = HistoryUtils.getHistoryModel(diResourceSet);
-// }
-// return historyModel;
-// }
/**
* Get the controlled resource in a specified resource
diff --git a/plugins/core/org.eclipse.papyrus.core.resourceloading/src/org/eclipse/papyrus/core/resourceloading/ControledResourceAdapter.java b/plugins/core/org.eclipse.papyrus.core.resourceloading/src/org/eclipse/papyrus/core/resourceloading/ControledResourceAdapter.java
index b03e55e3949..2135cf2b66f 100644
--- a/plugins/core/org.eclipse.papyrus.core.resourceloading/src/org/eclipse/papyrus/core/resourceloading/ControledResourceAdapter.java
+++ b/plugins/core/org.eclipse.papyrus.core.resourceloading/src/org/eclipse/papyrus/core/resourceloading/ControledResourceAdapter.java
@@ -156,9 +156,9 @@ public class ControledResourceAdapter implements Adapter.Internal {
if (list != null)
{
list.remove(res);
- }
- if(list.isEmpty()) {
- resources.remove(res.getResourceURL());
+ if(list.isEmpty()) {
+ resources.remove(res.getResourceURL());
+ }
}
}

Back to the top