custom content provider not automatically activated [message #325760] |
Tue, 26 February 2008 09:48  |
Eclipse User |
|
|
|
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;
}
}
|
|
|
Re: custom content provider not automatically activated [message #325777 is a reply to message #325760] |
Tue, 26 February 2008 14:20   |
Eclipse User |
|
|
|
Hi,
The content provider must be set before that viewer call setInput method.
Is this?
Cheers,
Xiangya
Andreas Pakulat 写道:
> 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;
> }
> }
>
|
|
|
|
|
|
|
|
Re: custom content provider not automatically activated [message #921719 is a reply to message #325856] |
Mon, 24 September 2012 07:21  |
Eclipse User |
|
|
|
LearnMax offers Custom Content Development, a custom courseware developed to meet the unique training development needs of the clients. It is an end to end training solution starting from content design and development enabling you to upgrade and enhance your training requirements.
Kochar Infotech Pvt Ltd
learnmax(dot)co(dot)in
|
|
|
Powered by
FUDForum. Page generated in 0.08067 seconds