aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorDominic Rogetzer <e1627756@student.tuwien.ac.at>2018-06-06 22:43:20 +0200
committerTharre <tharre3@gmail.com>2018-06-07 17:51:20 +0200
commite7a77667e4f822058b6be15c7bb18b735e2d6755 (patch)
tree4641ad1b6171012b2ad78fab1d930b434a3c8970 /src
parent6cb6f7a17b7755a7442d38ae31113c2f37d98289 (diff)
downloadsepm-groupproject-e7a77667e4f822058b6be15c7bb18b735e2d6755.tar.gz
sepm-groupproject-e7a77667e4f822058b6be15c7bb18b735e2d6755.tar.xz
sepm-groupproject-e7a77667e4f822058b6be15c7bb18b735e2d6755.zip
Add onEmployeeClicked callback and select/deselect methods [#25963]
Diffstat (limited to 'src')
-rw-r--r--src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/EmployeeListController.java41
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;
+ }
}