Bug 109966: [package explorer] No refresh action when selecting open and
closed projects
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/actions/RefreshAction.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/actions/RefreshAction.java
index 555abf1..661e560 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/actions/RefreshAction.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/actions/RefreshAction.java
@@ -152,25 +152,28 @@
if (selection.isEmpty())
return true;
- boolean hasOpenProject= false;
+ boolean okToRefresh= false;
for (Iterator<?> iter= selection.iterator(); iter.hasNext();) {
Object element= iter.next();
if (element instanceof IWorkingSet) {
// don't inspect working sets any deeper.
+ okToRefresh= true;
} else if (element instanceof IPackageFragmentRoot) {
// on internal folders/JARs we do a normal refresh, and Java archive refresh on external
+ okToRefresh= true;
} else if (element instanceof PackageFragmentRootContainer) {
// too expensive to look at children. assume we can refresh
+ okToRefresh= true;
} else if (element instanceof IAdaptable) { // test for IAdaptable last (types before are IAdaptable as well)
IResource resource= (IResource)((IAdaptable)element).getAdapter(IResource.class);
if (resource == null)
- return false;
- hasOpenProject|= resource.getType() == IResource.PROJECT && ((IProject) resource).isOpen();
+ return false; // e.g. element inside a JAR
+ okToRefresh|= resource.getType() == IResource.PROJECT && ((IProject) resource).isOpen();
} else {
return false;
}
}
- return hasOpenProject;
+ return okToRefresh;
}
/* (non-Javadoc)