⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 generatetree.java

📁 OPIAM stands for Open Identity and Access Management. This Suite will provide modules for user & rig
💻 JAVA
字号:
/*
 * OPIAM Suite
 *
 * Distributable under LGPL license.
 * See terms of license at gnu.org.
 */

package opiam.admin.applis.demo.utils;

import opiam.admin.faare.service.services.views.JBTreeNode;

import org.apache.log4j.Logger;

import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.TreeNode;

//DW/2606: replace Date with Calendar
import java.util.GregorianCalendar;


/**
 * This class is used to generate an HTML tree for a view.
 * This class is a specification of the "opiam.admin.faare.struts.utils.GenTree" class.
 *
 */
public class GenerateTree
{
    /** Instance of logger. */
    private static Logger _logger = Logger.getLogger(GenerateTree.class);

    /** Current instance. */
    private static GenerateTree _instance = new GenerateTree();

    /** Image for expanded node, last son. */
    private String menuCornerMinusUri =
        "/images/menu_corner_minus.gif";

    /** Image for unexpanded node, last son.  */
    private String menuCornerPlusUri = "/images/menu_corner_plus.gif";

    /** Image for or expanded node, middle son.  */
    private String menuTeeMinusUri = "/images/menu_tee_minus.gif";

    /** Image for or unexpanded node, middle son. */
    private String menuTeePlusUri = "/images/menu_tee_plus.gif";

    /** Image for vertical line in tree. */
    private String menuBarUri = "/images/menu_bar.gif";

    /** Image for space in tree. */
    private String menuPixelUri = "/images/menu_pixel.gif";

    /** Image for a node with no children, last son. */
    private String menuCornerUri = "/images/menu_corner.gif";

    /** Image for a node with no children, middle son. */
    private String menuTeeUri = "/images/menu_tee.gif";

    /** Default CSS tag. */
    private String cssClassTag = "";

    /** Help label. */
    private String expandCollapseLabel = "Expand/Collapse";

    /**
     * Sets image for expanded node, last son.
     *
     * @param anUri image URI
     */
    public void setMenuCornerMinusUri(String anUri)
    {
        menuCornerMinusUri = anUri;
    }

    /**
     * Sets image for unexpanded node, last son.
     *
     * @param anUri image URI
     */
    public void setMenuCornerPlusUri(String anUri)
    {
        menuCornerPlusUri = anUri;
    }

    /**
     * Sets image for or expanded node, middle son.
     *
     * @param anUri image URI
     */
    public void setMenuTeeMinusUri(String anUri)
    {
        menuTeeMinusUri = anUri;
    }

    /**
     * Sets image for or unexpanded node, middle son.
     *
     * @param anUri image URI
     */
    public void setMenuTeePlusUri(String anUri)
    {
        menuTeePlusUri = anUri;
    }

    /**
     * Sets image for vertical line in tree.
     *
     * @param anUri image URI
     */
    public void setMenuBarUri(String anUri)
    {
        menuBarUri = anUri;
    }

    /**
     * Sets image for space in tree.
     *
     * @param anUri image URI
     */
    public void setMenuPixelUri(String anUri)
    {
        menuPixelUri = anUri;
    }

    /**
     * Sets image for a node with no children, last son.
     *
     * @param anUri image URI
     */
    public void setMenuCornerUri(String anUri)
    {
        menuCornerUri = anUri;
    }

    /**
     * Sets image for a node with no children, middle son.
     *
     * @param anUri image URI
     */
    public void setMenuTeeUri(String anUri)
    {
        menuTeeUri = anUri;
    }

    /**
     * Sets expand/collapse help label.
     *
     * @param aLabel label
     */
    public void setExpandCollapseLabel(String aLabel)
    {
        expandCollapseLabel = aLabel;
    }

    /**
     * Sets CSS class tag.
     *
     * @param aClassTag class tag
     */
    public void setCssClassTag(String aClassTag)
    {
        cssClassTag = aClassTag;
    }

    /**
     * Generates part of the tree corresponding to given node.
     *
     * @param node node
     * @param nodeId current node identifier
     *
     * @return HTML code
     */
    private StringBuffer processNode(DefaultMutableTreeNode node, String nodeId)
    {
        StringBuffer result = new StringBuffer();
        JBTreeNode data = (JBTreeNode) node.getUserObject();
        int level = node.getLevel();
        TreeNode[] parents = node.getPath();

        result.append("<TR valign='top'><TD nowrap>\n");

        result.append("<IMG src='" + menuPixelUri +
                      "' align='left' border='0' vspace='0' hspace='0' width='18' height='18'>\n"
                     );

        for (int i = 2; i <= level; i++)
        {
            if (((DefaultMutableTreeNode) parents[i - 2]).getLastChild() != parents[i -
                    1]
               )
            {
                result.append("<IMG src='" + menuBarUri +
                              "' align='left' border='0' vspace='0' hspace='0' width='18' height='18'>\n"
                             );
            }
            else
            {
                result.append("<IMG src='" + menuPixelUri +
                              "' align='left' border='0' vspace='0' hspace='0' width='18' height='18'>\n"
                             );
            }
        }

        boolean last = true;
        boolean hasChildren =
            ((node.getChildCount() != 0) &&
            (data.getState() != JBTreeNode.CLOSE));
        boolean empty = (data.getState() == JBTreeNode.NOCHILDREN);

        if (!empty && (data.getExpandUrl() != null))
        {
            result.append("<A href='" + data.getExpandUrl() + "&cc=" +
                          (new GregorianCalendar()).get(GregorianCalendar.SECOND) +
                          "#a" + data.getId() +
                          "' onmouseover='window.status=\"" +
                          expandCollapseLabel +
                          "\";return true;' onmouseout='window.status=\"\";return true;'>\n"
                         );
        }

        if (node.getParent() != null)
        {
            last =
                (((DefaultMutableTreeNode) node.getParent()).getLastChild() == node)
                ? true : false;
        }

        if (last && hasChildren)
        {
            result.append("<IMG src='" + menuCornerMinusUri +
                          "' align='left' border='0' vspace='0' hspace='0' width='18' height='18'>\n"
                         );
        }
        else if (!last && hasChildren)
        {
            result.append("<IMG src='" + menuTeeMinusUri +
                          "' align='left' border='0' vspace='0' hspace='0' width='18' height='18'>\n"
                         );
        }
        else if (last && !hasChildren && !empty)
        {
            result.append("<IMG src='" + menuCornerPlusUri +
                          "' align='left' border='0' vspace='0' hspace='0' width='18' height='18'>\n"
                         );
        }
        else if (!last && !hasChildren && !empty)
        {
            result.append("<IMG src='" + menuTeePlusUri +
                          "' align='left' border='0' vspace='0' hspace='0' width='18' height='18'>\n"
                         );
        }
        else if (last && !hasChildren && empty)
        {
            result.append("<IMG src='" + menuCornerUri +
                          "' align='left' border='0' vspace='0' hspace='0' width='18' height='18'>\n"
                         );
        }
        else if (!last && !hasChildren && empty)
        {
            result.append("<IMG src='" + menuTeeUri +
                          "' align='left' border='0' vspace='0' hspace='0' width='18' height='18'>\n"
                         );
        }

        if (!empty && (data.getExpandUrl() != null))
        {
            result.append("</A>\n");
        }

        //Rajout

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -