rcp ComboViewer valueChanged - PullRequest
       7

rcp ComboViewer valueChanged

0 голосов
/ 27 ноября 2010

Как вызвать событие в comboviewer, если значение в combobox изменено?не каждый выбор, срабатывает (addSelectionChangedListener).Я просто хочу вызвать событие, ТОЛЬКО ЕСЛИ в данный момент выбрано другое значение, а не то же самое.

Например: выпадающий список, значение {1,2,3}.Я установил на 1. Когда я открою выпадающий список и нажму 1, это НЕ вызовет событие.Но когда я нажимаю 2 или 3, это вызывает событие.Что-то вроде html, которое только вызывает событие, только событие изменилось.Я проверил с comboViewer.getCombo (). AddMofidyListener.но дело обстоит так же с selectionChangedListener выше (одно и то же значение, щелкнутое в выпадающем списке, всегда вызовет событие).

1 Ответ

2 голосов
/ 03 июля 2011

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