aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/java/at
diff options
context:
space:
mode:
authorAndreas Weninger <e01526989@student.tuwien.ac.at>2018-06-11 10:17:52 +0200
committerTharre <tharre3@gmail.com>2018-06-13 19:22:31 +0200
commit8735141583894d14e620dae537192d12d06f9ba8 (patch)
treeb926d592e0fea9e52b623e96eb2c93c30ab03278 /src/main/java/at
parent191670b9cb882c401357f8d9e358d46ae52560af (diff)
downloadsepm-groupproject-8735141583894d14e620dae537192d12d06f9ba8.tar.gz
sepm-groupproject-8735141583894d14e620dae537192d12d06f9ba8.tar.xz
sepm-groupproject-8735141583894d14e620dae537192d12d06f9ba8.zip
UI Rework
Diffstat (limited to 'src/main/java/at')
-rw-r--r--src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/EmployeeListController.java13
-rw-r--r--src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/ManageEmployeesController.java3
-rw-r--r--src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/RegistrationWindowController.java233
3 files changed, 164 insertions, 85 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 dc808a4..843145c 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
@@ -7,6 +7,7 @@ import java.io.IOException;
import java.lang.invoke.MethodHandles;
import java.util.ArrayList;
import java.util.List;
+import java.util.Set;
import java.util.function.Consumer;
import javafx.fxml.FXML;
import javafx.geometry.Insets;
@@ -30,22 +31,27 @@ public class EmployeeListController {
private final SpringFXMLLoader fxmlLoader;
private Node rootElement;
private List<EmployeeListItemController> employeeListItemControllers;
+ private Insets listItemMargins = new Insets(0, 5, 10, 5);
public EmployeeListController(SpringFXMLLoader fxmlLoader) {
this.fxmlLoader = fxmlLoader;
this.employeeListItemControllers = new ArrayList<>();
}
- public void setData(List<Employee> employeeList) {
+ public void setListItemMargins(Insets value) {
+ this.listItemMargins = value;
+ }
+
+ public void setData(Set<Employee> employeeList) {
setData(employeeList, null, null);
}
- public void setData(List<Employee> employeeList, Consumer<Employee> onEmployeeClicked) {
+ public void setData(Set<Employee> employeeList, Consumer<Employee> onEmployeeClicked) {
setData(employeeList, onEmployeeClicked, null);
}
public void setData(
- List<Employee> employeeList,
+ Set<Employee> employeeList,
Consumer<Employee> onEmployeeClicked,
Consumer<EmployeeListItemController> onEmployeeListItemClicked) {
@@ -61,7 +67,6 @@ public class EmployeeListController {
Employee employee,
Consumer<Employee> onEmployeeClicked,
Consumer<EmployeeListItemController> onEmployeeListItemClicked) {
- Insets listItemMargins = new Insets(0, 5, 10, 5);
try {
EmployeeListItemController controller =
diff --git a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/ManageEmployeesController.java b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/ManageEmployeesController.java
index ed43c13..67cf7fa 100644
--- a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/ManageEmployeesController.java
+++ b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/ManageEmployeesController.java
@@ -6,6 +6,7 @@ import at.ac.tuwien.sepm.assignment.groupphase.exception.ServiceException;
import at.ac.tuwien.sepm.assignment.groupphase.util.SpringFXMLLoader;
import java.io.IOException;
import java.lang.invoke.MethodHandles;
+import java.util.HashSet;
import java.util.stream.Collectors;
import javafx.fxml.FXML;
import javafx.scene.layout.AnchorPane;
@@ -100,7 +101,7 @@ public class ManageEmployeesController {
|| employee.name()
.toLowerCase()
.contains(searchString.toLowerCase()))
- .collect(Collectors.toList()),
+ .collect(Collectors.toCollection(HashSet::new)),
this::openEditEmployee);
} catch (ServiceException e) {
diff --git a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/RegistrationWindowController.java b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/RegistrationWindowController.java
index 6768162..b8abf91 100644
--- a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/RegistrationWindowController.java
+++ b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/RegistrationWindowController.java
@@ -10,6 +10,8 @@ import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.service.Vehicle
import at.ac.tuwien.sepm.assignment.groupphase.exception.InvalidRegistrationException;
import at.ac.tuwien.sepm.assignment.groupphase.exception.InvalidVehicleException;
import at.ac.tuwien.sepm.assignment.groupphase.exception.ServiceException;
+import at.ac.tuwien.sepm.assignment.groupphase.util.SpringFXMLLoader;
+import java.io.IOException;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
@@ -19,17 +21,21 @@ import java.util.HashSet;
import java.util.LinkedList;
import java.util.List;
import java.util.Set;
-import javafx.beans.property.SimpleStringProperty;
+import java.util.stream.Collectors;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.fxml.FXML;
+import javafx.geometry.Insets;
+import javafx.scene.Node;
import javafx.scene.control.Alert;
import javafx.scene.control.Alert.AlertType;
import javafx.scene.control.ChoiceBox;
import javafx.scene.control.Label;
-import javafx.scene.control.TableColumn;
-import javafx.scene.control.TableView;
+import javafx.scene.control.ScrollPane;
import javafx.scene.control.TextField;
+import javafx.scene.input.KeyEvent;
+import javafx.scene.input.MouseButton;
+import javafx.scene.layout.GridPane;
import javafx.scene.layout.VBox;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -41,117 +47,179 @@ public class RegistrationWindowController {
private static final Logger LOG = LoggerFactory.getLogger(RegistrationWindowController.class);
private final EmployeeService employeeService;
-
private final VehicleService vehicleService;
-
+ private final RegistrationService registrationService;
private final CreateOperationController createOperationController;
+ private final SpringFXMLLoader fxmlLoader;
- private final RegistrationService registrationService;
- @FXML private VBox registrationWindowVB;
+ @FXML private GridPane root;
+ @FXML private VBox vbVehicles;
+ @FXML private ScrollPane listEmployee;
+ @FXML private ChoiceBox<Integer> cbStart;
+ @FXML private ChoiceBox<Integer> cbEnd;
+ @FXML private Label lVehicles;
+ @FXML private Label lEmployees;
+ @FXML private TextField tfVehicleSearch;
+ @FXML private TextField tfEmployeeSearch;
+ private EmployeeListController employeeListController;
+
+ private Vehicle chosenVehicle;
+ private List<Employee> chosenEmployees = new LinkedList<>();
public RegistrationWindowController(
EmployeeService employeeService,
VehicleService vehicleService,
CreateOperationController createOperationController,
- RegistrationService registrationService) {
+ RegistrationService registrationService,
+ SpringFXMLLoader fxmlLoader) {
this.employeeService = employeeService;
this.vehicleService = vehicleService;
this.createOperationController = createOperationController;
this.registrationService = registrationService;
+ this.fxmlLoader = fxmlLoader;
}
- @FXML private ChoiceBox<Integer> cbStart;
- @FXML private ChoiceBox<Integer> cbEnd;
- @FXML private Label lVehicles;
- @FXML private Label lEmployees;
- @FXML private TextField tfVehicleSearch;
- @FXML private TextField tfEmployeeSearch;
- @FXML private TableView<Vehicle> tvVehicles;
- @FXML private TableView<Employee> tvEmployees;
- @FXML private TableColumn<Vehicle, String> tcVehicles;
- @FXML private TableColumn<Employee, String> tcEmployees;
+ @FXML
+ private void initialize() throws IOException {
+ employeeListController = EmployeeListController.createEmployeeListController(fxmlLoader);
+ employeeListController.setListItemMargins(new Insets(10, 6, 0, 6));
+ // listEmployee. .getChildren().add(employeeListController.getRootElement());
+ Node emplList = employeeListController.getRootElement();
+ // emplList.(360);
+ listEmployee.setContent(emplList);
- private Vehicle chosenVehicle;
- private List<Employee> chosenEmployees = new LinkedList<>();
+ ObservableList<Integer> hours =
+ FXCollections.observableArrayList(
+ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
+ 21, 22, 23);
+ cbStart.setItems(hours);
+ cbStart.setValue(0);
+ cbEnd.setItems(hours);
+ cbEnd.setValue(12);
+
+ reset();
+ }
+
+ private void updateEmplList() {
+ employeeListController.deselectAllEmployees();
- @FXML
- private void initialize() {
- // will have to be replaced for FlowPane
try {
- Set<Vehicle> vehicles = vehicleService.list(EnumSet.of(Status.ABGEMELDET));
- tcVehicles.setCellValueFactory(x -> new SimpleStringProperty(x.getValue().name()));
- tvVehicles.setItems(FXCollections.observableArrayList(vehicles));
+ Set<Employee> employees =
+ employeeService
+ .list()
+ .stream()
+ .filter(
+ e ->
+ e.name()
+ .toLowerCase()
+ .contains(
+ tfEmployeeSearch
+ .getText()
+ .toLowerCase()))
+ .collect(Collectors.toCollection(HashSet::new));
+ employeeListController.setData(
+ employees,
+ selection -> {
+ if (selection == null) {
+ return;
+ } else if (chosenEmployees.contains(selection)) {
+ chosenEmployees.remove(selection);
+ } else {
+ chosenEmployees.add(selection);
+ }
+
+ StringBuilder text = new StringBuilder();
+ boolean first = true;
+ for (Employee employee : chosenEmployees) {
+ if (!first) {
+ text.append(", ");
+ }
+ text.append(employee.name());
+ first = false;
+ }
+ lEmployees.setText(text.toString());
+ },
+ contr -> contr.setSelected(chosenEmployees.contains(contr.getEmployee())));
+
+ employees.forEach(
+ e -> {
+ if (chosenEmployees.contains(e)) employeeListController.selectEmployee(e);
+ });
} catch (ServiceException e) {
LOG.warn(
- "Caught ServiceException while getting vehicles. Showing it to user. Error message: {}",
+ "Caught ServiceException while getting employees. Showing it to user. Error message: {}",
e.getMessage());
Alert alert = new Alert(AlertType.ERROR);
- alert.setTitle("Fahrzeuge - Fehler!");
- alert.setHeaderText("Beim Auflisten der Fahrzeug ist ein Fehler aufgetreten.");
+ alert.setTitle("Personal - Fehler!");
+ alert.setHeaderText("Beim Auflisten des Personals ist ein Fehler aufgetreten.");
alert.setContentText(e.getMessage());
alert.show();
}
+ }
+
+ private void updateVehList() {
+ vbVehicles.getChildren().clear();
+
try {
- Set<Employee> employees = employeeService.list();
- tcEmployees.setCellValueFactory(x -> new SimpleStringProperty(x.getValue().name()));
- tvEmployees.setItems(FXCollections.observableArrayList(employees));
+ Set<Vehicle> vehicles = vehicleService.list(EnumSet.of(Status.ABGEMELDET));
+
+ for (Vehicle vehicle : vehicles) {
+ if (!vehicle.name().toLowerCase().contains(tfVehicleSearch.getText().toLowerCase()))
+ continue;
+
+ VehiclePaneController vp = VehiclePaneController.createVehiclePane();
+ vp.setData(vehicle, false);
+ vbVehicles.getChildren().add(vp.getRootElement());
+
+ vp.getRootElement()
+ .setOnMouseClicked(
+ event -> {
+ if (event.getButton() == MouseButton.PRIMARY) {
+ chosenVehicle = vehicle;
+ lVehicles.setText(chosenVehicle.name());
+ updateVehList();
+ }
+ });
+ if (chosenVehicle != null && chosenVehicle.id() == vehicle.id())
+ vp.setSelected(true);
+ }
} catch (ServiceException e) {
LOG.warn(
- "Caught ServiceException while getting employees. Showing it to user. Error message: {}",
- e.getMessage());
+ "Caught ServiceException while getting vehicles. Showing it to user. Error message: {}",
+ e);
Alert alert = new Alert(AlertType.ERROR);
- alert.setTitle("Personal - Fehler!");
- alert.setHeaderText("Beim Auflisten des Personals ist ein Fehler aufgetreten.");
+ alert.setTitle("Fahrzeuge - Fehler!");
+ alert.setHeaderText("Beim Auflisten der Fahrzeug ist ein Fehler aufgetreten.");
+ alert.setContentText(e.getMessage());
+ alert.show();
+ } catch (IOException e) {
+ LOG.error(
+ "Caught IOException while updateVehList. Showing it to user.", e.getMessage());
+ Alert alert = new Alert(AlertType.ERROR);
+ alert.setTitle("Fehler");
alert.setContentText(e.getMessage());
alert.show();
}
- tvVehicles.setOnMousePressed(
- mouseEvent -> {
- if (mouseEvent.isPrimaryButtonDown() && mouseEvent.getClickCount() == 2) {
- chosenVehicle = tvVehicles.getSelectionModel().getSelectedItem();
- if (chosenVehicle == null) {
- return;
- }
- lVehicles.setText(chosenVehicle.name());
- }
- });
- tvEmployees.setOnMousePressed(
- mouseEvent -> {
- if (mouseEvent.isPrimaryButtonDown() && mouseEvent.getClickCount() == 2) {
- Employee selection = tvEmployees.getSelectionModel().getSelectedItem();
- if (selection == null) {
- return;
- } else if (chosenEmployees.contains(selection)) {
- chosenEmployees.remove(selection);
- } else {
- chosenEmployees.add(selection);
- }
-
- StringBuilder text = new StringBuilder();
- for (Employee employee : chosenEmployees) {
- text.append(employee.name()).append("\n");
- }
- lEmployees.setText(text.toString());
- }
- });
- ObservableList<Integer> hours =
- FXCollections.observableArrayList(
- 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
- 21, 22, 23);
- cbStart.setItems(hours);
- cbStart.setValue(0);
- cbEnd.setItems(hours);
- cbEnd.setValue(12);
}
public void cancel() {
LOG.debug("Cancel Button clicked");
- chosenEmployees.clear();
- // ((Stage) lVehicles.getScene().getWindow()).close();
+ reset();
this.setVisible(false);
createOperationController.setVisible(true);
}
+ private void reset() {
+ chosenEmployees.clear();
+ chosenVehicle = null;
+ tfEmployeeSearch.setText("");
+ tfVehicleSearch.setText("");
+ lEmployees.setText("-");
+ lVehicles.setText("-");
+ updateVehList();
+ updateEmplList();
+ }
+
public void create() {
LOG.debug("Create Button clicked");
@@ -183,8 +251,8 @@ public class RegistrationWindowController {
// ((Stage) lVehicles.getScene().getWindow()).close();
this.setVisible(false);
createOperationController.setVisible(true);
+ reset();
} catch (InvalidVehicleException e) {
- // NOT THROWN ANYWHERE RIGHT NOW
LOG.info(
"Caught InvalidVehicleException. Showing it to user. Error message: {}",
e.getClass().toString(),
@@ -194,7 +262,6 @@ public class RegistrationWindowController {
alert.setHeaderText("Das spezifizierte Fahrzeug ist nicht gültig.");
alert.setContentText(e.getMessage());
alert.show();
- chosenEmployees.clear();
} catch (ServiceException e) {
LOG.warn(
"Caught ServiceException while getting vehicles. Showing it to user. Error message: {}",
@@ -204,7 +271,6 @@ public class RegistrationWindowController {
alert.setHeaderText("Beim Erstellen der Anmeldung ist ein Fehler aufgetreten.");
alert.setContentText(e.getMessage());
alert.show();
- chosenEmployees.clear();
} catch (InvalidRegistrationException e) {
LOG.info(
"Caught InvalidRegistrationException. Showing it to user. Error message: {}",
@@ -215,11 +281,18 @@ public class RegistrationWindowController {
"Die gewählte Kombination von Fahrzeug und Personal ist nicht gültig!");
alert.setContentText(e.getMessage());
alert.show();
- chosenEmployees.clear();
}
}
public void setVisible(boolean b) {
- this.registrationWindowVB.setVisible(b);
+ root.setVisible(b);
+ }
+
+ public void tfVehicleSearch_TextChanged(KeyEvent keyEvent) {
+ updateVehList();
+ }
+
+ public void tfEmployeeSearch_TextChanged(KeyEvent keyEvent) {
+ updateEmplList();
}
}