# Frage zu Eclipse Adapter Mechanismus



## Guest (19. Okt 2006)

Hallo,

ich mache zur Zeit meine ersten Gehversuche mit Eclipse RCP, da in meiner Firma neue Programme in Zukunft auf Basis von Eclipse RCP entwickelt werden sollen. 

Ich habe mir den Adapter Mechanismus angesehen, aber leider funktioniert mein Beispiel nicht: 

Ich habe eine ListView geschrieben :


```
public class TestView extends ViewPart {
	
	public static final String ID = 
		"de.daniel.viewertest.testView";
	
	private IAdapterFactory factory = new ViewerAdapterFactory();
	
	private Fahrzeuge fahrzeug; //Modell 
	
	private ListViewer viewer;

	public TestView() {
	}

	@Override
	public void createPartControl(Composite parent) {
		viewer = new ListViewer(parent, SWT.MULTI | SWT.V_SCROLL);
		Platform.getAdapterManager().registerAdapters(factory, Fahrzeuge.class);
		viewer.setLabelProvider(new WorkbenchLabelProvider());
		viewer.setContentProvider(new BaseWorkbenchContentProvider());
	
		fahrzeug = new Fahrzeuge();	
		fahrzeug.setName("997 turbo");
		viewer.setInput(fahrzeug);
```



Meine Adapter Factory dazu sieht folgendermassen aus:


```
public class ViewerAdapterFactory implements IAdapterFactory{
	
	private IWorkbenchAdapter fahrzeugAdapter = new IWorkbenchAdapter() {

		public Object[] getChildren(Object o) {
			return null;
		}

		public ImageDescriptor getImageDescriptor(Object object) {

			return null;
		}

		public String getLabel(Object o) {
			return ((Fahrzeuge) o).getName();
		}

		public Object getParent(Object o) {
			
			return null;
		}
		
	};

	public Object getAdapter(Object adaptableObject, Class adapterType) {
		if (adapterType == IWorkbenchAdapter.class
				&& adaptableObject instanceof Fahrzeuge)
			return fahrzeugAdapter;
		return null;
	}

	public Class[] getAdapterList() {
		return new Class[] { IWorkbenchAdapter.class };
	}
```

Es wird mir leider im ListViewer nichts angezeigt. 

Vielleicht habe ich aber auch einen Deckfehler:

Ich hatte das Konzept so verstanden: 

1. Man schreibt eine AdapterFactory. 
2. Diese registriert man zusammen mit dem Modell
3. die Klassen BaseWorkbenchContentProvider und  WorkbenchLabelProvider wissen dann auf Grund der 
   Adapter wie die Modelldaten dargestellt werden müssen.

???

Danke im vorraus


----------



## Guest (19. Okt 2006)

Mit einem ListViewer habe ich noch nicht gearbeitet, aber ein Tree viewer sollte ja ähnlich sein:

Aber was ich mich da als erstes Frage, wieso brauchst du überhaupt den AdapterManager zu einzeigen reicht doch den Content und Label Provider?!?!



```
TreeViewer viewer = new TreeViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER);
viewer.setContentProvider(new ViewContentProvider()); 
viewer.setLabelProvider(new ViewLabelProvider()); //
viewer.setInput(root);
```





```
public class ViewContentProvider implements IStructuredContentProvider, ITreeContentProvider {

...

}
```


```
public class ViewLabelProvider extends LabelProvider {

...

}
```


----------



## Gast (19. Okt 2006)

Danke für den Tip


----------

