package ilarkesto.gwt.client.editor; import ilarkesto.gwt.client.AViewEditWidget; import com.google.gwt.event.dom.client.ChangeEvent; import com.google.gwt.event.dom.client.ChangeHandler; import com.google.gwt.user.client.ui.FocusListener; import com.google.gwt.user.client.ui.Label; import com.google.gwt.user.client.ui.ListBox; import com.google.gwt.user.client.ui.Widget; public class YesNoEditorWidget extends AViewEditWidget { private ABooleanEditorModel model; private Label viewer; private ListBox editor; public YesNoEditorWidget(ABooleanEditorModel model) { super(); this.model = model; } @Override protected void onViewerUpdate() { viewer.setText(model.isTrue() ? "yes" : "no"); } @Override protected void onEditorUpdate() { editor.setSelectedIndex(model.isTrue() ? 0 : 1); } @Override protected void onEditorSubmit() { model.setValue(editor.getSelectedIndex() == 0 ? true : false); } @Override protected final Widget onViewerInitialization() { viewer = new Label(); return viewer; } @Override protected final Widget onEditorInitialization() { editor = new ListBox(); editor.addChangeHandler(new EditorChangeListener()); editor.addFocusListener(new EditorFocusListener()); editor.setVisibleItemCount(2); editor.addItem("yes", "true"); editor.addItem("no", "false"); return editor; } @Override public boolean isEditable() { return model.isEditable(); } @Override public String getTooltip() { return model.getTooltip(); } @Override public String getId() { return model.getId(); } private class EditorChangeListener implements ChangeHandler { @Override public void onChange(ChangeEvent event) { submitEditor(); } } private class EditorFocusListener implements FocusListener { public void onFocus(Widget sender) {} public void onLostFocus(Widget sender) { submitEditor(); } } }