ツリービューを表示する

Yahoo UI Libraryには階層構造を表示するツリービューが用意されています。ツリービューはYahoo UI Libraryの最初のバージョンから搭載されており、最新版である2.4.1でも全く同じプログラムのまま動作します。ただし、今後はonCollapseイベント、onExpandイベントは廃止される方向なので、これらのイベントを使っている場合にはsubscribe()を使ったものに変更しておくのがよいでしょう。
ツリービューを表示するにはあらかじめHTMLタグで表示するエレメント(タグ)を指定しておくと楽です(プログラムで1から生成することもできます)。まず、ツリービューを表示する<div>タグにはID名を指定しておきます。このID名をnew YAHOO.widget.TreeView()のパラメータとして指定します。new YAHOO.widget.TreeView()はツリーオブジェクトを返します。このツリーオブジェクトに対してツリーの項目(ノード)を追加していきます。
ノードの追加はnew YAHOO.widget.TextNode()によって行ないます。最初のパラメータが表示する項目になります。2番目は、どのノードの階層に属するかを指定します。一番最初のノードはルートノードと呼ばれ、このルートノードに追加する場合にはgetRoot()によって得られたルートノードを2番目のパラメータとして指定します。
YAHOO.widget.TextNode()の3番目のパラメータは子ノードが含まれる場合に、あらかじめ展開して表示するかどうかを指定します。trueを指定すると内容が展開して表示され、falseを指定すると折り畳まれた状態で表示されます。
ツリービューはnew YAHOO.widget.TreeView()やnew YAHOO.widget.TextNode()を使っただけでは表示されません。実際にページ上に表示するにはdraw()を使って行ないます。これで、はじめてページ上にツリービューが表示されることになります。
実際のサンプルは以下のようになります(サンプル01を実行する)。
【サンプル01】
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<title>Sample</title>
<link rel="stylesheet" type="text/css" href="http://yui.yahooapis.com/2.4.1/build/treeview/assets/skins/sam/treeview.css">
<link rel="stylesheet" href="main.css" type="text/css" media="all">
<script type="text/javascript" src="http://yui.yahooapis.com/2.4.1/build/yahoo-dom-event/yahoo-dom-event.js"></script>
<script type="text/javascript" src="http://yui.yahooapis.com/2.4.1/build/treeview/treeview-min.js"></script>
<script type="text/javascript"><!--
YAHOO.util.Event.addListener(window, "load", function(){
var treeObj = new YAHOO.widget.TreeView("myTree");
var treeRoot = treeObj.getRoot();
var ajaxRoot = new YAHOO.widget.TextNode("Ajaxライブラリ", treeRoot, false);
new YAHOO.widget.TextNode("Prototype", ajaxRoot, false);
new YAHOO.widget.TextNode("jQuery", ajaxRoot, false);
new YAHOO.widget.TextNode("MooTools", ajaxRoot, false);
treeObj.draw();

});
// --></script>
</head>
<body>
<h1>ツリービュー表示</h1>
<div id="myTree"></div>
</body>
</html>


あらかじめ展開して表示しておく場合には以下のようにYAHOO.widget.TextNode()の3番目のパラメータにtrueを指定します。(サンプル02を実行する

【サンプル02】
YAHOO.util.Event.addListener(window, "load", function(){
var treeObj = new YAHOO.widget.TreeView("myTree");
var treeRoot = treeObj.getRoot();
var ajaxRoot = new YAHOO.widget.TextNode("Ajaxライブラリ", treeRoot, true);
new YAHOO.widget.TextNode("Prototype", ajaxRoot, false);
new YAHOO.widget.TextNode("jQuery", ajaxRoot, false);
new YAHOO.widget.TextNode("MooTools", ajaxRoot, false);
treeObj.draw();
});

展開されたノード(項目)をクリックしたら指定したページに移動することもできます。この場合はnew YAHOO.widget.TextNode()によって生成されたオブジェクトのhref属性に移動先のページURLを指定します。
実際のサンプルは以下のようになります。(サンプル03を実行する

【サンプル03】
YAHOO.util.Event.addListener(window, "load", function(){
var treeObj = new YAHOO.widget.TreeView("myTree");
var treeRoot = treeObj.getRoot();
var ajaxRoot = new YAHOO.widget.TextNode("Ajaxライブラリ", treeRoot, false);
var treeLink1 = new YAHOO.widget.TextNode("Prototype", ajaxRoot, false);
var treeLink2 = new YAHOO.widget.TextNode("jQuery", ajaxRoot, false);
var treeLink3 = new YAHOO.widget.TextNode("MooTools", ajaxRoot, false);
treeLink1.href = "http://www.prototypejs.org/";
treeLink2.href = "http://jquery.com/";
treeLink3.href = "http://mootools.net/";

treeObj.draw();
});

[目次へ]