package no.tornado;

import javafx.application.Application;
import javafx.application.Platform;
import javafx.event.ActionEvent;
import javafx.fxml.FXMLLoader;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Alert;
import javafx.scene.control.Alert.AlertType;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.ToggleButton;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
import javafx.stage.StageStyle;
import org.controlsfx.control.SegmentedButton;

/**
 * A simple JavaFX application with a dependency on ControlsFX. Nothing interesting here :)
 */
public class FxlDemo extends Application {
	public void start(Stage stage) throws Exception {
		stage.setTitle("Hello World");
		stage.initStyle(StageStyle.UNDECORATED);

		Label label = new Label(stage.getTitle());
		label.setStyle("-fx-font-size: 25");

		// Alibi for including ControlsFX Dependency :)
		SegmentedButton fxcontrol = new SegmentedButton(new ToggleButton("One"), new ToggleButton("Two"), new ToggleButton("Three"));

        // Did we get any arguments?
        getParameters().getNamed().forEach((name, value) -> System.out.println(String.format("%s=%s", name, value)));

		Button fxmlButton = new Button("Open FXML View");
		fxmlButton.setOnAction(this::openFxmlView);

		Button exitButton = new Button("Exit");
		exitButton.setStyle("-fx-font-weight: bold");
		exitButton.setOnAction(event -> Platform.exit());

        HBox buttons = new HBox(10, fxmlButton, exitButton);

        VBox root = new VBox(label, fxcontrol, buttons);
		root.setAlignment(Pos.CENTER);
		root.setSpacing(20);
		root.setPadding(new Insets(25));
        root.setStyle("-fx-border-color: lightblue");

		stage.setScene(new Scene(root));
		stage.show();
	}

	private void openFxmlView(ActionEvent event) {
		try {
			BorderPane view = FXMLLoader.load(getClass().getResource("/views/MyView.fxml"));
			Stage stage = new Stage();
			stage.setTitle("FXML View");
			stage.setScene(new Scene(view));
			stage.show();
		} catch (Exception ex) {
			ex.printStackTrace();
			new Alert(AlertType.ERROR, "Failed to open FXML View!").show();
		}
	}
}