how to handle empty selection in a jface bound combobox?
Posted
by
guido
on Stack Overflow
See other posts from Stack Overflow
or by guido
Published on 2012-09-27T02:17:03Z
Indexed on
2012/09/27
3:37 UTC
Read the original article
Hit count: 220
I am developing a search dialog in my eclipse-rcp application.
In the search dialog I have a combobox as follows:
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
is a database entity, ManyToOne to the main entity which is searched, and ImpContentProvider
is the model class which speaks to embedded sqlite database via jpa/hibernate.
This combobox is supposed to contain all instances of Imp
, but to also let empty selection; it's value is bound to a service bean as follows:
IObservableValue comboImpSelectionObserveWidget =
ViewersObservables.observeSingleSelection(comboImpViewer);
IObservableValue filterByImpObserveValue =
BeansObservables.observeValue(searchPrep, "imp");
bindingContext.bindValue(comboImpSelectionObserveWidget, filterByImpObserveValue
, null, null);
As soon as the user clicks on the combo, a selection (first element) is made: I can see the call to a selectionlistener i added on the viewer. My question is:
- after a selection has been made, how do I let the user change his mind and have an empty selection in the combobox? should I add a "fake" empty instance of Imp to the List returned by the
ImpContentProvider
? or should I implement an alternative toArrayContentProvider
?
and one additional related question is:
- why calling
deselectAll()
andclearSelection()
on the combo does NOT set a null value to the bound bean?
© Stack Overflow or respective owner