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

📄 htmltreerenderer.java

📁 一个使用struts+hibernate+spring开发的完的网站源代码。
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
        {            HtmlTreeNode child = (HtmlTreeNode) it.next();            if (!child.isRendered())            {                continue;            }            HtmlRendererUtils.writePrettyLineSeparator(facesContext);            writer.startElement(HTML.TR_ELEM, null);            if (rowClassIndex < rowClassesCount)            {                writer.writeAttribute(HTML.CLASS_ATTR, rowClassesArray[rowClassIndex], null);            }            if (rowClassesCount > 0)            {                rowClassIndex++;                rowClassIndex = rowClassIndex % rowClassesCount;            }            if (null != tree.getVar())            {                facesContext.getExternalContext().getSessionMap().put(tree.getVar(),                        ((TreeNode) child.getUserObject()).getUserObject());            }            List componentChildren = tree.getChildren();            if ((null != componentChildren) && (componentChildren.size() > 0))            {                for (int j = 0, size = tree.getChildCount(); j < size; j++)                {                    UIComponent componentChild = (UIComponent) componentChildren.get(j);                    if ((componentChild.getFamily().equals(UIColumn.COMPONENT_FAMILY))                            && ((UIColumn) componentChild).isRendered())                    {                        writer.startElement(HTML.TD_ELEM, tree);                        if (columnClassIndex < columnClassesCount)                        {                            writer.writeAttribute(HTML.CLASS_ATTR, columnClassesArray[columnClassIndex], null);                        }                        if (columnClassesCount > 0)                        {                            columnClassIndex++;                            columnClassIndex = columnClassIndex % columnClassesCount;                        }                        RendererUtils.renderChild(facesContext, componentChild);                        writer.endElement(HTML.TD_ELEM);                    }                    else if ((componentChild.getFamily().equals(HtmlTreeColumn.COMPONENT_FAMILY))                            && ((HtmlTreeColumn) componentChild).isRendered())                    {                        renderTreeColumnChild(facesContext, writer, componentChild, tree, child, maxLevel, iconProvider);                    }                }            }            else            {                renderTreeColumnChild(facesContext, writer, null, tree, child, maxLevel, iconProvider);            }            writer.endElement(HTML.TR_ELEM);            if (child.getChildCount() > 0)            {                renderChildren(facesContext, writer, tree, child.getChildren(), maxLevel, iconProvider, rowClassIndex);                if (rowClassesCount > 0)                {                    rowClassIndex += (child.getChildCount() % rowClassesCount);                    rowClassIndex = rowClassIndex % rowClassesCount;                }            }        }    }    /**     * <p>     * Render the column where the tree is displayed.     * </p>     *     * @param facesContext The facesContext.     * @param writer The writer.     * @param component The component that will contain the tree. Null for     *            default tree or {@link HtmlTreeColumn}for table rendering.     * @param tree The tree,     * @param child The tree node child.     * @param maxLevel The max number of levels.     * @param iconProvider The iconProvider.     * @throws IOException Throws IOException.     */    protected void renderTreeColumnChild(FacesContext facesContext, ResponseWriter writer, UIComponent component,            HtmlTree tree, HtmlTreeNode child, int maxLevel, IconProvider iconProvider) throws IOException    {        String iconClass = tree.getIconClass();        int[] layout = child.getLayout();        // tree lines        for (int i = 0; i < layout.length - 1; i++)        {            int state = layout[i];            writer.startElement(HTML.TD_ELEM, null);            String url = getLayoutImage(tree, state);            if ((url != null) && (url.length() > 0))            {                //writer.startElement(HTML.IMG_ELEM, child);                //String src;                //if (url.startsWith(HTML.HREF_PATH_SEPARATOR))                //{                //    String path = facesContext.getExternalContext().getRequestContextPath();                //    src = path + url;                //}                //else                //{                //    src = url;                //}                //Encode URL                //Although this is an url url, encodeURL is no nonsense,                // because the                //actual url url could also be a dynamic servlet request:                //src = facesContext.getExternalContext().encodeResourceURL(src);                //writer.writeAttribute(HTML.SRC_ATTR, src, null);                //writer.writeAttribute(HTML.BORDER_ATTR, ZERO, null);                //HtmlRendererUtils.renderHTMLAttributes(writer, child, HTML.IMG_PASSTHROUGH_ATTRIBUTES);                //writer.endElement(HTML.IMG_ELEM);                writeImageElement(url, facesContext, writer, child);            }            writer.endElement(HTML.TD_ELEM);        }        // command link        writer.startElement(HTML.TD_ELEM, null);        int state = layout[layout.length - 1];        String url = getLayoutImage(tree, state);        if (state == HtmlTreeNode.CHILD || state == HtmlTreeNode.CHILD_FIRST || state == HtmlTreeNode.CHILD_LAST)        {            // no action, just img            writeImageElement(url, facesContext, writer, child);        }        else        {            HtmlTreeImageCommandLink expandCollapse = (HtmlTreeImageCommandLink) child                    .getExpandCollapseCommand(facesContext);            expandCollapse.setImage(getLayoutImage(tree, layout[layout.length - 1]));            expandCollapse.encodeBegin(facesContext);            expandCollapse.encodeEnd(facesContext);        }        writer.endElement(HTML.TD_ELEM);        int labelColSpan = maxLevel - child.getLevel() + 1;        // node icon        if (iconProvider != null)        {            url = iconProvider.getIconUrl(child.getUserObject(), child.getChildCount(), child.isLeaf(facesContext));        }        else        {            if (!child.isLeaf(facesContext))            {                // todo: icon provider                url = HtmlTree.getDefaultImagePath( DEFAULT_IMAGE_ICON_FOLDER );            }            else            {                url = null;            }        }        if ((url != null) && (url.length() > 0))        {            writer.startElement(HTML.TD_ELEM, null);            if (iconClass != null)            {                writer.writeAttribute(HTML.CLASS_ATTR, iconClass, null);            }            writeImageElement(url, facesContext, writer, child);            writer.endElement(HTML.TD_ELEM);        }        else        {            // no icon, so label has more room            labelColSpan++;        }        // node label        writer.startElement(HTML.TD_ELEM, null);        writer.writeAttribute(HTML.COLSPAN_ATTR, new Integer(labelColSpan), null);        if (child.isSelected() && tree.getSelectedNodeClass() != null)        {            writer.writeAttribute(HTML.CLASS_ATTR, tree.getSelectedNodeClass(), null);        }        else if (!child.isSelected() && tree.getNodeClass() != null)        {            writer.writeAttribute(HTML.CLASS_ATTR, tree.getNodeClass(), null);        }        List componentChildren = null;        if (null != component)        {            componentChildren = component.getChildren();        }        if ((null != componentChildren) && (componentChildren.size() > 0))        {            for (int k = 0; k < componentChildren.size(); k++)            {                UIComponent componentChild = (UIComponent) componentChildren.get(k);                RendererUtils.renderChild(facesContext, componentChild);            }        }        else        {            child.encodeBegin(facesContext);            child.encodeEnd(facesContext);        }        writer.endElement(HTML.TD_ELEM);    }    private void writeImageElement(String url, FacesContext facesContext, ResponseWriter writer, HtmlTreeNode child)            throws IOException    {        writer.startElement(HTML.IMG_ELEM, child);        String src = facesContext.getApplication().getViewHandler().getResourceURL(facesContext, url);        //        if (url.startsWith(HTML.HREF_PATH_SEPARATOR))        //        {        //            String path =        // facesContext.getExternalContext().getRequestContextPath();        //            src = path + url;        //        } else        //        {        //            src = url;        //        }        //        //Encode URL        //        src = facesContext.getExternalContext().encodeResourceURL(src);        writer.writeAttribute(HTML.SRC_ATTR, src, null);        writer.writeAttribute(HTML.BORDER_ATTR, ZERO, null);        HtmlRendererUtils.renderHTMLAttributes(writer, child, HTML.IMG_PASSTHROUGH_ATTRIBUTES);        writer.endElement(HTML.IMG_ELEM);    }    protected String getLayoutImage(HtmlTree tree, int state)    {        switch (state)        {        case HtmlTreeNode.OPEN:            return tree.getIconNodeOpenMiddle();        case HtmlTreeNode.OPEN_FIRST:            return tree.getIconNodeOpenFirst();        case HtmlTreeNode.OPEN_LAST:            return tree.getIconNodeOpenLast();        case HtmlTreeNode.OPEN_SINGLE:            return tree.getIconNodeOpen();        case HtmlTreeNode.CLOSED:            return tree.getIconNodeCloseMiddle();        case HtmlTreeNode.CLOSED_FIRST:            return tree.getIconNodeCloseFirst();        case HtmlTreeNode.CLOSED_LAST:            return tree.getIconNodeCloseLast();        case HtmlTreeNode.CLOSED_SINGLE:            return tree.getIconNodeClose();        case HtmlTreeNode.CHILD:            return tree.getIconChildMiddle();        case HtmlTreeNode.CHILD_FIRST:            return tree.getIconChildFirst();        case HtmlTreeNode.CHILD_LAST:            return tree.getIconChildLast();        case HtmlTreeNode.LINE:            return tree.getIconLine();        case HtmlTreeNode.EMPTY:            return tree.getIconNoline();        default:            return tree.getIconNoline();        }    }}

⌨️ 快捷键说明

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