我製作了一個EMF模型,代表了設備的設置和RCP GUI。在GUI中,我有一個列表來選擇模型類型(Master)的不同設備。使用EMF和RCP的多級主/明細數據綁定
該模型有一個小類的對象列表,應顯示在一個表(Detail)中。
tableItems本身需要編輯,所以我有一個小的GUI部件與複選框等來更改設置。這裏的tableitem是master,GUI中顯示的所有字段都是細節。
觀測到的設備列表:
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));
當改變設備選擇tableitems被替換。但tableSelection似乎有這個問題。有時它仍然包含來自不同設備的tableitem的值,有時它只包含null。 我也有一個按鈕,根據所有字段的驗證狀態啓用/禁用。當tableSelection將null置於這些字段時,驗證不起作用,並且按鈕被禁用,直到選中表中的條目爲止。
我想手動設置選擇空的,名單上的監聽和:
tableViewer.setSelection(StructuredSelection.EMPTY, true);
但這並不做充分的工作。至少所有「舊」值都被替換,但仍然會出現空值問題。
我只需要將tableSelection設置爲一個空狀態,因爲應用程序啓動後,當沒有選擇tableitem時。