| 
| Update Navigator IResource-Children progrmatically [message #335747] | Sun, 26 April 2009 12:17  |  | 
| Eclipse User  |  |  |  |  | Hello there, 
 I am using the common navigator and have a custom content provider. This
 provider delivers for example one or more children for an xml file
 depending on its content.
 
 If I edit the content in an editor, I fire an update method and the
 navigator makes the following statements:
 
 IPath path = new Path(changedInst.getPath());
 IFile iFile = wsRoot.getFileForLocation(path);
 try {
 iFile.refreshLocal(IResource.DEPTH_INFINITE, null);
 } catch (CoreException e) {
 }
 
 The decorater is updated fine, but not the children of the content provider.
 
 If I right click the file and invoke refresh (F5) explicitly, the new
 children are shown as intended.
 
 What does a F5-refresh do more then refreshLocal in the code?
 
 
 Thanks in advance,
 Joerg
 |  |  |  | 
| 
| Re: Update Navigator IResource-Children progrmatically [message #335748 is a reply to message #335747] | Sun, 26 April 2009 23:34   |  | 
| Eclipse User  |  |  |  |  | Originally posted by: francis.oaklandsoftware.com 
 I'm not sure I understand your question.
 
 You are saying that you edit the file in an external editor and are trying
 to do a programatic refresh with the code below?  Are you using the
 Project Explorer (sounds like you are)?
 
 The refresh you do below should trigger a resource notification to the
 Project Explorer and it should then refresh the viewer if the file
 actually changed.  This should then invoke your content provider.
 
 I would set a breakpoint at StructuredViewer.refresh(element) in the
 F5-refresh case to see what it's doing there, and then in your programatic
 case to see what it's doing differently (is the resource change
 notification happening?  Is the viewer refresh happening?).
 
 Also please mention what version you are on.
 
 HTH,
 
 Francis
 
 On Sun, 26 Apr 2009 09:17:44 -0700, Joerg <paukenj@fh-trier.de> wrote:
 
 > Hello there,
 >
 > I am using the common navigator and have a custom content provider. This
 > provider delivers for example one or more children for an xml file
 > depending on its content.
 >
 > If I edit the content in an editor, I fire an update method and the
 > navigator makes the following statements:
 >
 > IPath path = new Path(changedInst.getPath());
 > IFile iFile = wsRoot.getFileForLocation(path);
 > try {
 >    iFile.refreshLocal(IResource.DEPTH_INFINITE, null);
 > } catch (CoreException e) {
 > }
 >
 > The decorater is updated fine, but not the children of the content
 > provider.
 >
 > If I right click the file and invoke refresh (F5) explicitly, the new
 > children are shown as intended.
 >
 > What does a F5-refresh do more then refreshLocal in the code?
 >
 >
 > Thanks in advance,
 > Joerg
 
 
 
 --
 Common Navigator Framework section in Platform Plugin Developer Guide
 (Programmer's Guide)
 http://help.eclipse.org/ganymede/topic/org.eclipse.platform. doc.isv/guide/cnf.htm
 
 http://dev.eclipse.org/blogs/francis
 http://wiki.eclipse.org/Common_Navigator_Framework
 http://wiki.eclipse.org/Common_Navigator_Framework_Use_Cases
 
 
 You have brains in your head.
 You have feet in your shoes.
 - Dr Seuss, Oh the Places You'll Go
 |  |  |  | 
| 
| Re: Update Navigator IResource-Children progrmatically [message #335753 is a reply to message #335748] | Mon, 27 April 2009 08:36  |  | 
| Eclipse User  |  |  |  |  | Hello Francis, 
 thanks, your post helped me to solve the problem! The refresh of the
 viewer was the one I needed.
 
 Summary:
 I subclassed the the CommonNavigator class to obtain a customized
 Project Explorer with my own content provider. That content provider
 added some virtual folder objects as children of a xml file. The count
 of these children are depending on the xml content.
 
 When I edit the the xml content, the contents are posted to my model,
 that is not working with IResource object but with java.io.File objects.
 
 Therefore I wanted to refresh the navigator on model changes with:
 
 IPath path = new Path(changedInst.getPath());
 IFile iFile = wsRoot.getFileForLocation(path);
 iFile.refreshLocal(IResource.DEPTH_INFINITE, null);
 
 But that does not lead to an update of the children origened from the
 content provider. But the following did:
 
 IPath path = new Path(changedInst.getPath());
 IFile iFile = wsRoot.getFileForLocation(path);
 getCommonViewer().refresh(iFile, true);
 
 Regards,
 Joerg
 
 
 Francis Upton schrieb:
 > I'm not sure I understand your question.
 >
 > You are saying that you edit the file in an external editor and are
 > trying to do a programatic refresh with the code below?  Are you using
 > the Project Explorer (sounds like you are)?
 >
 > The refresh you do below should trigger a resource notification to the
 > Project Explorer and it should then refresh the viewer if the file
 > actually changed.  This should then invoke your content provider.
 >
 > I would set a breakpoint at StructuredViewer.refresh(element) in the
 > F5-refresh case to see what it's doing there, and then in your
 > programatic case to see what it's doing differently (is the resource
 > change notification happening?  Is the viewer refresh happening?).
 >
 > Also please mention what version you are on.
 >
 > HTH,
 >
 > Francis
 >
 > On Sun, 26 Apr 2009 09:17:44 -0700, Joerg <paukenj@fh-trier.de> wrote:
 >
 >> Hello there,
 >>
 >> I am using the common navigator and have a custom content provider.
 >> This provider delivers for example one or more children for an xml
 >> file depending on its content.
 >>
 >> If I edit the content in an editor, I fire an update method and the
 >> navigator makes the following statements:
 >>
 >> IPath path = new Path(changedInst.getPath());
 >> IFile iFile = wsRoot.getFileForLocation(path);
 >> try {
 >>    iFile.refreshLocal(IResource.DEPTH_INFINITE, null);
 >> } catch (CoreException e) {
 >> }
 >>
 >> The decorater is updated fine, but not the children of the content
 >> provider.
 >>
 >> If I right click the file and invoke refresh (F5) explicitly, the new
 >> children are shown as intended.
 >>
 >> What does a F5-refresh do more then refreshLocal in the code?
 >>
 >>
 >> Thanks in advance,
 >> Joerg
 >
 >
 >
 |  |  |  | 
Powered by 
FUDForum. Page generated in 0.03535 seconds