亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? multileveltotaltabledecorator.java

?? dispalytag的源碼
?? JAVA
?? 第 1 頁 / 共 2 頁
字號:
/** * Licensed under the Artistic License; you may not use this file * except in compliance with the License. * You may obtain a copy of the License at * *      http://displaytag.sourceforge.net/license.html * * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. */package org.displaytag.decorator;import java.util.*;import java.text.MessageFormat;import javax.servlet.jsp.PageContext;import org.apache.commons.lang.ObjectUtils;import org.apache.commons.lang.StringUtils;import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;import org.displaytag.exception.DecoratorException;import org.displaytag.exception.ObjectLookupException;import org.displaytag.model.Column;import org.displaytag.model.ColumnIterator;import org.displaytag.model.HeaderCell;import org.displaytag.model.Row;import org.displaytag.model.TableModel;import org.displaytag.util.TagConstants;/** * A TableDecorator that, in conjunction with totaled and grouped columns, produces multi level subtotals on arbitrary * String groupings.  Use it directly, subclass it, or use it as an example to better meet your local needs. * @author rapruitt * @author Fabrizio Giustina */public class MultilevelTotalTableDecorator extends TableDecorator{    /**     * If there are no columns that are totaled, we should not issue a totals row.     */    private boolean containsTotaledColumns = false;    /**     * No current reset group.     */    private static final int NO_RESET_GROUP = 4200;    /**     * Maps the groups to their current totals.     */    private Map groupNumberToGroupTotal = new HashMap();    /**     * The deepest reset group. Resets on an outer group will force any deeper groups to reset as well.     */    private int deepestResetGroup = NO_RESET_GROUP;    /**     * Controls when the subgroup is ended.     */    protected int innermostGroup;    /**     * Logger.     */    private Log logger = LogFactory.getLog(MultilevelTotalTableDecorator.class);    /**     * CSS class applied to grand total totals.     */    protected String grandTotalSum = "grandtotal-sum";    /**     * CSS class applied to grand total cells where the column is not totaled.     */    protected String grandTotalNoSum = "grandtotal-nosum";    /**     * CSS class applied to grand total lablels.     */    protected String grandTotalLabel = "grandtotal-label";    /**     * Grandtotal description.     */    protected String grandTotalDescription = "Grand Total";    /**     * CSS class appplied to subtotal headers.     */    private String subtotalHeaderClass = "subtotal-header";    /**     * CSS class applied to subtotal labels.     */    private String subtotalLabelClass = "subtotal-label";    /**     * Message format for subtotal descriptions.     */    private MessageFormat subtotalDesc = new MessageFormat("{0} Total");    /**     * CSS class applied to subtotal totals.     */    private String subtotalValueClass = "subtotal-sum";    /**     * Holds the header rows and their content for a particular group.     */    private List headerRows = new ArrayList(5);    public void init(PageContext context, Object decorated, TableModel model)    {        super.init(context, decorated, model);        List headerCells = model.getHeaderCellList();        // go through each column, looking for grouped columns; add them to the group number map        for (Iterator iterator = headerCells.iterator(); iterator.hasNext();)        {            HeaderCell headerCell = (HeaderCell) iterator.next();            containsTotaledColumns = containsTotaledColumns || headerCell.isTotaled();            if (headerCell.getGroup() > 0)            {                groupNumberToGroupTotal.put(new Integer(headerCell.getGroup()), new GroupTotals(headerCell                    .getColumnNumber()));                if (headerCell.getGroup() > innermostGroup)                {                    innermostGroup = headerCell.getGroup();                }            }        }    }    public String getGrandTotalDescription()    {        return grandTotalDescription;    }    public void setGrandTotalDescription(String grandTotalDescription)    {        this.grandTotalDescription = grandTotalDescription;    }    /**     * The pattern to use to generate the subtotal labels.  The grouping value of the cell will be the first arg.     * The default value is "{0} Total".     * @param pattern     * @param locale     */    public void setSubtotalLabel(String pattern, Locale locale)    {        this.subtotalDesc = new MessageFormat(pattern, locale);    }    public String getGrandTotalLabel()    {        return grandTotalLabel;    }    public String getGrandTotalSum()    {        return grandTotalSum;    }    public String getGrandTotalNoSum()    {        return grandTotalNoSum;    }    public void setGrandTotalNoSum(String grandTotalNoSum)     {        this.grandTotalNoSum = grandTotalNoSum;    }    public void setGrandTotalSum(String grandTotalSum)    {        this.grandTotalSum = grandTotalSum;    }    public void setGrandTotalLabel(String grandTotalLabel)    {        this.grandTotalLabel = grandTotalLabel;    }    public String getSubtotalValueClass()    {        return subtotalValueClass;    }    public void setSubtotalValueClass(String subtotalValueClass)    {        this.subtotalValueClass = subtotalValueClass;    }    public String getSubtotalLabelClass()    {        return subtotalLabelClass;    }    public void setSubtotalLabelClass(String subtotalLabelClass)    {        this.subtotalLabelClass = subtotalLabelClass;    }    public String getSubtotalHeaderClass()    {        return subtotalHeaderClass;    }    public void setSubtotalHeaderClass(String subtotalHeaderClass)    {        this.subtotalHeaderClass = subtotalHeaderClass;    }    public void startOfGroup(String value, int group)    {        if (containsTotaledColumns)        {            StringBuffer tr = new StringBuffer();            tr.append("<tr>");            GroupTotals groupTotals = (GroupTotals) groupNumberToGroupTotal.get(new Integer(group));            int myColumnNumber = groupTotals.columnNumber;            for (int i = 0; i < myColumnNumber; i++)            {                tr.append("<td></td>\n");            }            tr.append("<td class=\"").append(getSubtotalHeaderClass()).append(" group-").append(group).append("\" >");            tr.append(value).append("</td>\n");            List headerCells = tableModel.getHeaderCellList();            for (int i = myColumnNumber; i < headerCells.size() - 1; i++)            {                tr.append("<td></td>\n");            }            tr.append("</tr>\n");            headerRows.add(tr);        }    }    public String displayGroupedValue(String value, short groupingStatus, int columnNumber)    {//        if (groupingStatus == TableWriterTemplate.GROUP_START_AND_END && columnNumber > 1)//        {//            return value;//        }//        else//        {            return "";//        }    }    public String startRow()    {        StringBuffer sb = new StringBuffer();        for (Iterator iterator = headerRows.iterator(); iterator.hasNext();)        {            StringBuffer stringBuffer = (StringBuffer) iterator.next();            sb.append(stringBuffer);        }        return sb.toString();    }    public void endOfGroup(String value, int groupNumber)    {        if (deepestResetGroup > groupNumber)        {            deepestResetGroup = groupNumber;        }    }    public String finishRow()    {        String returnValue = "";        if (containsTotaledColumns)        {            if (innermostGroup > 0 && deepestResetGroup != NO_RESET_GROUP)            {                StringBuffer out = new StringBuffer();                // Starting with the deepest group, print the current total and reset. Do not reset unaffected groups.                for (int i = innermostGroup; i >= deepestResetGroup; i--)                {                    Integer groupNumber = new Integer(i);                    GroupTotals totals = (GroupTotals) groupNumberToGroupTotal.get(groupNumber);                    if (totals == null)                    {                        logger.warn("There is a gap in the defined groups - no group defined for " + groupNumber);                        continue;                    }                    totals.printTotals(getListIndex(), out);                    totals.setStartRow(getListIndex() + 1);                }                returnValue = out.toString();            }            else            {                returnValue = null;            }            deepestResetGroup = NO_RESET_GROUP;            headerRows.clear();            if (isLastRow())

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩免费在线视频| 91在线视频在线| 亚洲成av人片| 亚洲免费观看高清| 亚洲另类一区二区| 一二三四社区欧美黄| 亚洲一区二区欧美| 日韩不卡免费视频| 日本不卡视频一二三区| 精品一区二区三区在线播放视频| 看电影不卡的网站| 国产69精品久久久久777| av在线不卡网| 在线观看网站黄不卡| 欧美精品日韩一本| 欧美大片顶级少妇| 久久久精品免费观看| 国产精品国产三级国产有无不卡 | 激情图片小说一区| 国产精品羞羞答答xxdd| 99精品视频在线观看| 欧美艳星brazzers| 欧美一卡二卡在线观看| 精品久久久久久久久久久久包黑料| 久久久亚洲高清| 亚洲免费在线观看| 日韩精品电影在线| 国产91精品一区二区麻豆网站 | 国产精品888| 成人av在线资源网| 91精品国产aⅴ一区二区| 精品久久久久久久久久久院品网 | 亚洲最新视频在线播放| 免费成人在线观看视频| a级精品国产片在线观看| 7777精品伊人久久久大香线蕉完整版 | 一区二区三区资源| 男女男精品视频| eeuss鲁片一区二区三区在线观看| 91九色最新地址| 日韩三级免费观看| 亚洲美女一区二区三区| 精品一区二区三区影院在线午夜 | 日韩精品一区二区三区四区视频| 国产目拍亚洲精品99久久精品| 一区二区三区日韩欧美| 国产在线播放一区三区四| 色综合天天综合网国产成人综合天| 91精品一区二区三区在线观看| 中文久久乱码一区二区| 天堂成人国产精品一区| 成人动漫中文字幕| 精品福利在线导航| 日韩黄色在线观看| 97se亚洲国产综合自在线观| 精品国产青草久久久久福利| 亚洲综合成人在线视频| 成人av中文字幕| 久久婷婷一区二区三区| 日韩在线a电影| 欧美三区在线观看| 一区二区三区中文字幕精品精品| 成人福利视频网站| 久久久综合网站| 美女www一区二区| 久久久精品国产99久久精品芒果| yourporn久久国产精品| 日韩欧美一区电影| 日韩福利电影在线观看| 欧美日韩中文字幕一区| 亚洲精品日韩综合观看成人91| 国产**成人网毛片九色| 精品国产乱码久久久久久闺蜜 | 亚洲天堂成人网| 成人性生交大合| 久久无码av三级| 国产高清精品在线| 国产色产综合产在线视频| 国产在线播放一区二区三区| 久久影院电视剧免费观看| 蜜桃视频第一区免费观看| 日韩一二在线观看| 久久国产麻豆精品| 久久日韩精品一区二区五区| 久久91精品久久久久久秒播| 欧美精品一区二区三区蜜臀| 国产精品12区| 中文字幕亚洲成人| 一本色道久久综合亚洲91 | 视频一区二区三区入口| 在线播放/欧美激情| 麻豆一区二区在线| 久久精品在线免费观看| 成人国产亚洲欧美成人综合网 | 欧美视频你懂的| 日本不卡高清视频| 久久久久久久综合| 色偷偷久久一区二区三区| 亚洲一区二区三区在线看 | 国产呦萝稀缺另类资源| 国产精品久久夜| 欧美蜜桃一区二区三区| 国产制服丝袜一区| 最新中文字幕一区二区三区| 在线观看成人免费视频| 久久精品99久久久| 中文字幕亚洲在| 91.麻豆视频| 99热精品国产| 午夜精品福利一区二区三区av| 欧美成人激情免费网| 成人激情小说乱人伦| 无码av中文一区二区三区桃花岛| 久久久久久久综合| 欧美日韩视频在线观看一区二区三区| 蜜桃一区二区三区在线| 国产精品夫妻自拍| 欧美一区二区日韩一区二区| 成人免费视频网站在线观看| 五月婷婷久久综合| 综合久久久久久| 日韩欧美国产综合| 色又黄又爽网站www久久| 精品综合免费视频观看| 亚洲精品国产第一综合99久久| 日韩欧美自拍偷拍| 欧美午夜精品免费| 不卡欧美aaaaa| 精品一区二区三区av| 亚洲第一狼人社区| 亚洲美女屁股眼交| 日本一区二区三区电影| 制服丝袜av成人在线看| 不卡一区二区在线| 国产成人精品亚洲午夜麻豆| 久色婷婷小香蕉久久| 亚洲成人www| 亚洲自拍与偷拍| 中文字幕日韩av资源站| 国产日产欧美一区| 精品久久久网站| 欧美一级黄色录像| 7777精品伊人久久久大香线蕉的| 色综合久久综合| 91麻豆自制传媒国产之光| 国产69精品一区二区亚洲孕妇| 韩日欧美一区二区三区| 九九热在线视频观看这里只有精品| 亚洲成a天堂v人片| 亚洲国产aⅴ成人精品无吗| 亚洲日本在线看| 亚洲裸体xxx| 一区二区三区资源| 亚洲综合色区另类av| 一区二区三区四区在线| 亚洲女人小视频在线观看| 国产精品福利一区二区三区| 中文字幕日韩精品一区| 亚洲婷婷综合色高清在线| 亚洲视频一二区| 亚洲色图清纯唯美| 亚洲高清在线视频| 日本中文字幕一区| 国模大尺度一区二区三区| 国产成人欧美日韩在线电影| 国产高清视频一区| 91免费在线播放| 欧美吻胸吃奶大尺度电影| 欧美男同性恋视频网站| 欧美刺激脚交jootjob| 久久久精品国产免大香伊| 亚洲欧洲av在线| 亚洲国产精品久久久久秋霞影院| 五月激情综合色| 国模一区二区三区白浆| 顶级嫩模精品视频在线看| av电影在线观看不卡| 在线视频国产一区| 欧美成人一区二区| 亚洲欧美在线观看| 亚洲福利一二三区| 久草精品在线观看| 91麻豆成人久久精品二区三区| 欧美日韩免费高清一区色橹橹| 日韩一级免费观看| 亚洲桃色在线一区| 日本欧美一区二区| aaa欧美色吧激情视频| 欧美伦理电影网| 国产精品网站一区| 午夜激情一区二区三区| 国产高清精品久久久久| 欧美日韩另类一区| 久久久亚洲高清| 五月激情六月综合| 成人丝袜18视频在线观看| 欧美群妇大交群中文字幕| 国产精品理论片| 久久精品国产99久久6| 91精品福利在线|