
import javafx.application.*;
import javafx.scene.*;
import javafx.scene.control.*;
import javafx.scene.layout.*;
import javafx.stage.*;

/** Simple dialog to get the name.
 * @author Jaanus
 */
public class Mainfx extends Application {

    @Override
    public void init() {
        System.out.println ("init started...");
        System.out.println (this.getParameters().getUnnamed());
    }

    @Override
    public void start (Stage myStage) {
        System.out.println ("start started...");
        Label lbl =  new Label ("What is your name?");

        TextField tfd = new TextField();
        tfd.setOnAction ( event -> {
            String name = ((TextField)(event.getSource())).getText();
            System.out.println ("Name is: " + name);
            ((Label)((BorderPane)((TextField)event.getSource()).getParent())
                    .getTop()).setText (name + ", input a new name");
        });

        Button btn = new Button();
        btn.setText ("Exit");
        btn.setOnAction (event -> {
            String name = ((TextField)((BorderPane)
                    ((Button)event.getSource()).getParent())
                    .getCenter()).getText();
            System.out.println ("Name when button pressed: " + name);
            myStage.close(); // soft exit
        });

        BorderPane root = new BorderPane();
        root.setTop (lbl);
        root.setCenter (tfd);
        root.setBottom (btn);

        Scene scene = new Scene (root, 180, 90);

        myStage.setTitle("Question");
        myStage.setScene(scene);
        myStage.show();
        myStage.setOnCloseRequest(event -> {
            String name = ((TextField) ((BorderPane)
                    ((Stage) event.getSource()).getScene().getRoot())
                    .getCenter()).getText();
            System.out.println("Name when winow closed: " + name);
            Platform.exit(); // hard exit
        });
    }

    @Override
    public void stop() {
        System.out.println ("stop started...");
    }

    public static void main (String[] args) {
        Mainfx.launch (args);
    }
}
