【发布时间】:2011-09-04 18:15:46
【问题描述】:
我用 EMF 制作了一个模型,表示设备的设置和 RCP GUI。在 GUI 中,我有一个列表来选择模型类型(主)的不同设备。
模型有一个小类的对象列表,应该显示在表格中(详细信息)。
tableItems 本身需要编辑,所以我有一个带有复选框等的小 GUI 部分来更改设置。这里 tableitem 是 master 并且 GUI 中显示的所有字段都是 details。
可观察到设备列表:
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 似乎有这个问题。有时它仍然包含来自不同设备的 tableitem 的值,有时它只包含 null。 我还有一个按钮,可以根据所有字段的验证状态启用/禁用。当 tableSelection 将 null 放入这些字段时,验证不起作用并且按钮被禁用,直到选择表中的条目。
我尝试使用列表中的侦听器手动将选择设置为空,并且:
tableViewer.setSelection(StructuredSelection.EMPTY, true);
但这并不能完成全部工作。至少所有“旧”值都被替换了,但仍然会出现 null 问题。
我只需要在应用程序启动后将 tableSelection 设置为空状态,此时尚未选择任何 tableitem。
【问题讨论】:
标签: data-binding rcp master-detail eclipse-emf