13_Update

Keine Dateien in diesem Thema verfügbar.

Lernmaterialien

Change Order

Dialog

OrdersView.java

    private void addEditOrder(PizzaOrder existingOrder) {

Because the same method can then handle both cases:

  • existingOrder == null → create a new pizza order
  • existingOrder != null → edit an existing pizza order

OrdersView.java

        buttonAdd.addClickListener(b -> addEditOrder(null));

Button

OrdersView.java

        grid.addComponentColumn(o -> new Button("Edit order", e-> addEditOrder(o)))
                .setHeader("Task")
                .setSortable(false);

This adds a new column to the Grid.

grid.addComponentColumn(o -> new Button("Edit order", e -> addEditOrder(o)))

For every PizzaOrder o, it creates an Edit order button.

When clicked:

addEditOrder(o)

opens the dialog for that specific order.

.setHeader("Task")

Sets the column title to Task.

.setSortable(false)

Disables sorting for this button column.

Dialog

OrdersView.java

    private void addEditOrder(PizzaOrder existingOrder) {
        PizzaOrder order;
        Dialog dialog = new Dialog();
        dialog.setHeaderTitle(existingOrder == null ? "New Pizza Order" : "Edit Pizza Order");
        if (existingOrder != null) {
            order = existingOrder;
        }
        else {
            order = new PizzaOrder();
            order.setOrderId();
        }

binder.setBean(order);

does two things:

  1. Reads current values from order
  2. Shows them in the form fields

The dialog fields will show the current values, for example:

pizza     → "Salami"
size      → "Large"
price     → 12.5
quantity  → 2
garlic    → true
        Button saveButton = new Button("OK", event -> {
            if (binder.validate().isOk()) {
                if (existingOrder == null) {
                    pizzaOrderService.add(order);
                }
                reload();@NotNull(message = "Order date is required")
@PastOrPresent(message = "Order date must be in the past or today")
private LocalDate orderDate;

Change

@NotNull(message = "Order date is required")
@PastOrPresent(message = "Order date must be in the past or today")
private LocalDate orderDate;

GitHub

Copy code