package no.ntnu.idatt1002.demo.controller;

import java.awt.event.InputEvent;
import java.io.IOException;

import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.scene.Node;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Modality;
import javafx.stage.Stage;

public class SceneController /*implements Initializable*/ {

  private Stage stage;
  private Scene scene;
  private Parent root;

  /*@FXML
  private Button add;

  @FXML
  private ComboBox<?> show;

  @FXML
  private TableColumn<Expense, Double> amount;

  @FXML
  private TableColumn<Expense, ExpenseCategory> category;

  @FXML
  private TableColumn<Expense, String> date;

  @FXML
  private TableColumn<Expense, String> description;

  @FXML
  private TableView<Expense> expenseTableView;

  ObservableList<Expense> expenses = FXCollections.observableArrayList(
      new Expense("", 1000.00, true, ExpenseCategory.FOOD, "1/1/23")
  );
  @Override
  public void initialize(URL url, ResourceBundle resourceBundle) {
    amount.setCellValueFactory(new PropertyValueFactory<Expense, Double>("amount"));
    category.setCellValueFactory(new PropertyValueFactory<Expense, ExpenseCategory>("category"));
    date.setCellValueFactory(new PropertyValueFactory<Expense, String>("date"));
    description.setCellValueFactory(new PropertyValueFactory<Expense, String>("description"));

    expenseTableView.setItems(expenses);
  }*/

  public void switchStartMenu(ActionEvent event) throws IOException {
    FXMLLoader loader = new FXMLLoader(getClass().getResource("/view/FirstMenu.fxml"));
    root = loader.load();
    stage = (Stage)((Node)event.getSource()).getScene().getWindow();
    scene = new Scene(root);
    stage.setScene(scene);
    stage.show();
  }
  public void switchNewBudget(ActionEvent event) throws IOException {
    FXMLLoader loader = new FXMLLoader(SceneController.class.getResource("/view/NewBudget.fxml"));
    Parent root = loader.load();
    stage = (Stage)((Node)event.getSource()).getScene().getWindow();
    scene = new Scene(root);
    stage.setScene(scene);
    stage.show();
  }

  public void switchIncome(ActionEvent event) throws IOException {
    FXMLLoader loader = new FXMLLoader(SceneController.class.getResource("/view/Income.fxml"));
    Parent root = loader.load();
    stage = (Stage)((Node)event.getSource()).getScene().getWindow();
    scene = new Scene(root);
    stage.setScene(scene);
    stage.show();
  }

  public void switchExpenses(ActionEvent event) throws IOException {
    FXMLLoader loader = new FXMLLoader(SceneController.class.getResource("/view/Expenses.fxml"));
    Parent root = loader.load();
    stage = (Stage)((Node)event.getSource()).getScene().getWindow();
    scene = new Scene(root);
    stage.setScene(scene);
    stage.show();
  }

  public void switchOverview(ActionEvent event) throws IOException {
    FXMLLoader loader = new FXMLLoader(SceneController.class.getResource("/view/Overview.fxml"));
    Parent root = loader.load();
    stage = (Stage)((Node)event.getSource()).getScene().getWindow();
    scene = new Scene(root);
    stage.setScene(scene);
    stage.show();
  }

  public void addExpense(ActionEvent event) throws IOException {
    FXMLLoader loader = new FXMLLoader(SceneController.class.getResource("/view/addExpense.fxml"));
    Scene newScene = new Scene(loader.load());
    Stage newStage = new Stage();
    newStage.setScene(newScene);
    newStage.setResizable(false);
    newStage.initModality(Modality.APPLICATION_MODAL);

    newStage.show();
  }
  public void addIncome(ActionEvent event) throws IOException {
    FXMLLoader loader = new FXMLLoader(SceneController.class.getResource("/view/addIncome.fxml"));
    Scene newScene = new Scene(loader.load());
    Stage newStage = new Stage();
    newStage.setScene(newScene);
    newStage.setResizable(false);
    newStage.initModality(Modality.APPLICATION_MODAL);

    newStage.show();
  }

  public void underProgress(ActionEvent event) throws IOException{
    FXMLLoader loader = new FXMLLoader(SceneController.class.getResource("/view/underProgress.fxml"));
    Scene newScene = new Scene(loader.load());
    Stage newStage = new Stage();
    newStage.setScene(newScene);
    newStage.setResizable(false);
    newStage.initModality(Modality.APPLICATION_MODAL);

    newStage.show();
  }
  public void closeButton(ActionEvent actionEvent) {
    final Node source = (Node) actionEvent.getSource();
    final Stage stage = (Stage) source.getScene().getWindow();
    stage.close();;
  }
}