package blabla;

import java.util.Collection;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
import javafx.application.Application;
import javafx.beans.property.ReadOnlyStringWrapper;
import javafx.scene.Scene;
import javafx.scene.control.TreeItem;
import javafx.scene.control.TreeTableColumn;
import javafx.scene.control.TreeTableView;
import javafx.scene.paint.Color;
import javafx.scene.shape.Rectangle;
import javafx.stage.Stage;

public class Test extends Application {

	public void start(Stage pStage) {
		pStage.setTitle("Test");

// create tree items
		final TreeItem<String> root = new TreeItem<>("Root Node");
		root.setExpanded(true);

		final Collection<TreeItem<String>> children = IntStream.rangeClosed(1, 5)
				.mapToObj(pIdx -> {
					TreeItem<String> treeItem = new TreeItem<>("Child Node " + pIdx, new Rectangle(10, 10));
					treeItem.getChildren().add(new TreeItem("Sub child 1", new Rectangle(10, 10, Color.RED)));
					treeItem.getChildren().add(new TreeItem("Sub child 2", new Rectangle(10, 10, Color.RED)));
					treeItem.getChildren().add(new TreeItem("Sub child 3", new Rectangle(10, 10, Color.RED)));
					return treeItem;
				})
				.collect(Collectors.toList());

		root.getChildren().addAll(children);

// create TreeTableView
		final TreeTableView<String> treeTableView = new TreeTableView<>(root);
		final TreeTableColumn<String, String> column = new TreeTableColumn<>("Column");
		column.setCellValueFactory(pTreeItem -> new ReadOnlyStringWrapper(pTreeItem.getValue().getValue()));
		treeTableView.getColumns().add(column);

		pStage.setScene(new Scene(treeTableView, 300, 450));
		pStage.show();
	}

	public static void main(String[] pArgs) {
		launch(pArgs);
	}
}