All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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; } }