Example usage for com.google.gwt.dom.builder.shared TableCellBuilder style

List of usage examples for com.google.gwt.dom.builder.shared TableCellBuilder style

Introduction

In this page you can find the example usage for com.google.gwt.dom.builder.shared TableCellBuilder style.

Prototype

StylesBuilder style();

Source Link

Document

Start the StylesBuilder used to add style properties to the style attribute of the current element.

Usage

From source file:com.bearsoft.gwt.ui.widgets.grid.builders.ThemedHeaderOrFooterBuilder.java

protected void buildNodes(List<HeaderNode<T>> aHeaders,
        Map<Column<T, ?>, ColumnSortList.ColumnSortInfo> sortedColumns) {
    // AbstractCellTable<T> table = getTable();
    List<HeaderNode<T>> children = new ArrayList<>();
    boolean isFooter = isBuildingFooter();
    // Get the common style names.
    String className = isBuildingFooter() ? ThemedGridResources.instance.cellTableStyle().cellTableFooter()
            : ThemedGridResources.instance.cellTableStyle().cellTableHeader();
    String sortableStyle = ThemedGridResources.instance.cellTableStyle().cellTableSortableHeader();
    String sortedAscStyle = ThemedGridResources.instance.cellTableStyle().cellTableSortedHeaderAscending();
    String sortedDescStyle = ThemedGridResources.instance.cellTableStyle().cellTableSortedHeaderDescending();
    TableRowBuilder tr = startRow();//from  ww w  .  jav a 2s. c o  m
    // Loop through all column header nodes.
    for (int i = 0; i < aHeaders.size(); i++) {
        HeaderNode<T> headerNode = aHeaders.get(i);
        children.addAll(headerNode.getChildren());
        Header<?> headerOrFooter = headerNode.getHeader();
        Column<T, ?> column = null;
        if (headerOrFooter instanceof HasColumn<?>)
            column = ((HasColumn<T>) headerOrFooter).getColumn();
        boolean isSortable = !isFooter && column != null && column.isSortable();
        ColumnSortList.ColumnSortInfo sortedInfo = sortedColumns.get(column);
        boolean isSorted = sortedInfo != null;
        StringBuilder classesBuilder = new StringBuilder(className);
        boolean isSortAscending = isSortable && sortedInfo != null ? sortedInfo.isAscending() : false;
        if (isSortable) {
            if (classesBuilder.length() > 0) {
                classesBuilder.append(" ");
            }
            classesBuilder.append(sortableStyle);
            if (isSorted) {
                if (classesBuilder.length() > 0) {
                    classesBuilder.append(" ");
                }
                classesBuilder.append(isSortAscending ? sortedAscStyle : sortedDescStyle);
            }
        }
        // Render the header or footer.
        TableCellBuilder th = tr.startTH();
        if (headerNode.getDepthRemainder() > 0)
            th.rowSpan(headerNode.getDepthRemainder() + 1);
        if (headerNode.getLeavesCount() > 1)
            th.colSpan(headerNode.getLeavesCount());
        th.className(classesBuilder.toString());
        StylesBuilder thStyles = th.style();
        if (headerNode.getBackground() != null) {
            thStyles.trustedBackgroundColor(headerNode.getBackground().toStyled());
        }
        if (headerNode.getForeground() != null) {
            thStyles.trustedColor(headerNode.getForeground().toStyled());
        }
        if (headerNode.getFont() != null) {
            thStyles.trustedProperty("font-family", headerNode.getFont().getFamily());
            thStyles.fontSize(headerNode.getFont().getSize(), Style.Unit.PX);
            thStyles.fontStyle(headerNode.getFont().isItalic() ? FontStyle.ITALIC : FontStyle.NORMAL);
            thStyles.fontWeight(headerNode.getFont().isBold() ? FontWeight.BOLD : FontWeight.NORMAL);
        }
        if (headerOrFooter != null) {
            appendExtraStyles(headerOrFooter, classesBuilder);
            if (column != null) {
                enableColumnHandlers(th, column);
            }
            // Build the header.
            Cell.Context context = new Cell.Context(0, i, headerOrFooter.getKey());
            // Add div element with aria button role
            if (isSortable) {
                // TODO: Figure out aria-label and translation
                // of label text
                th.attribute("role", "button");
                th.tabIndex(-1);
            }
            renderSortableHeader(th, context, headerOrFooter, isSorted, isSortAscending);
        }
        th.endTH();
    }
    // End the row.
    tr.endTR();
    if (!children.isEmpty()) {
        buildNodes(children, sortedColumns);
    }
}