diff options
| author | Andreas Weninger <e01526989@student.tuwien.ac.at> | 2018-05-11 16:17:42 +0200 | 
|---|---|---|
| committer | Tharre <tharre3@gmail.com> | 2018-05-21 15:48:33 +0200 | 
| commit | 166ff610e62f0671f65a6fd27d4760f0881eb6f4 (patch) | |
| tree | ddce862e7ac884d98ecc3374562b0089b00f177e /src/main/java/at/ac/tuwien/sepm | |
| parent | 8e0abdfcbc798c8ed0f85af1f641d58d341fe83a (diff) | |
| download | sepm-groupproject-166ff610e62f0671f65a6fd27d4760f0881eb6f4.tar.gz sepm-groupproject-166ff610e62f0671f65a6fd27d4760f0881eb6f4.tar.xz sepm-groupproject-166ff610e62f0671f65a6fd27d4760f0881eb6f4.zip  | |
UI Changes Main Window
Diffstat (limited to 'src/main/java/at/ac/tuwien/sepm')
3 files changed, 102 insertions, 71 deletions
diff --git a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dto/Registration.java b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dto/Registration.java index 8551266..93530bc 100644 --- a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dto/Registration.java +++ b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/dto/Registration.java @@ -2,6 +2,7 @@ package at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto;  import com.google.auto.value.AutoValue;  import java.time.Instant; +import java.util.Date;  @AutoValue  public abstract class Registration { @@ -17,6 +18,12 @@ public abstract class Registration {          return new AutoValue_Registration.Builder().id(0);      } +    public boolean isActive() { +        Instant now = (new Date()).toInstant(); + +        return start().isBefore(now) && end().isAfter(now); +    } +      @AutoValue.Builder      public abstract static class Builder {          public abstract Builder id(long id); diff --git a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/ui/vehiclepane/VehiclePaneController.java b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/ui/vehiclepane/VehiclePaneController.java index 2db6f37..29230f3 100644 --- a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/ui/vehiclepane/VehiclePaneController.java +++ b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/ui/vehiclepane/VehiclePaneController.java @@ -4,8 +4,6 @@ import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Employee.Ed  import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Registration;  import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Vehicle;  import java.io.IOException; -import java.time.Instant; -import java.util.Date;  import java.util.List;  import java.util.Optional;  import javafx.fxml.FXML; @@ -16,6 +14,7 @@ import javafx.scene.image.ImageView;  import javafx.scene.text.Text;  public class VehiclePaneController { +      @FXML private Text txtType;      @FXML private Text txtNumber;      @FXML private ImageView ivNEF; @@ -35,11 +34,16 @@ public class VehiclePaneController {      }      private Node rootElement; +    private Vehicle data;      public Node getRootElement() {          return rootElement;      } +    public Vehicle getData() { +        return data; +    } +      /**       * * Set the displayed data of this VehiclePane.       * @@ -52,23 +56,22 @@ public class VehiclePaneController {          String constrType = vehicle.constructionType().name();          txtRooftype.setText(                  constrType.substring(0, 1).toUpperCase() + constrType.substring(1).toLowerCase()); -        txtNumber.setText("" + vehicle.id()); +        txtNumber.setText("-" + vehicle.id());          if (vehicle.hasNef()) { -            ivNEF.setImage(new Image("../images/NEF.png")); +            ivNEF.setImage(new Image("images/NEF.png"));              txtNEF.setText("hat NEF-Halterung");          } else { -            ivNEF.setImage(new Image("../images/NotNEF.png")); +            ivNEF.setImage(new Image("images/NotNEF.png"));              txtNEF.setText("keine NEF-Halterung");          }          if (showQualification) { -            Instant now = (new Date()).toInstant();              List<Registration> regs = vehicle.registrations();              assert regs != null;              Optional<EducationLevel> edu =                      regs.stream() -                            .filter(reg -> reg.start().isBefore(now) && reg.end().isAfter(now)) +                            .filter(Registration::isActive)                              .map(reg -> reg.employee().educationLevel())                              .max(EducationLevel::compareTo); @@ -80,5 +83,11 @@ public class VehiclePaneController {              ivQualification.setVisible(false);              ivQualification.setManaged(false);          } + +        this.data = vehicle; +    } + +    public void setSelected(boolean selected) { +        // TODO      }  } 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 7b04efe..58874da 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,13 +1,19 @@  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.ServiceException;  import at.ac.tuwien.sepm.assignment.groupphase.util.JDBCConnectionManager; @@ -15,10 +21,11 @@ import at.ac.tuwien.sepm.assignment.groupphase.util.SpringFXMLLoader;  import java.io.IOException;  import java.lang.invoke.MethodHandles;  import java.time.Instant; -import java.util.EnumSet; +import java.time.LocalDate; +import java.time.temporal.ChronoUnit; +import java.util.Arrays;  import java.util.LinkedList;  import java.util.Set; -import javafx.collections.FXCollections;  import javafx.event.ActionEvent;  import javafx.fxml.FXML;  import javafx.scene.Parent; @@ -27,10 +34,10 @@ import javafx.scene.control.Alert;  import javafx.scene.control.Alert.AlertType;  import javafx.scene.control.Button;  import javafx.scene.control.Label; -import javafx.scene.control.ListCell;  import javafx.scene.control.ListView;  import javafx.scene.control.TextField;  import javafx.scene.layout.AnchorPane; +import javafx.scene.layout.FlowPane;  import javafx.stage.Stage;  import org.slf4j.Logger;  import org.slf4j.LoggerFactory; @@ -46,13 +53,14 @@ public class CreateOperationController {      public TextField txtAddress;      public TextField txtNote;      public Button btnCreateOperation; -    public ListView<Vehicle> lvVehicles;      public ListView lvActiveOperations;      public Label lblChosenVehicles; -    public LinkedList<Vehicle> chosenVehicles = new LinkedList<>(); +    public FlowPane fpVehicles; + +    private LinkedList<Vehicle> chosenVehicles = new LinkedList<>();      // TODO: Anders? -    OperationService operationService = +    private OperationService operationService =              new OperationServiceImpl(new DBOperationDAO(new JDBCConnectionManager()));      private final VehicleService vehicleService;      private final SpringFXMLLoader fxmlLoader; @@ -65,65 +73,55 @@ public class CreateOperationController {      @FXML      public void initialize() {          lblChosenVehicles.setText("keine ausgewählt"); -        lvVehicles.setCellFactory( -                param -> -                        new ListCell<Vehicle>() { -                            @Override -                            protected void updateItem(Vehicle item, boolean empty) { -                                super.updateItem(item, empty); - -                                if (empty || item == null || item.name() == null) { -                                    setText(null); -                                } else { -                                    setText(item.name()); -                                } -                            } -                        }); - -        lvVehicles.setOnMouseClicked( -                event -> { -                    if (event.getClickCount() == 2) { -                        boolean remove = false; -                        if (lvVehicles.getSelectionModel().getSelectedItem() == null) { -                            return; -                        } -                        for (Vehicle vehicle : chosenVehicles) { -                            if (lvVehicles.getSelectionModel().getSelectedItem().equals(vehicle)) { -                                remove = true; -                                break; -                            } -                        } -                        if (!remove) { -                            chosenVehicles.add(lvVehicles.getSelectionModel().getSelectedItem()); - -                        } else { -                            chosenVehicles.remove(lvVehicles.getSelectionModel().getSelectedItem()); -                        } -                        StringBuilder result = new StringBuilder(); -                        for (int i = 0; i < chosenVehicles.size(); i++) { -                            if (i == chosenVehicles.size() - 1) { -                                result.append(chosenVehicles.get(i).name()); -                            } else { -                                result.append(chosenVehicles.get(i).name()).append(", "); -                            } -                        } -                        if (result.toString().equals("")) { -                            lblChosenVehicles.setText("keine ausgewählt"); -                        } else { -                            lblChosenVehicles.setText(result.toString()); -                        } -                    } -                });      }      public void updateList() {          try { -            this.lvVehicles.setItems( -                    FXCollections.observableArrayList( -                            vehicleService.list( -                                    EnumSet.of( -                                            Vehicle.Status.FREI_FUNK, Vehicle.Status.FREI_WACHE)))); -        } catch (ServiceException e) { +            fpVehicles.getChildren().clear(); +            List<Vehicle> vehicles = vehicleService.list(); + +            // TODO Remove debug +            vehicles = testData(); + +            for (Vehicle vehicle : vehicles) { +                VehiclePaneController controller = VehiclePaneController.createVehiclePane(); + +                controller.setData(vehicle, true); +                controller +                        .getRootElement() +                        .setOnMouseClicked( +                                event -> { +                                    if (event.getClickCount() == 2) { +                                        if (chosenVehicles.contains(vehicle)) { +                                            chosenVehicles.remove(vehicle); +                                            controller.setSelected(false); +                                        } else { +                                            chosenVehicles.add(vehicle); +                                            controller.setSelected(true); +                                        } + +                                        StringBuilder result = new StringBuilder(); +                                        for (int i = 0; i < chosenVehicles.size(); i++) { +                                            if (i == chosenVehicles.size() - 1) { +                                                result.append(chosenVehicles.get(i).name()); +                                            } else { +                                                result.append(chosenVehicles.get(i).name()) +                                                        .append(", "); +                                            } +                                        } +                                        if (result.toString().equals("")) { +                                            lblChosenVehicles.setText("keine ausgewählt"); +                                        } else { +                                            lblChosenVehicles.setText(result.toString()); +                                        } +                                    } +                                }); + +                fpVehicles.getChildren().add(controller.getRootElement()); +            } +        } catch (ServiceException | IOException e) { +            LOG.error("Error while updating list.", e); +              Alert alert = new Alert(Alert.AlertType.ERROR);              alert.setTitle("Fehler");              alert.setHeaderText("Fehler!"); @@ -132,14 +130,30 @@ public class CreateOperationController {          }      } -    /*private LinkedList<Vehicle> mylist() { +    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(); +          Vehicle vehicle =                  Vehicle.builder()                          .name("Test-KTW")                          .constructionType(ConstructionType.HOCHDACH)                          .type(VehicleType.KTW)                          .status(Vehicle.Status.FREI_WACHE) -                        .hasNef(true) +                        .hasNef(false) +                        .registrations(Arrays.asList(reg))                          .build();          Vehicle vehicle1 = @@ -149,13 +163,14 @@ public class CreateOperationController {                          .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; -    }*/ +    }      @FXML      protected void createOperationClicked() {  | 
