diff options
| author | Martin Weick <e1627760@student.tuwien.ac.at> | 2018-06-05 12:29:25 +0200 | 
|---|---|---|
| committer | Tharre <tharre3@gmail.com> | 2018-06-14 15:56:55 +0200 | 
| commit | 212651960f181afe277817f6ea9204c7576416d6 (patch) | |
| tree | 9e8f6cdd6bc609268a34cdd47503811b7a1673bb /src/main | |
| parent | ccf8e2391ab6579a70bc4eae209ff2a0c670965d (diff) | |
| download | sepm-groupproject-212651960f181afe277817f6ea9204c7576416d6.tar.gz sepm-groupproject-212651960f181afe277817f6ea9204c7576416d6.tar.xz sepm-groupproject-212651960f181afe277817f6ea9204c7576416d6.zip  | |
implement vehicle pane for detail view of vehicles #27301
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(); +        } +    }  }  | 
