diff options
author | Viktoria Pundy <viktoria.pundy@aon.at> | 2018-06-02 20:18:32 +0200 |
---|---|---|
committer | Tharre <tharre3@gmail.com> | 2018-06-13 18:35:20 +0200 |
commit | 508353d4f9d0d6716cabc70f5e9c6c2712264a9b (patch) | |
tree | ff00244cd7468396f980ec0de55350ef41ba3894 /src/main | |
parent | 8e9d7d1cb5ffd184ee63706350fa664aa9007fa6 (diff) | |
download | sepm-groupproject-508353d4f9d0d6716cabc70f5e9c6c2712264a9b.tar.gz sepm-groupproject-508353d4f9d0d6716cabc70f5e9c6c2712264a9b.tar.xz sepm-groupproject-508353d4f9d0d6716cabc70f5e9c6c2712264a9b.zip |
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
Diffstat (limited to 'src/main')
4 files changed, 154 insertions, 4 deletions
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); + }*/ +} diff --git a/src/main/resources/fxml/ArchiveOperation.fxml b/src/main/resources/fxml/ArchiveOperation.fxml index 0e4e3d7..13dbd12 100644 --- a/src/main/resources/fxml/ArchiveOperation.fxml +++ b/src/main/resources/fxml/ArchiveOperation.fxml @@ -4,6 +4,7 @@ <?import javafx.scene.control.Hyperlink?> <?import javafx.scene.control.Label?> <?import javafx.scene.control.ScrollPane?> +<?import javafx.scene.image.ImageView?> <?import javafx.scene.layout.AnchorPane?> <?import javafx.scene.layout.ColumnConstraints?> <?import javafx.scene.layout.FlowPane?> @@ -63,6 +64,7 @@ <Font name="System Bold" size="18.0" /> </font> </Label> + <ImageView fx:id="imvVehicleDetail" fitHeight="34.0" fitWidth="34.0" layoutX="14.0" layoutY="97.0" pickOnBounds="true" preserveRatio="true" /> </children> </AnchorPane> <ScrollPane fitToWidth="true" prefHeight="410.0" prefWidth="840.0" AnchorPane.leftAnchor="82.0" AnchorPane.topAnchor="225.0"> diff --git a/src/main/resources/fxml/DetailArchiveOperation.fxml b/src/main/resources/fxml/DetailArchiveOperation.fxml new file mode 100644 index 0000000..29bdeb7 --- /dev/null +++ b/src/main/resources/fxml/DetailArchiveOperation.fxml @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<?import javafx.scene.layout.AnchorPane?> +<?import javafx.scene.layout.HBox?> +<?import javafx.scene.layout.VBox?> + + +<AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" fx:controller="at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.controller.DetailArchiveOperationController" minWidth="-Infinity" xmlns="http://javafx.com/javafx/9.0.1" xmlns:fx="http://javafx.com/fxml/1"> + <children> + <HBox prefHeight="100.0" prefWidth="200.0"> + <children> + <VBox fx:id="vBoxVehicle" prefHeight="200.0" prefWidth="100.0" /> + <VBox fx:id="vBoxPeople" prefHeight="200.0" prefWidth="100.0" /> + </children> + </HBox> + </children> +</AnchorPane> |