SWT SelectionEvent künstlich auslösen

moe5k

Mitglied
Hallo,

Ein Comboviewer filtert andere Comboviewer wenn ein SelectionEvent ausgelöst wird.
Das funktioniert auch einwandfrei. Wenn dieser Comboviewer aber nicht per Mouseclick
sondern per Databinding selektiert wird, gibts kein SelectionEvent.

Kann ich das "künstlich" auslösen damit die Filterung auch dann klappt ?

Moe
 
Danke für die schnelle Antwort!
Leider habe ich aber gerade irgendwie ein Brett vorm Kopf...

Hättest Du vielleicht ein Codebeispiel parat ?

Ich muss viellleicht noch dazu sagen, dass ich mir eine abgeleitete Klasse
vom Comboviewer erstellt habe. In dieser die Methode fireSelectionChanged steht mir in
dieser Klasse zwar zur Verfügung aber nicht in in den Instanzen dieser Klasse ?!?

Moe
 
Hallo,
also die Methode
[Java]
protected void fireSelectionChanged(SelectionChangedEvent event)
[/Java]
Hat das Attribut protected was zur Folge hat das du diese Methode nur in der Abgeleiten Klasse verwenden kannst. Dir steht es abre frei eine eigne Methode in deiner von Comboviewer abgeleiteten Klasse zu Schreiben die public ist und damit allgemein Verfügbar.
[Java]
public void fireChangeEvent( ISelectionProvider source,
ISelection selection)
{
fireSelectionChanged(new SelectionChangedEvent(ISelectionProvider source,
ISelection selection));
}
[/Java]
Dann kannst du entsprechend aus einer anderen nicht abgeleiteten Klasse die Methode aufrufen.

Grüße
Marcus
 
Danke für die Erklärung, aber es funktioniert leider immer noch nicht wie es soll ... 🙁

Vielleicht hilft mehr Code das Problem besser zu beschreiben...

Ich definiere eine CCombo und und einen Listener auf dieser.
die CCombo übergebe ich an die abgeleitete Klasse des ComboViewers (CViewer).
Die Methode combo2select löst die eigentliche Filterung aus. Hier der Code dazu:

Java:
cCombo2 = new CCombo(labelsAndMore, SWT.BORDER);
cCombo2.addSelectionListener(new SelectionAdapter() {
		public void widgetSelected(SelectionEvent evt) {
			combo2select(evt);
                        }
                 });
				
		combo2Viewer = new CViewer(cCombo2);

vermutlich müsste ich nicht auf dem Comboviewer sondern auf der CCombo selbst das
SelectionEvent auslösen ?
Aber wie kann ich das anstellen ?

Eine andere Möglichkeit wäre vielleicht auch die Methode combo2select direkt aufzurufen.
Das habe ich versucht mit:

Java:
combo2select(new SelectionEvent(new Event()));

Was aber leider zu einer
java.lang.IllegalArgumentException: null source
führt.

Gruß Moe
 

Neue Themen


Zurück
Oben