[521945] Add a preference to disable jumping the next diff after merge
Bug: 521945
Change-Id: I5ab05bf0c49056b240ff5df63e3a6617b0de234f
Signed-off-by: Philip Langer <planger@eclipsesource.com>
diff --git a/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/ide_ui_messages.properties b/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/ide_ui_messages.properties
index 1112ae3..a85574a 100644
--- a/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/ide_ui_messages.properties
+++ b/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/ide_ui_messages.properties
@@ -84,6 +84,7 @@
ModelResolutionPreferencesPage.resolutionScope.invalid = Invalid resolution scope value.
MergePreferencesPage.preMergeOnConflict = Pre-merge models when a real conflict is detected
+MergePreferencesPage.selectNextUnresolvedDiff = Select next unresolved difference after a merge action
EditorPreferencesPage.colorTab.label = Colors
EditorPreferencesPage.colorTab.preferenceHyperLink = See <a>''Color and Fonts''</a> preferences for EMF Compare colors.
diff --git a/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/preferences/EMFCompareUIPreferences.java b/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/preferences/EMFCompareUIPreferences.java
index 620cf87..7ef926c 100644
--- a/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/preferences/EMFCompareUIPreferences.java
+++ b/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/preferences/EMFCompareUIPreferences.java
@@ -76,4 +76,11 @@
*/
String EDITOR_TREE_HIGHLIGHT_RELATED_CHANGES = EMFCompareIDEUIPlugin.PLUGIN_ID
+ ".preference.editor.tree.highlight"; //$NON-NLS-1$
+
+ /**
+ * Preference indicating whether the next unresolved diff should be selected after a merge action. The
+ * expected values are <code>true</code> or <code>false</code>.
+ */
+ String SELECT_NEXT_UNRESOLVED_DIFF = EMFCompareIDEUIPlugin.PLUGIN_ID
+ + ".preference.selectNextUnresolvedDiff"; //$NON-NLS-1$
}
diff --git a/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/preferences/EMFCompareUIPreferencesInitializer.java b/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/preferences/EMFCompareUIPreferencesInitializer.java
index 4df8fc8..48c09dd 100644
--- a/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/preferences/EMFCompareUIPreferencesInitializer.java
+++ b/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/preferences/EMFCompareUIPreferencesInitializer.java
@@ -36,5 +36,6 @@
store.setDefault(EMFCompareUIPreferences.EDITOR_TREE_AUTO_EXPAND_LEVEL, 1);
store.setDefault(EMFCompareUIPreferences.EDITOR_TREE_AUTO_SELECT_FIRST_CHANGE, true);
store.setDefault(EMFCompareUIPreferences.EDITOR_TREE_HIGHLIGHT_RELATED_CHANGES, true);
+ store.setDefault(EMFCompareUIPreferences.SELECT_NEXT_UNRESOLVED_DIFF, true);
}
}
diff --git a/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/preferences/EditorPreferencePage.java b/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/preferences/EditorPreferencePage.java
index ce788fa..7cfe701 100644
--- a/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/preferences/EditorPreferencePage.java
+++ b/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/preferences/EditorPreferencePage.java
@@ -15,6 +15,7 @@
import static org.eclipse.emf.compare.ide.ui.internal.preferences.EMFCompareUIPreferences.EDITOR_TREE_AUTO_SELECT_FIRST_CHANGE;
import static org.eclipse.emf.compare.ide.ui.internal.preferences.EMFCompareUIPreferences.EDITOR_TREE_HIGHLIGHT_RELATED_CHANGES;
+import org.eclipse.emf.compare.ide.ui.internal.EMFCompareIDEUIMessages;
import org.eclipse.emf.compare.ide.ui.internal.EMFCompareIDEUIPlugin;
import org.eclipse.emf.compare.rcp.ui.internal.mergeviewer.CompareColorImpl;
import org.eclipse.jface.layout.GridDataFactory;
@@ -66,6 +67,9 @@
/** Editor for preference {@link EMFCompareUIPreferences#EDITOR_TREE_HIGHLIGHT_RELATED_CHANGES}. */
protected BooleanFieldEditor treeHighlightRelatedChanges;
+ /** Editor for preference {@link EMFCompareUIPreferences#SELECT_NEXT_UNRESOLVED_DIFF}. */
+ private BooleanFieldEditor selectNextUnresolvedDiff;
+
public EditorPreferencePage() {
super(FieldEditorPreferencePage.GRID);
}
@@ -165,10 +169,12 @@
createAutoExpandTreeLevel(getTreeTab());
createAutoSelectFirstChange(getTreeTab());
createHighlightRelatedChanges(getTreeTab());
+ createSelectNextUnresolvedDiff(getTreeTab());
GridLayoutFactory.swtDefaults().numColumns(2).applyTo(getTreeTab());
treeAutoSelectFirstChange.fillIntoGrid(getTreeTab(), 2);
treeHighlightRelatedChanges.fillIntoGrid(getTreeTab(), 2);
+ selectNextUnresolvedDiff.fillIntoGrid(getTreeTab(), 2);
}
/**
@@ -234,4 +240,20 @@
addField(treeHighlightRelatedChanges);
return treeHighlightRelatedChanges;
}
+
+ /**
+ * Creates an editor for the {@link EMFCompareUIPreferences#EDITOR_TREE_HIGHLIGHT_RELATED_CHANGES}
+ * preference.
+ *
+ * @param parent
+ * editor parent
+ * @return editor
+ */
+ protected BooleanFieldEditor createSelectNextUnresolvedDiff(Composite parent) {
+ selectNextUnresolvedDiff = new BooleanFieldEditor(EMFCompareUIPreferences.SELECT_NEXT_UNRESOLVED_DIFF,
+ EMFCompareIDEUIMessages.getString("MergePreferencesPage.selectNextUnresolvedDiff"), //$NON-NLS-1$
+ BooleanFieldEditor.DEFAULT, parent);
+ addField(selectNextUnresolvedDiff);
+ return selectNextUnresolvedDiff;
+ }
}
diff --git a/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/structuremergeviewer/actions/MergeAction.java b/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/structuremergeviewer/actions/MergeAction.java
index 9b1c7ac..67fffa8 100644
--- a/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/structuremergeviewer/actions/MergeAction.java
+++ b/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/structuremergeviewer/actions/MergeAction.java
@@ -32,6 +32,7 @@
import org.eclipse.emf.compare.domain.IMergeRunnable;
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.preferences.EMFCompareUIPreferences;
import org.eclipse.emf.compare.ide.ui.internal.structuremergeviewer.Navigatable;
import org.eclipse.emf.compare.internal.merge.MergeMode;
import org.eclipse.emf.compare.merge.IDiffRelationshipComputer;
@@ -230,7 +231,8 @@
mergerRegistry, mergeRunnable);
editingDomain.getCommandStack().execute(mergeCommand);
- if (navigatable != null) {
+ if (navigatable != null && EMFCompareIDEUIPlugin.getDefault().getPreferenceStore()
+ .getBoolean(EMFCompareUIPreferences.SELECT_NEXT_UNRESOLVED_DIFF)) {
// navigator is null in MergeAllNonConflictingAction
navigatable.selectChange(Navigatable.NEXT_UNRESOLVED_CHANGE);
}