Я сделал модель с EMF, представляющей настройки устройства, и RCP GUI.В графическом интерфейсе у меня есть список для выбора различных устройств типа модели (Master).
Модель имеет список объектов небольшого класса, который должен отображаться в таблице (Detail).
Табличные элементы необходимо редактировать, поэтому у меня есть небольшая графическая часть с флажками и т. Д. Для изменения настроек.Здесь tableitem является главным, а все поля, отображаемые в графическом интерфейсе, являются подробностями.
Доступно для списка устройств:
IObservableValue selection = ViewersObservables.observeSingleSelection(availableDevicesList);
Таблица:
IObservableList list = EMFObservables.observeDetailList(Realm.getDefault(), selection,DevicePackage.Literals.LIST);
TableViewer tableViewer = new TableViewer(parent, SWT.SINGLE | SWT.FULL_SELECTION);
tableViewer.setInput(list);
IObservableValue tableSelection = ViewersObservables.observeSingleSelection(tableViewer);
Редактирование:
Spinner field1 = new Spinner(parent, SWT.BORDER);
dbc.bindValue(SWTObservables.observeSelection(field1), EMFObservables.observeDetailValue(Realm.getDefault(), tableSelection, DevicePackage.Literals.Value1));
При изменении выбора устройства табличные элементы заменяются.Но у tableSelection, похоже, есть проблема с этим.Иногда он все еще содержит значения элемента таблицы с другого устройства, а иногда он просто содержит ноль.У меня также есть кнопка, которая включается / отключается в соответствии со статусом проверки всех полей.Когда tableSelection помещает null в эти поля, проверка не работает, и кнопка отключается до тех пор, пока не будет выбрана запись в таблице.
Я попытался вручную установить выбор пустым с помощью прослушивателя в списке и:
tableViewer.setSelection(StructuredSelection.EMPTY, true);
, но это не делает полную работу.По крайней мере, все "старые" значения заменены, но проблема с нулем все еще возникает.
Все, что мне нужно, это установить tableSelection в пустое состояние, как после запуска приложения, когда еще не было выбрано ни одного элемента таблицы.