From 093583dafc6852215f794593fa35ab2f4567f37b Mon Sep 17 00:00:00 2001
From: Viktoria Pundy <viktoria.pundy@aon.at>
Date: Thu, 14 Jun 2018 13:31:21 +0200
Subject: Added flowpane for Vehicles to OperationDetails Window [#27300]

---
 .../controller/OperationDetailsController.java     | 41 +++++++++++++---------
 1 file changed, 25 insertions(+), 16 deletions(-)

(limited to 'src/main/java')

diff --git a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/OperationDetailsController.java b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/OperationDetailsController.java
index 7694b95..ffb4166 100644
--- a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/OperationDetailsController.java
+++ b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/OperationDetailsController.java
@@ -7,6 +7,8 @@ import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.service.Operati
 import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.service.VehicleService;
 import at.ac.tuwien.sepm.assignment.groupphase.exception.InvalidOperationException;
 import at.ac.tuwien.sepm.assignment.groupphase.exception.ServiceException;
+import java.io.IOException;
+import java.lang.invoke.MethodHandles;
 import java.util.Collection;
 import java.util.EnumSet;
 import java.util.stream.Collectors;
@@ -19,6 +21,7 @@ import javafx.scene.control.Label;
 import javafx.scene.control.ListCell;
 import javafx.scene.control.ListView;
 import javafx.scene.layout.AnchorPane;
+import javafx.scene.layout.FlowPane;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Controller;
@@ -31,13 +34,14 @@ public class OperationDetailsController {
     private final OperationService operationService;
     private final VehicleService vehicleService;
     private final CreateOperationController createOperationController;
-    @FXML private ListView<Vehicle> lvVehicles;
+    @FXML private FlowPane fpVehicles;
     @FXML private ListView<Operation> lvActiveOperations;
     @FXML private Label lblChosenVehicles;
     @FXML private Button btnCloseOperation;
     @FXML private Button btnCancelOperation;
     @FXML private Label lblCode, lblAdditionalInfo, lblAddress;
     @FXML private AnchorPane operationDetailsAP;
+    private static final Logger LOG = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
 
     public OperationDetailsController(
             OperationService operationService,
@@ -50,20 +54,6 @@ public class OperationDetailsController {
 
     @FXML
     private void initialize() {
-        lvVehicles.setCellFactory(
-                param ->
-                        new ListCell<>() {
-                            @Override
-                            protected void updateItem(Vehicle item, boolean empty) {
-                                super.updateItem(item, empty);
-
-                                if (empty || item == null || item.name() == null) {
-                                    setText(null);
-                                } else {
-                                    setText(item.name());
-                                }
-                            }
-                        });
         lvActiveOperations.setCellFactory(
                 param ->
                         new ListCell<>() {
@@ -89,6 +79,25 @@ public class OperationDetailsController {
                 });
     }
 
+    private void updateFlowPane() {
+        try {
+            fpVehicles.getChildren().clear();
+            for (Vehicle vehicle : operation.vehicles()) {
+                VehiclePaneController controller = VehiclePaneController.createVehiclePane();
+                controller.setData(vehicle, true);
+                fpVehicles.getChildren().add(controller.getRootElement());
+            }
+        } catch (IOException e) {
+            LOG.error("Error while updating list.", e);
+
+            Alert alert = new Alert(Alert.AlertType.ERROR);
+            alert.setTitle("Fehler");
+            alert.setHeaderText("Fehler!");
+            alert.setContentText(e.getMessage());
+            alert.showAndWait();
+        }
+    }
+
     void initOperation(Operation operation) {
         fillActiveList();
         this.operation = operation;
@@ -99,7 +108,7 @@ public class OperationDetailsController {
         lblChosenVehicles.setText(result.toString());
         lblAdditionalInfo.setText(operation.additionalInfo());
         lblAddress.setText(operation.destination());
-        lvVehicles.setItems(FXCollections.observableArrayList(operation.vehicles()));
+        updateFlowPane();
         operationDetailsAP.setVisible(true);
     }
 
-- 
cgit v1.2.3-70-g09d2