From 508353d4f9d0d6716cabc70f5e9c6c2712264a9b Mon Sep 17 00:00:00 2001
From: Viktoria Pundy <viktoria.pundy@aon.at>
Date: Sat, 2 Jun 2018 20:18:32 +0200
Subject: Added fxml and controller for archive window [#27299]

Added fxml-File, which contains a small window for the detail view in the archive window. It contains two vboxes, in which vehicle and staff are stored
---
 .../controller/ArchiveOperationController.java     |  33 ++++++-
 .../DetailArchiveOperationController.java          | 106 +++++++++++++++++++++
 2 files changed, 135 insertions(+), 4 deletions(-)
 create mode 100644 src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/DetailArchiveOperationController.java

(limited to 'src/main/java/at/ac')

diff --git a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/ArchiveOperationController.java b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/ArchiveOperationController.java
index 86a14f9..a233d21 100644
--- a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/ArchiveOperationController.java
+++ b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/ArchiveOperationController.java
@@ -5,6 +5,7 @@ import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Operation.S
 import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Vehicle;
 import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.service.OperationService;
 import at.ac.tuwien.sepm.assignment.groupphase.exception.ServiceException;
+import at.ac.tuwien.sepm.assignment.groupphase.util.SpringFXMLLoader;
 import java.io.IOException;
 import java.time.LocalDateTime;
 import java.time.ZoneOffset;
@@ -19,8 +20,9 @@ import java.util.stream.Collectors;
 import javafx.fxml.FXML;
 import javafx.scene.control.Alert;
 import javafx.scene.control.Alert.AlertType;
-import javafx.scene.control.Button;
 import javafx.scene.control.Label;
+import javafx.scene.image.Image;
+import javafx.scene.image.ImageView;
 import javafx.scene.layout.AnchorPane;
 import javafx.scene.layout.FlowPane;
 import org.springframework.stereotype.Controller;
@@ -28,6 +30,7 @@ import org.springframework.stereotype.Controller;
 @Controller
 public class ArchiveOperationController {
 
+    @FXML private ImageView imvVehicleDetail;
     @FXML private AnchorPane apMainDetails;
     @FXML private Label lblOperations;
     @FXML private Label lblClosed;
@@ -46,12 +49,15 @@ public class ArchiveOperationController {
     @FXML private FlowPane archiveOperationFlowPane;
     private final CreateOperationController createOperationController;
     private Set<Operation> list = new HashSet<>();
+    private final SpringFXMLLoader fxmlLoader;
 
     public ArchiveOperationController(
             OperationService operationService,
-            CreateOperationController createOperationController) {
+            CreateOperationController createOperationController,
+            SpringFXMLLoader fxmlLoader) {
         this.operationService = operationService;
         this.createOperationController = createOperationController;
+        this.fxmlLoader = fxmlLoader;
     }
 
     @FXML
@@ -91,6 +97,7 @@ public class ArchiveOperationController {
                                     backApDetails.setVisible(true);
                                     setOperation();
                                     setDetailsVisible(true);
+                                    imvVehicleDetail.setImage(new Image(("/images/Vehicle.png")));
                                 });
                 archiveOperationFlowPane.getChildren().add(opInAController.getRoot());
             }
@@ -151,13 +158,31 @@ public class ArchiveOperationController {
         lblVehicles.setText(result);
         lblAddress.setText(detailOperation.destination());
 
-        for (Vehicle vehicle : detailOperation.vehicles()) {
+        fpVehicles.getChildren().clear();
+        try {
+            for (Vehicle vehicle : detailOperation.vehicles()) {
+                DetailArchiveOperationController controller = null;
+
+                controller = DetailArchiveOperationController.create(fxmlLoader);
+
+                controller.set(vehicle);
+                fpVehicles.getChildren().add(controller.getRoot());
+            }
+        } catch (IOException e) {
+            Alert alert = new Alert(Alert.AlertType.ERROR);
+            alert.setTitle("Fehler");
+            alert.setHeaderText("Fehler!");
+            alert.setContentText("Die Element konnte nicht geladen werden!");
+            alert.showAndWait();
+        }
+
+        /*for (Vehicle vehicle : detailOperation.vehicles()) {
             Button b = new Button();
             b.setPrefHeight(200);
             b.setPrefWidth(600 / 2);
             b.setText(vehicle.name());
             fpVehicles.getChildren().add(b);
-        }
+        }*/
     }
 
     public void setListVisible(boolean b) {
diff --git a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/DetailArchiveOperationController.java b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/DetailArchiveOperationController.java
new file mode 100644
index 0000000..3c50c65
--- /dev/null
+++ b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/DetailArchiveOperationController.java
@@ -0,0 +1,106 @@
+package at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.controller;
+
+import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Employee;
+import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Vehicle;
+import at.ac.tuwien.sepm.assignment.groupphase.util.SpringFXMLLoader;
+import at.ac.tuwien.sepm.assignment.groupphase.util.SpringFXMLLoader.FXMLWrapper;
+import java.io.IOException;
+import java.lang.invoke.MethodHandles;
+import javafx.fxml.FXML;
+import javafx.scene.Node;
+import javafx.scene.control.Alert;
+import javafx.scene.layout.VBox;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Controller;
+
+@Controller
+public class DetailArchiveOperationController {
+    private static final Logger LOG = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
+
+    @FXML private VBox vBoxVehicle;
+    @FXML private VBox vBoxPeople;
+    private final SpringFXMLLoader fxmlLoader;
+
+    public DetailArchiveOperationController(SpringFXMLLoader fxmlLoader) {
+        this.fxmlLoader = fxmlLoader;
+    }
+
+    public static DetailArchiveOperationController create(SpringFXMLLoader fxmlLoader)
+            throws IOException {
+        FXMLWrapper<Object, DetailArchiveOperationController> wrapper =
+                fxmlLoader.loadAndWrap(
+                        "/fxml/DetailArchiveOperation.fxml",
+                        DetailArchiveOperationController.class);
+
+        Node root = (Node) wrapper.getLoadedObject();
+        DetailArchiveOperationController result = wrapper.getController();
+        result.rootElement = root;
+
+        return result;
+    }
+
+    public Node getRoot() {
+        return rootElement;
+    }
+
+    private Node rootElement;
+
+    public void set(Vehicle vehicle) {
+        VehiclePaneController controller = null;
+        try {
+            controller = VehiclePaneController.createVehiclePane();
+            controller.setData(vehicle, false);
+            vBoxVehicle.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();
+        }
+        try {
+            for (int i = 0; i < vehicle.registrations().size(); i++) {
+                Employee employee = vehicle.registrations().get(i).employee();
+
+                EmployeeListItemController employeeListItemController =
+                        EmployeeListItemController.createEmployeeListItemController(
+                                fxmlLoader, employee);
+                vBoxPeople.getChildren().add(employeeListItemController.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();
+        }
+    }
+
+    /* public void set(Operation operation) {
+        txtAddress.setText(operation.destination());
+        String date = "am ";
+        if (operation.created() != null) {
+            LocalDateTime myDateTime =
+                    LocalDateTime.ofInstant(
+                            Objects.requireNonNull(operation.created()), ZoneOffset.UTC);
+            date +=
+                    myDateTime.getDayOfMonth()
+                            + "."
+                            + myDateTime.getMonth().getValue()
+                            + "."
+                            + myDateTime.getYear();
+            txtDate.setText(date);
+        } else {
+            txtDate.setText("---");
+        }
+        txtOpCode.setText(operation.opCode());
+        Collection<String> elements =
+                operation.vehicles().stream().map(Vehicle::name).collect(Collectors.toList());
+        String result = String.join(", ", elements);
+
+        txtVehicles.setText(result);
+    }*/
+}
-- 
cgit v1.2.3-70-g09d2