Amit:
          That can be done by Javascript. ( JSP/Servlet).
           The following sample codes:
<HTML>
<HEAD>
<title> Concerto </title>

</HEAD>
<script LANGUAGE="JavaScript" src="tree.js"></script>
        
<FRAMESET framespacing="0" target="DisplayFrame" cols="200,*"  
onLoad='initializeTree()'> 
 
        <FRAME  name="treeFrame" src="basetree.htm"  target="DisplayFrame"> 
        
        <FRAME name="DisplayFrame" SRC="display.htm" > 
        <noframes>
        </noframes>
                
</FRAMESET> 

</HTML>

  tree.js :

//each node in the tree is an Array with 4+n positions 
//  node[0] is 0/1 when the node is closed/open
//  node[1] is 0/1 when the folder is closed/open
//  node[2] is 1 if the children of the node are documents 
//  node[3] is the name of the folder
//  node[4]...node[4+n] are the n children nodes

function generateTree()
{
var Lev0, Lev1, Lev2, Lev3

        foldersTree = folderNode("GUI Menus")
                Lev0 = appendChild(foldersTree, folderNode("Lerg Tool"))
                        Lev1 = appendChild(Lev0, leafNode("View Lerg Table"))
                                appendChild(Lev1, generateDocEntry(0, "View", 
"LergViewerServlet.html"))
                                
                Lev0 = appendChild(foldersTree, folderNode("TN Management"))
                        Lev1 = appendChild(Lev0, leafNode("Add TNs"))
                               appendChild(Lev1,generateDocEntry(0, "Add", 
"addToMaster.html"))
                                                        
                Lev1 = appendChild(Lev0, leafNode("Update TNs"))
                               appendChild(Lev1, generateDocEntry(0, "Update", 
"changeStatus2.html"))
                               
                                        
                                
                                                        
            Lev0 = appendChild(foldersTree, folderNode("MSAG Tool"))    
                        Lev1 = appendChild(Lev0, leafNode("Fix"))       
                          appendChild(Lev1,generateDocEntry(1, "MSAG Address", 
"marquee"))
                          
            Lev0 = appendChild(foldersTree, folderNode("Order Status Tool"))
                   Lev1 = appendChild(Lev0, leafNode("View"))
                     appendChild(Lev1,generateDocEntry(0, "Order status", 
"OrderEntryServlet.shtml"))
                  
                     
            Lev0 = appendChild(foldersTree, folderNode("5ESS Line Provision Tool"))    
 
                   Lev1 = appendChild(Lev0, leafNode("Install"))
                    appendChild(Lev1,generateDocEntry(0, "Install Line Provisioning", 
"5ESSProvisioning.html"))
                   //Lev1 = appendChild(Lev0, leafNode("Dsiconnect"))
                   //  appendChild(Lev1,generateDocEntry(0, "Disconnect Line 
Provisioning", "5ESSProvisioning.html"))
                   //Lev1 = appendChild(Lev0, leafNode("Status"))
                   //appendChild(Lev1,generateDocEntry(0, "View Status", 
"5ESSProvisioning.html"))      
}

// Auxiliary function to build the node
function folderNode(name)
{
var arrayAux
        arrayAux = new Array
        arrayAux[0] = 0
        arrayAux[1] = 0
        arrayAux[2] = 0
        arrayAux[3] = name
        
        return arrayAux
}

// Auxiliary function to build the node
// The entries in arrayAux[4]..array[length-1] are strings built in generate doc entry
function leafNode(name)
{
var arrayAux
        arrayAux = new Array
        arrayAux[0] = 0
        arrayAux[1] = 0
        arrayAux[2] = 1
        arrayAux[3] = name
        
        return arrayAux
}

//this way the generate tree function becomes simpler and less error prone
function appendChild(parent, child)
{
        parent[parent.length] = child
        return child
}

//these are the last entries in the hierarchy, the local and remote links to html 
documents
function generateDocEntry(icon, docDescription, link)
{
var retString =""

        if (icon==0)
                retString = "<A href='" + link + "' target=DisplayFrame> <img 
src='doc.gif' alt='"+docDescription+"''"
        else
                retString = "<A href='http://"; + link+ "' target=DisplayFrame><img 
src='link.gif' alt='"+docDescription+"''"
            
        retString = retString + " border=0></a><td nowrap><font size=-1 face='Arial, 
Helvetica'>" + docDescription + "</font>"

        return retString

}



//redraws the left frame
function redrawTree()
{
var doc = top.treeFrame.window.document

        doc.clear()
        doc.write("<body bgcolor='white'>")     
        redrawNode(foldersTree, doc, 0, 1, "")
        doc.close()
}

