eclipse-rcp アプリケーションで検索ダイアログを開発しています。
検索ダイアログには、次のようなコンボボックスがあります。
comboImp = new CCombo(grpColSpet, SWT.BORDER | SWT.READ_ONLY);
comboImp.setBounds(556, 46, 184, 27);
comboImpViewer = new ComboViewer(comboImp);
comboImpViewer.setContentProvider(new ArrayContentProvider());
comboImpViewer.setInput(ImpContentProvider.getInstance().getImps());
comboImpViewer.setLabelProvider(new LabelProvider() {
@Override
public String getText(Object element) {
return ((Imp)element).getImpName();
}
});
Imp
データベースエンティティであり、検索されるメインエンティティへの ManyToOne であり、ImpContentProvider
jpa/hibernate を介して組み込みの sqlite データベースと通信するモデルクラスです。
このコンボボックスには のすべてのインスタンスが含まれているはずですがImp
、空の選択も可能です。その値は、次のようにサービス Bean にバインドされます。
IObservableValue comboImpSelectionObserveWidget =
ViewersObservables.observeSingleSelection(comboImpViewer);
IObservableValue filterByImpObserveValue =
BeansObservables.observeValue(searchPrep, "imp");
bindingContext.bindValue(comboImpSelectionObserveWidget, filterByImpObserveValue
, null, null);
ユーザーがコンボをクリックするとすぐに、選択 (最初の要素) が行われます。ビューアーに追加した選択リスナーへの呼び出しを確認できます。私の質問は:
- 選択が行われた後、ユーザーの考えを変えて、コンボボックスで空の選択を行うにはどうすればよいですか? によって返されるリストに Imp の「偽の」空のインスタンスを追加する必要があり
ImpContentProvider
ますか? または、代替手段を実装する必要がありArrayContentProvider
ますか?
追加の関連する質問は次のとおりです。
- コンボを呼び出す
deselectAll()
とclearSelection()
、バインドされた Bean に null 値が設定されないのはなぜですか?