diff options
Diffstat (limited to 'src/main/java')
-rw-r--r-- | src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/EmployeeListController.java | 41 |
1 files changed, 38 insertions, 3 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 index 993735e..6d37379 100644 --- 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 @@ -5,6 +5,7 @@ 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.ArrayList; import java.util.List; import java.util.function.Consumer; import javafx.fxml.FXML; @@ -22,19 +23,24 @@ public class EmployeeListController { @FXML private FlowPane flowPaneEmployeeList; + private Consumer<Employee> onEmployeeClicked; + private final SpringFXMLLoader fxmlLoader; private Node rootElement; + private List<EmployeeListItemController> employeeListItemControllers; public EmployeeListController(SpringFXMLLoader fxmlLoader) { this.fxmlLoader = fxmlLoader; + this.employeeListItemControllers = new ArrayList<>(); } public void setData( List<Employee> employeeList, Consumer<Employee> onEditEmployeeClicked, - Consumer<Employee> onEmployeeClicked) { + Consumer<EmployeeListItemController> onEmployeeClicked) { flowPaneEmployeeList.getChildren().clear(); + employeeListItemControllers.clear(); employeeList.forEach( employee -> addEmployeeToFlowPane(employee, onEditEmployeeClicked, onEmployeeClicked)); @@ -43,7 +49,7 @@ public class EmployeeListController { private void addEmployeeToFlowPane( Employee employee, Consumer<Employee> onEditEmployeeClicked, - Consumer<Employee> onEmployeeClicked) { + Consumer<EmployeeListItemController> onEmployeeClicked) { Insets listItemMargins = new Insets(0, 5, 10, 5); try { @@ -52,18 +58,43 @@ public class EmployeeListController { fxmlLoader, employee); Node rootElement = controller.getRootElement(); flowPaneEmployeeList.getChildren().add(rootElement); + employeeListItemControllers.add(controller); FlowPane.setMargin(rootElement, listItemMargins); if (onEditEmployeeClicked != null) { controller.setConsumerEditEmployeeClicked(onEditEmployeeClicked); } if (onEmployeeClicked != null) { - controller.setConsumerEmployeeClicked(onEmployeeClicked); + controller.setConsumerEmployeeClicked( + employeeListItemController -> { + onEmployeeClicked.accept(employeeListItemController); + if (this.onEmployeeClicked != null) { + this.onEmployeeClicked.accept( + employeeListItemController.getEmployee()); + } + }); } } catch (IOException e) { LOG.error("Could not create a new EmployeeListItem: {}", e); } } + private void setEmployeeSelected(Employee employee, boolean selected) { + employeeListItemControllers.forEach( + employeeListItemController -> { + if (employeeListItemController.getEmployee().equals(employee)) { + employeeListItemController.setSelected(selected); + } + }); + } + + public void selectEmployee(Employee employee) { + setEmployeeSelected(employee, true); + } + + public void deselectEmployee(Employee employee) { + setEmployeeSelected(employee, false); + } + public static EmployeeListController createEmployeeListController(SpringFXMLLoader loader) throws IOException { FXMLWrapper<Object, EmployeeListController> wrapper = @@ -77,4 +108,8 @@ public class EmployeeListController { public Node getRootElement() { return rootElement; } + + public void setOnEmployeeClicked(Consumer<Employee> onEmployeeClicked) { + this.onEmployeeClicked = onEmployeeClicked; + } } |