# SelectionListener / SelectionProvider Problem



## krazun (28. Apr 2011)

Tag zusammen,

ich habe in meinem Eclipse RCP Programm 2 Views. In einer View ist ein CommonViewer und in der anderen View möchte ich auf die ausgewählten Objekte des CommonViewer zugreifen. Wenn ich wie in folgendem Beispiel, alles in einer View mache funktioniert es wunderbar.


```
@Override
	public void createPartControl(Composite parent) {
		super.createPartControl(parent);	
		
		CommonViewer viewer = getCommonViewer();
		getSite().setSelectionProvider(viewer);
		getSite().getWorkbenchWindow().getSelectionService().addSelectionListener(this);
		
	}

	@Override
	public void selectionChanged(IWorkbenchPart part, ISelection selection) {
		System.out.println(selection);
	}
}
```

Wenn aber eine andere View ISelectionListener implementiert und sich mit getSite().getWorkbenchWindow().getSelectionService().addSelectionListener(this); als Listener anmeldet, kommen keine Events mehr an.

Hat jemand eine Idee woran dies liegen könnte?

mfg,
krazun


----------



## Sonecc (28. Apr 2011)

JAVADOC hat gesagt.:
			
		

> Returns the site for this workbench part.



Mit anderen Worten, die beiden Views haben nicht die gleiche Site...

Du kannst aber die andere View suchen und deren Site verwenden (Stichwort findView)


----------



## dzim (28. Apr 2011)

Hi,

ich hab den Spaß auch schon hinter mir.
Ich hab das auch so gemacht, dass ich im Editor, der das forwarden soll den Provider in createPartControl() angemeldet habe

```
getSite().setSelectionProvider(selectionProvider);
```
und im View den Listener in init() registriert habe.

```
getSite().getWorkbenchWindow().getSelectionService().addSelectionListener(selectionListener);
```

Überprüfe, an welchen Stellen du den Provider und den Listener registriert hast. Das ist mein einziger Tipp den ich dir auf die schnelle geben kann.

Daniel


----------

