package scheduler.view; import java.io.IOException; import scheduler.Main; import javafx.event.ActionEvent; import javafx.fxml.FXML; import javafx.fxml.FXMLLoader; import javafx.stage.FileChooser; import javafx.stage.Stage; import javafx.stage.StageStyle; import javafx.scene.Scene; import javafx.scene.control.Button; import javafx.scene.layout.BorderPane; public abstract class ViewScheduleController { @FXML private Button openButton; @FXML private Button saveButton; @FXML private Button ratingButton; // Reference to the main application. protected Main mainApp; @FXML private void handleOpenAction(ActionEvent e) { FileChooser chooser = new FileChooser(); FileChooser.ExtensionFilter filter = new FileChooser.ExtensionFilter( "Schedule Files (*.scd)", "*.scd"); chooser.getExtensionFilters().add(filter); chooser.setTitle("Open Existing Schedule"); chooser.showOpenDialog(mainApp.getPrimaryStage()); } @FXML private void handleSaveAction(ActionEvent e) { FileChooser chooser = new FileChooser(); FileChooser.ExtensionFilter filter = new FileChooser.ExtensionFilter( "Schedule Files (*.scd)", "*.scd"); FileChooser.ExtensionFilter filter2 = new FileChooser.ExtensionFilter( "CSV (*.csv)", "*.csv"); chooser.getExtensionFilters().add(filter); chooser.getExtensionFilters().add(filter2); chooser.setTitle("Save Current Schedule"); chooser.showSaveDialog(mainApp.getPrimaryStage()); } @FXML private void handleRatingAction(ActionEvent e) throws IOException { // Load root layout from fxml file. FXMLLoader loader = new FXMLLoader(); loader.setLocation(getClass().getResource("ScheduleRatingDialog.fxml")); BorderPane dialog = (BorderPane) loader.load(); // Show the scene containing the root layout. Scene scene = new Scene(dialog); Stage dialogWindow = new Stage(); dialogWindow.initStyle(StageStyle.UTILITY); dialogWindow.setResizable(false); dialogWindow.setScene(scene); dialogWindow.setTitle("Schedule Rating"); dialogWindow.show(); } /** * Initializes the controller class. This method is automatically called * after the fxml file has been loaded. */ @FXML private void initialize() { } /** * Is called by the main application to give a reference back to itself. * * @param mainApp */ public void setMainApp(Main mainApp) { this.mainApp = mainApp; } }