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

📄 tablerenderer.java

📁 本系统有十分强大的功能
💻 JAVA
字号:
package org.opencustomer.framework.webapp.util.html.renderer;

import org.opencustomer.framework.db.util.engine.Row;
import org.opencustomer.framework.webapp.util.html.Column;
import org.opencustomer.framework.webapp.util.html.Table;

public class TableRenderer {

    private final static String BASE = "TableRenderer."; 
    
    public final static String TABLE_CLASS              = BASE+"table.class"; 
    public final static String ROW_CLASS                = BASE+"row.class"; 
    public final static String ROW_ACTIVE_CLASS         = BASE+"row.active.class"; 
    public final static String ROW_NOENTRIES_CLASS      = BASE+"row.noEntries.class"; 
    public final static String ROW_NOENTRIES_MESSAGEKEY = BASE+"row.noEntries.messageKey"; 
    
    private OrderRenderer sortRenderer = new OrderRenderer();

    public final String createHtml(RendererContext context, String style, Table table, String onclick) {
        StringBuilder builder = new StringBuilder();
        
        writeTableStart(context, builder, style);
        writeColGroups(context, builder, table.getColumns());
        writeTableHeadStart(context, builder);
        writeHeadRowStart(context, builder, table.getColumns());
        for(Column column : table.getColumns()) {
            writeHeadCellStart(context, builder, column);
            if(column.getMessageKey() != null) {
                writeHeadCellContent(context, builder, table.getColumns(), column);
            }
            writeHeadCellEnd(context, builder, column);
        }
        writeHeadRowEnd(context, builder, table.getColumns());
        writeTableHeadEnd(context, builder);
        writeTableBodyStart(context, builder);
        for(Row row : table.getRows()) {
            writeRowStart(context, builder, row);
            for(int i=0; i<row.getColumns().length; i++) {
                Object cell = row.getColumns()[i];
                writeCellStart(context, builder, row, table.getColumns()[i], cell, onclick);
                writeCellContent(context, builder, row, table.getColumns()[i], cell);
                writeCellEnd(context, builder, row, table.getColumns()[i], cell);
            }
            writeRowEnd(context, builder, row);
        }
        if(table.getRows().isEmpty()) {
            writeEmptyRow(context, builder, table.getColumns());
        }
        writeTableBodyEnd(context, builder);
        writeTableEnd(context, builder);
        
        return builder.toString();
    }

    protected void writeColGroups(RendererContext context, StringBuilder builder, Column[] columns) {
        builder.append("<colgroup>");
        for(Column column : columns) {
            builder.append("<col width=\"1*\"/>");
        }
        builder.append("</colgroup>\n");
    }
    
    protected void writeTableStart(RendererContext context, StringBuilder builder, String style) {
        String styleClass = context.getSettings().getProperty(TABLE_CLASS);

        builder.append("\n<table");
        if(styleClass != null) {
            builder.append(" class=\"").append(styleClass).append("\"");
        }
        if(style != null) {
            builder.append(" style=\"").append(style).append("\"");
        }
        builder.append(">\n");
    }

    protected void writeTableEnd(RendererContext context, StringBuilder builder) {
        builder.append("</table>\n");
    }

    protected void writeTableHeadStart(RendererContext context, StringBuilder builder) {
        builder.append("<thead>\n");
    }

    protected void writeTableHeadEnd(RendererContext context, StringBuilder builder) {
        builder.append("</thead>\n");
    }

    protected void writeTableBodyStart(RendererContext context, StringBuilder builder) {
        builder.append("<tbody>\n");
    }

    protected void writeTableBodyEnd(RendererContext context, StringBuilder builder) {
        builder.append("</tbody>\n");
    }

    protected void writeRowStart(RendererContext context, StringBuilder builder, Row row) {
        String styleClass       = context.getSettings().getProperty(ROW_CLASS);
        String styleClassActive = context.getSettings().getProperty(ROW_ACTIVE_CLASS);

        builder.append("<tr");
        if(styleClass != null) {
            builder.append(" class=\"").append(styleClass).append("\"");
        }
        if(styleClassActive != null) {
            builder.append(" onmouseover=\"this.className='").append(styleClassActive).append("';\"");
            if(styleClass != null) {
                builder.append(" onmouseout=\"this.className='").append(styleClass).append("';\"");
            } else {
                builder.append(" onmouseout=\"this.className=null;\"");
            }
        }
        builder.append(">");
    }
    
    protected void writeRowEnd(RendererContext context, StringBuilder builder, Row row) {
        builder.append("</tr>\n");
    }
    
    protected void writeCellStart(RendererContext context, StringBuilder builder, Row row, Column column, Object value, String onclick) {
        builder.append("<td");
        if(onclick != null) {
            builder.append(" onclick=\"").append(onclick.replaceAll("\\{id\\}", Integer.toString(row.getId()))).append("\"");
        }
        builder.append(">");
    }
    
    protected void writeCellContent(RendererContext context, StringBuilder builder, Row row, Column column, Object value) {
        builder.append(column.getFormatter().format(context.getResources(), context.getLocale(), value));
    }

    protected void writeCellEnd(RendererContext context, StringBuilder builder, Row row, Column column, Object value) {
        builder.append("</td>");
    }
    
    protected void writeHeadCellStart(RendererContext context, StringBuilder builder, Column column) {
        builder.append("<th>");
    }
    
    protected void writeHeadCellContent(RendererContext context, StringBuilder builder, Column[] columns, Column column) {
        if(column.isSortable()) {
            builder.append(sortRenderer.createHtml(context, columns, column));
        } else {
            builder.append(context.getResources().getMessage(context.getLocale(), column.getMessageKey()));
        }
    }

    protected void writeHeadCellEnd(RendererContext context, StringBuilder builder, Column column) {
        builder.append("</th>");
    }
    
    protected void writeHeadRowStart(RendererContext context, StringBuilder builder, Column[] columns) {
        builder.append("<tr>");
    }
    
    protected void writeHeadRowEnd(RendererContext context, StringBuilder builder, Column[] columns) {
        builder.append("</tr>\n");
    }
    
    protected void writeEmptyRow(RendererContext context, StringBuilder builder, Column[] columns) {
        String styleClass = context.getSettings().getProperty(ROW_NOENTRIES_CLASS);
        String message    = context.getSettings().getProperty(ROW_NOENTRIES_MESSAGEKEY);
        
        builder.append("<tr");
        if(styleClass != null) {
            builder.append(" class=\"").append(styleClass).append("\"");
        }
        builder.append(">");
        builder.append("<td");
        builder.append(" colspan=\"").append(columns.length).append("\"");
        builder.append(">");
        builder.append(context.getResources().getMessage(context.getLocale(), message));
        builder.append("</td>");
        builder.append("</tr>\n");
    }
}

⌨️ 快捷键说明

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