1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-08-04 23:05:47 +02:00

[143458] Choosing "Refresh" on a file node does not refresh. Now refreshes the parent if a file is refreshed.

This commit is contained in:
Kushal Munir 2006-12-12 16:59:59 +00:00
parent 01bcbcb35c
commit 40409ebb91

View file

@ -16,6 +16,7 @@
package org.eclipse.rse.ui.actions; package org.eclipse.rse.ui.actions;
import java.util.Iterator; import java.util.Iterator;
import java.util.Vector;
import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.rse.core.model.ISystemContainer; import org.eclipse.rse.core.model.ISystemContainer;
@ -27,6 +28,7 @@ import org.eclipse.rse.ui.ISystemContextMenuConstants;
import org.eclipse.rse.ui.ISystemIconConstants; import org.eclipse.rse.ui.ISystemIconConstants;
import org.eclipse.rse.ui.RSEUIPlugin; import org.eclipse.rse.ui.RSEUIPlugin;
import org.eclipse.rse.ui.SystemResources; import org.eclipse.rse.ui.SystemResources;
import org.eclipse.rse.ui.view.ISystemViewElementAdapter;
import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Shell;
@ -71,7 +73,10 @@ public class SystemRefreshAction extends SystemBaseAction
SystemRegistry sr = RSEUIPlugin.getTheSystemRegistry(); SystemRegistry sr = RSEUIPlugin.getTheSystemRegistry();
if (_selection != null) if (_selection != null)
{ {
Vector parents = new Vector();
Iterator iter = _selection.iterator(); Iterator iter = _selection.iterator();
while(iter.hasNext()) while(iter.hasNext())
{ {
Object obj = iter.next(); Object obj = iter.next();
@ -80,7 +85,24 @@ public class SystemRefreshAction extends SystemBaseAction
{ {
((ISystemContainer)obj).markStale(true); ((ISystemContainer)obj).markStale(true);
} }
sr.fireEvent(new SystemResourceChangeEvent(obj, ISystemResourceChangeEvents.EVENT_REFRESH, obj));
// get the adapter and find out if it's a leaf node. If so, refresh the parent as well.
ISystemViewElementAdapter adapter = getAdapter(obj);
if (adapter != null) {
Object parent = adapter.getParent(obj);
boolean hasChildren = adapter.hasChildren(obj);
if ((parent != null) && !hasChildren && (!parents.contains(parent))) {
parents.add(parent);
sr.fireEvent(new SystemResourceChangeEvent(parent, ISystemResourceChangeEvents.EVENT_REFRESH, parent));
}
sr.fireEvent(new SystemResourceChangeEvent(obj, ISystemResourceChangeEvents.EVENT_REFRESH, obj));
}
else {
sr.fireEvent(new SystemResourceChangeEvent(obj, ISystemResourceChangeEvents.EVENT_REFRESH, obj));
}
} }
} }
else else