//recursive function over the tree structure called by redrawTree
function redrawNode(foldersNode, doc, level, lastNode, leftSide)
{
var j=0
var i=0

        doc.write("<table border=0 cellspacing=0 cellpadding=0>")
        doc.write("<tr><td valign = middle nowrap>")

        doc.write(leftSide)

        if (level>0)
                if (lastNode)
                {
                        doc.write("<img src='lastnode.gif' width=16 height=22>")
                        leftSide = leftSide + "<img src='blank.gif' width=16 
height=22>" 
                }
                else
                {
                        doc.write("<img src='node.gif' width=16 height=22>")
                        leftSide = leftSide + "<img src='vertline.gif' width=16 
height=22>"
                }

        displayIconAndLabel(foldersNode, doc)
        doc.write("</table>")

        if (foldersNode.length > 4 && foldersNode[0]) //there are sub-nodes and the 
folder is open
        {
                if (!foldersNode[2]) //for folders with folders
                {
                        level=level+1
                        for (i=4; i<foldersNode.length;i++)
                                if (i==foldersNode.length-1)
                                        redrawNode(foldersNode[i], doc, level, 1, 
leftSide)
                                else
                                        redrawNode(foldersNode[i], doc, level, 0, 
leftSide)
                }
                else //for folders with documents
                {
                        for (i=4; i<foldersNode.length;i++)
                        {
                                doc.write("<table border=0 cellspacing=0 cellpadding=0 
valign=center>")
                                doc.write("<tr><td nowrap>")
                                doc.write(leftSide)
                                if (i==foldersNode.length - 1)
                                        doc.write("<img src='lastnode.gif' width=16 
height=22>")
                                else
                                        doc.write("<img src='node.gif' width=16 
height=22>")
                                doc.write(foldersNode[i])
                                doc.write("</table>")
                        }
                }
        }
}

//builds the html code to display a folder and its label
function displayIconAndLabel(foldersNode, doc)
{
        doc.write("<A href='javascript:top.openBranch(\"" + foldersNode[3] + 
"\")'><img src=")
        if (foldersNode[1])
                doc.write("openfolder.gif width=24 height=22 border=noborder></a>")
        else
                doc.write("closedfolder.gif width=24 height=22 border=noborder></a>")
        doc.write("<td valign=middle align=left nowrap>")
        doc.write("<font size=-1 face='Arial, Helvetica'>"+foldersNode[3]+"</font>")
}


// when a parent is close all the children are close,too.
function closeFolders(foldersNode)
{
var i=0

        if (!foldersNode[2])ron becomes simpler and less error pron
        {
                for (i=4; i< foldersNode.length; i++)
                        closeFolders(foldersNode[i])

        }
        foldersNode[0] = 0
        foldersNode[1] = 0
}

//recursive,called by openbranch "javascript is powerful"
function clickOnFolderRec(foldersNode, folderName)
{
var i=0

        if (foldersNode[3] == folderName)
        {
                if (foldersNode[0])
                        closeFolders(foldersNode)
                else
                {
                        foldersNode[0] = 1
                        foldersNode[1] = 1
                }
        }
        else
        {
       if (!foldersNode[2])
                for (i=4; i< foldersNode.length; i++)
                          clickOnFolderRec(foldersNode[i], folderName)
        }
}


// 
// Event handlers
//
function openBranch(branchName)
{
        clickOnFolderRec(foldersTree, branchName)
        if (branchName=="Start folder" && foldersTree[0]==0)
                top.folderFrame.location="basefolder.htm"
        timeOutId = setTimeout("redrawTree()",100)
}

//called after this html file is loaded
function initializeTree()
{
        generateTree()
        redrawTree()
}

var foldersTree = 0
var timeOutId = 0
generateTree() //IE Only


  I hope these will you.

Albert Pi
Corp IS System Delivery
516-803-3762


>>> Amit Gupta <[EMAIL PROTECTED]> 11/18/02 09:04AM >>>
Hi,
I want to code for tree directory structure like windows explorer. Anybody know how to 
code tree structure (like Swing tree), that can be supported in JSP/EJB ? If anybody 
know if these can be done in some other way like html please let me know code or link.
Thanks
Amit

===========================================================================
To unsubscribe, send email to [EMAIL PROTECTED] and include in the body
of the message "signoff EJB-INTEREST".  For general help, send email to
[EMAIL PROTECTED] and include in the body of the message "help".

==========================================================================To 
unsubscribe, send email to [EMAIL PROTECTED] and include in the body
of the message "signoff EJB-INTEREST".  For general help, send email to
[EMAIL PROTECTED] and include in the body of the message "help".

Reply via email to