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;
    }
}