YKLookTree
ツリー表示用のGUIオブジェクトです。
このGUIオブジェクトは、階層構造を表現するときに使います。
階層構造を表現する個々の表示項目をノードと呼びます。
階層構造の頂点に位置する最上位のノードをルートノードと呼びます。
他のノードは、すべてこのルートノードの下位ノードになります。
ノードには、下記2種類のものがあります。
-
集合ノード。下位ノードを持てる。 Java の用語では「コンテナ」に近似。
-
要素ノード。下位ノードを持てない。 Java の用語では「リーフ」に近似。
ルートノードは常に集合ノードです。
また、下位ノードを持たない(下位ノードの個数が0の)集合ノードを定義することもできます。
すべてのノードは名前を持ち、この名前がコンピュータ画面上に表示されます。
階層構造内の特定のノードを表現するときはノードパスで表現します。
具体的には、各ノードの名前を要素とする配列で表します。
この例では、
'ccc' のノードをノードパスで表現しています。
最上位のルートノードの直下に
'aaa' という集合ノードがあり、その下に
'bbb' という集合ノードがあり、その下に
'ccc' があることを表しています。
すべてのノードの最上位には例外なくルートノードがあり、これを記述するのは冗長なので、ノードパスを表現するときはルートノードの記述は省略し、次のノードから記述します。
ルートノード自体を表現するときは、空の配列で表します。
このクラスを使うときは、
swingtree をロードしてください。
例 |
require 'yklook/swing'
require 'yklook/swingtree'
|
注意: |
このクラスは追加機能です。当社ライセンスに付属します。
|
クラスメソッド:
new
yk_find_objects
yk_find_objects_frame
yk_look
yk_look_frame
インスタンスメソッド:
yk_add_node_select
yk_scroll
yk_select_none
yk_selected_node
yk_set_icon_closed
yk_set_icon_leaf
yk_set_icon_opened
yk_set_listener
yk_set_node_icon
yk_set_node_select
yk_set_node_tooltip
yk_set_root_visible
yk_set_select_mode
yk_set_show_root_handle
その他の項目:
なし
Object (Ruby 組み込みのクラス。すべてのオブジェクトのスーパークラス)
┃
┗ YKLookSwingBase (YKLook のすべてのGUIオブジェクトの共通クラス)
┃
┗ YKLookCompoent (YKLook のGUI表示部品の共通クラス)
┃
┗ YKLookTree (このクラス)
new( paths )
new( paths , root )
インスタンスを生成します。
引数の
paths は配列で、その要素は配列で表したノードパスです。
引数の
root は文字列で、ルートノード(最上位ノード)の名前です。
以下の例をもとに詳細を説明します。
例 |
a = ['hhh','iii']
b = ['hhh','jjj']
c = ['hhh','kkk','lll']
d = ['mmm','nnn']
e = ['mmm','ooo']
f = ['ppp','qqq',nil]
tree = YKLookTree.new( [a,b,c,d,e,f], 'rrrr' )
tree.yk_set_preferred_size( 120, 200 )
|
末端の
'iii' 等だけでなく、ノードパスに含まれる集合ノードも自動的に生成します。
下位ノードの個数が0の集合ノードを指定するには、ノードパスの末尾に
nil を入れてください。この例では
'qqq' がそうです。
ルートノードをツリーに表示したくないときは、ルートノードに名前をつける必要はありません。この場合、ルートノードの引数自体を省略してください。
生成した後は、表示する前に
YKLookCompoent#yk_set_preferred_size()
等(このクラスのスーパークラスから継承しているメソッド)で表示領域のサイズを指定してください。
yk_find_objects()
yk_find_objects( tagname )
yk_find_objects( tagname , tagno )
yk_find_objects_frame( frame )
yk_find_objects_frame( frame , tagname )
yk_find_objects_frame( frame , tagname , tagno )
yk_look( tagname )
yk_look( tagname , tagno )
yk_look_frame( frame , tagname )
yk_look_frame( frame , tagname , tagno )
yk_add_node_select( nodepath )
現在選択状態のノードに加えて、さらに選択状態のノードを増やします。
引数の
nodepath は配列で表現したノードパスです。
ルートノードを指定するには、空の配列を指定してください。
このメソッドを呼び出した時点では、表示中のコンピュータ画面の状態は変わりません。
メインループに戻った時に画面の表示を更新しています。
yk_set_select_mode()
の指定によっては、選択状態が制限されることもあります。
例 |
tree.yk_add_node_select( ['aaa','bbb','ccc'] )
|
yk_scroll( nodepath )
指定されたノードが表示領域内に見えるようにスクロールします。
引数の
nodepath は配列で表現したノードパスです。
例 |
tree.yk_scroll( ['aaa','bbb','ccc'] )
|
yk_select_none()
すべてのノードの選択状態を解除します。
このメソッドを呼び出した時点では、表示中のコンピュータ画面の状態は変わりません。
メインループに戻った時に画面の表示を更新しています。
yk_selected_node()
選択状態のノードを返します。
複数のノードを選択していることもあるので、このメソッドの戻り値は常に配列です。何も選択されていないときは、空の配列を返します。
配列の各要素はノードパスで、ノードパスは配列で表現しています。
つまり、選択状態のノードがあるときは、このメソッドの戻り値は常に二重の配列になっています。
ルートノードが選択されているときは、ノードパスとしては空の配列で表します。
このメソッドは、実際に表示しているコンピュータ画面上の状態を返します。
一度も画面を表示していないときは、有効な値を返しません。
例 |
wrk = []
sel = tree.yk_selected_node()
sel.each() do |nodepath|
if nodepath.size() <= 0
node = 'root node'
else
node = nodepath.join('/')
end
wrk << node
end
|
この例では、ルートノードのときは
'root node' という文字列を作り、それ以外のときはノードパスを
'/' で区切った文字列を作っています。
yk_set_icon_closed( icon )
集合ノードの閉じたとき用のデフォルトのアイコンを指定します。
引数の
icon は
YKLookImage
クラスのオブジェクトまたは
nil です。
nil のときはアイコンを表示しません。
yk_set_icon_leaf( icon )
要素ノード用のデフォルトのアイコンを指定します。
引数の
icon は
YKLookImage
クラスのオブジェクトまたは
nil です。
nil のときはアイコンを表示しません。
yk_set_icon_opened( icon )
集合ノードの開いたとき用のデフォルトのアイコンを指定します。
引数の
icon は
YKLookImage
クラスのオブジェクトまたは
nil です。
nil のときはアイコンを表示しません。
yk_set_listener( method_name )
コールバック用のメソッドを文字列またはシンボルで指定します。
nil を指定すると、コールバック用メソッドを未指定にします。
名前の先頭が
'yk' で始まるものは指定できません。
コールバック用のメソッドは、プログラム製作者が
YKLookMain
や
YKLookMainFrame
のサブクラスに定義する必要があります。
コールバック用のメソッドには引数がひとつあり、
YKLookEventTreeClick
クラスのオブジェクトです。
実際にコールバックするのはツリー内のノードがクリックされたときで、なおかつ、このときに選択状態になっているノードがひとつだけのときです。
また、続けて同じノードをクリックしてもコールバックしません。
yk_set_node_icon( nodepath , icon1 , icon2 )
特定のノードに固有のアイコンを指定します。
引数の
nodepath は配列で表現したノードパスです。
引数の
icon1 と
icon2 は
YKLookImage
クラスのオブジェクトまたは
nil です。
nil のときはアイコンを表示しません。
ノードが集合ノードのとき、
icon1 は内部を開いて下位ノードを表示したとき用のアイコンで、
icon2 は閉じたとき用のアイコンになります。
ノードが要素ノードのとき、
icon1 のみ意味を持ちます。
要素ノードのときは、
icon2 の引数自体を省略しても問題ありません。
例 |
tree.yk_set_node_icon( ['aaa','bbb','ccc'], img1, img2 )
|
yk_set_node_select( nodepath )
指定されたノードを選択状態にします。
他のノードの選択状態は解除されます。
引数の
nodepath は配列で表現したノードパスです。
ルートノードを指定するには、空の配列を指定してください。
このメソッドを呼び出した時点では、表示中のコンピュータ画面の状態は変わりません。
メインループに戻った時に画面の表示を更新しています。
例 |
tree.yk_set_node_select( ['aaa','bbb','ccc'] )
|
yk_set_node_tooltip( nodepath , text )
ノードにツールチップを付加します。
引数の
nodepath は配列で表現したノードパスです。
引数の
text はツールチップ文字列です。
例 |
tree.yk_set_node_tooltip( ['aaa','bbb','ccc'], 'text' )
|
yk_set_root_visible( bool )
ルートノードを表示するかどうかを指定します。
引数の bool が true のときは表示します。
引数の bool が false のときは表示しません。
デフォルトは true で表示します。
yk_set_select_mode( mode )
ノードの選択形式を指定します。
引数の
mode は文字列で、以下のいずれかです。
指定 |
意味 |
'single' |
ひとつのノードのみ選択可能 |
'contiguous' |
連続していれば複数選択可能 |
'discontiguous' |
連続していなくても複数選択可能 |
英字の大文字小文字はどちらでも受け付けます。
YKLook 内部では英字の先頭1文字だけを見ています。
デフォルトは
'd' です。
yk_set_show_root_handle( bool )
ルートノードのつまみ(下位ノードの表示 / 非表示を切り替えるもの)を表示するかどうかを指定します。
引数の bool が true のときは表示します。
引数の bool が false のときは表示しません。
デフォルトは false で表示しません。
なし
Copyright (c) 2003-2010 YorozuKotowariYa Ltd.