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; +    }  }  | 
