# eclipse rcp, ISelectionProvider



## Guest (31. Okt 2007)

Huhu zusammen,
wie kann ich den im einer Eclipse rcp Anwendung einen SelectionProviderimplementiern.....ich hab ein 3D panel, das mom. ein ISelctionProvider Implementiert.....wie bringe ich es dazu, beim picken events zu feuern:

IViewport implementiert ISelectionProvider:

public class ViewportVTK implements IViewport {


.........	private void picked() {

		setSelection(null);

		vtkPropPicker picker = new vtkPropPicker();
		System.out.println("Selection point: (" + lastX + "," + lastY + ")");

		picker.PickProp(lastX, rw.GetSize()[1] - lastY, renderer);
		vtkActor actor = picker.GetActor();

		if (Engine.getInstance().getSceneGraph().getActorList().indexOf(actor) != -1) {

			vtkActor OutlineActor = Engine.getInstance().getSceneGraph()
					.getOutlineList().get(
							Engine.getInstance().getSceneGraph().getActorList()
									.indexOf(actor));

			if (OutlineActor.GetVisibility() == 0)
				OutlineActor.VisibilityOn();
			else
				OutlineActor.VisibilityOff();

			rw.Render();
		}

	}

	@Override
	public void addSelectionChangedListener(ISelectionChangedListener listener) {


	}

	@Override
	public ISelection getSelection() {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public void removeSelectionChangedListener(
			ISelectionChangedListener listener) {
		// TODO Auto-generated method stub

	}

	@Override
	public void setSelection(ISelection selection) {
		System.out.print("huhu1");

	}

}


----------



## Wildcard (31. Okt 2007)

Naja, mit sowas:

```
private void fireSelectionChanged()
    {
        if(listeners==null)
            return;
        Iterator it = listeners.iterator();
        ISelection selection = getSelection();
        while (it.hasNext())
        {
            ISelectionChangedListener element = (ISelectionChangedListener)it.next();
            element.selectionChanged(new SelectionChangedEvent(this,selection));
            
        }
    }
```


----------



## Tr1aler (2. Nov 2007)

Hallo Leute, kann mir jemand sagen wenn ich z.B. 3 Plugins habe. 1 ist die Grund-RCP-Anwendung die 2 Plugins einbindet (z.B. Plugin1 und Plugin2). Welches Plugin muss dann welche Klassen implementieren? Ich versteh das mit den SelectionProvider nicht so ganz. Wär schön wenn mir jemand helfen können und/oder mir ein einfaches gut verständliches Beispiel geben könnte.
Danke im Vorraus für die Antwort, denn ich weiß ich hab schon viel zu dem Thema gefragt und blick da immer noch ncih so ganz durch. 

Danke


----------



## Wildcard (3. Nov 2007)

Hä?
Du brauchst nur einen Plugin Activator, aber den erstelle Eclipse schon automatisch mit dem Projekt.


----------



## Guest (4. Nov 2007)

nur der activator? da muss doch noch mehr rein oda nich wie sage ich zb pluguin 1 das es irgendwas machen soll wenn ih in plugin auf irgendwas klicke


----------



## Tr1aler (5. Nov 2007)

kann mir bitte jemand mit den selectionservices helfen? wie kann zb plugin 1 auf ereignisse in plugin 2 reagieren. wie kommunizieren 2 plugins untereinandern (bidirektional)


----------



## Wildcard (5. Nov 2007)

Ist mir echt unbegreiflich wie man nach so langer Zeit und so vielen Beispielen und Hilfestellungen so wenig Fortschritt zustande bringt.
Was ist so schwer daran einen SelectionListener an eine View/einen Editor zu hängen?

```
ISelectionProvider provider = iEditorPart.getSite().getSelectionProvider();
provider.addSelectionChangedListener(listener);
```
Warum liest du nicht die hervorragende Hilfe, oder versuchst wenigsten das was ich dir sage umzusetzen, anstatt immer wieder die selbe Frage zu wiederholen?


> wie kommunizieren 2 plugins untereinandern


 :autsch:


----------



## Tr1aler (5. Nov 2007)

das anhängen des listeners ist nich mein problem, sondern wie ich in nem anderen auf die selection reagiere. das ist die sache die ich nocht nicht verstanden habe.


----------



## Wildcard (5. Nov 2007)

Wahrscheinlich in der *einzigen* Methode von ISelectionListener
http://help.eclipse.org/help31/topi...chPart, org.eclipse.jface.viewers.ISelection)


----------



## Tr1aler (5. Nov 2007)

Danke das hat mir geholfen (denke ich mal),  aber mit SelectionProvider etc. kann ich doch nur auf Selections aus z.B. nem Treeviewer reagieren oder nicht? Das würde mir was bringen wenn ich in einem Plugin einen Tree hätte und in einem anderen darauf reagieren will was angeklickt wurder oder? Wie reagiere ich aber in Plugin1 darauf wenn z.B. in Plugin2 ein Button gedrückt wurde?

Deine Hilfe hat mir wirklich schon ne Menge gebracht und ich bedanke mich für deine Geduld


----------



## Tr1aler (5. Nov 2007)

Die Logik dahinter versteh ich ja aber ich bräuchte ein paar Codebeispiele. Ich komme mit den Objekten und Interfaces durcheinandern(TreeViewer, LabelProvider, SelectionProvider etc.)
Was muss welches Plugin implementieren etc.

Würde mich über ein paar Codebeispiele freuen

Danke im Vorraus


----------



## Wildcard (5. Nov 2007)

Warum sollte überhaupt Plugin 2 auf einen Button von Plugin 1 reagieren?
Was wenn Plugin 2 überhaupt nicht vorhanden ist? Macht der Button dann nichts?


----------



## Tr1aler (6. Nov 2007)

Z.B. ja. das ist nur ein beispiel. ich brauche in einem plugin einen baum und in dem anderen wahrscheinlich irgendwas anderes. bie einem baum müsste ich ja einen treeviewer verwenden oder?. das ist halt die einzige sache mit der ich noch nicht klar komme.  welche listener und/oder objekte ich wie einbinden muss damit alles richtig als selectionprovider registriert ist und andere plugins darauf zugreifen können.

Am besten wäre wie gesagt ein Codebeispiel in dem ich mir das mit dne Objekten und und den Interfaces genau angucken kann.
Danke für die Antwort


----------



## Wildcard (6. Nov 2007)

Tr1aler hat gesagt.:
			
		

> Am besten wäre wie gesagt ein Codebeispiel in dem ich mir das mit dne Objekten und und den Interfaces genau angucken kann.


Werde ich aber nicht tun, da die Eclipse Hilfe und das Eclipse Wiki mehr als ausreichend sind und ich dir bereits einige Snippets gegeben habe.



> aber mit SelectionProvider etc. kann ich doch nur auf Selections aus z.B. nem Treeviewer reagieren oder nicht?


Was sollte das überhaupt, wenn es dir anscheinend sogar um einen Tree geht (auch wenn der SelectionProvider natürlich nicht auf Trees beschränkt ist)?


----------



## Tr1aler (7. Nov 2007)

kann mir jemand ein AUSFÜRHLICHES codebeispiel am besten mit kommentaren zur IAdaptable etc. geben?
Danke für eure Hilfe.


----------



## Wildcard (7. Nov 2007)

Ich meine dir bereits ein ausführliches Beispiel zu IAdaptable gegeben zu haben
http://www.java-forum.org/de/viewtopic.php?t=54810


----------

