package de.swm.mobile.kitchensink.client.showcase.forms; import com.google.gwt.core.client.GWT; import com.google.gwt.editor.client.Editor; import com.google.gwt.editor.client.SimpleBeanEditorDriver; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; import com.google.gwt.uibinder.client.UiHandler; import com.google.gwt.user.client.Window; import com.google.gwt.user.client.ui.HasValue; import com.google.gwt.user.client.ui.Widget; import de.swm.commons.mobile.client.utils.Utils; import de.swm.commons.mobile.client.validation.IValidator; import de.swm.commons.mobile.client.widgets.*; import de.swm.commons.mobile.client.widgets.date.DateTextBox; import de.swm.mobile.kitchensink.client.base.ShowcaseDetailPage; import de.swm.mobile.kitchensink.client.showcase.forms.utils.EnumRenderer; import de.swm.mobile.kitchensink.client.showcase.forms.utils.Person; import org.gwtbootstrap3.client.ui.ButtonGroup; import java.util.Date; //TODO: Refactoring neue Struktur import static de.swm.mobile.kitchensink.client.ShowcaseAnnotations.ShowcaseSource; import static de.swm.mobile.kitchensink.client.ShowcaseAnnotations.ShowcaseUiXML; @ShowcaseSource @ShowcaseUiXML({"EditorFormPage.ui.xml"}) public class EditorFormPage extends ShowcaseDetailPage implements Editor<Person> { @UiField @Path("name") TextBox nameTextBox; @UiField @Path("email") EmailTextBox mailTextBox; @UiField @Path("birthdate") DateTextBox birthdateTextBox; @UiField @Path("name") TextArea description; @UiField @Path("job") DropDownList<String> jobList; @UiField @Path("option") ButtonGroup radioButtonGroup; @UiField @Path("genOption") GenericRadioButtonGroup<EnumRenderer.ExampleEnum> radioButtonGroupGeneric; @UiField @Ignore DateTextBox timeTextBox; @UiField @Ignore DateTextBox scheduleTextBox; @UiField @Ignore Button saveButton; @UiField @Ignore Button cancelButton; @UiField @Ignore HeaderPanel header; private static EditorPageUiBinder uiBinder = GWT.create(EditorPageUiBinder.class); private Driver driver = GWT.create(Driver.class); interface EditorPageUiBinder extends UiBinder<Widget, EditorFormPage> {} interface Driver extends SimpleBeanEditorDriver<Person, EditorFormPage> {} @SuppressWarnings("deprecation") public EditorFormPage() { super(EditorFormPage.class); initWidget(uiBinder.createAndBindUi(this)); driver.initialize(this); Person p = new Person(); p.setName("Alex"); p.setEmail("alex@swm.de"); Date date = new Date(); date.setYear(68); p.setBirthdate(date); driver.edit(p); this.timeTextBox.setValue(date); this.scheduleTextBox.setValue(date); // test enum based radio group radioButtonGroupGeneric.setRenderer(new EnumRenderer()); radioButtonGroupGeneric.setKeyValueProvider(new EnumRenderer()); EnumRenderer.setValues(radioButtonGroupGeneric); radioButtonGroupGeneric.setValue(EnumRenderer.ExampleEnum.GENERIC_OPTION_3); // test text area validation description.addValidator(new IValidator<String>() { @Override public String validate(HasValue<String> field) { String value = field.getValue(); if (value == null || value.length() == 0) { return "Bitte einen Wert eingeben."; } return null; } }); } @UiHandler("saveButton") void onSaveButtonClicked(ClickEvent e) { Person edited = driver.flush(); if (driver.hasErrors()) { Utils.console(driver.getErrors().toString()); } Window.alert(edited.toString()); } @Override public String getName() { return "Editor form page"; } @Override public HeaderPanel getHeaderPanel() { return header; } }