From 358c24795dabc1785128804ed0ae739aeaed8eef Mon Sep 17 00:00:00 2001 From: Brett Randall Date: Thu, 21 Mar 2013 09:46:51 +1000 Subject: [PATCH] Bug 374017 - RefreshAction is now added to context menu and enabled when at least one project is open. If a selection contains closed projects, Refresh now remains available provided at least one resource is open. --- .../org/eclipse/ui/actions/RefreshAction.java | 11 +++++++++++ .../org/eclipse/ui/actions/WorkspaceAction.java | 20 +++++++++++++++++++- .../ui/views/navigator/WorkspaceActionGroup.java | 3 ++- .../actions/ResourceMgmtActionProvider.java | 3 ++- 4 files changed, 34 insertions(+), 3 deletions(-) diff --git a/bundles/org.eclipse.ui.ide/extensions/org/eclipse/ui/actions/RefreshAction.java b/bundles/org.eclipse.ui.ide/extensions/org/eclipse/ui/actions/RefreshAction.java index 37a46dd..0e383d3 100644 --- a/bundles/org.eclipse.ui.ide/extensions/org/eclipse/ui/actions/RefreshAction.java +++ b/bundles/org.eclipse.ui.ide/extensions/org/eclipse/ui/actions/RefreshAction.java @@ -7,6 +7,7 @@ * * Contributors: * IBM Corporation - initial API and implementation + * Brett Randall - Bug 374017 https://bugs.eclipse.org/374017 *******************************************************************************/ package org.eclipse.ui.actions; @@ -190,6 +191,16 @@ public class RefreshAction extends WorkspaceAction { } /** + * Overrides {@link WorkspaceAction#updateSelected(IResource)} so that {@link IProject} + * instances are always considered refreshable. + * + * @see org.eclipse.ui.actions.WorkspaceAction#updateSelected(org.eclipse.core.resources.IResource) + */ + protected boolean updateSelected(IResource resource) { + return (resource instanceof IProject || super.updateSelected(resource)); + } + + /** * Handle the key release. * * @param event diff --git a/bundles/org.eclipse.ui.ide/extensions/org/eclipse/ui/actions/WorkspaceAction.java b/bundles/org.eclipse.ui.ide/extensions/org/eclipse/ui/actions/WorkspaceAction.java index a3131b3..617d2d2 100644 --- a/bundles/org.eclipse.ui.ide/extensions/org/eclipse/ui/actions/WorkspaceAction.java +++ b/bundles/org.eclipse.ui.ide/extensions/org/eclipse/ui/actions/WorkspaceAction.java @@ -7,6 +7,7 @@ * * Contributors: * IBM Corporation - initial API and implementation + * Brett Randall - Bug 374017 https://bugs.eclipse.org/374017 *******************************************************************************/ package org.eclipse.ui.actions; @@ -392,7 +393,7 @@ public abstract class WorkspaceAction extends SelectionListenerAction { } for (Iterator i = getSelectedResources().iterator(); i.hasNext();) { IResource r = (IResource) i.next(); - if (!r.isAccessible()) { + if (!updateSelected(r)) { return false; } } @@ -400,6 +401,23 @@ public abstract class WorkspaceAction extends SelectionListenerAction { } /** + * Called by {@link #updateSelection(IStructuredSelection)} to test each + * selected resource. If any resource returns false, the selection update + * will result in a disabled action. + * + * This implementation returns true if a resource is accessible, otherwise + * it returns false. Subclasses may override this behaviour with a more + * specific resource test. + * + * @param resource + * @return true if the current resource is selectable for this action + * @since 3.8 + */ + protected boolean updateSelected(IResource resource) { + return resource.isAccessible(); + } + + /** * Returns the elements that the action is to be performed on. By default * return the selected resources. *

diff --git a/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/views/navigator/WorkspaceActionGroup.java b/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/views/navigator/WorkspaceActionGroup.java index e2bbd83..a10d457 100644 --- a/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/views/navigator/WorkspaceActionGroup.java +++ b/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/views/navigator/WorkspaceActionGroup.java @@ -8,6 +8,7 @@ * Contributors: * IBM Corporation - initial API and implementation * Sebastian Davids - Images for menu items (27481) + * Brett Randall - Bug 374017 https://bugs.eclipse.org/374017 *******************************************************************************/ package org.eclipse.ui.views.navigator; @@ -142,7 +143,7 @@ public class WorkspaceActionGroup extends ResourceNavigatorActionGroup { buildAction.selectionChanged(selection); menu.add(buildAction); } - if (!hasClosedProjects) { + if (hasOpenProjects) { refreshAction.selectionChanged(selection); menu.add(refreshAction); } diff --git a/bundles/org.eclipse.ui.navigator.resources/src/org/eclipse/ui/internal/navigator/resources/actions/ResourceMgmtActionProvider.java b/bundles/org.eclipse.ui.navigator.resources/src/org/eclipse/ui/internal/navigator/resources/actions/ResourceMgmtActionProvider.java index 2b22914..6d9249f 100644 --- a/bundles/org.eclipse.ui.navigator.resources/src/org/eclipse/ui/internal/navigator/resources/actions/ResourceMgmtActionProvider.java +++ b/bundles/org.eclipse.ui.navigator.resources/src/org/eclipse/ui/internal/navigator/resources/actions/ResourceMgmtActionProvider.java @@ -7,6 +7,7 @@ * * Contributors: * IBM Corporation - initial API and implementation + * Brett Randall - Bug 374017 https://bugs.eclipse.org/374017 *******************************************************************************/ package org.eclipse.ui.internal.navigator.resources.actions; @@ -152,7 +153,7 @@ public class ResourceMgmtActionProvider extends CommonActionProvider { buildAction.selectionChanged(selection); menu.appendToGroup(ICommonMenuConstants.GROUP_BUILD, buildAction); } - if (!hasClosedProjects) { + if (hasOpenProjects) { refreshAction.selectionChanged(selection); menu.appendToGroup(ICommonMenuConstants.GROUP_BUILD, refreshAction); } -- 1.7.10.msysgit.1