how to refresh non-IResource folder in project explorer view [message #790294] |
Sat, 04 February 2012 03:06 |
John Bodkin Messages: 39 Registered: November 2011 |
Member |
|
|
I created a content provider that replaces IFolder with MyFolder which extends PlatformObject implements IWorkbenchAdapter. MyFolder holds onto the IFolder it replaces in order to return the IFolder when getAdapter is called. By having MyFolder in the Project Explorer tree I can allow the user to reorder IResources in MyFolder. It also allows my DropAdapter to be invoked instead of Resources navigator content dropAdapter. I have all of this working.
When I finish reordering I get the IFolder from MyFolder and call refreshLocal in order to get the Project Explorer view to update and show the change the user just made. However after calling refreshLocal nothing happens. If I refresh manually (hit F5) in the Project Explorer view the tree is redrawn and the changes are visible.
How do I get the common navigator to refresh MyFolder from the handleDrop method of the CommonDropAdapterAssistant? or is there a way for MyFolder to notify the viewer that it should be refreshed?
[Updated on: Sat, 04 February 2012 04:35] Report message to a moderator
|
|
|
|
Re: how to refresh non-IResource folder in project explorer viewe [message #792442 is a reply to message #792030] |
Tue, 07 February 2012 01:54 |
John Bodkin Messages: 39 Registered: November 2011 |
Member |
|
|
I hit F5 when MyFolder is selected. I can also click the "Refresh F5" context menu item on MyFolder because it adapts to IFolder/IResource.
Technically I'm calling refreshLocal on the IFolder which isn't actually in the tree but MyFolder is in the tree.
I ended up implementing my own refresh on MyFolder
IViewReference[] viewRefs = PlatformUI.getWorkbench()
.getActiveWorkbenchWindow().getActivePage().getViewReferences();
for (IViewReference viewRef : viewRefs) {
IWorkbenchPart part;
if ((part = viewRef.getPart(false)) != null) {
ISetSelectionTarget target;
if (part instanceof ISetSelectionTarget) {
target = (ISetSelectionTarget) part;
} else {
target = (ISetSelectionTarget) part
.getAdapter(ISetSelectionTarget.class);
}
if (target != null) {
IViewPart vPart = viewRef.getView(false);
if (vPart instanceof CommonNavigator) {
CommonNavigator comNav = (CommonNavigator) vPart;
comNav.getCommonViewer().refresh(itemToRefresh);
comNav.getCommonViewer().expandToLevel(itemToExpand,
IResource.DEPTH_ONE);
}
}
}
}
[Updated on: Tue, 07 February 2012 01:59] Report message to a moderator
|
|
|
Powered by
FUDForum. Page generated in 0.03353 seconds