[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Newsgroup Home]
[news.eclipse.platform] custom content provider not automatically activated

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;
    }
}