1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
2 "http://www.w3.org/TR/html4/strict.dtd">
5 <title>Dijit Tree Test</title>
7 <style type="text/css">
8 @import "../../../dojo/resources/dojo.css";
9 @import "../css/dijitTests.css";
12 <script type="text/javascript" src="../../../dojo/dojo.js"
13 djConfig="parseOnLoad: true, isDebug: true"></script>
14 <script type="text/javascript" src="../_testCommon.js"></script>
16 <script language="JavaScript" type="text/javascript">
17 dojo.require("dojo.data.ItemFileReadStore");
18 dojo.require("dijit.Tree");
19 dojo.require("dijit.ColorPalette");
20 dojo.require("dijit.Menu");
21 dojo.require("dojo.parser"); // scan page for widgets and instantiate them
26 <h1 class="testTitle">Dijit Tree Test</h1>
28 <div dojoType="dojo.data.ItemFileReadStore" jsId="continentStore"
29 url="../../tests/_data/countries.json"></div>
31 <h3>Tree with hardcoded root node (not corresponding to any item in the store)</h3>
32 <p>Clicking a folder node will open/close it (openOnclick==true), and clicking a leaf node will popup an alert.</p>
33 <div dojoType="dijit.Tree" id="mytree" store="continentStore" query="{type:'continent'}"
34 onfocus="console.log('user focus handler')"
35 onblur="console.log('user blur handler')"
36 label="Continents" openOnClick="true">
37 <script type="dojo/method" event="onClick" args="item">
38 alert("Execute of node " + continentStore.getLabel(item)
39 +", population=" + continentStore.getValue(item, "population"));
43 <button onclick="dijit.byId('mytree').destroyRecursive();">destroy</button>
45 <h2>A rootless tree (no "continents" node) with context menus, and custom icons</h2>
47 <ul dojoType="dijit.Menu" id="tree_menu" style="display: none;">
48 <li dojoType="dijit.MenuItem" onClick="alert('Hello world');">Enabled Item</li>
49 <li dojoType="dijit.MenuItem" disabled="true">Disabled Item</li>
50 <li dojoType="dijit.MenuItem" iconClass="dijitEditorIcon dijitEditorIconCut"
51 onClick="alert('not actually cutting anything, just a test!')">Cut</li>
52 <li dojoType="dijit.MenuItem" iconClass="dijitEditorIcon dijitEditorIconCopy"
53 onClick="alert('not actually copying anything, just a test!')">Copy</li>
54 <li dojoType="dijit.MenuItem" iconClass="dijitEditorIcon dijitEditorIconPaste"
55 onClick="alert('not actually pasting anything, just a test!')">Paste</li>
56 <li dojoType="dijit.PopupMenuItem">
57 <span>Enabled Submenu</span>
58 <ul dojoType="dijit.Menu" id="submenu2">
59 <li dojoType="dijit.MenuItem" onClick="alert('Submenu 1!')">Submenu Item One</li>
60 <li dojoType="dijit.MenuItem" onClick="alert('Submenu 2!')">Submenu Item Two</li>
61 <li dojoType="dijit.PopupMenuItem">
62 <span>Deeper Submenu</span>
63 <ul dojoType="dijit.Menu" id="submenu4">
64 <li dojoType="dijit.MenuItem" onClick="alert('Sub-submenu 1!')">Sub-sub-menu Item One</li>
65 <li dojoType="dijit.MenuItem" onClick="alert('Sub-submenu 2!')">Sub-sub-menu Item Two</li>
70 <li dojoType="dijit.PopupMenuItem" disabled="true">
71 <span>Disabled Submenu</span>
72 <ul dojoType="dijit.Menu" id="submenu3" style="display: none;">
73 <li dojoType="dijit.MenuItem" onClick="alert('Submenu 1!')">Submenu Item One</li>
74 <li dojoType="dijit.MenuItem" onClick="alert('Submenu 2!')">Submenu Item Two</li>
79 <div dojoType="dijit.Tree" id="tree2" store="continentStore" query="{type:'continent'}">
80 <script type="dojo/connect">
81 var menu = dijit.byId("tree_menu");
82 // when we right-click anywhere on the tree, make sure we open the menu
83 menu.bindDomNode(this.domNode);
85 dojo.connect(menu, "_openMyself", this, function(e){
86 // get a hold of, and log out, the tree node that was the source of this open event
87 var tn = dijit.getEnclosingWidget(e.target);
90 // now inspect the data store item that backs the tree node:
91 console.debug(tn.item);
93 // contrived condition: if this tree node doesn't have any children, disable all of the menu items
94 menu.getChildren().forEach(function(i){ i.setDisabled(!tn.item.children); });
96 // IMPLEMENT CUSTOM MENU BEHAVIOR HERE
99 <script type="dojo/method" event="getIconClass" args="item, opened">
100 return (!item || continentStore.getValue(item, "type") == "continent") ?
101 (opened ? "customFolderOpenedIcon" : "customFolderClosedIcon") :
104 <script type="dojo/method" event="onClick" args="item">
105 alert("Execute of node " + continentStore.getLabel(item)
106 +", population=" + continentStore.getValue(item, "population"));