aboutsummaryrefslogtreecommitdiffstats
path: root/src/main
diff options
context:
space:
mode:
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/CreateCarController.java143
1 files changed, 86 insertions, 57 deletions
diff --git a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/CreateCarController.java b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/CreateCarController.java
index bc6b0bc..141661d 100644
--- a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/CreateCarController.java
+++ b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/CreateCarController.java
@@ -5,15 +5,20 @@ import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Vehicle.Con
import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Vehicle.Status;
import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Vehicle.VehicleType;
import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.service.VehicleService;
+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 java.io.IOException;
import java.lang.invoke.MethodHandles;
import java.util.EnumSet;
+import java.util.EventListener;
+import java.util.LinkedList;
import java.util.Set;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import javafx.collections.FXCollections;
import javafx.event.ActionEvent;
+import javafx.event.Event;
import javafx.fxml.FXML;
import javafx.geometry.HPos;
import javafx.geometry.Orientation;
@@ -23,6 +28,7 @@ import javafx.scene.control.Button;
import javafx.scene.control.ButtonType;
import javafx.scene.control.CheckBox;
import javafx.scene.control.ChoiceBox;
+import javafx.scene.input.MouseButton;
import javafx.scene.layout.AnchorPane;
import javafx.scene.layout.FlowPane;
import javafx.stage.Stage;
@@ -34,12 +40,12 @@ import org.springframework.stereotype.Controller;
public class CreateCarController {
@FXML private AnchorPane createCarAP;
- @FXML private ChoiceBox<String> cmb_Ctyp;
- @FXML private ChoiceBox<String> cmb_typ;
- @FXML private Button btn_cancel;
- @FXML private Button btn_create;
- @FXML private CheckBox cbx_NEF;
- @FXML private FlowPane fp_vehicleList;
+ @FXML private ChoiceBox<String> cmbCtype;
+ @FXML private ChoiceBox<String> cmbTyp;
+
+ @FXML private Button btnCreate;
+ @FXML private CheckBox cbxNEF;
+ @FXML private FlowPane fpVehicleList;
private final CreateOperationController createOperationController;
private static final Logger LOG = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
@@ -47,6 +53,8 @@ public class CreateCarController {
private boolean update = false;
private long vid = -1;
+ private Vehicle chooseVehicle;
+
public CreateCarController(
CreateOperationController createOperationController, VehicleService vehicleService) {
this.createOperationController = createOperationController;
@@ -55,7 +63,7 @@ public class CreateCarController {
@FXML
private void initialize() {
- cmb_Ctyp.setItems(
+ cmbCtype.setItems(
FXCollections.observableArrayList(
Stream.of(
ConstructionType.NORMAL,
@@ -63,8 +71,8 @@ public class CreateCarController {
ConstructionType.HOCHDACH)
.map(Enum::toString)
.collect(Collectors.toList())));
- cmb_Ctyp.setValue(ConstructionType.NORMAL.toString());
- cmb_typ.setItems(
+ cmbCtype.setValue(ConstructionType.NORMAL.toString());
+ cmbTyp.setItems(
FXCollections.observableArrayList(
Stream.of(
VehicleType.BKTW,
@@ -75,13 +83,10 @@ public class CreateCarController {
VehicleType.NAH)
.map(Enum::toString)
.collect(Collectors.toList())));
- cmb_typ.setValue(VehicleType.BKTW.toString());
- vehicleListFP();
- }
+ cmbTyp.setValue(VehicleType.BKTW.toString());
+ // vehicleListFP();
- @FXML
- private void onCancelClicked() {
- ((Stage) btn_cancel.getScene().getWindow()).close();
+ updateVehiclePane();
}
@FXML
@@ -94,7 +99,7 @@ public class CreateCarController {
.type(parseType())
.name("")
.status(Status.ABGEMELDET)
- .hasNef(cbx_NEF.isSelected())
+ .hasNef(cbxNEF.isSelected())
.build();
try {
vehicleService.add(vehicle);
@@ -123,10 +128,11 @@ public class CreateCarController {
.type(parseType())
.name("")
.status(Status.ABGEMELDET)
- .hasNef(cbx_NEF.isSelected())
+ .hasNef(cbxNEF.isSelected())
.build();
vehicleService.update(vehicle);
setToStart();
+ chooseVehicle=null;
} catch (InvalidVehicleException e) {
// TODO: Validation-Errors should be logged with log level debug only (like here)
LOG.debug("Invalid Vehicle: {}", e);
@@ -144,21 +150,22 @@ public class CreateCarController {
"Bearbiten Erfolgreich",
"Auto wurde erfolgreich bearbeitet");
}
- vehicleListFP();
+
+ updateVehiclePane();
}
private ConstructionType parseConstructionType() {
- if (cmb_Ctyp.getSelectionModel().getSelectedItem() == null) {
+ if (cmbCtype.getSelectionModel().getSelectedItem() == null) {
return ConstructionType.NORMAL;
}
- return ConstructionType.valueOf(cmb_Ctyp.getSelectionModel().getSelectedItem().toString());
+ return ConstructionType.valueOf(cmbCtype.getSelectionModel().getSelectedItem().toString());
}
private VehicleType parseType() {
- if (cmb_typ.getSelectionModel().getSelectedItem() == null) {
+ if (cmbTyp.getSelectionModel().getSelectedItem() == null) {
return VehicleType.BKTW;
}
- return VehicleType.valueOf(cmb_typ.getSelectionModel().getSelectedItem().toString());
+ return VehicleType.valueOf(cmbTyp.getSelectionModel().getSelectedItem().toString());
}
private void createComplete(AlertType alertType, String headerText, String contentText) {
@@ -167,55 +174,77 @@ public class CreateCarController {
alert.showAndWait();
}
- private void vehicleListFP() {
- Set<Vehicle> vehicleList = null;
- fp_vehicleList.getChildren().clear();
- try {
- vehicleList = vehicleService.list(EnumSet.range(Status.ABGEMELDET, Status.FREI_FUNK));
- } catch (ServiceException e) {
- e.printStackTrace();
- }
-
- fp_vehicleList.setOrientation(Orientation.HORIZONTAL);
- fp_vehicleList.setColumnHalignment(HPos.LEFT); // align labels on left
- fp_vehicleList.setPrefWrapLength(200); // preferred height = 200
-
- for (Vehicle v : vehicleList) {
- Button b = new Button(v.name());
- b.setOnAction(event -> updateVehicle(v));
- fp_vehicleList.getChildren().add(b);
- }
- fp_vehicleList.setVisible(true);
- }
private void setToStart() {
- btn_create.setText("Erstellen");
- cbx_NEF.setSelected(false);
- cmb_typ.setValue(VehicleType.BKTW.name());
- cmb_Ctyp.setValue(ConstructionType.NORMAL.name());
+ btnCreate.setText("Erstellen");
+ cbxNEF.setSelected(false);
+ cmbTyp.setValue(VehicleType.BKTW.name());
+ cmbCtype.setValue(ConstructionType.NORMAL.name());
update = false;
}
private void updateVehicle(Vehicle vehicle) {
- cmb_Ctyp.setValue(vehicle.constructionType().name());
- cmb_typ.setValue(vehicle.type().name());
- cbx_NEF.setSelected(vehicle.hasNef());
- btn_create.setText("Speichern");
+
+ cmbCtype.setValue(vehicle.constructionType().name());
+ cmbTyp.setValue(vehicle.type().name());
+ cbxNEF.setSelected(vehicle.hasNef());
+ btnCreate.setText("Speichern");
vid = vehicle.id();
update = true;
- }
-
- @FXML
- public void cancelAction(ActionEvent actionEvent) {
- setToStart();
+ chooseVehicle = vehicle;
}
public void setVisible(boolean b) {
createCarAP.setVisible(b);
}
-
- public void backToMain() {
+ @FXML
+ private void backToMain() {
this.setVisible(false);
createOperationController.setVisible(true);
}
+
+ private void updateVehiclePane() {
+ try {
+ fpVehicleList.getChildren().clear();
+
+ Set<Vehicle> vehicles;
+
+ vehicles = vehicleService.list(EnumSet.of(Status.ABGEMELDET));
+
+ for (Vehicle vehicle : vehicles) {
+ VehiclePaneController controller = VehiclePaneController.createVehiclePane();
+
+ controller.setData(vehicle, false);
+ controller
+ .getRootElement()
+ .setOnMouseClicked(
+ event -> {
+ if (event.getButton().equals(MouseButton.PRIMARY)) {
+ if (chooseVehicle == null || vehicle == chooseVehicle) {
+ if (update == false) {
+ chooseVehicle = vehicle;
+ updateVehicle(vehicle);
+ controller.setSelected(true);
+ } else {
+ setToStart();
+ controller.setSelected(false);
+
+ chooseVehicle = null;
+ }
+ }
+ }
+ });
+
+ fpVehicleList.getChildren().add(controller.getRootElement());
+ }
+ } catch (ServiceException | IOException e) {
+ LOG.error("Error while updating list.", e);
+
+ Alert alert = new Alert(AlertType.ERROR);
+ alert.setTitle("Fehler");
+ alert.setHeaderText("Fehler!");
+ alert.setContentText(e.getMessage());
+ alert.showAndWait();
+ }
+ }
}