package application;

import javafx.application.Application;
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.layout.BorderPane;

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.*;
import javafx.scene.input.KeyCombination;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.HBox;
import javafx.stage.Modality;
import javafx.stage.Stage;

public class Main extends Application {

	/*
	 */
	public static void main(String[] args) {
		launch(args);
	}

	private static class TestDialog extends Dialog<ButtonType> {

		public TestDialog(Stage primaryStage) {
			super();
			initModality(Modality.WINDOW_MODAL);
			initOwner(primaryStage);
			setResizable(false);
			DialogPane dialogPane = getDialogPane();
			dialogPane.setContent(new HBox());
			ButtonType okButton = new ButtonType("Ok", ButtonBar.ButtonData.OK_DONE);
			ButtonType cancelButton = new ButtonType("Cancel", ButtonBar.ButtonData.CANCEL_CLOSE);
			dialogPane.getButtonTypes().addAll(okButton, cancelButton);
			showAndWait().ifPresent(response -> {
				if (response.getButtonData() == ButtonType.OK.getButtonData()) {
					/* Do something */
				}
			});
		}
	}

	@Override
	public void start(Stage primaryStage) throws Exception {
		BorderPane mainLayout = new BorderPane();
		MenuItem itemOpenDialog = new MenuItem("Open Dialog...");
		itemOpenDialog.setAccelerator(KeyCombination.keyCombination("Ctrl-D"));
		itemOpenDialog.setOnAction(event -> new TestDialog(primaryStage));
		MenuItem itemExit = new MenuItem("Exit");
		Menu menuFile = new Menu("File");
		menuFile.getItems().addAll(itemOpenDialog, new SeparatorMenuItem(), itemExit);
		MenuBar menuBar = new MenuBar();
		menuBar.getMenus().addAll(menuFile);
		mainLayout.setTop(menuBar);
		Scene scene = new Scene(mainLayout, 1024, 768);
		primaryStage.setMinWidth(800);
		primaryStage.setMinHeight(600);
		primaryStage.setTitle("Test Application");
		primaryStage.setScene(scene);
		primaryStage.show();
		primaryStage.setMaximized(true);

		primaryStage.widthProperty().addListener((obs, oldVal, newVal) -> {
			System.out.println("+ Width-Old [" + oldVal.toString() + "] | New [" + newVal.toString() + "]");
		});
		primaryStage.heightProperty().addListener((obs, oldVal, newVal) -> {
			System.out.println("+ Height-Old [" + oldVal.toString() + "] | New [" + newVal.toString() + "]");
		});
	}
}
