[RCP]IAdapterFactory pour peuplé treeviewer

Fermé
david - 6 janv. 2006 à 10:31
 david - 7 janv. 2006 à 11:23
Bonjour je voudrais lister le contenu de mon disque c dans un treeviewer, j'ai suivi un tut me permettant de le faire mais malgré cela rien n'apparait dans me vue et je n'ai pas de message particuliers
Voici mon code pour ceux qui veulent m'aidé et merci d'avance.
ma vue:
...
        private TreeViewer treeViewer;
	
	private IAdapterFactory adapterFactory = new MyAdapterFactory();

public void createPartControl(Composite parent) {
		// TODO Auto-generated method stub
		treeViewer = new TreeViewer(parent, SWT.BORDER
				| SWT.MULTI | SWT.V_SCROLL);
		Platform.getAdapterManager().registerAdapters(adapterFactory, File.class);
		getSite().setSelectionProvider(treeViewer);
		treeViewer.setLabelProvider(new WorkbenchLabelProvider());
		treeViewer.setContentProvider(new                                                            BaseWorkbenchContentProvider());
		treeViewer.setInput(new File("c:\\"));
	}
...


et voici ma classe qui implement IAdapterFactory qui me permet de fournir le contenu a mon treeviewer:

import java.io.File;

import org.eclipse.core.runtime.IAdapterFactory;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.ui.model.IWorkbenchAdapter;

public class MyAdapterFactory implements IAdapterFactory {

	public LogescoAdapterFactory() {
		super();
		// TODO Auto-generated constructor stub
	}
	
	private IWorkbenchAdapter fileContentAdapter = new IWorkbenchAdapter() {
		
		public Object getParent(Object o) {
			
			return ((File)o).getParent();
		}
		
		public String getLabel(Object o) {
			
			return ((File)o).getName();
		}
		
		public ImageDescriptor getImageDescriptor(Object object) {
			
			return null;
		}
		
		public Object[] getChildren(Object o) {
			
			Object[] kids = ((File)o).listFiles();
			return kids == null ? new Object[0] : kids;
		}
		
	};

	public Object getAdapter(Object adaptableObject, Class adapterType) {
		// TODO Auto-generated method stub
		if(adapterType == IWorkbenchAdapter.class &&
				adaptableObject instanceof File)
			return fileContentAdapter;
		return null;
	}

	public Class[] getAdapterList() {
		// TODO Auto-generated method stub
		return new Class[] {IWorkbenchAdapter.class};
	}


Merci beaucoup
A voir également:

1 réponse

j'arrive a faire apparaitre la structure de mon disque c: en implémentant ITreeContentProvider et LableProvider. Mais pas avec IWorkbenchAdapter. Je pense que le probleme se situe au niveau de l'implémentation de getLabel.
Merci a ceux qui pourront m'aider
0