Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorvlorenzo2012-07-30 08:01:20 +0000
committervlorenzo2012-07-30 08:01:20 +0000
commit52928c7dfad30ded34b1919a0625ebd1c51cf595 (patch)
tree6fbceba19aa0f9739484b6149d9ef5f9b40ff55e /extraplugins/uml
parente609ca3f70ed536eea0a58bf808a2e8fd4c73c35 (diff)
downloadorg.eclipse.papyrus-52928c7dfad30ded34b1919a0625ebd1c51cf595.tar.gz
org.eclipse.papyrus-52928c7dfad30ded34b1919a0625ebd1c51cf595.tar.xz
org.eclipse.papyrus-52928c7dfad30ded34b1919a0625ebd1c51cf595.zip
386217: [UML Compare] The actions MergeAll in the transactional Viewer is not correctly refreshed
https://bugs.eclipse.org/bugs/show_bug.cgi?id=386217
Diffstat (limited to 'extraplugins/uml')
-rw-r--r--extraplugins/uml/compare/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/content/transactional/viewer/PapyrusTransactionalModelContentMergeViewer.java31
1 files changed, 22 insertions, 9 deletions
diff --git a/extraplugins/uml/compare/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/content/transactional/viewer/PapyrusTransactionalModelContentMergeViewer.java b/extraplugins/uml/compare/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/content/transactional/viewer/PapyrusTransactionalModelContentMergeViewer.java
index 885453450ce..0385c1a3adb 100644
--- a/extraplugins/uml/compare/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/content/transactional/viewer/PapyrusTransactionalModelContentMergeViewer.java
+++ b/extraplugins/uml/compare/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/content/transactional/viewer/PapyrusTransactionalModelContentMergeViewer.java
@@ -15,9 +15,11 @@ package org.eclipse.papyrus.infra.emf.compare.ui.content.transactional.viewer;
import org.eclipse.compare.CompareConfiguration;
-import org.eclipse.emf.compare.diff.merge.service.MergeFactory;
-import org.eclipse.emf.compare.ui.ModelCompareInput;
+import org.eclipse.core.runtime.Assert;
+import org.eclipse.emf.compare.diff.metamodel.DiffElement;
+import org.eclipse.emf.compare.diff.metamodel.DiffModel;
import org.eclipse.emf.compare.ui.internal.ModelComparator;
+import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.workspace.ui.actions.RedoActionWrapper;
import org.eclipse.emf.workspace.ui.actions.UndoActionWrapper;
import org.eclipse.jface.action.ActionContributionItem;
@@ -27,7 +29,6 @@ import org.eclipse.jface.action.Separator;
import org.eclipse.jface.action.ToolBarManager;
import org.eclipse.papyrus.infra.emf.compare.diff.merge.ITransactionalMerger;
import org.eclipse.papyrus.infra.emf.compare.diff.service.TransactionalMergeFactory;
-import org.eclipse.papyrus.infra.emf.compare.diff.service.TransactionalMergeService;
import org.eclipse.papyrus.infra.emf.compare.ui.content.viewer.PapyrusCustomizableModelContentMergeViewer;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
@@ -149,9 +150,9 @@ public class PapyrusTransactionalModelContentMergeViewer extends PapyrusCustomiz
boolean canCopyLeftToRight = false;
boolean canCopyRightToLeft = false;
- //TODO
- boolean canAllCopyLeftToRight = false;
- boolean canAllCopyRightToLeft = false;
+
+ boolean canAllCopyLeftToRight = true;
+ boolean canAllCopyRightToLeft = true;
if(currentSelection.size() == 1) {
final ITransactionalMerger merger = TransactionalMergeFactory.createMerger(currentSelection.get(0));
@@ -159,13 +160,26 @@ public class PapyrusTransactionalModelContentMergeViewer extends PapyrusCustomiz
canCopyRightToLeft = merger.canApplyInOrigin();
}
+ if(currentSelection.size() > 0) {
+ EObject diffModel = currentSelection.get(0);
+ while(!(diffModel instanceof DiffModel)) {
+ diffModel = diffModel.eContainer();
+ }
+ Assert.isNotNull(diffModel);
+ for(DiffElement current : ((DiffModel)diffModel).getDifferences()) {
+ final ITransactionalMerger merger = TransactionalMergeFactory.createMerger(current);
+ canAllCopyLeftToRight = canAllCopyLeftToRight && merger.canUndoInTarget();
+ canAllCopyRightToLeft = canAllCopyRightToLeft && merger.canApplyInOrigin();
+ }
+ }
+ System.out.println(enabled);
if(_copyAllLeftToRight != null) {
- //TODO
+ _copyAllLeftToRight.setEnabled(rightEditable && enabled && canAllCopyLeftToRight);
}
if(_copyAllRightToLeft != null) {
- //TODO
+ _copyAllRightToLeft.setEnabled(leftEditable && enabled && canAllCopyRightToLeft);
}
if(_copyDiffLeftToRight != null) {
_copyDiffLeftToRight.setEnabled(rightEditable && enabled && canCopyLeftToRight);
@@ -174,5 +188,4 @@ public class PapyrusTransactionalModelContentMergeViewer extends PapyrusCustomiz
_copyDiffRightToLeft.setEnabled(leftEditable && enabled && canCopyRightToLeft);
}
}
-
}

Back to the top