diff options
author | Dominic Rogetzer <e1627756@student.tuwien.ac.at> | 2018-06-06 22:09:27 +0200 |
---|---|---|
committer | Tharre <tharre3@gmail.com> | 2018-06-07 17:51:20 +0200 |
commit | 6fbc8a6a1c307b5e13ce3970c4dc9d8e54fff873 (patch) | |
tree | 6621208883c4848c4a6da1970f613512ecf288e8 /src | |
parent | a8c39fd4f07ffb46f109e22a4adc2548b04030bc (diff) | |
download | sepm-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.java | 80 | ||||
-rw-r--r-- | src/main/resources/fxml/employeeList.fxml | 9 |
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> |