diff options
| author | Ruth Alkema | 2010-11-24 09:18:00 +0000 |
|---|---|---|
| committer | Mathias Kinzler | 2010-11-24 12:26:18 +0000 |
| commit | f6c3cb141afca80cfd74119ccfd12f42474ed527 (patch) | |
| tree | 94368bd5fe02e1c6d5adb419cce65e1a040529b4 | |
| parent | 599a5f2b10464907ad79de8843c7ff83196acad6 (diff) | |
| download | egit-f6c3cb141afca80cfd74119ccfd12f42474ed527.tar.gz egit-f6c3cb141afca80cfd74119ccfd12f42474ed527.tar.xz egit-f6c3cb141afca80cfd74119ccfd12f42474ed527.zip | |
[historyView] Added menu option to toggle 'reuse compare editor'
The option already existed in the team preferences, but this is
not known to everybody. Therefore it is now also added to the menu
of the GitHistoryPage.
Change-Id: Ib9df76630aa6f59bd5c095f2c5c2fdfc0ddcf283
Signed-off-by: Ruth Alkema <ruth@diasoft.nl>
4 files changed, 59 insertions, 8 deletions
diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/UIText.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/UIText.java index 5c0f95301c..13412fa318 100644 --- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/UIText.java +++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/UIText.java @@ -277,6 +277,9 @@ public class UIText extends NLS { public static String GitHistoryPage_CompareModeMenuLabel; /** */ + public static String GitHistoryPage_ReuseCompareEditorMenuLabel; + + /** */ public static String GitHistoryPage_CompareWithCurrentHeadMenu; /** */ diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/CompareUtils.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/CompareUtils.java index a1053e8f7a..30f316f063 100644 --- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/CompareUtils.java +++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/CompareUtils.java @@ -27,10 +27,14 @@ import org.eclipse.core.runtime.IPath; import org.eclipse.core.runtime.Path; import org.eclipse.core.runtime.Platform; import org.eclipse.core.runtime.preferences.DefaultScope; +import org.eclipse.core.runtime.preferences.IEclipsePreferences; import org.eclipse.core.runtime.preferences.InstanceScope; +import org.eclipse.core.runtime.preferences.IEclipsePreferences.IPreferenceChangeListener; +import org.eclipse.core.runtime.preferences.IEclipsePreferences.PreferenceChangeEvent; import org.eclipse.egit.core.internal.storage.GitFileRevision; import org.eclipse.egit.ui.Activator; import org.eclipse.egit.ui.UIText; +import org.eclipse.jface.action.Action; import org.eclipse.jface.util.OpenStrategy; import org.eclipse.jgit.lib.Constants; import org.eclipse.jgit.lib.ObjectId; @@ -45,6 +49,7 @@ import org.eclipse.ui.IEditorPart; import org.eclipse.ui.IEditorReference; import org.eclipse.ui.IReusableEditor; import org.eclipse.ui.IWorkbenchPage; +import org.eclipse.ui.actions.ActionFactory.IWorkbenchAction; /** * A collection of helper methods useful for comparing content @@ -297,10 +302,46 @@ public class CompareUtils { return null; } + /** + * Action to toggle the team 'reuse compare editor' preference + */ + public static class ReuseCompareEditorAction extends Action implements + IPreferenceChangeListener, IWorkbenchAction { + IEclipsePreferences node = new InstanceScope().getNode(TEAM_UI_PLUGIN); + + /** + * Default constructor + */ + public ReuseCompareEditorAction() { + node.addPreferenceChangeListener(this); + setText(UIText.GitHistoryPage_ReuseCompareEditorMenuLabel); + setChecked(CompareUtils.isReuseOpenEditor()); + } + + public void run() { + CompareUtils.setReuseOpenEditor(isChecked()); + } + + public void dispose() { + // stop listening + node.removePreferenceChangeListener(this); + } + + public void preferenceChange(PreferenceChangeEvent event) { + setChecked(isReuseOpenEditor()); + + } + } + private static boolean isReuseOpenEditor() { boolean defaultReuse = new DefaultScope().getNode(TEAM_UI_PLUGIN) .getBoolean(REUSE_COMPARE_EDITOR_PREFID, false); return new InstanceScope().getNode(TEAM_UI_PLUGIN).getBoolean( REUSE_COMPARE_EDITOR_PREFID, defaultReuse); } + + private static void setReuseOpenEditor(boolean value) { + new InstanceScope().getNode(TEAM_UI_PLUGIN).putBoolean( + REUSE_COMPARE_EDITOR_PREFID, value); + } } diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/history/GitHistoryPage.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/history/GitHistoryPage.java index dc1d2ff630..31d0258be6 100644 --- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/history/GitHistoryPage.java +++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/history/GitHistoryPage.java @@ -31,6 +31,7 @@ import org.eclipse.egit.ui.UIIcons; import org.eclipse.egit.ui.UIPreferences; import org.eclipse.egit.ui.UIText; import org.eclipse.egit.ui.UIUtils; +import org.eclipse.egit.ui.internal.CompareUtils; import org.eclipse.egit.ui.internal.repository.tree.FileNode; import org.eclipse.egit.ui.internal.repository.tree.FolderNode; import org.eclipse.egit.ui.internal.repository.tree.RepositoryTreeNode; @@ -88,7 +89,7 @@ import org.eclipse.swt.widgets.Listener; import org.eclipse.team.ui.history.HistoryPage; import org.eclipse.ui.IWorkbenchPart; import org.eclipse.ui.IWorkbenchPartSite; -import org.eclipse.ui.actions.ActionFactory; +import org.eclipse.ui.actions.ActionFactory.IWorkbenchAction; import org.eclipse.ui.progress.IWorkbenchSiteProgressService; /** Graphical commit history viewer. */ @@ -111,7 +112,7 @@ public class GitHistoryPage extends HistoryPage implements RefsChangedListener { // we need to keep track of these actions so that we can // dispose them when the page is disposed (the history framework // does not do this for us) - private final List<BooleanPrefAction> actionsToDispose = new ArrayList<BooleanPrefAction>(); + private final List<IWorkbenchAction> actionsToDispose = new ArrayList<IWorkbenchAction>(); private final IPersistentPreferenceStore store = (IPersistentPreferenceStore) Activator .getDefault().getPreferenceStore(); @@ -346,6 +347,9 @@ public class GitHistoryPage extends HistoryPage implements RefsChangedListener { }; actionsToDispose.add(compareModeAction); + CompareUtils.ReuseCompareEditorAction reuseCompareEditorAction = new CompareUtils.ReuseCompareEditorAction(); + actionsToDispose.add(reuseCompareEditorAction); + compareModeAction.setImageDescriptor(UIIcons.ELCL16_COMPARE_VIEW); compareModeAction.setToolTipText(UIText.GitHistoryPage_compareMode); @@ -386,6 +390,7 @@ public class GitHistoryPage extends HistoryPage implements RefsChangedListener { viewMenuMgr.add(showAllResourceVersionsAction); viewMenuMgr.add(new Separator()); viewMenuMgr.add(compareModeAction); + viewMenuMgr.add(reuseCompareEditorAction); viewMenuMgr.add(showAllBranchesAction); final IAction showCommentAction = createShowComment(); @@ -793,19 +798,19 @@ public class GitHistoryPage extends HistoryPage implements RefsChangedListener { } // dispose of the actions (the history framework doesn't do this for us) - for (BooleanPrefAction action : actionsToDispose) + for (IWorkbenchAction action : actionsToDispose) action.dispose(); actionsToDispose.clear(); cancelRefreshJob(); if (popupMgr != null) { for (final IContributionItem i : popupMgr.getItems()) { - if (i instanceof ActionFactory.IWorkbenchAction) - ((ActionFactory.IWorkbenchAction) i).dispose(); + if (i instanceof IWorkbenchAction) + ((IWorkbenchAction) i).dispose(); } for (final IContributionItem i : getSite().getActionBars() .getMenuManager().getItems()) { - if (i instanceof ActionFactory.IWorkbenchAction) - ((ActionFactory.IWorkbenchAction) i).dispose(); + if (i instanceof IWorkbenchAction) + ((IWorkbenchAction) i).dispose(); } } super.dispose(); @@ -1267,7 +1272,7 @@ public class GitHistoryPage extends HistoryPage implements RefsChangedListener { } private abstract class BooleanPrefAction extends Action implements - IPropertyChangeListener, ActionFactory.IWorkbenchAction { + IPropertyChangeListener, IWorkbenchAction { private final String prefName; BooleanPrefAction(final String pn, final String text) { @@ -1302,4 +1307,5 @@ public class GitHistoryPage extends HistoryPage implements RefsChangedListener { store.removePropertyChangeListener(this); } } + } diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/uitext.properties b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/uitext.properties index 81f9203099..9ee419a5e1 100644 --- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/uitext.properties +++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/uitext.properties @@ -94,6 +94,7 @@ GitHistoryPage_AllOfResourceMenuLabel=All &Changes of Resource GitHistoryPage_AllOfResourceTooltip=Show all changes of selected Resource and its children GitHistoryPage_CheckoutMenuLabel=&Checkout GitHistoryPage_CompareModeMenuLabel=Compare &Mode +GitHistoryPage_ReuseCompareEditorMenuLabel=Reuse Compare &Editor GitHistoryPage_CompareWithCurrentHeadMenu=Compare with current &HEAD GitHistoryPage_CompareWithEachOtherMenuLabel=Compare with &each other GitHistoryPage_CompareWithWorkingTreeMenuMenuLabel=Compare with &working tree |
