Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/structuremergeviewer/actions/DropDownMergeMenuAction.java')
-rw-r--r--plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/structuremergeviewer/actions/DropDownMergeMenuAction.java81
1 files changed, 56 insertions, 25 deletions
diff --git a/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/structuremergeviewer/actions/DropDownMergeMenuAction.java b/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/structuremergeviewer/actions/DropDownMergeMenuAction.java
index 5d512c732..b853b8465 100644
--- a/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/structuremergeviewer/actions/DropDownMergeMenuAction.java
+++ b/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/structuremergeviewer/actions/DropDownMergeMenuAction.java
@@ -13,6 +13,7 @@ package org.eclipse.emf.compare.ide.ui.internal.structuremergeviewer.actions;
import org.eclipse.emf.compare.ide.ui.internal.EMFCompareIDEUIMessages;
import org.eclipse.emf.compare.ide.ui.internal.EMFCompareIDEUIPlugin;
import org.eclipse.emf.compare.ide.ui.internal.configuration.EMFCompareConfiguration;
+import org.eclipse.emf.compare.rcp.ui.internal.configuration.EMFCompareConfigurationChangeListener;
import org.eclipse.jface.action.Action;
import org.eclipse.jface.action.ActionContributionItem;
import org.eclipse.jface.action.IMenuCreator;
@@ -28,16 +29,18 @@ import org.eclipse.ui.plugin.AbstractUIPlugin;
public class DropDownMergeMenuAction extends Action implements IMenuCreator {
/** The compare configuration object. */
- private EMFCompareConfiguration configuration;
+ private final EMFCompareConfiguration configuration;
/** The menu associated with this action. */
private Menu fMenu;
/** The left to right menu item. */
- private Action leftToRightItem;
+ private final Action leftToRightItem;
/** The right to left menu item. */
- private Action rightToLeftItem;
+ private final Action rightToLeftItem;
+
+ private final EMFCompareConfigurationChangeListener changeListener;
/**
* Constructor.
@@ -51,21 +54,17 @@ public class DropDownMergeMenuAction extends Action implements IMenuCreator {
setImageDescriptor(AbstractUIPlugin.imageDescriptorFromPlugin(EMFCompareIDEUIPlugin.PLUGIN_ID,
"icons/full/toolb16/left_to_right.gif")); //$NON-NLS-1$
- leftToRightItem = new DropDownLeftToRightAction(configuration) {
+ changeListener = new EMFCompareConfigurationChangeListener() {
@Override
- public void run() {
- super.run();
- updateMenu();
+ public void previewMergeModeChange(Boolean oldValue, Boolean newValue) {
+ updateMenu(newValue.booleanValue());
}
};
+ configuration.addChangeListener(changeListener);
- rightToLeftItem = new DropDownRightToLeftAction(configuration) {
- @Override
- public void run() {
- super.run();
- updateMenu();
- }
- };
+ leftToRightItem = new DropDownAction(configuration, true);
+ rightToLeftItem = new DropDownAction(configuration, false);
+ updateMenu(configuration.getPreviewMergeMode());
setMenuCreator(this);
}
@@ -78,15 +77,7 @@ public class DropDownMergeMenuAction extends Action implements IMenuCreator {
@Override
public void run() {
boolean mergeWay = configuration.getPreviewMergeMode();
- if (mergeWay) {
- configuration.setPreviewMergeMode(false);
- setImageDescriptor(AbstractUIPlugin.imageDescriptorFromPlugin(EMFCompareIDEUIPlugin.PLUGIN_ID,
- "icons/full/toolb16/right_to_left.gif")); //$NON-NLS-1$
- } else {
- configuration.setPreviewMergeMode(true);
- setImageDescriptor(AbstractUIPlugin.imageDescriptorFromPlugin(EMFCompareIDEUIPlugin.PLUGIN_ID,
- "icons/full/toolb16/left_to_right.gif")); //$NON-NLS-1$
- }
+ configuration.setPreviewMergeMode(!mergeWay);
}
/**
@@ -99,6 +90,7 @@ public class DropDownMergeMenuAction extends Action implements IMenuCreator {
fMenu.dispose();
fMenu = null;
}
+ configuration.removeChangeListener(changeListener);
}
/**
@@ -143,14 +135,53 @@ public class DropDownMergeMenuAction extends Action implements IMenuCreator {
/**
* Update the icon and tooltip of the dropdown menu.
*/
- protected void updateMenu() {
- boolean mergeWay = configuration.getPreviewMergeMode();
+ protected void updateMenu(boolean mergeWay) {
if (mergeWay) {
setImageDescriptor(AbstractUIPlugin.imageDescriptorFromPlugin(EMFCompareIDEUIPlugin.PLUGIN_ID,
"icons/full/toolb16/left_to_right.gif")); //$NON-NLS-1$
+ setToolTipText(EMFCompareIDEUIMessages.getString("dropdown.left.to.right.tooltip")); //$NON-NLS-1$
} else {
setImageDescriptor(AbstractUIPlugin.imageDescriptorFromPlugin(EMFCompareIDEUIPlugin.PLUGIN_ID,
"icons/full/toolb16/right_to_left.gif")); //$NON-NLS-1$
+ setToolTipText(EMFCompareIDEUIMessages.getString("dropdown.right.to.left.tooltip")); //$NON-NLS-1$
+ }
+ }
+
+ private static class DropDownAction extends Action {
+
+ /** The compare configuration object used to get the compare model. */
+ private final EMFCompareConfiguration configuration;
+
+ private final boolean mode;
+
+ /**
+ * Constructor.
+ *
+ * @param configuration
+ * The compare configuration object.
+ */
+ public DropDownAction(EMFCompareConfiguration configuration, boolean mode) {
+ this.configuration = configuration;
+ this.mode = mode;
+ if (mode) {
+ setText(EMFCompareIDEUIMessages.getString("dropdown.left.to.right.tooltip")); //$NON-NLS-1$
+ setImageDescriptor(AbstractUIPlugin.imageDescriptorFromPlugin(
+ EMFCompareIDEUIPlugin.PLUGIN_ID, "icons/full/toolb16/left_to_right.gif")); //$NON-NLS-1$
+ } else {
+ setText(EMFCompareIDEUIMessages.getString("dropdown.right.to.left.tooltip")); //$NON-NLS-1$
+ setImageDescriptor(AbstractUIPlugin.imageDescriptorFromPlugin(
+ EMFCompareIDEUIPlugin.PLUGIN_ID, "icons/full/toolb16/right_to_left.gif")); //$NON-NLS-1$
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.jface.action.Action#run()
+ */
+ @Override
+ public void run() {
+ configuration.setPreviewMergeMode(mode);
}
}
}

Back to the top