diff --git a/src/main/java/controllers/AddRouteController.java b/src/main/java/controllers/AddRouteController.java new file mode 100644 index 0000000..04fd255 --- /dev/null +++ b/src/main/java/controllers/AddRouteController.java @@ -0,0 +1,77 @@ +package controllers; + +import javafx.collections.FXCollections; +import javafx.collections.ObservableList; +import javafx.fxml.FXML; +import javafx.scene.control.*; +import model.*; + +import java.net.URL; +import java.util.Optional; +import java.util.ResourceBundle; + +/** + * Created by Gondr on 5/04/2017. + */ +public class AddRouteController extends Controller{ + + @FXML + ListView stopsList; + @FXML + ListView routeList; + @FXML + TextField routeName; + ObservableList stops; + ObservableList routeStops; + + public void addStop(){ + ObservableList selected = FXCollections.observableArrayList(stopsList.getSelectionModel().getSelectedItems()); + if(selected.size() > 0){ + for (Stop stop: selected){ + stops.remove(stop); + routeStops.add(stop); + } + } + } + + public void removeStop(){ + ObservableList selected = FXCollections.observableArrayList(routeList.getSelectionModel().getSelectedItems()); + if(selected.size() > 0){ + for (Stop stop: selected){ + stops.add(stop); + routeStops.remove(stop); + } + } + } + + public void addRoute() throws Exception { + Route route = new Route(routeName.getText(), routeStops); + if (parent.getSession().getDataManager().addRoute(route)){ + //alert + Optional result = popUp(Alert.AlertType.CONFIRMATION, "Success!", "Route has been added.", "Would you like to add another route?", ButtonSets.YesNo); + if (result.get() == ButtonTypes.No){ + changeScene(SceneCode.MY_ROUTES); + } else{ + stops = FXCollections.observableArrayList(parent.getSession().getDataManager().getStops()); + routeStops = FXCollections.observableArrayList(); + } + } else { + popUp(Alert.AlertType.WARNING, "Warning!", "Duplicate Route", "You may have a route with the same name or same stops."); + } + } + + @Override + public void runLater(){ + stops = FXCollections.observableArrayList(parent.getSession().getDataManager().getStops()); + routeStops = FXCollections.observableArrayList(); + stopsList.setItems(stops); + routeList.setItems(routeStops); + stopsList.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE); + routeList.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE); + } + + @Override + public void initialize(URL location, ResourceBundle resources) { + + } +} diff --git a/src/main/java/controllers/BaseController.java b/src/main/java/controllers/BaseController.java index fb1ecf1..c6dc61f 100644 --- a/src/main/java/controllers/BaseController.java +++ b/src/main/java/controllers/BaseController.java @@ -37,6 +37,14 @@ public class BaseController extends Controller { changeScene(SceneCode.MY_STOPS); } + public void addRoute() throws Exception{ + changeScene(SceneCode.ADD_ROUTE); + } + + public void myRoutes() throws Exception{ + changeScene(SceneCode.MY_ROUTES); + } + public void setContent(Parent parent1){ //remove all children that do not belong to the original fxml while (base.getChildren().size() > childNum) { diff --git a/src/main/java/controllers/MyRoutesController.java b/src/main/java/controllers/MyRoutesController.java new file mode 100644 index 0000000..81eb070 --- /dev/null +++ b/src/main/java/controllers/MyRoutesController.java @@ -0,0 +1,41 @@ +package controllers; + +import javafx.beans.value.ChangeListener; +import javafx.beans.value.ObservableValue; +import javafx.collections.FXCollections; +import javafx.fxml.FXML; +import javafx.scene.control.ListView; +import model.Route; +import model.Stop; + +import java.net.URL; +import java.util.ResourceBundle; + +/** + * Created by Gondr on 5/04/2017. + */ +public class MyRoutesController extends Controller { + + @FXML + ListView routesList; + @FXML + ListView stopsList; + + + + @Override + public void runLater(){ + routesList.setItems(parent.getSession().getDataManager().getRoutes()); + routesList.getSelectionModel().selectedItemProperty().addListener(new ChangeListener(){ + @Override + public void changed(ObservableValue observable, Route oldValue, Route newValue) { + stopsList.setItems(FXCollections.observableArrayList(newValue.getStops())); + } + }); + } + + @Override + public void initialize(URL location, ResourceBundle resources) { + + } +} diff --git a/src/main/java/model/DataManager.java b/src/main/java/model/DataManager.java index ad72276..07b1540 100644 --- a/src/main/java/model/DataManager.java +++ b/src/main/java/model/DataManager.java @@ -13,10 +13,12 @@ import java.util.ArrayList; public class DataManager { private ObservableList rides; private ObservableList stops; + private ObservableList routes; public DataManager(){ rides = FXCollections.observableArrayList(); stops = FXCollections.observableArrayList(); + routes = FXCollections.observableArrayList(); } public ObservableList getRides() { @@ -49,4 +51,18 @@ public class DataManager { return true; } + public ObservableList getRoutes() { + return routes; + } + + public boolean addRoute(Route route){ + for (Route r: routes){ + if (route.equals(r)){ + return false; + } + } + routes.add(route); + return true; + } + } diff --git a/src/main/java/model/Route.java b/src/main/java/model/Route.java new file mode 100644 index 0000000..4aa4d09 --- /dev/null +++ b/src/main/java/model/Route.java @@ -0,0 +1,41 @@ +package model; + +import javafx.collections.FXCollections; +import javafx.collections.ObservableList; + +/** + * Created by Gondr on 5/04/2017. + */ +public class Route { + + private String name; + private ObservableList stops; + + public Route(String name, ObservableList stops){ + this.name = name; + this.stops = FXCollections.observableArrayList(stops); + } + + public String getName() { + return name; + } + + public ObservableList getStops() { + return stops; + } + + public boolean equals(Route route){ + if (this.name != route.getName()){ + if (this.getStops().equals(route.getStops())){ + //if the yhave a equivalent route somewhere. + return true; + } + return false; + } + return true; + } + + public String toString(){ + return this.name; + } +} diff --git a/src/main/java/model/SceneCode.java b/src/main/java/model/SceneCode.java index 6b29e21..ff40a7d 100644 --- a/src/main/java/model/SceneCode.java +++ b/src/main/java/model/SceneCode.java @@ -14,7 +14,8 @@ public enum SceneCode { //screens before log in MAIN("main", false), BASE("base", false), //screens after login - HOME("home"),ADD_RIDE("addride"),MY_RIDES("myrides"), ADD_STOPS("addstops"), MY_STOPS("mystops"); + HOME("home"),ADD_RIDE("addride"),MY_RIDES("myrides"), ADD_STOPS("addstops"), MY_STOPS("mystops"), ADD_ROUTE("addroute"), + MY_ROUTES("myroutes"); private String path; private boolean loadMenu; diff --git a/src/main/resources/scenes/addroute.fxml b/src/main/resources/scenes/addroute.fxml new file mode 100644 index 0000000..53effae --- /dev/null +++ b/src/main/resources/scenes/addroute.fxml @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +