Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package it.zero11.vaadin.course.view;
- import java.util.List;
- import com.vaadin.flow.component.UI;
- import com.vaadin.flow.component.button.Button;
- import com.vaadin.flow.component.combobox.ComboBox;
- import com.vaadin.flow.component.datepicker.DatePicker;
- import com.vaadin.flow.component.orderedlayout.VerticalLayout;
- import com.vaadin.flow.component.textfield.TextArea;
- import com.vaadin.flow.component.textfield.TextField;
- import com.vaadin.flow.data.binder.Binder;
- import com.vaadin.flow.data.binder.ValidationException;
- import com.vaadin.flow.data.converter.StringToBigDecimalConverter;
- import com.vaadin.flow.data.converter.StringToIntegerConverter;
- import com.vaadin.flow.router.PageTitle;
- import com.vaadin.flow.router.Route;
- import it.zero11.vaadin.course.model.Brand;
- import it.zero11.vaadin.course.model.Product;
- import it.zero11.vaadin.course.service.BrandService;
- import it.zero11.vaadin.course.service.ProductService;
- @Route(value = "products/create")
- @PageTitle("Products")
- public class ProductsCreateView extends VerticalLayout {
- private static final long serialVersionUID = 1L;
- private final ComboBox<Brand> brandComboBox;
- private final TextField skuTextField;
- private final TextArea descriptionTextArea;
- private final TextField aviabilityTextField;
- private final Button productSaveButton;
- private final DatePicker publishDatePicker;
- private final DatePicker firstAvailablePicker;
- private final TextField weightTextField;
- private final TextField priceTextField;
- private final TextField costTextField;
- private final TextField eanTextField;
- public ProductsCreateView() {
- Binder<Product> binder = new Binder<Product>(Product.class);
- skuTextField = new TextField();
- skuTextField.setLabel("SKU");
- add(skuTextField);
- brandComboBox = new ComboBox<Brand>();
- brandComboBox.setLabel("Brand");
- brandComboBox.setItemLabelGenerator(Brand::getName);
- add(brandComboBox);
- descriptionTextArea = new TextArea();
- descriptionTextArea.setLabel("Description");
- add(descriptionTextArea);
- aviabilityTextField = new TextField();
- aviabilityTextField.setLabel("Aviability");
- add(aviabilityTextField);
- publishDatePicker = new DatePicker();
- publishDatePicker.setLabel("Publish Date");
- add(publishDatePicker);
- firstAvailablePicker = new DatePicker();
- firstAvailablePicker.setLabel("First Available");
- add(firstAvailablePicker);
- weightTextField = new TextField();
- weightTextField.setLabel("Weight");
- add(weightTextField);
- priceTextField = new TextField();
- priceTextField.setLabel("Price");
- add(priceTextField);
- costTextField = new TextField();
- costTextField.setLabel("Cost");
- add(costTextField);
- eanTextField = new TextField();
- eanTextField.setLabel("EAN");
- add(eanTextField);
- binder.forField(skuTextField).bind(Product::getSku, Product::setSku);
- binder.forField(brandComboBox).bind(Product::getBrand, Product::setBrand);
- binder.forField(descriptionTextArea).bind(Product::getDescription, Product::setDescription);
- binder.forField(aviabilityTextField).withConverter(new StringToIntegerConverter("Inserire un valore numerico")).bind(Product::getAvailability, Product::setAvailability);
- binder.forField(publishDatePicker).bind(Product::getPublishDate, Product::setPublishDate);
- binder.forField(firstAvailablePicker).bind(Product::getFirstAvailable, Product::setFirstAvailable);
- binder.forField(weightTextField).withConverter(new StringToBigDecimalConverter("Inserire un valore numerico.")).bind(Product::getWeight, Product::setWeight);
- binder.forField(priceTextField).withConverter(new StringToBigDecimalConverter("Inserire un valore numerico.")).bind(Product::getPrice, Product::setPrice);
- binder.forField(costTextField).withConverter(new StringToBigDecimalConverter("Inserire un valore numerico.")).bind(Product::getCost, Product::setCost);
- binder.forField(eanTextField).bind(Product::getEan, Product::setEan);
- productSaveButton = new Button("Save product");
- productSaveButton.addClickListener(e -> {
- Product p = new Product();
- try {
- binder.writeBean(p);
- ProductService.save(p);
- UI.getCurrent().navigate(ProductsView.class);
- } catch (Exception e1) {
- // TODO Auto-generated catch block
- e1.printStackTrace();
- }
- });
- add(productSaveButton);
- updateBrandData();
- }
- private void updateBrandData() {
- List<Brand> brands = BrandService.findAll();
- brandComboBox.setItems(brands);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement