# SelectionProvider und Listener Frage



## Tr1aler (27. Nov 2007)

Hi Leute, ich habe 2 Plugins. Das eine registriert einene SelectionProvider bei der Workbench und das andere einen SelectionListener. In dem Plugin mit dem Listener kann ich mir die Selection aus dem anderen Plugin ausgeben lassen. Wie kann ich aber jetzt abfragen welches Objekt angeklickt wurde oder z.B. welcher Eintrag in einer Liste selektiert wurde. 
Komm ich an das Objekt über die Selection ran?


Würde mich über eure Hilfe freuen.


----------



## Wildcard (27. Nov 2007)

Hängt von der Art der Selection ab.
Überlichweise wird auf IStructuredSelection gecastet.


----------



## Tr1aler (27. Nov 2007)

danke schonmal für die schnelle Antwort. Das mit der IStructuredSelection hab ich auch schon gelesen und auch schon versucht. Das Objekt gecastet und dann object.getFirstElement() odeR?
Aber so komm ich irgendwie nicht an den Listeneintrag oder das TreeItem was angeklickt wurde.


----------



## Wildcard (27. Nov 2007)

Was bekommst du?


----------



## Tr1aler (27. Nov 2007)

also ich hatte es erstmal so probiert um zu gucken was er mir liefert

```
public void selectionChanged(IWorkbenchPart part, ISelection selection) {
		if (part != PluginView2.this) {
			if (selection instanceof IStructuredSelection) {
				Object first = ((IStructuredSelection)selection).getFirstElement();
				System.out.println(first.toString());
			}
		}
	}
```

Ich denke mal das ist so richtig oder?
Er gibt mir nämlich garnichts aus.


----------



## Tr1aler (27. Nov 2007)

Und hier noch die View in der der SelectionProvider zur Verfügung gestellt wird

```
public void createPartControl(Composite parent)
    {  	
    	parent.setLayout(null);
    	getSite().getPage().addSelectionListener(this);
    	
    	tr_baum = new Tree(parent, SWT.BORDER);
    	tr_baum.setBounds(0, 0, 100, 100);
    	
    	TreeItem i = new TreeItem(tr_baum, SWT.NONE);
    	i.setText("Text 1");
    	
    	trv_baum = new TreeViewer(tr_baum);
    	
    	this.getSite().setSelectionProvider(trv_baum); 
    }
```

Hoffe das hilft.


----------



## Wildcard (27. Nov 2007)

Wenn dabei nichts augegeben wird, ist es wohl keine IStructuredSelection. Schau dir den SelectionProvider an, oder setz einfach einen Breakpoint und inspizier die Selection.


----------



## Tr1aler (28. Nov 2007)

Die Auswahl scheint leer zu sein. Wenn ich mir

```
System.out.println(selection.toString());
```
ausgeben lasse, sagt er <Auswahl ist leer>

Was kann das sein bzw. warum ist sie leer?


----------



## Wildcard (28. Nov 2007)

Zu welcher Klasse auch immer trv_baum gehört, sie implementiert SelectionProvider, demzufolge solltest du auch in der Lage sein dort zu fahren welche Selection erzeugt wird.


----------



## Tr1aler (28. Nov 2007)

Also der trv_baum gehört zur Klasse PluginView.
In der klasse hab ich folgendes abgefragt:

```
System.out.println(trv_baum.getSelection());
```

Die Selection ist immer leer. Was müsste er mir denn normalerweise ausgeben? 
Irgendwas muss ja passieren, denn der SelectionListener der anderen View reagiert ja wenn ich in PluginView etwas selektiere aber die Selection ist immer leer.


----------



## Tr1aler (28. Nov 2007)

"Füllt" sich die Selection selber oder muss ich ihr einen Wert über einen ContentProvider geben?
Ich hab mir im Internet ein Beispiel angeguckt und in dem verwenden sie eine eigene Klasse die IStructuredContentProvider implementiert.
Wozu dient dies und brauch man sowas immer?


----------



## Wildcard (28. Nov 2007)

Der SelectionProvider ist dafür zuständig die Selection zu setzen bzw. zur Verfügung zu stellen.


----------



## Tr1aler (28. Nov 2007)

Zur Verfügung stellt er sie ja anscheinend, denn ich kann ja auf sie reagieren aber sie ist leer. Woran könnte das liegen.

Muss ich einen ContentProvider verwenden?


----------



## Wildcard (28. Nov 2007)

Vielleicht ist PluginView einfach falsch implementiert? Verwende denDebugger.


----------



## Tr1aler (28. Nov 2007)

Würde es dir helfen wenn ich den Code der beiden Views reinstellen würde? Die beiden Views befinden sich in versch. Plugins. Ich versteh nur einfach nicht warum die Selection leer ist. Er erzeugt sie aber gibt ihr keinen Inhalt.
Hast du eine Idee woran es noch liegen könnte?

Danke für deine schnellen Antworten


----------

