diff options
author | Sergey Prigogin | 2016-11-27 19:36:20 +0000 |
---|---|---|
committer | Sergey Prigogin | 2016-11-28 17:59:04 +0000 |
commit | 3faf9a6c45cf2d8f3f7dfca712ef31c70a964826 (patch) | |
tree | 53f0ec33943d489f78c4053b836e32c3ffaf7c0c | |
parent | 10ac5febaddf8c2214bf77f161bb9c757fe2ee6e (diff) | |
download | eclipse.platform.team-I20161128-2000.tar.gz eclipse.platform.team-I20161128-2000.tar.xz eclipse.platform.team-I20161128-2000.zip |
Bug 508257 - The "Swap sides" preference negatively affects RefactoringY20161201-1000I20161207-0800I20161207-0515I20161206-2000I20161206-0800I20161205-2000I20161205-0800I20161204-2000I20161203-2000I20161202-2000I20161201-2000I20161201-0800I20161130-2000I20161129-2330I20161129-2000I20161128-2000
Preview dialog
This change introduces API to disable swapping of the left and the right
panes in the Compare dialog.
Change-Id: I825085d5b27f3706eabafffbed509c5686e9a9be
2 files changed, 57 insertions, 15 deletions
diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/CompareConfiguration.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/CompareConfiguration.java index 021451528..6e18fbc9d 100644 --- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/CompareConfiguration.java +++ b/bundles/org.eclipse.compare/compare/org/eclipse/compare/CompareConfiguration.java @@ -116,6 +116,7 @@ public class CompareConfiguration { private IPreferenceStore fPreferenceStore; private ListenerList<IPropertyChangeListener> fListeners= new ListenerList<>(); private HashMap<String, Object> fProperties= new HashMap<>(); + private boolean fMirroringEnabled = true; private boolean fLeftEditable= true; private boolean fRightEditable= true; private String fAncestorLabel; @@ -366,16 +367,55 @@ public class CompareConfiguration { } /** + * Returns true if the compare viewer is mirrored, i.e. the left and the right panes are swapped. + * Mirroring is enabled by default. + * <p> * <b>Only the views are mirrored. All model values for left and right are not changed!</b> * - * @return true if the left and right side of the viewer are mirrored. Default is false. + * @return true if the compare viewer is mirrored. By default the Compare viewer is not mirrored. * @since 3.7 */ public boolean isMirrored() { + if (!fMirroringEnabled) + return false; Object property = getProperty(MIRRORED); return property instanceof Boolean && (Boolean) property; } + /** + * Returns true if mirroring of the compare viewer is enabled. Mirroring is enabled by default. + * + * @return true if mirroring is enabled + * @see #isMirrored() + * @see #setMirroringEnabled(boolean) + * @since 3.7 + */ + public final boolean isMirroringEnabled() { + return fMirroringEnabled; + } + + /** + * Enables or disables mirroring of the compare viewer, i.e. swapping of the left and the right panes. + * The mirroring is enabled by default. + * <p> + * Code that always puts the after state on the right should disable mirroring. Code that may put the after state + * on the left should not disable mirroring. + * <p> + * The "after" state is the state of the file after applying some particular change and is determined by user + * actions rather than the file timestamps. For example, when previewing result of a revert operation, the "after" + * state is the state of the file that existed at some point in the past. + * <p> + * When previewing a hypothetical change, the "after" state is the proposed future change and the "before" state + * is the current state of the file. When comparing two existing file states, the "before" and "after" states + * can be determined by chronology or by order in which the users selected the file states. + * + * @param value if true, the mirroring is enabled, otherwise disabled + * @since 3.7 + */ + public final void setMirroringEnabled(boolean value) { + fMirroringEnabled = value; + } + private ImageDescriptor getImageDescriptor(int kind) { return fgImages[(kind & 15) + (isMirrored() ? 16 : 0)]; } diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/ContentMergeViewer.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/ContentMergeViewer.java index 4f04b3f77..b0f67a215 100644 --- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/ContentMergeViewer.java +++ b/bundles/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/ContentMergeViewer.java @@ -918,22 +918,24 @@ public abstract class ContentMergeViewer extends ContentViewer tbm.appendToGroup("merge", copyRightToLeftItem); //$NON-NLS-1$ fHandlerService.registerAction(copyRightToLeftItem.getAction(), "org.eclipse.compare.copyAllRightToLeft"); //$NON-NLS-1$ - fSwitchLeftAndRight = new Action() { - @Override - public void run() { - IPreferenceStore preferences = getCompareConfiguration().getPreferenceStore(); - preferences.setValue(ComparePreferencePage.SWAPPED, !getCompareConfiguration().isMirrored()); - if (preferences instanceof IPersistentPreferenceStore) { - try { - ((IPersistentPreferenceStore) preferences).save(); - } catch (IOException e) { - CompareUIPlugin.log(e); + if (getCompareConfiguration().isMirroringEnabled()) { + fSwitchLeftAndRight = new Action() { + @Override + public void run() { + IPreferenceStore preferences = getCompareConfiguration().getPreferenceStore(); + preferences.setValue(ComparePreferencePage.SWAPPED, !getCompareConfiguration().isMirrored()); + if (preferences instanceof IPersistentPreferenceStore) { + try { + ((IPersistentPreferenceStore) preferences).save(); + } catch (IOException e) { + CompareUIPlugin.log(e); + } } } - } - }; - Utilities.initAction(fSwitchLeftAndRight, getResourceBundle(), "action.SwitchLeftAndRight."); //$NON-NLS-1$ - tbm.appendToGroup("modes", fSwitchLeftAndRight); //$NON-NLS-1$ + }; + Utilities.initAction(fSwitchLeftAndRight, getResourceBundle(), "action.SwitchLeftAndRight."); //$NON-NLS-1$ + tbm.appendToGroup("modes", fSwitchLeftAndRight); //$NON-NLS-1$ + } final ChangePropertyAction a= new ChangePropertyAction(fBundle, getCompareConfiguration(), "action.EnableAncestor.", ICompareUIConstants.PROP_ANCESTOR_VISIBLE); //$NON-NLS-1$ a.setChecked(fAncestorVisible); |