You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
165 lines
5.6 KiB
165 lines
5.6 KiB
package controllers;
|
|
|
|
import javafx.beans.property.ReadOnlyStringWrapper;
|
|
import javafx.beans.property.StringProperty;
|
|
import javafx.beans.value.ChangeListener;
|
|
import javafx.beans.value.ObservableValue;
|
|
import javafx.collections.FXCollections;
|
|
import javafx.collections.ObservableList;
|
|
import javafx.event.EventHandler;
|
|
import javafx.fxml.FXML;
|
|
import javafx.scene.control.*;
|
|
import javafx.scene.control.TableColumn.CellEditEvent;
|
|
import javafx.scene.control.cell.PropertyValueFactory;
|
|
import javafx.scene.control.cell.TextFieldTableCell;
|
|
import javafx.util.Callback;
|
|
import model.*;
|
|
|
|
import java.net.URL;
|
|
import java.util.Optional;
|
|
import java.util.ResourceBundle;
|
|
|
|
/**
|
|
* Created by Gondr on 5/04/2017.
|
|
*/
|
|
public class AddTripController extends Controller{
|
|
|
|
@FXML
|
|
private ComboBox<Route> routeDropdown;
|
|
@FXML
|
|
private ComboBox<Ride> ride;
|
|
@FXML
|
|
private ComboBox<String> direction;
|
|
@FXML
|
|
private TableView<TripStop> routeTable;
|
|
@FXML
|
|
private TableColumn<TripStop, String> stopName;
|
|
@FXML
|
|
private TableColumn<TripStop, String> stopTime;
|
|
@FXML
|
|
private CheckBox mon;
|
|
@FXML
|
|
private CheckBox tues;
|
|
@FXML
|
|
private CheckBox wed;
|
|
@FXML
|
|
private CheckBox thur;
|
|
@FXML
|
|
private CheckBox fri;
|
|
@FXML
|
|
private CheckBox sat;
|
|
@FXML
|
|
private CheckBox sun;
|
|
@FXML
|
|
private ComboBox<String> reoccur;
|
|
@FXML
|
|
private DatePicker endDate;
|
|
@FXML
|
|
private TextField tripName;
|
|
|
|
ObservableList<TripStop> stops;
|
|
|
|
@FXML
|
|
private void addTrip() throws Exception {
|
|
boolean[] days = {mon.isSelected(), tues.isSelected(), wed.isSelected(), thur.isSelected(), fri.isSelected(),
|
|
sat.isSelected(), sun.isSelected()};
|
|
boolean boolReoccur = reoccur.getValue() == "Yes";
|
|
String failure = "";
|
|
boolean fail = false;
|
|
if (stops.size() == 0){
|
|
failure += "You have not selected a route.\n";
|
|
fail = true;
|
|
}
|
|
if (ride.getValue() == null){
|
|
failure += "You must select a ride (vehicle) for this trip.\n";
|
|
fail = true;
|
|
}
|
|
if (tripName.getText() == null || tripName.getText() == ""){
|
|
failure += "You must name this Trip.\n";
|
|
fail = true;
|
|
}
|
|
|
|
for (TripStop stop: stops){
|
|
if (stop.getTime().equals("")){
|
|
failure += "You must have all times for stops filled out.\n";
|
|
fail = true;
|
|
break;
|
|
}
|
|
}
|
|
|
|
if (!fail) {
|
|
String date = "";
|
|
if (endDate.getValue() != null && boolReoccur == true){
|
|
date = endDate.getValue().toString();
|
|
}
|
|
Trip trip = new Trip(tripName.getText() ,stops, direction.getValue(), ride.getValue(), days, boolReoccur, date);
|
|
System.out.println(trip);
|
|
Optional<ButtonType> result = popUp(Alert.AlertType.WARNING, "Warning!", "Crucial Information missing", failure, ButtonSets.YesNo);
|
|
parent.getSession().getDataManager().addTrip(trip);
|
|
if (result.get() == ButtonTypes.No){
|
|
System.out.println("My Trips page to show up and impletmeneted");//TODO implement here.
|
|
//changeScene(SceneCode.MY_TRIPS);
|
|
} else{
|
|
changeScene(SceneCode.ADD_TRIP);
|
|
}
|
|
}else{
|
|
popUp(Alert.AlertType.WARNING, "Warning!", "Crucial Information missing", failure);
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public void runLater(){
|
|
routeDropdown.setItems(parent.getSession().getDataManager().getRoutes());
|
|
ride.setItems(parent.getSession().getDataManager().getRides());
|
|
stopName.setCellValueFactory(p -> p.getValue().nameProperty());
|
|
stopTime.setCellFactory(TextFieldTableCell.forTableColumn());
|
|
stopTime.setOnEditCommit(
|
|
new EventHandler<CellEditEvent<TripStop, String>>() {
|
|
@Override
|
|
public void handle(CellEditEvent<TripStop, String> t) {
|
|
((TripStop) t.getTableView().getItems().get(
|
|
t.getTablePosition().getRow())
|
|
).setTime(t.getNewValue());
|
|
}
|
|
}
|
|
);
|
|
routeDropdown.valueProperty().addListener(new ChangeListener<Route>() {
|
|
@Override
|
|
public void changed(ObservableValue<? extends Route> observable, Route oldValue, Route newValue) {
|
|
for (Stop stop: newValue.getStops()){
|
|
stops.add(new TripStop(stop.getAddress(), ""));
|
|
}
|
|
routeTable.setItems(stops);
|
|
}
|
|
});
|
|
}
|
|
|
|
@Override
|
|
public void initialize(URL location, ResourceBundle resources) {
|
|
String[] reoccurence = {"Yes","No"};
|
|
ObservableList<String> reoccurs = FXCollections.observableArrayList(reoccurence);
|
|
reoccur.setItems(reoccurs);
|
|
reoccur.getSelectionModel().select(1);
|
|
reoccur.valueProperty().addListener((observable, oldValue, newValue) -> {
|
|
if (newValue == "Yes"){
|
|
endDate.setDisable(false);
|
|
}else{
|
|
endDate.setDisable(true);
|
|
}
|
|
});
|
|
|
|
String[] dir = {"University","Home"};
|
|
ObservableList<String> dirArr = FXCollections.observableArrayList(dir);
|
|
direction.setItems(dirArr);
|
|
direction.getSelectionModel().selectFirst();
|
|
|
|
stops = FXCollections.observableArrayList();
|
|
|
|
routeTable.setEditable(true);
|
|
stopName.setEditable(false);
|
|
stopTime.setEditable(true);
|
|
|
|
endDate.setDisable(true);
|
|
}
|
|
}
|