1 package io.github.magwas.inez.ui;
2
3 import javafx.collections.FXCollections;
4 import javafx.collections.ObservableList;
5 import javafx.scene.control.TreeItem;
6
7 import io.github.magwas.inez.element.BridiElement;
8
9 public class BridiElementTreeItem extends TreeItem<BridiElement> {
10
11 private boolean isFirstTimeChildren = true;
12 private boolean isFirstTimeLeaf = true;
13 private boolean isLeaf;
14
15 public BridiElementTreeItem(BridiElement rootElement) {
16 super(rootElement);
17 }
18
19 @Override
20 public ObservableList getChildren() {
21 if (isFirstTimeChildren) {
22 isFirstTimeChildren = false;
23
24 super.getChildren().setAll(buildChildren(this));
25 }
26 return super.getChildren();
27 }
28
29 @Override
30 public boolean isLeaf() {
31 if (isFirstTimeLeaf) {
32 isFirstTimeLeaf = false;
33 isLeaf = 0 == getValue().getChildren().count();
34 }
35 return isLeaf;
36 }
37
38 private ObservableList buildChildren(BridiElementTreeItem treeItem) {
39 ObservableList<BridiElementTreeItem> children = FXCollections.observableArrayList();
40 treeItem.getValue().getChildren().forEach(x -> children.add(new BridiElementTreeItem(x)));
41 return children;
42 }
43 }