2010-11-27 2 views
0

Wie löst man ein Ereignis in Combobrowser aus, wenn der Wert in der Combobox geändert wird? nicht jede Auswahl, ausgelöst (addSelectionChangedListener). Ich möchte nur ein Event auslösen, NUR WENN aktuell ein anderer Wert gewählt wird, nicht gleich.rcp ComboViewer valueChanged

Zum Beispiel: Combobox, Wert {1,2,3}. Ich setze auf 1. Wenn ich Combobox öffne und auf 1 klicke, wird das Ereignis NICHT ausgelöst. Aber wenn ich auf 2 oder 3 klicke, wird das Ereignis ausgelöst. Etwas wie in HTML, die nur das Ereignis auslösen, nur das Ereignis geändert. Ich habe mit comboViewer.getCombo() getestet. AddMofidyListener. aber der Fall ist dasselbe mit selectionChangedListener oben (derselbe Wert, der in der Combobox geklickt wird, löst immer das Ereignis aus).

Dank

+0

modifyListener funktioniert in Ihrem Fall korrekt. Ich habe unter Linux getestet – Nawa

Antwort

2

ComboViewer kann dies nicht selbst tun. Versuchen Sie, einen Auswahllistener zu schreiben, der sich an den alten Wert erinnert.

abstract class CleverSelectionChangedListener implements ISelectionChangedListener { 

    private Object _oldSelection; 

    public void selectionChanged(SelectionChangedEvent event) { 
     Object newSelection = ((IStructuredSelection) event.getSelection()).getFirstElement(); 
     if (newSelection != _oldSelection) { 
      selectionReallyChanged(event); 
      _oldSelection = newSelection; 
     } 
    } 
    public abstract void selectionReallyChanged(SelectionChangedEvent event); 
}