/* * Copyright (C) 2013 Red Hat, Inc. and/or its affiliates. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.jboss.errai.demo.grocery.client.local; import static com.google.gwt.dom.client.Style.Unit.PX; import java.util.Date; import java.util.Set; import javax.enterprise.context.Dependent; import javax.validation.ConstraintViolation; import org.jboss.errai.demo.grocery.client.shared.Department; import org.jboss.errai.demo.grocery.client.shared.Item; import org.jboss.errai.ui.shared.api.annotations.EventHandler; import org.jboss.errai.ui.shared.api.annotations.Templated; import com.google.gwt.animation.client.Animation; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.dom.client.FocusEvent; import com.google.gwt.event.dom.client.FocusHandler; import com.google.gwt.user.client.Window; /** * A form for editing the properties of a new or existing Item object. * * @author Jonathan Fuerth <jfuerth@gmail.com> */ @Dependent @Templated("#form") public class ItemForm extends Form { /** * Event handler functions for user events generated by clicking on the form buttons * @param event */ // TODO (after ERRAI-366): make this method package-private @EventHandler("saveButton") public void onSaveButtonClicked(ClickEvent event) { if(!isValidName()) return; String departmentText = department.getText(); int count = 0; while (departmentText == null) { departmentText = department.getText(); System.out.println(count); count++; } Department resolvedDepartment = Department.resolve(em, department.getText()); Item item = itemBinder.getModel(); //item.setName(name.getText()); item.setDepartment(resolvedDepartment); //item.setComment(comment.getText()); item.setAddedBy(user); item.setAddedOn(new Date()); final Set<ConstraintViolation<Item>> violations = validator.validate(item); if (violations.size() > 0) { ConstraintViolation<Item> violation = violations.iterator().next(); overallErrorMessage.setText(violation.getPropertyPath() + " " + violation.getMessage()); overallErrorMessage.setVisible(true); return; } em.persist(item); //groceryList.getItems().add(item); //em.merge(groceryList); em.flush(); clearButton.click(); hideOtherFields(); if (afterSaveAction != null) { afterSaveAction.run(); } } @EventHandler("clearButton") public void onClearButtonClicked(ClickEvent clearFormEvent) { name.setText(""); department.setText(""); comment.setText(""); name.getValueBox().addFocusHandler(new FocusHandler() { @Override public void onFocus(FocusEvent event) { if ("0px".equals(otherFields.getStyle().getHeight())) { new Animation() { @Override protected void onUpdate(double progress) { otherFields.getStyle().setHeight(Window.getClientWidth() > 768 ? 215 : 145 * progress, PX); } }.run(1000); } } }); grabKeyboardFocus(); } /** * Private helper functions */ public void setAfterSaveAction(Runnable afterSaveAction) { this.afterSaveAction = afterSaveAction; } }