diff options
-rw-r--r-- | bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/sync/CatchupReleaseViewer.java | 30 |
1 files changed, 24 insertions, 6 deletions
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/sync/CatchupReleaseViewer.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/sync/CatchupReleaseViewer.java index 7ec91f5dd..adcaffb7e 100644 --- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/sync/CatchupReleaseViewer.java +++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/sync/CatchupReleaseViewer.java @@ -42,6 +42,7 @@ import org.eclipse.ui.IViewPart; import org.eclipse.ui.IViewSite; import org.eclipse.ui.PartInitException; import org.eclipse.ui.views.navigator.ResourceNavigator; +import org.eclipse.ui.views.navigator.ShowInNavigatorAction; /** * This viewer adds a custom filter and some merge actions. @@ -51,6 +52,26 @@ import org.eclipse.ui.views.navigator.ResourceNavigator; */ public abstract class CatchupReleaseViewer extends DiffTreeViewer implements ISelectionChangedListener { + class ShowInNavigatorAction extends Action implements ISelectionChangedListener { + IViewSite viewSite; + public ShowInNavigatorAction(IViewSite viewSite, String title) { + super(title, null); + this.viewSite = viewSite; + } + public void run() { + showSelectionInNavigator(viewSite); + } + public void selectionChanged(SelectionChangedEvent event) { + IStructuredSelection selection = (IStructuredSelection)event.getSelection(); + if (selection.size() != 1) { + setEnabled(false); + return; + } + ITeamNode node = (ITeamNode)selection.getFirstElement(); + setEnabled(node.getResource().isAccessible()); + } + }; + /** * This filter hides all empty categories tree nodes. */ @@ -119,7 +140,7 @@ public abstract class CatchupReleaseViewer extends DiffTreeViewer implements ISe private FilterAction showOnlyConflicts; private Action refresh; private Action expandAll; - private Action showInNavigator; + private ShowInNavigatorAction showInNavigator; private Action ignoreWhiteSpace; // Property constant for diff mode kind @@ -225,11 +246,8 @@ public abstract class CatchupReleaseViewer extends DiffTreeViewer implements ISe // Show in navigator if (diffModel.getViewSite() != null) { - showInNavigator = new Action(Policy.bind("CatchupReleaseViewer.showInNavigator"), null) { - public void run() { - showSelectionInNavigator(diffModel.getViewSite()); - } - }; + showInNavigator = new ShowInNavigatorAction(diffModel.getViewSite(), Policy.bind("CatchupReleaseViewer.showInNavigator")); + addSelectionChangedListener(showInNavigator); } // Ignore white space |