import javafx.event.EventHandler;
import javafx.geometry.Orientation;
import javafx.application.*; 
import javafx.stage.*; 
import javafx.scene.*; 
import javafx.scene.layout.*; 
import javafx.scene.control.*; 
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.TitledPane;
import javafx.scene.input.*;
import java.util.Arrays;

public class TestFx extends Application {

    public static void main(String[] args) {
        launch(args);
    }

    private final SplitPane splitPane = new SplitPane();

    @Override
    public void start(Stage primaryStage) {
        splitPane.getItems().add(createItem(0));
        splitPane.setOrientation(Orientation.VERTICAL);
        VBox.setVgrow(splitPane, Priority.ALWAYS);
        Pane fooPane = new Pane(new Label("Foo pane"));
        VBox.setVgrow(fooPane, Priority.ALWAYS);

        Button button = new Button("Test");
        button.setOnAction(e -> {
            splitPane.getItems().add(createItem(1));
            splitPane.setDividerPositions(new double[]{0.5});
            printDividerPositions("Current pulse: ");
            Platform.runLater(() -> printDividerPositions("2nd pulse: "));
            Platform.runLater(() -> Platform.runLater(() -> printDividerPositions("3rd pulse: ")));
        }); 

        VBox root = new VBox(splitPane, fooPane, button);
        Scene scene = new Scene(root, 500, 300);
        primaryStage.setScene(scene);
		primaryStage.setTitle("javafx version - "+System.getProperty("javafx.runtime.version"));
        primaryStage.show();
    }

    private void printDividerPositions(String pulseInfo) {
        System.out.println(pulseInfo + Arrays.toString(splitPane.getDividerPositions()));
    }

    private Pane createItem(int index) {
        Pane pane = new Pane(new Label("Item : " + index));
        if (index == 0) {
            SplitPane.setResizableWithParent(pane, true);
        } else {
            SplitPane.setResizableWithParent(pane, false);
        }
        return pane;
    }
}