| custom content provider not automatically activated [message #325760] |
Tue, 26 February 2008 09:48  |
Andreas Pakulat Messages: 127 Registered: July 2009 |
Senior Member |
|
|
Hi,
I've got a relatively simple custom content provider for a CommonNavigator
view. The provider itself seems to work quite fine, but I can't seem to
find out why it displays the content only after I've disabled and
re-enabled the content provider under the Customize View dialog. After the
re-enabling I see the two nodes, but not when initially showing the view.
Any ideas?
Andreas
The content provider code is as follows and its just bound to a plain
CommonNavigator view.
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IFolder;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.resources.IResourceChangeEvent;
import org.eclipse.core.resources.IResourceChangeListener;
import org.eclipse.core.resources.IResourceDelta;
import org.eclipse.core.resources.IResourceDeltaVisitor;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
import org.eclipse.jface.viewers.ITreeContentProvider;
import org.eclipse.jface.viewers.StructuredViewer;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.ui.progress.UIJob;
public class MyTreeContentProvider implements ITreeContentProvider,
IResourceChangeListener, IResourceDeltaVisitor
{
private String root;
private String[] childs = { "foo", "bar" };
private StructuredViewer viewer;
public MyTreeContentProvider()
{
System.err.println("content tree provider");
System.out.println( "Using squish content provider" );
ResourcesPlugin.getWorkspace().addResourceChangeListener( this,
IResourceChangeEvent.POST_CHANGE );
}
@Override
public Object[] getChildren( Object parentElement )
{
// TODO Auto-generated method stub
System.err.println( "TreeProvider.getChildren:" +
parentElement+"|"+parentElement.getClass() );
if ( parentElement instanceof String ) {
return new String[0];
} else {
return childs;
}
}
@Override
public Object getParent( Object element )
{
// TODO Auto-generated method stub
if( element.equals( childs[0] ) || element.equals( childs[1] ) )
return root;
System.err.println( "TreeProvider.getParent" + element
+"|"+element.getClass() );
return null;
}
@Override
public boolean hasChildren( Object element )
{
// TODO Auto-generated method stub
System.err.println( "TreeProvider.hasChildren:"+element+"|"+
element.getClass() );
return getChildren( element ).length > 0;
}
@Override
public Object[] getElements( Object inputElement )
{
// TODO Auto-generated method stub
System.err.println( "TreeProvider.getElements:" +
inputElement+"|"+inputElement.getClass() );
return getChildren( inputElement );
}
@Override
public void dispose()
{
System.err.println( "TreeProvider.dispose" );
ResourcesPlugin.getWorkspace().removeResourceChangeListener( this );
// TODO Auto-generated method stub
}
@Override
public void inputChanged( Viewer aviewer, Object oldInput, Object
newInput )
{
System.err.println( "TreeProvider.inputChanged" );
viewer = (StructuredViewer)aviewer;
// TODO Auto-generated method stub
}
/*
* (non-Javadoc)
*
*/
public void resourceChanged( IResourceChangeEvent event )
{
System.out.println("TreeProvider.resourceChagned");
IResourceDelta delta = event.getDelta();
try {
delta.accept( this );
} catch ( CoreException e ) {
e.printStackTrace();
}
}
/*
* (non-Javadoc)
*
*/
public boolean visit( IResourceDelta delta )
{
IResource source = delta.getResource();
System.out.println("TreeProvider.visit:"+source.getType() );
switch ( source.getType() ) {
case IResource.FOLDER:
System.err.println("folder change");
final IFolder f = (IFolder)source;
System.err.println("updating view");
new UIJob("Update Properties Model in CommonViewer") {
public IStatus runInUIThread(IProgressMonitor monitor) {
if (viewer != null
&& !viewer.getControl().isDisposed()) {
System.err.println("refreshing viewer for
project");
viewer.refresh(f);
}
return Status.OK_STATUS;
}
}.schedule();
case IResource.ROOT:
System.err.println("root change:");
final IResource root = (IResource)source;
System.err.println("updating view");
new UIJob("Update Properties Model in CommonViewer") {
public IStatus runInUIThread(IProgressMonitor monitor) {
if (viewer != null
&& !viewer.getControl().isDisposed()) {
System.err.println("refreshing viewer for
project");
viewer.refresh(root);
}
return Status.OK_STATUS;
}
}.schedule();
case IResource.PROJECT:
System.err.println("project change");
final IProject project = (IProject)source;
System.err.println("updating view");
new UIJob("Update Properties Model in CommonViewer") {
public IStatus runInUIThread(IProgressMonitor monitor) {
if (viewer != null
&& !viewer.getControl().isDisposed()) {
System.err.println("refreshing viewer for
project");
viewer.refresh(project);
}
return Status.OK_STATUS;
}
}.schedule();
return false;
case IResource.FILE:
System.err.println("got file");
final IFile file = (IFile) source;
// if (PROPERTIES_EXT.equals(file.getFileExtension())) {
// updateModel(file);
new UIJob("Update Properties Model in CommonViewer") {
public IStatus runInUIThread(IProgressMonitor monitor)
{
if (viewer != null
&& !viewer.getControl().isDisposed()) {
System.err.println("refreshing viewer for
file");
viewer.refresh(file);
}
return Status.OK_STATUS;
}
}.schedule();
// }
return false;
default:
System.err.println("unknown change");
}
return true;
}
}
|
|
|