diff --git a/src/main/java/controllers/AddStopsController.java b/src/main/java/controllers/AddStopsController.java new file mode 100644 index 0000000..78126b8 --- /dev/null +++ b/src/main/java/controllers/AddStopsController.java @@ -0,0 +1,42 @@ +package controllers; + +import javafx.fxml.FXML; +import javafx.scene.control.Alert; +import javafx.scene.control.ButtonType; +import javafx.scene.control.TextField; +import model.ButtonSets; +import model.ButtonTypes; +import model.SceneCode; +import model.Stop; + +import java.net.URL; +import java.util.Optional; +import java.util.ResourceBundle; + +/** + * Created by Gondr on 5/04/2017. + */ +public class AddStopsController extends Controller{ + + @FXML + TextField stopAddress; + + public void addStop() throws Exception { + Stop stop = new Stop(stopAddress.getText()); + if(parent.getSession().getDataManager().addStop(stop) == true){ + Optional result = popUp(Alert.AlertType.CONFIRMATION, "Success!", "Stop has been successfully added.", "Would you like to add another stop?", ButtonSets.YesNo); + if (result.get() == ButtonTypes.No){ + changeScene(SceneCode.MY_STOPS); + } else{ + stopAddress.setText(""); + } + }else{ + popUp(Alert.AlertType.WARNING, "Warning!", "Duplicate Entry", "You cannot add a duplicate stop."); + } + } + + @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 8859385..fb1ecf1 100644 --- a/src/main/java/controllers/BaseController.java +++ b/src/main/java/controllers/BaseController.java @@ -19,7 +19,7 @@ public class BaseController extends Controller { @FXML Label loggedInAs; - private final int childNum = 3;//number of children before appending + private int childNum = 0;//number of children before appending public void addRide() throws Exception { changeScene(SceneCode.ADD_RIDE); @@ -29,6 +29,14 @@ public class BaseController extends Controller { changeScene(SceneCode.MY_RIDES); } + public void addStops() throws Exception { + changeScene(SceneCode.ADD_STOPS); + } + + public void myStops() throws Exception{ + changeScene(SceneCode.MY_STOPS); + } + public void setContent(Parent parent1){ //remove all children that do not belong to the original fxml while (base.getChildren().size() > childNum) { @@ -44,5 +52,6 @@ public class BaseController extends Controller { @Override public void initialize(URL location, ResourceBundle resources) { + childNum = base.getChildren().size(); } } diff --git a/src/main/java/controllers/Controller.java b/src/main/java/controllers/Controller.java index 99daa37..e4f9a16 100644 --- a/src/main/java/controllers/Controller.java +++ b/src/main/java/controllers/Controller.java @@ -2,16 +2,11 @@ package controllers; import javafx.fxml.Initializable; -import javafx.scene.Scene; import javafx.scene.control.Alert; -import javafx.scene.layout.VBox; -import javafx.scene.text.Text; -import javafx.stage.Modality; -import javafx.stage.Stage; +import javafx.scene.control.ButtonType; import model.SceneCode; -import java.net.URL; -import java.util.ResourceBundle; +import java.util.Optional; /** * Created by Gondr on 4/04/2017. @@ -36,12 +31,24 @@ public abstract class Controller implements Initializable { } - public void popUp(Alert.AlertType alertType, String title, String header, String content){ + public Optional popUp(Alert.AlertType alertType, String title, String header, String content, ButtonType[] buttons){ Alert alert = new Alert(alertType); alert.setTitle(title); alert.setHeaderText(header); alert.setContentText(content); - alert.showAndWait(); + alert.getButtonTypes().remove(0, alert.getButtonTypes().size()); // remove all buttons + for (int i = 0; i < buttons.length; i ++){ + alert.getButtonTypes().add(buttons[i]); + } + return alert.showAndWait(); + } + + public Optional popUp(Alert.AlertType alertType, String title, String header, String content){ + Alert alert = new Alert(alertType); + alert.setTitle(title); + alert.setHeaderText(header); + alert.setContentText(content); + return alert.showAndWait(); } } diff --git a/src/main/java/controllers/MyStopsController.java b/src/main/java/controllers/MyStopsController.java new file mode 100644 index 0000000..65c6869 --- /dev/null +++ b/src/main/java/controllers/MyStopsController.java @@ -0,0 +1,27 @@ +package controllers; + +import javafx.fxml.FXML; +import javafx.scene.control.ListView; +import model.Stop; + +import java.net.URL; +import java.util.ResourceBundle; + +/** + * Created by Gondr on 5/04/2017. + */ +public class MyStopsController extends Controller{ + + @FXML + ListView stopsList; + + @Override + public void runLater(){ + stopsList.setItems(parent.getSession().getDataManager().getStops()); + } + + @Override + public void initialize(URL location, ResourceBundle resources) { + + } +} diff --git a/src/main/java/model/ButtonSets.java b/src/main/java/model/ButtonSets.java new file mode 100644 index 0000000..9fad06c --- /dev/null +++ b/src/main/java/model/ButtonSets.java @@ -0,0 +1,13 @@ +package model; + +import javafx.scene.control.ButtonBar; +import javafx.scene.control.ButtonType; + +/** + * Created by Gondr on 5/04/2017. + */ +public class ButtonSets { + + public static ButtonType[] YesNo = {ButtonTypes.Yes, ButtonTypes.No}; + +} diff --git a/src/main/java/model/ButtonTypes.java b/src/main/java/model/ButtonTypes.java new file mode 100644 index 0000000..3c2a5bf --- /dev/null +++ b/src/main/java/model/ButtonTypes.java @@ -0,0 +1,12 @@ +package model; + +import javafx.scene.control.ButtonBar; +import javafx.scene.control.ButtonType; + +/** + * Created by Gondr on 5/04/2017. + */ +public class ButtonTypes { + public static ButtonType Yes = new ButtonType("Yes", ButtonBar.ButtonData.OK_DONE); + public static ButtonType No = new ButtonType("No", ButtonBar.ButtonData.CANCEL_CLOSE); +} diff --git a/src/main/java/model/DataManager.java b/src/main/java/model/DataManager.java index addba08..ad72276 100644 --- a/src/main/java/model/DataManager.java +++ b/src/main/java/model/DataManager.java @@ -12,9 +12,11 @@ import java.util.ArrayList; */ public class DataManager { private ObservableList rides; + private ObservableList stops; public DataManager(){ rides = FXCollections.observableArrayList(); + stops = FXCollections.observableArrayList(); } public ObservableList getRides() { @@ -32,4 +34,19 @@ public class DataManager { public void removeRide(int i){ rides.remove(i); } + + public ObservableList getStops() { + return stops; + } + + public boolean addStop(Stop stop){ + for (int i = 0; i < stops.size(); i++){ + if (stop.equals(stops.get(i))){ + return false; + } + } + stops.add(stop); + return true; + } + } diff --git a/src/main/java/model/SceneCode.java b/src/main/java/model/SceneCode.java index 392bb51..6b29e21 100644 --- a/src/main/java/model/SceneCode.java +++ b/src/main/java/model/SceneCode.java @@ -14,7 +14,7 @@ public enum SceneCode { //screens before log in MAIN("main", false), BASE("base", false), //screens after login - HOME("home"),ADD_RIDE("addride"),MY_RIDES("myrides"); + HOME("home"),ADD_RIDE("addride"),MY_RIDES("myrides"), ADD_STOPS("addstops"), MY_STOPS("mystops"); private String path; private boolean loadMenu; diff --git a/src/main/java/model/Stop.java b/src/main/java/model/Stop.java new file mode 100644 index 0000000..6f947b3 --- /dev/null +++ b/src/main/java/model/Stop.java @@ -0,0 +1,33 @@ +package model; + +/** + * Created by Gondr on 5/04/2017. + */ +public class Stop { + + private String address; + + public Stop(String address){ + this.address = address; + } + + public String getAddress() { + return address; + } + + public void setAddress(String address) { + this.address = address; + } + + public boolean equals(Stop stop){ + if (stop.getAddress().equals(this.address)){ + return true; + } else{ + return false; + } + } + + public String toString(){ + return address; + } +} diff --git a/src/main/resources/scenes/addstops.fxml b/src/main/resources/scenes/addstops.fxml new file mode 100644 index 0000000..6f311e2 --- /dev/null +++ b/src/main/resources/scenes/addstops.fxml @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + +