package com.imyeyu.fx.ui.components;

import com.imyeyu.fx.utils.scroll.SmoothScroll;
import javafx.collections.ObservableList;
import javafx.scene.control.TreeItem;

/**
 * 不显示根节点的树形结构，实现多个根节点
 *
 * @author 夜雨
 * @since 2021-04-26 01:34
 */
public class TreeView<T> extends javafx.scene.control.TreeView<T> {

	private final TreeItem<T> dummyRoot = new TreeItem<>();

	/** 默认构造 */
	public TreeView() {
		dummyRoot.setExpanded(true);
		setRoot(dummyRoot);
		setShowRoot(false);
		// 平滑滚动
		SmoothScroll.virtual.install(this);
	}

	/**
	 * 设置根节点
	 *
	 * @param roots 根节点
	 */
	@SafeVarargs
	public final void setRoots(TreeItem<T>... roots) {
		dummyRoot.getChildren().addAll(roots);
	}

	/**
	 * 获取根节点列表
	 *
	 * @return 根节点列表
	 */
	public ObservableList<TreeItem<T>> getRoots() {
		return dummyRoot.getChildren();
	}
}
