summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorDominic Rogetzer <e1627756@student.tuwien.ac.at>2018-06-06 22:09:27 +0200
committerTharre <tharre3@gmail.com>2018-06-07 17:51:20 +0200
commit6fbc8a6a1c307b5e13ce3970c4dc9d8e54fff873 (patch)
tree6621208883c4848c4a6da1970f613512ecf288e8 /src
parenta8c39fd4f07ffb46f109e22a4adc2548b04030bc (diff)
downloadsepm-groupproject-6fbc8a6a1c307b5e13ce3970c4dc9d8e54fff873.tar.gz
sepm-groupproject-6fbc8a6a1c307b5e13ce3970c4dc9d8e54fff873.tar.xz
sepm-groupproject-6fbc8a6a1c307b5e13ce3970c4dc9d8e54fff873.zip
Create dedicated EmployeeListController [#25963]
This controller is (only) responsible for displaying a list of employees, and not for adding/editing employees. Done for being able to reuse the list-code later on
Diffstat (limited to 'src')
-rw-r--r--src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/EmployeeListController.java80
-rw-r--r--src/main/resources/fxml/employeeList.fxml9
2 files changed, 89 insertions, 0 deletions
diff --git a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/EmployeeListController.java b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/EmployeeListController.java
new file mode 100644
index 0000000..993735e
--- /dev/null
+++ b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/EmployeeListController.java
@@ -0,0 +1,80 @@
+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.util.SpringFXMLLoader;
+import at.ac.tuwien.sepm.assignment.groupphase.util.SpringFXMLLoader.FXMLWrapper;
+import java.io.IOException;
+import java.lang.invoke.MethodHandles;
+import java.util.List;
+import java.util.function.Consumer;
+import javafx.fxml.FXML;
+import javafx.geometry.Insets;
+import javafx.scene.Node;
+import javafx.scene.layout.FlowPane;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Controller;
+
+@Controller
+public class EmployeeListController {
+
+ private static final Logger LOG = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
+
+ @FXML private FlowPane flowPaneEmployeeList;
+
+ private final SpringFXMLLoader fxmlLoader;
+ private Node rootElement;
+
+ public EmployeeListController(SpringFXMLLoader fxmlLoader) {
+ this.fxmlLoader = fxmlLoader;
+ }
+
+ public void setData(
+ List<Employee> employeeList,
+ Consumer<Employee> onEditEmployeeClicked,
+ Consumer<Employee> onEmployeeClicked) {
+
+ flowPaneEmployeeList.getChildren().clear();
+ employeeList.forEach(
+ employee ->
+ addEmployeeToFlowPane(employee, onEditEmployeeClicked, onEmployeeClicked));
+ }
+
+ private void addEmployeeToFlowPane(
+ Employee employee,
+ Consumer<Employee> onEditEmployeeClicked,
+ Consumer<Employee> onEmployeeClicked) {
+ Insets listItemMargins = new Insets(0, 5, 10, 5);
+
+ try {
+ EmployeeListItemController controller =
+ EmployeeListItemController.createEmployeeListItemController(
+ fxmlLoader, employee);
+ Node rootElement = controller.getRootElement();
+ flowPaneEmployeeList.getChildren().add(rootElement);
+ FlowPane.setMargin(rootElement, listItemMargins);
+ if (onEditEmployeeClicked != null) {
+ controller.setConsumerEditEmployeeClicked(onEditEmployeeClicked);
+ }
+ if (onEmployeeClicked != null) {
+ controller.setConsumerEmployeeClicked(onEmployeeClicked);
+ }
+ } catch (IOException e) {
+ LOG.error("Could not create a new EmployeeListItem: {}", e);
+ }
+ }
+
+ public static EmployeeListController createEmployeeListController(SpringFXMLLoader loader)
+ throws IOException {
+ FXMLWrapper<Object, EmployeeListController> wrapper =
+ loader.loadAndWrap("/fxml/employeeList.fxml", EmployeeListController.class);
+ Node root = (Node) wrapper.getLoadedObject();
+ EmployeeListController controller = wrapper.getController();
+ controller.rootElement = root;
+ return controller;
+ }
+
+ public Node getRootElement() {
+ return rootElement;
+ }
+}
diff --git a/src/main/resources/fxml/employeeList.fxml b/src/main/resources/fxml/employeeList.fxml
new file mode 100644
index 0000000..52c502a
--- /dev/null
+++ b/src/main/resources/fxml/employeeList.fxml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import javafx.scene.layout.FlowPane?>
+<FlowPane xmlns="http://javafx.com/javafx"
+ xmlns:fx="http://javafx.com/fxml"
+ fx:controller="at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.controller.EmployeeListController"
+ fx:id="flowPaneEmployeeList"
+ prefHeight="346.0" prefWidth="742.0" style="-fx-background-color: #EFEBE8;">
+</FlowPane>