org.panteleyev.fx.TreeTableFactory Maven / Gradle / Ivy
The newest version!
/*
Copyright © 2020-2021 Petr Panteleyev
SPDX-License-Identifier: BSD-2-Clause
*/
package org.panteleyev.fx;
import javafx.beans.property.ReadOnlyObjectWrapper;
import javafx.beans.value.ObservableValue;
import javafx.scene.Node;
import javafx.scene.control.TreeItem;
import javafx.scene.control.TreeTableCell;
import javafx.scene.control.TreeTableColumn;
import javafx.util.Callback;
/**
* This class provides convenience method to create objects of the following classes:
*
* - {@link TreeTableColumn}
* - {@link TreeItem}
*
*/
public final class TreeTableFactory {
private TreeTableFactory() {
}
/**
* Creates new tree table column.
*
* @param text column text
* @param cellFactory cell factory
* @param propertyCallback object property retriever
* @param widthBinding width property binding
* @param the type of the TreeTableView generic type
* @param the type of the item contained within the Cell.
* @return table column
*/
public static TreeTableColumn treeTableColumn(
String text,
Callback, TreeTableCell> cellFactory,
Callback propertyCallback,
ObservableValue widthBinding) {
var column = new TreeTableColumn(text);
column.setSortable(false);
if (cellFactory != null) {
column.setCellFactory(cellFactory);
}
if (propertyCallback != null) {
column.setCellValueFactory(p -> new ReadOnlyObjectWrapper<>(
propertyCallback.call(p.getValue().getValue())));
}
if (widthBinding != null) {
column.prefWidthProperty().bind(widthBinding);
}
return column;
}
/**
* Creates new tree table column.
*
* @param text column text
* @param cellFactory cell factory
* @param widthBinding width property binding
* @param the type of the TreeTableView generic type
* @return table column
*/
public static TreeTableColumn treeTableColumn(
String text,
Callback, TreeTableCell> cellFactory,
ObservableValue widthBinding) {
var column = treeTableColumn(text, cellFactory, p -> p, widthBinding);
column.setSortable(true);
return column;
}
/**
* Creates new tree item.
*
* @param expanded if tree item should be expanded
* @param value type
* @return tree item
*/
public static TreeItem treeItem(boolean expanded) {
var item = new TreeItem();
item.setExpanded(expanded);
return item;
}
/**
* Creates new tree item.
*
* @param value item value
* @param expanded if tree item should be expanded
* @param value type
* @return tree item
*/
public static TreeItem treeItem(T value, boolean expanded) {
var item = new TreeItem(value);
item.setExpanded(expanded);
return item;
}
/**
* Creates new tree item.
*
* @param value item value
* @param graphic item graphic node
* @param expanded if tree item should be expanded
* @param value type
* @return tree item
*/
public static TreeItem treeItem(T value, Node graphic, boolean expanded) {
var item = new TreeItem(value, graphic);
item.setExpanded(expanded);
return item;
}
}