Treeは階層メニューなど開閉可能なツリー構造を表示するノードです。

ツリー構造の作成

ツリー構造を構成するオブジェクトは、jp.sunflower.scene.layout.TreeNodeクラスをmixinして作成します。 このクラスはmixinクラスで一般的なツリー構造を実装します。

class Item extends TreeNode {
    var name: String;
    override function toLabel() { name; }
}

toLabel関数のオーバーライド

toLabel関数は、Tree上で表示されるテキストを返します。 適切な文字列表現を生成して返すようにしてください。 デフォルトはtoStringです。

ノードクリック時の処理

リーフノードが選択された時に実行する処理は、nodeAction変数に関数を設定することで可能になります。

TreeNodeの初期化

階層メニューなど固定的なツリーの場合は、宣言的にツリーを作成できます。

var menu = Item {
    name: "Root"
    children: [
        Item {
            name: "Category-1"
            children: [
                Item {
                    name: "Menu-1-1"
                    nodeAction: function() {
                        println("Action-1-1");
                    }
                }
                Item {
                    name: "Menu-1-2"
                    nodeAction: function() {
                        println("Action-1-2");
                    }
                }
            ]
        }
        Item {
            name: "Category-2"
            children: [
                Item {
                    name: "Menu-2-1"
                    nodeAction: function() {
                        println("Action-2-1");
                    }
                }
                Item {
                    name: "Menu-2-2"
                    nodeAction: function() {
                        println("Action-2-2");
                    }
                }
            ]
        }
    ]
}

手続き的にツリーを作成する場合は、TreeNodeのappend関数を使用してください。

Treeの構築

TreeはNodeのサブクラスなので、上記で作成したようなNodeをrootに指定し初期化します。

Tree {
     root: menu
}

オプション

添付ファイル