package sample.yuitree;
import jaxcent.*;
import jaxcent.yui.*;
import java.util.*;
import java.text.*;
public class YuiTreeSample extends jaxcent.yui.Tree {
// Reference to the HTML on the page.
HtmlPara nextStepDesc = new HtmlPara( this, "nextStepDesc" );
HtmlPara msgs = new HtmlPara( this, "msgs" );
HtmlButton nextStepButton = new HtmlButton( this, "nextStep" )
{
protected void onClick( Map data ) {
try {
onNextStep();
} catch (Exception ex) {
ex.printStackTrace();
}
}
};
int currentStep = 1;
// Ctor
public YuiTreeSample() throws Jaxception
{
// The tree must be initialized prior to use.
// The argument to "init" is the ID of the DIV
// where the tree is to be created.
init( "yuitree" );
// Wait for "Next button"
}
void onNextStep() throws Jaxception
{
msgs.setInnerText( "" );
switch ( currentStep++ )
{
case 1: nextStepDesc.setInnerHTML( step1NextDesc );
step1();
break;
case 2: nextStepDesc.setInnerHTML( step2NextDesc );
step2();
break;
case 3: nextStepDesc.setInnerHTML( step3NextDesc );
step3();
break;
case 4: nextStepDesc.setInnerHTML( step4NextDesc );
step4();
break;
case 5: nextStepDesc.setInnerHTML( step5NextDesc );
step5();
break;
case 6: nextStepDesc.setInnerHTML( step6NextDesc );
step6();
break;
case 7: nextStepDesc.setInnerHTML( step7NextDesc );
step7();
break;
case 8: nextStepDesc.setInnerHTML( step8NextDesc );
step8();
break;
case 9: nextStepDesc.setInnerHTML( step9NextDesc );
step9();
break;
}
}
/// Step 1: Add two tree nodes
TreeNode node1;
TreeNode node2;
String step1NextDesc = "Next, we will now add some child nodes by calling the Java method Node.addTextNode";
void step1() throws Jaxception
{
node1 = addTextNode( "Node 1" );
node2 = addTextNode( "Node 2" );
draw();
}
/// Step 2: Add some child nodes
TreeNode node11;
TreeNode node12;
TreeNode node121;
TreeNode node21;
TreeNode node22;
TreeNode node23;
void step2() throws Jaxception
{
node11 = node1.addTextNode( "Node 1.1" );
node12 = node1.addTextNode( "Node 1.2" );
node121 = node12.addTextNode( "Node 1.2.1" );
node21 = node2.addTextNode( "Node 2.1" );
node22 = node2.addTextNode( "Node 2.2" );
node23 = node2.addTextNode( "Node 2.3" );
}
String step2NextDesc = "Next we will collapse the tree using the Java method Tree.collapseAll";
/// Step 3: Collapse the tree
void step3() throws Jaxception
{
collapseAll();
}
String step3NextDesc = "Next we will expand the tree using Tree.expandAll";
/// Step 4: Expand the tree
void step4() throws Jaxception
{
expandAll();
}
String step4NextDesc = "Next we collapse node1 by calling node1.collapse()";
/// Step 5: Collapse node1
void step5() throws Jaxception
{
node1.collapse();
}
String step5NextDesc = "Next: expand node1 by calling node1.expand()";
/// Step 6: Expand node1
void step6() throws Jaxception
{
node1.expand();
}
String step6NextDesc = "Next: Add an editable text node under node1 by calling node1.addEditableTextNode()";
/// Step 7: Add editable text under node 1
TreeNode editableTextNode;
void step7() throws Jaxception
{
editableTextNode = node1.addEditableTextNode( "Editable Node" );
}
String step7NextDesc = "You can edit the new text node by clicking on it. Try it!
Next: Add an editable date node under node2 by calling node2.addEditableDateNode()";
/// Step 8: Add editable date under node 2
TreeNode editableDateNode;
void step8() throws Jaxception
{
editableDateNode = node2.addEditableDateNode( new java.util.Date());
}
String step8NextDesc = "You can edit the new date node by clicking on it. Go ahead and try it!
Next: Delete entire node1 by calling node1.delete()";
/// Step 9: Delete node1
void step9() throws Jaxception
{
node1.delete();
nextStepButton.hide();
}
String step9NextDesc = "This showed some capabilities of the Jaxcent Java API for YUI Trees. Jaxcent can easily encapsulate JavaScript APIs from server-side Java.
Refresh the page to see this demo again.";
// Click handler. In this demo, we just post a message about which node was clicked.
protected void onClick( TreeNode node )
{
try {
msgs.setInnerHTML( "You clicked on node \"" + node.getNodeLabel() + "\"" );
} catch (Jaxception ex) {
ex.printStackTrace();
}
}
}