2010-11-27 24 views
0

Comment déclencher un événement dans comboviewer si la valeur dans la zone de liste déroulante est modifiée? toutes les sélections ne sont pas déclenchées (addSelectionChangedListener). Je veux juste déclencher un événement, SEULEMENT SI actuellement valeur différente sélectionnée, pas même. Par exemple: combobox, valeur {1,2,3}. Je définis à 1. Lorsque j'ouvre la liste déroulante, et cliquez sur 1, il ne déclenchera pas l'événement. Mais quand je clique sur 2 ou 3, cela déclenchera l'événement. Quelque chose comme en html, qui ne déclenche que l'événement, seul l'événement a changé. J'ai testé avec comboViewer.getCombo(). AddMofidyListener. mais le cas est le même avec selectionChangedListener ci-dessus (la même valeur cliquée dans la combobox déclenchera toujours l'événement).rcp ComboViewer valueChanged

Merci

+0

modifyListener fonctionne correctement dans votre cas. J'ai testé sous Linux – Nawa

Répondre

2

ComboViewer ne peut pas le faire lui-même. Essayez d'écrire un écouteur de sélection qui se souvient de l'ancienne valeur.

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); 
}