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

📄 htmltreerenderer.java

📁 一个使用struts+hibernate+spring开发的完的网站源代码。
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/* * Copyright 2004 The Apache Software Foundation. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * *      http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */package org.apache.myfaces.custom.tree.renderkit.html;import org.apache.myfaces.custom.tree.HtmlTree;import org.apache.myfaces.custom.tree.HtmlTreeColumn;import org.apache.myfaces.custom.tree.HtmlTreeImageCommandLink;import org.apache.myfaces.custom.tree.HtmlTreeNode;import org.apache.myfaces.custom.tree.IconProvider;import org.apache.myfaces.custom.tree.TreeNode;import org.apache.myfaces.renderkit.RendererUtils;import org.apache.myfaces.renderkit.html.HTML;import org.apache.myfaces.renderkit.html.HtmlRendererUtils;import org.apache.myfaces.renderkit.html.HtmlTableRendererBase;import org.apache.myfaces.util.ArrayUtils;import org.apache.myfaces.util.StringUtils;import javax.faces.component.UIColumn;import javax.faces.component.UIComponent;import javax.faces.context.FacesContext;import javax.faces.context.ResponseWriter;import java.io.IOException;import java.util.ArrayList;import java.util.Iterator;import java.util.List;/** * @author <a href="mailto:oliver@rossmueller.com">Oliver Rossmueller </a> * @version $Revision: 1.16 $ $Date: 2005/02/11 00:54:02 $ * *          $Log: HtmlTreeRenderer.java,v $ *          Revision 1.16  2005/02/11 00:54:02  svieujot *          Revert changes commited to the wrong branch. * *          Revision 1.14  2004/12/24 14:13:16  svieujot *          Upgrade the tree component to use the Extensions filter. * *          Revision 1.13  2004/12/22 17:52:54  grantsmith *          Jira MYFACES-48: Tree Table Component Fixes & Tree Checkbox Support * *          Revision 1.12  2004/11/26 12:46:38  oros *          cleanup: removed unused iconChild attribute * *          Revision 1.11  2004/11/26 12:14:09  oros *          MYFACES-8: applied tree table patch by David Le Strat * * */public class HtmlTreeRenderer extends HtmlTableRendererBase{    private static final Integer ZERO = new Integer(0);        private static final String DEFAULT_IMAGE_ICON_FOLDER = "images/folder.gif";    public boolean getRendersChildren()    {        return true;    }    public void encodeBegin(FacesContext facesContext, UIComponent uiComponent) throws IOException    {        // Rendering occurs in encodeEnd.    }    public void encodeChildren(FacesContext facesContext, UIComponent component) throws IOException    {        // children are rendered in encodeEnd    }    public void encodeEnd(FacesContext facesContext, UIComponent component) throws IOException    {        RendererUtils.checkParamValidity(facesContext, component, HtmlTree.class);        ResponseWriter writer = facesContext.getResponseWriter();        HtmlTree tree = (HtmlTree) component;        HtmlRendererUtils.writePrettyLineSeparator(facesContext);        writer.startElement(HTML.TABLE_ELEM, null);        HtmlRendererUtils.renderHTMLAttributes(writer, tree, HTML.TABLE_PASSTHROUGH_ATTRIBUTES);        writer.writeAttribute(HTML.BORDER_ATTR, ZERO, null);        writer.writeAttribute(HTML.CELLSPACING_ATTR, ZERO, null);        writer.writeAttribute(HTML.CELLPADDING_ATTR, ZERO, null);        int maxLevel = tree.getRootNode().getMaxChildLevel();        // Create initial children list from root node facet        ArrayList childNodes = new ArrayList(1);        childNodes.add(tree.getRootNode());        // Render header.        renderFacet(facesContext, writer, component, true, maxLevel);        // Render children.        renderChildren(facesContext, writer, tree, childNodes, maxLevel, tree.getIconProvider());        // Render footer.        renderFacet(facesContext, writer, component, false, maxLevel);        writer.endElement(HTML.TABLE_ELEM);    }    /**     * <p>     * Overrides super renderFacet to render the {@link HtmlTree} facets.     * <p>     *     * @param facesContext The facesContext     * @param writer The writer.     * @param component The component.     * @param header Whether there is a header.     * @param maxLevel The max level for the rendered tree.     * @throws IOException Throws IOException.     */    protected void renderFacet(FacesContext facesContext, ResponseWriter writer, UIComponent component, boolean header, int maxLevel)            throws IOException    {        int colspan = 0;        boolean hasColumnFacet = false;        for (Iterator it = component.getChildren().iterator(); it.hasNext();)        {            UIComponent uiComponent = (UIComponent) it.next();            if ((uiComponent.getFamily().equals(UIColumn.COMPONENT_FAMILY))                    && ((UIColumn) uiComponent).isRendered())            {                colspan++;                if (!hasColumnFacet)                {                    hasColumnFacet = header ? ((UIColumn) uiComponent).getHeader() != null : ((UIColumn) uiComponent)                            .getFooter() != null;                }            }            else if ((uiComponent.getFamily().equals(HtmlTreeColumn.COMPONENT_FAMILY))                    && ((HtmlTreeColumn) uiComponent).isRendered())            {                colspan += maxLevel + 3;                if (!hasColumnFacet)                {                    hasColumnFacet = header ? ((UIColumn) uiComponent).getHeader() != null : ((UIColumn) uiComponent)                            .getFooter() != null;                }            }        }        UIComponent facet = header ? (UIComponent) component.getFacets().get(HEADER_FACET_NAME)                : (UIComponent) component.getFacets().get(FOOTER_FACET_NAME);        if (facet != null || hasColumnFacet)        {            // Header or Footer present            String elemName = header ? HTML.THEAD_ELEM : HTML.TFOOT_ELEM;            HtmlRendererUtils.writePrettyLineSeparator(facesContext);            writer.startElement(elemName, component);            if (header)            {                String headerStyleClass = getHeaderClass(component);                if (facet != null)                    renderTableHeaderRow(facesContext, writer, component, facet, headerStyleClass, colspan);                if (hasColumnFacet)                    renderColumnHeaderRow(facesContext, writer, component, headerStyleClass, maxLevel);            }            else            {                String footerStyleClass = getFooterClass(component);                if (hasColumnFacet)                    renderColumnFooterRow(facesContext, writer, component, footerStyleClass, maxLevel);                if (facet != null)                    renderTableFooterRow(facesContext, writer, component, facet, footerStyleClass, colspan);            }            writer.endElement(elemName);        }    }    protected void renderColumnHeaderRow(FacesContext facesContext, ResponseWriter writer, UIComponent component,            String headerStyleClass, int maxLevel) throws IOException    {        renderColumnHeaderOrFooterRow(facesContext, writer, component, headerStyleClass, true, maxLevel);    }    protected void renderColumnFooterRow(FacesContext facesContext, ResponseWriter writer, UIComponent component,            String footerStyleClass, int maxLevel) throws IOException    {        renderColumnHeaderOrFooterRow(facesContext, writer, component, footerStyleClass, false, maxLevel);    }    private void renderColumnHeaderOrFooterRow(FacesContext facesContext, ResponseWriter writer, UIComponent component,            String styleClass, boolean header, int maxLevel) throws IOException    {        HtmlRendererUtils.writePrettyLineSeparator(facesContext);        writer.startElement(HTML.TR_ELEM, component);        for (Iterator it = component.getChildren().iterator(); it.hasNext();)        {            UIComponent uiComponent = (UIComponent) it.next();            if ((uiComponent.getFamily().equals(UIColumn.COMPONENT_FAMILY))                    && ((UIColumn) uiComponent).isRendered())            {                if (header)                {                    renderColumnHeaderCell(facesContext, writer, (UIColumn) uiComponent, styleClass, 0);                }                else                {                    renderColumnFooterCell(facesContext, writer, (UIColumn) uiComponent, styleClass, 0);                }            }            else if ((uiComponent.getFamily().equals(HtmlTreeColumn.COMPONENT_FAMILY))                    && ((HtmlTreeColumn) uiComponent).isRendered())            {                if (header)                {                    renderColumnHeaderCell(facesContext, writer, (UIColumn) uiComponent, styleClass, maxLevel + 3);                }                else                {                    renderColumnFooterCell(facesContext, writer, (UIColumn) uiComponent, styleClass, maxLevel + 3);                }            }        }        writer.endElement(HTML.TR_ELEM);    }    /**     * <p>     * Renders the children.     * </p>     *     * @param facesContext The facesContext.     * @param writer The writer.     * @param tree The tree component.     * @param children The children to render.     * @param maxLevel The maximum level.     * @param iconProvider The icon provider.     * @throws IOException Throws an IOException.     */    protected void renderChildren(FacesContext facesContext, ResponseWriter writer, HtmlTree tree, List children,            int maxLevel, IconProvider iconProvider) throws IOException    {        renderChildren(facesContext, writer, tree, children, maxLevel, iconProvider, 0);    }    /**     * <p>     * Renders the children given the rowClassIndex.     * </p>     *     * @param facesContext The facesContext.     * @param writer The writer.     * @param tree The tree component.     * @param children The children to render.     * @param maxLevel The maximum level.     * @param iconProvider The icon provider.     * @param rowClassIndex The row class index.     * @throws IOException Throws an IOException.     */    protected void renderChildren(FacesContext facesContext, ResponseWriter writer, HtmlTree tree, List children,            int maxLevel, IconProvider iconProvider, int rowClassIndex) throws IOException    {        String rowClasses = tree.getRowClasses();        String columnClasses = tree.getColumnClasses();        String[] rowClassesArray = (rowClasses == null) ? ArrayUtils.EMPTY_STRING_ARRAY : StringUtils.trim(StringUtils                .splitShortString(rowClasses, ','));        int rowClassesCount = rowClassesArray.length;        String[] columnClassesArray = (columnClasses == null) ? ArrayUtils.EMPTY_STRING_ARRAY : StringUtils                .trim(StringUtils.splitShortString(columnClasses, ','));        int columnClassesCount = columnClassesArray.length;        int columnClassIndex = 0;        for (Iterator it = children.iterator(); it.hasNext();)

⌨️ 快捷键说明

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