summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndreas Weninger <e01526989@student.tuwien.ac.at>2018-05-16 14:51:31 +0200
committerTharre <tharre3@gmail.com>2018-05-21 16:10:15 +0200
commitb01c84cc72fa21ba5c5e59ec65faa09c828139ba (patch)
tree7324a60ee88d38f0809def31f43fcd5bc20cf631
parentfa6ac1c592c22ac688123fabed062879881dc843 (diff)
downloadsepm-groupproject-b01c84cc72fa21ba5c5e59ec65faa09c828139ba.tar.gz
sepm-groupproject-b01c84cc72fa21ba5c5e59ec65faa09c828139ba.tar.xz
sepm-groupproject-b01c84cc72fa21ba5c5e59ec65faa09c828139ba.zip
[#25958] Apply code formatting. Context Menu Label now bold and black while highlighted. Annotate stuff.
-rw-r--r--src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/DBOperationDAO.java2
-rw-r--r--src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/OperationServiceImpl.java2
-rw-r--r--src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/userInterface/CreateOperationController.java132
-rw-r--r--src/main/resources/styles/main.css21
4 files changed, 100 insertions, 57 deletions
diff --git a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/DBOperationDAO.java b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/DBOperationDAO.java
index 1423240..476f968 100644
--- a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/DBOperationDAO.java
+++ b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dao/DBOperationDAO.java
@@ -11,7 +11,9 @@ import java.sql.SQLException;
import java.sql.Timestamp;
import java.util.EnumSet;
import java.util.Set;
+import org.springframework.stereotype.Repository;
+@Repository
public class DBOperationDAO implements OperationDAO {
private JDBCConnectionManager jdbcConnectionManager;
diff --git a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/OperationServiceImpl.java b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/OperationServiceImpl.java
index 7b69886..a6be111 100644
--- a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/OperationServiceImpl.java
+++ b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/service/OperationServiceImpl.java
@@ -12,7 +12,9 @@ import at.ac.tuwien.sepm.assignment.groupphase.exception.ServiceException;
import java.util.EnumSet;
import java.util.Set;
import java.util.SortedSet;
+import org.springframework.stereotype.Service;
+@Service
public class OperationServiceImpl implements OperationService {
// TODO: anders?
diff --git a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/userInterface/CreateOperationController.java b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/userInterface/CreateOperationController.java
index 58874da..446ca50 100644
--- a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/userInterface/CreateOperationController.java
+++ b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/userInterface/CreateOperationController.java
@@ -1,30 +1,25 @@
package at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.userInterface;
-import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dao.DBOperationDAO;
-import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Employee;
-import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Employee.EducationLevel;
import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Operation;
import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Operation.Severity;
import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Operation.Status;
import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Registration;
import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Vehicle;
-import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Vehicle.ConstructionType;
-import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Vehicle.VehicleType;
import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.service.OperationService;
-import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.service.OperationServiceImpl;
import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.service.VehicleService;
import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.ui.vehiclepane.VehiclePaneController;
import at.ac.tuwien.sepm.assignment.groupphase.exception.InvalidOperationException;
+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.JDBCConnectionManager;
import at.ac.tuwien.sepm.assignment.groupphase.util.SpringFXMLLoader;
import java.io.IOException;
import java.lang.invoke.MethodHandles;
import java.time.Instant;
-import java.time.LocalDate;
import java.time.temporal.ChronoUnit;
-import java.util.Arrays;
+import java.util.ArrayList;
+import java.util.EnumSet;
import java.util.LinkedList;
+import java.util.List;
import java.util.Set;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
@@ -33,14 +28,18 @@ import javafx.scene.Scene;
import javafx.scene.control.Alert;
import javafx.scene.control.Alert.AlertType;
import javafx.scene.control.Button;
+import javafx.scene.control.ContextMenu;
import javafx.scene.control.Label;
import javafx.scene.control.ListView;
+import javafx.scene.control.MenuItem;
import javafx.scene.control.TextField;
+import javafx.scene.input.MouseButton;
import javafx.scene.layout.AnchorPane;
import javafx.scene.layout.FlowPane;
import javafx.stage.Stage;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
@Controller
@@ -59,9 +58,7 @@ public class CreateOperationController {
private LinkedList<Vehicle> chosenVehicles = new LinkedList<>();
- // TODO: Anders?
- private OperationService operationService =
- new OperationServiceImpl(new DBOperationDAO(new JDBCConnectionManager()));
+ @Autowired private OperationService operationService;
private final VehicleService vehicleService;
private final SpringFXMLLoader fxmlLoader;
@@ -78,10 +75,7 @@ public class CreateOperationController {
public void updateList() {
try {
fpVehicles.getChildren().clear();
- List<Vehicle> vehicles = vehicleService.list();
-
- // TODO Remove debug
- vehicles = testData();
+ Set<Vehicle> vehicles = vehicleService.list(EnumSet.allOf(Vehicle.Status.class));
for (Vehicle vehicle : vehicles) {
VehiclePaneController controller = VehiclePaneController.createVehiclePane();
@@ -91,7 +85,13 @@ public class CreateOperationController {
.getRootElement()
.setOnMouseClicked(
event -> {
- if (event.getClickCount() == 2) {
+ if (event.getButton().equals(MouseButton.SECONDARY)) {
+ createContextMenu(vehicle, vehicleService)
+ .show(
+ controller.getRootElement(),
+ event.getScreenX(),
+ event.getScreenY());
+ } else {
if (chosenVehicles.contains(vehicle)) {
chosenVehicles.remove(vehicle);
controller.setSelected(false);
@@ -130,46 +130,68 @@ public class CreateOperationController {
}
}
- private LinkedList<Vehicle> testData() {
- Employee empl =
- Employee.builder()
- .birthday(LocalDate.MIN)
- .isDriver(true)
- .isPilot(true)
- .educationLevel(EducationLevel.NKV)
- .name("Hans Test")
- .build();
- Registration reg =
- Registration.builder()
- .employee(empl)
- .start(Instant.now().minus(1, ChronoUnit.HOURS))
- .end(Instant.now().plus(1, ChronoUnit.HOURS))
- .build();
+ private static ContextMenu createContextMenu(Vehicle data, VehicleService vehicleService) {
+ ContextMenu menu = new ContextMenu();
- Vehicle vehicle =
- Vehicle.builder()
- .name("Test-KTW")
- .constructionType(ConstructionType.HOCHDACH)
- .type(VehicleType.KTW)
- .status(Vehicle.Status.FREI_WACHE)
- .hasNef(false)
- .registrations(Arrays.asList(reg))
- .build();
+ for (Vehicle.Status status : Vehicle.Status.values()) {
+ if (status == Vehicle.Status.ABGEMELDET) {
+ continue;
+ }
- Vehicle vehicle1 =
- Vehicle.builder()
- .name("Test-NEF")
- .constructionType(ConstructionType.NORMAL)
- .type(VehicleType.NEF)
- .status(Vehicle.Status.FREI_FUNK)
- .hasNef(true)
- .registrations(Arrays.asList(reg))
- .build();
- LinkedList<Vehicle> list = new LinkedList<>();
- list.add(vehicle);
- list.add(vehicle1);
- // this.lvVehicles.setItems(FXCollections.observableArrayList(list));
- return list;
+ MenuItem mi = new MenuItem(status.name());
+
+ if (status == Vehicle.Status.FREI_FUNK || status == Vehicle.Status.FREI_WACHE) {
+ mi.getStyleClass().add("mi-free");
+ } else {
+ mi.getStyleClass().add("mi-other");
+ }
+
+ mi.setOnAction(
+ event -> {
+ try {
+ vehicleService.update(data.toBuilder().status(status).build());
+ } catch (InvalidVehicleException | ServiceException e) {
+ LOG.error("Error while setting status.", e);
+ Alert a = new Alert(AlertType.ERROR, e.getMessage());
+ a.show();
+ }
+ });
+
+ menu.getItems().add(mi);
+ }
+
+ MenuItem abmelden = new MenuItem("abmelden");
+
+ abmelden.setOnAction(
+ event -> {
+ try {
+ List<Registration> registrations = data.registrations();
+ assert registrations
+ != null; // Otherwise the element shouldn't be in the list.
+
+ List<Registration> newRegistrations = new ArrayList<>();
+
+ for (Registration registration : registrations) {
+ if (registration.isActive()) {
+ newRegistrations.add(
+ registration
+ .toBuilder()
+ .end(Instant.now().minus(1, ChronoUnit.SECONDS))
+ .build());
+ } else newRegistrations.add(registration);
+ }
+
+ vehicleService.update(
+ data.toBuilder().registrations(newRegistrations).build());
+ } catch (InvalidVehicleException | ServiceException e) {
+ LOG.error("Error while unregistering.", e);
+ Alert a = new Alert(AlertType.ERROR, e.getMessage());
+ a.show();
+ }
+ });
+
+ menu.getItems().add(abmelden);
+ return menu;
}
@FXML
diff --git a/src/main/resources/styles/main.css b/src/main/resources/styles/main.css
index c4af039..61634b6 100644
--- a/src/main/resources/styles/main.css
+++ b/src/main/resources/styles/main.css
@@ -27,6 +27,23 @@
-fx-font-weight: bold;
}
-.scroll-pane {
- -fx-background-color:transparent;
+.button-free-status {
+ -fx-background-color: #C5E0B4;
+}
+
+.button-other-status {
+ -fx-background-color: #F8CBAD;
+}
+
+.mi-free {
+ -fx-background-color: #C5E0B4;
+}
+
+.mi-other {
+ -fx-background-color: #F8CBAD;
+}
+
+.menu-item:focused .label {
+ -fx-text-fill: black;
+ -fx-font-weight: bold;
} \ No newline at end of file