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

📄 gentree.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.faare.struts.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.
 *
 */
public class GenTree
{
    /** Instance of logger. */
    private static Logger _logger = Logger.getLogger(GenTree.class);

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

    //NOTE: les chemins des images devront se trouver dans un fichier properties

    /** 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 + -