2010-11-27 6 views
0

コンボボックスの値が変更された場合、コンボビューアでイベントをトリガする方法はありますか?トリガーされたすべての選択ではありません(addSelectionChangedListener)。私はちょうどイベントを引き起こしたいと思っています。rcp ComboViewer valueChanged

例: コンボボックス、値{1,2,3}。 1に設定します。コンボボックスを開いて1をクリックすると、イベントがトリガーされません。しかし、2または3をクリックすると、イベントがトリガーされます。 htmlのようなものは、イベントだけをトリガーし、イベントのみが変更されます。私は、comboViewer.getCombo()。addMofidyListenerでテストしました。上記のselectionChangedListenerの場合と同じです(コンボボックスでクリックされた同じ値は常にイベントをトリガーします)。

ありがとうございました

+0

あなたのケースではmodifyListenerが正しく動作します。私はlinuxでテストした – Nawa

答えて

2

ComboViewerはこれを単独で行うことはできません。古い値を覚えている選択リスナーを作成してみてください。

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