diff options
Diffstat (limited to 'src/main')
-rw-r--r-- | src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/CreateCarController.java | 143 |
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(); + } + } } |