`

java 树形结构设计(六) Struts + Hibernate

    博客分类:
  • JAVA
阅读更多

step 10、构造 树形结构类

java 代码
  1. /**  
  2.  * 地理信息数结构  
  3.  */  
  4. package com.fzfx88.common.tree;   
  5.   
  6. import java.util.Vector;   
  7.   
  8. /**  
  9.  * @author huguoqing  
  10.  *  
  11.  */  
  12. public class GeographyTreeItem {   
  13.   
  14.     public String strTitle;   
  15.     public String strValue;   
  16.     public String strText;   
  17.     public boolean bDisplayChildren;   
  18.     public String strImg;   
  19.     public boolean bSelected;   
  20.     public boolean bSelectable;   
  21.     public boolean bLoadChildren;   
  22.     public String strChildURL;   
  23.     public Vector vChildren;   
  24.     public GeographyTreeItem parent;   
  25.   
  26.     public GeographyTreeItem(String strValue, String strText, String strTitle)   
  27.     {   
  28.         bDisplayChildren = false;   
  29.         strImg = "";   
  30.         bSelected = false;   
  31.         bSelectable = true;   
  32.         bLoadChildren = true;   
  33.         strChildURL = "";   
  34.         vChildren = new Vector();   
  35.         parent = null;   
  36.         this.strTitle = strTitle;   
  37.         this.strValue = strValue;   
  38.         this.strText = strText;   
  39.     }   
  40.   
  41.     public GeographyTreeItem(String strValue, String strText)   
  42.     {   
  43.         this(strValue, strText, strValue);   
  44.     }   
  45.   
  46.     public GeographyTreeItem(String strValue)   
  47.     {   
  48.         this(strValue, strValue, strValue);   
  49.     }   
  50.   
  51.     public GeographyTreeItem()   
  52.     {   
  53.         this("""""");   
  54.     }   
  55.   
  56.     public void setImage(String strImg)   
  57.     {   
  58.         this.strImg = strImg;   
  59.     }   
  60.   
  61.     public void setDisplayChildren(boolean bDisplay)   
  62.     {   
  63.         bDisplayChildren = bDisplay;   
  64.     }   
  65.   
  66.     public boolean isDisplayChildren()   
  67.     {   
  68.         return bDisplayChildren;   
  69.     }   
  70.   
  71.     public void setSelected(boolean bSelected)   
  72.     {   
  73.         this.bSelected = bSelected;   
  74.     }   
  75.   
  76.     public boolean isSelected()   
  77.     {   
  78.         return bSelected;   
  79.     }   
  80.   
  81.     public void setSelectable(boolean selectable)   
  82.     {   
  83.         bSelectable = selectable;   
  84.     }   
  85.   
  86.     public boolean isSelectable()   
  87.     {   
  88.         return bSelectable;   
  89.     }   
  90.   
  91.     public void addChild(GeographyTreeItem item)   
  92.     {   
  93.         vChildren.addElement(item);   
  94.     }   
  95.   
  96.     public int getCount()   
  97.     {   
  98.         return vChildren.size();   
  99.     }   
  100.   
  101.     public GeographyTreeItem getChild(int index)   
  102.     {   
  103.         if(index >= getCount())   
  104.         {   
  105.             return null;   
  106.         } else  
  107.         {   
  108.             GeographyTreeItem item = (GeographyTreeItem)vChildren.get(index);   
  109.             return item;   
  110.         }   
  111.     }   
  112.   
  113.     public void setLoadChildren(boolean bLoad)   
  114.     {   
  115.         bLoadChildren = bLoad;   
  116.     }   
  117.   
  118.     public boolean isLoadChildren()   
  119.     {   
  120.         return bLoadChildren;   
  121.     }   
  122.   
  123.     public void setURL(String strURL)   
  124.     {   
  125.         strChildURL = strURL;   
  126.     }   
  127.   
  128.     public String getURL()   
  129.     {   
  130.         return strChildURL;   
  131.     }   
  132.   
  133.     public String getHTML(String strPath, boolean bLine)   
  134.     {   
  135.         StringBuffer stHTML = new StringBuffer(1000);   
  136.         if(strText != null)   
  137.         {   
  138.             int nlength = getRealLength(strText);   
  139.             nlength = nlength * 12 + 10;   
  140.             stHTML.append("《TABLE  valign=top width=" + nlength + " cellSpacing=0 cellPadding=0 border=0》\r\n");   
  141.             stHTML.append("  《TR  valign=top  》\r\n");   
  142.             stHTML.append("    《TD vAlign=top width=5》" + strImg + "《/TD》\r\n");   
  143.             stHTML.append("    《TD valign=top class=treeview_ob_td");   
  144.             if(bSelectable)   
  145.                 stHTML.append(" onclick=treeview_ob_ft(this) ondoubleclick=treeview_ob_modify(this)");   
  146.             stHTML.append("  title='" + strTitle + "' value='" + strValue + "' " + (bSelected ? "style=\"background-Color:#ccddee;\"" : "") + "》" + strText + "《/TD》\r\n");   
  147.             stHTML.append("  《/TR》\r\n");   
  148.             stHTML.append("《/TABLE》\r\n");   
  149.         }   
  150.         stHTML.append(getChildHTML(strPath, bLine));   
  151.         return stHTML.toString();   
  152.     }   
  153.   
  154.     public String getChildHTML(String strPath, boolean bLine)   
  155.     {   
  156.         StringBuffer stHTML = new StringBuffer();   
  157.         String strVertical = "";   
  158.         String strVertDisp = "";   
  159.         if(bLine)   
  160.             strVertical = " style=\、"BACKGROUND-IMAGE: url(" + strPath + "vertical.gif)\" ";   
  161.         if(getCount() > 0)   
  162.             if(bLoadChildren || bDisplayChildren)   
  163.             {   
  164.                 stHTML.append("《TABLE valign=top style=\"DISPLAY: " + (bDisplayChildren ? "block" : "none") + "\" cellSpacing=0 cellPadding=0 border=0》\r\n");   
  165.                 for(int i = 0; i < vChildren.size(); i++)   
  166.                 {   
  167.                     GeographyTreeItem item = getChild(i);   
  168.                     strVertDisp = strVertical;   
  169.                     String strImg_tmp = "";   
  170.                     String strURL = "";   
  171.                     if(!item.isLoadChildren())   
  172.                         strURL = item.getURL();   
  173.                     if(item.getCount() > 0)   
  174.                     {   
  175.                         if(item.isDisplayChildren())   
  176.                         {   
  177.                             if(i < vChildren.size() - 1)   
  178.                             {   
  179.                                 strImg_tmp = "《IMG class=treeview_ob_ic onclick=\"treeview_ob_wk(this, '" + strURL + "')\" src=\"" + strPath + "minus.gif\" 》";   
  180.                             } else  
  181.                             {   
  182.                                 strImg_tmp = "《IMG class=treeview_ob_ic onclick=\"treeview_ob_wk(this, '" + strURL + "')\" src=\"" + strPath + "minus_l.gif\" 》";   
  183.                                 strVertDisp = "";   
  184.                             }   
  185.                         } else  
  186.                         if(i < vChildren.size() - 1)   
  187.                         {   
  188.                             strImg_tmp = "《IMG class=treeview_ob_ic onclick=\"treeview_ob_wk(this, '" + strURL + "')\" src=\"" + strPath + "plusik.gif\" 》";   
  189.                         } else  
  190.                         {   
  191.                             strImg_tmp = "《IMG class=treeview_ob_ic onclick=\"treeview_ob_wk(this, '" + strURL + "')\" src=\"" + strPath + "plusik_l.gif\" 》";   
  192.                             strVertDisp = "";   
  193.                         }   
  194.                     } else  
  195.                     {   
  196.                         if(i < vChildren.size() - 1)   
  197.                             strImg_tmp = "《IMG class=treeview_ob_ic src=\/"" + strPath + "hr.gif\" 》";   
  198.                         else  
  199.                             strImg_tmp = "《IMG class=treeview_ob_ic src=\/"" + strPath + "hr_l.gif\" 》";   
  200.                         strVertDisp = "";   
  201.                     }   
  202.                     stHTML.append("  《TR 》\/r\/n");   
  203.                     stHTML.append("    《TD class=treeview_ob_ic " + strVertDisp + " width=1 》 \/r\/n");   
  204.                     stHTML.append("      ").append(strImg_tmp);   
  205.                     stHTML.append("《/TD 》\/r\/n");   
  206.                     stHTML.append("    《TD 》\/r\/n");   
  207.                     stHTML.append(item.getHTML(strPath, bLine));   
  208.                     stHTML.append("    《/TD 》\/r\/n");   
  209.                     stHTML.append("  《/TR 》\/r\/n");   
  210.                 }   
  211.   
  212.                 stHTML.append("《/TABLE》\/r\/n");   
  213.             } else  
  214.             {   
  215.                 stHTML.append("《TABLE style=\"DISPLAY: " + (bDisplayChildren ? "block" : "none") + "\" cellSpacing=0 cellPadding=0 border=0》\r\n");   
  216.                 stHTML.append("  《TR》\/r\/n");   
  217.                 stHTML.append("    《TD class=treeview_ob_td 》正读取数据,请稍候 .../TD》\/r\/n");   
  218.                 stHTML.append("  《/TR》\/r\/n");   
  219.                 stHTML.append("《/TABLE》\/r\/n");   
  220.             }   
  221.         return stHTML.toString();   
  222.     }   
  223.   
  224.     protected int getRealLength(String strText)   
  225.     {   
  226.         int nCount = 0;   
  227.         int nNow = -1;   
  228.         int nLength = strText.length();   
  229.         do  
  230.         {   
  231.             int nStart = strText.indexOf(60, nNow);   
  232.             if(nStart == -1)   
  233.             {   
  234.                 nCount += nLength - nNow - 1;   
  235.                 break;   
  236.             }   
  237.             nCount += nStart - nNow - 1;   
  238.             int nEnd = strText.indexOf(62, nStart);   
  239.             if(nEnd == -1)   
  240.             {   
  241.                 nCount += nLength - nStart - 1;   
  242.                 break;   
  243.             }   
  244.             nNow = nEnd;   
  245.             nCount += 2;   
  246.         } while(true);   
  247.         return nCount;   
  248.     }   
  249.   
  250. }   
 
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics