Example usage for com.google.gwt.user.cellview.client AbstractCellTable getColumnCount

List of usage examples for com.google.gwt.user.cellview.client AbstractCellTable getColumnCount

Introduction

In this page you can find the example usage for com.google.gwt.user.cellview.client AbstractCellTable getColumnCount.

Prototype

public int getColumnCount() 

Source Link

Document

Get the number of columns in the table.

Usage

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

@Override
protected boolean buildHeaderOrFooterImpl() {
    AbstractCellTable<T> table = getTable();
    boolean isFooter = isBuildingFooter();

    int columnCount = table.getColumnCount();
    if (columnCount > 0) {
        // Early exit if there aren't any headers or footers in the columns
        // to render.
        boolean hasHeadersOrFooters = false;
        for (int i = 0; i < columnCount; i++) {
            if (getHeader(i) != null) {
                hasHeadersOrFooters = true;
                break;
            }// w w  w .  j  ava  2 s  .  c  o m
        }
        if (hasHeadersOrFooters) {
            List<HeaderNode<T>> headersForest;
            if (headerNodes == null) {
                headersForest = new ArrayList<>();
                for (int curColumn = 0; curColumn < columnCount; curColumn++) {
                    Header<?> headerOrFooter = getHeader(curColumn);
                    HeaderNode<T> hn = new HeaderNode<T>();
                    hn.setHeader((Header<String>) headerOrFooter);
                    headersForest.add(hn);
                }
            } else {
                headersForest = headerNodes;
            }
            // Get information about the sorted columns.
            ColumnSortList sortList;
            if (sortListHolder != null) {
                sortList = sortListHolder.getSortList();
            } else {
                sortList = table.getColumnSortList();
            }
            Map<Column<T, ?>, ColumnSortList.ColumnSortInfo> sortedColumns = new HashMap<>();
            if (sortList != null) {
                for (int i = 0; i < sortList.size(); i++) {
                    ColumnSortList.ColumnSortInfo sInfo = sortList.get(i);
                    sortedColumns.put((Column<T, ?>) sInfo.getColumn(), sInfo);
                }
            }
            buildNodes(headersForest, sortedColumns);
            return true;
        } else {
            // No headers to render;
            return false;
        }
    } else {
        // Nothing to render;
        return false;
    }
}

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

@Override
protected void doSetColumnWidth(int index, String aValue) {
    if (index >= 0 && index < getColumnCount()) {
        super.doSetColumnWidth(index, aValue);
        if (columnsPartners != null) {
            for (AbstractCellTable<T> partner : columnsPartners) {
                if (index >= 0 && index < partner.getColumnCount()) {
                    Column<T, ?> col = partner.getColumn(index);
                    if (aValue == null) {
                        partner.clearColumnWidth(col);
                    } else {
                        partner.setColumnWidth(col, aValue);
                    }/*from  www .j  a  v  a 2s  .  c om*/
                }
            }
        }
        widthChanged();
    }
}

From source file:org.jbpm.console.ng.bd.client.util.DataGridUtils.java

License:Apache License

public static int getDistributedColumnWidth(AbstractCellTable table, Column col) {
    int width = getColumnWith(table, col);
    if (width <= 0) {
        width = table.getOffsetWidth();/*from  w w  w .  j a v  a2 s  .co  m*/
        int columnWidth = 0;
        int columns = table.getColumnCount();
        for (int i = 0; i < table.getColumnCount(); i++) {
            columnWidth = getColumnWith(table, i);
            if (columnWidth > 0) {
                columns--;
                width = width - columnWidth;
            }
        }
        width = width >= 0 ? width / (columns != 0 ? columns : 1) : -1;
    }
    return width;
}

From source file:org.kaaproject.avro.ui.gwt.client.widget.grid.StringFilterHeaderBuilder.java

License:Apache License

@SuppressWarnings("unchecked")
@Override/*from  w  w  w .  j ava  2s  . co m*/
protected boolean buildHeaderOrFooterImpl() {
    boolean result = super.buildHeaderOrFooterImpl();
    AbstractCellTable<T> table = getTable();
    Header<?> prevHeader = getHeader(0);
    Style style = table.getResources().style();
    StringBuilder classesBuilder = new StringBuilder(style.header());
    classesBuilder.append(" ").append(Utils.avroUiStyle.fieldWidget());

    TableRowBuilder tr = startRow();
    for (int i = 0; i < table.getColumnCount(); i++) {
        appendExtraStyles(prevHeader, classesBuilder);
        TableCellBuilder th = tr.startTH().className(classesBuilder.toString());
        Column<T, ?> column = table.getColumn(i);
        Header<?> header = null;
        if (column instanceof FiltrableStringColumn) {
            StringFilterHeader filterHeader = new StringFilterHeader(grid, (FiltrableStringColumn<T>) column,
                    new Integer(i));

            Set<String> headerEvents = filterHeader.getCell().getConsumedEvents();
            Set<String> consumedEvents = new HashSet<String>();
            if (headerEvents != null) {
                consumedEvents.addAll(headerEvents);
            }
            sinkEvents(table, consumedEvents);
            header = filterHeader;
        } else {
            header = new SafeHtmlHeader(SafeHtmlUtils.fromSafeConstant(""));
        }
        Context context = new Context(0, 0, header.getKey());
        renderHeader(th, context, header);

        th.endTH();
    }
    tr.endTR();
    return result;
}

From source file:org.roda.wui.common.client.widgets.wcag.AccessibleHeaderOrFooterBuilder.java

@Override
protected boolean buildHeaderOrFooterImpl() {
    AbstractCellTable<T> table = getTable();
    boolean isFooter = isBuildingFooter();

    // Early exit if there aren't any columns to render.
    int columnCount = table.getColumnCount();
    if (columnCount == 0) {
        // Nothing to render
        return false;
    }// w w w  .j  ava  2  s.c  om

    // Early exit if there aren't any headers in the columns to render.
    boolean hasHeader = false;
    for (int i = 0; i < columnCount; i++) {
        if (getHeader(i) != null) {
            hasHeader = true;
            break;
        }
    }
    if (!hasHeader) {
        return false;
    }

    // Get information about the sorted column.
    ColumnSortList sortList = table.getColumnSortList();
    ColumnSortInfo sortedInfo = (sortList.size() == 0) ? null : sortList.get(0);
    Column<?, ?> sortedColumn = (sortedInfo == null) ? null : sortedInfo.getColumn();
    boolean isSortAscending = (sortedInfo == null) ? false : sortedInfo.isAscending();

    // Get the common style names.
    Style style = getTable().getResources().style();
    String className = isBuildingFooter() ? style.footer() : style.header();
    String sortableStyle = " " + style.sortableHeader();
    String sortedStyle = " "
            + (isSortAscending ? style.sortedHeaderAscending() : style.sortedHeaderDescending());

    // Setup the first column.
    Header<?> prevHeader = getHeader(0);
    Column<T, ?> column = getTable().getColumn(0);
    int prevColspan = 1;
    boolean isSortable = false;
    boolean isSorted = false;
    StringBuilder classesBuilder = new StringBuilder(className);
    classesBuilder.append(" " + (isFooter ? style.firstColumnFooter() : style.firstColumnHeader()));
    if (!isFooter && column.isSortable()) {
        isSortable = true;
        isSorted = (column == sortedColumn);
    }

    // Loop through all column headers.
    TableRowBuilder tr = startRow();
    int curColumn;
    for (curColumn = 1; curColumn < columnCount; curColumn++) {
        Header<?> header = getHeader(curColumn);

        if (header != prevHeader) {
            // The header has changed, so append the previous one.
            if (isSortable) {
                classesBuilder.append(sortableStyle);
            }
            if (isSorted) {
                classesBuilder.append(sortedStyle);
            }
            appendExtraStyles(prevHeader, classesBuilder);

            // Render the header.
            TableCellBuilder th = tr.startTH().colSpan(prevColspan).className(classesBuilder.toString());
            enableColumnHandlers(th, column);
            if (prevHeader != null) {
                // Build the header.
                Context context = new Context(0, curColumn - prevColspan, prevHeader.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);
                }
                updatedRenderSortableHeader(th, context, prevHeader, isSorted, isSortAscending);
            }
            th.endTH();

            // Reset the previous header.
            prevHeader = header;
            prevColspan = 1;
            classesBuilder = new StringBuilder(className);
            isSortable = false;
            isSorted = false;
        } else {
            // Increment the colspan if the headers == each other.
            prevColspan++;
        }

        // Update the sorted state.
        column = table.getColumn(curColumn);
        if (!isFooter && column.isSortable()) {
            isSortable = true;
            isSorted = (column == sortedColumn);
        }
    }

    // Append the last header.
    if (isSortable) {
        classesBuilder.append(sortableStyle);
    }
    if (isSorted) {
        classesBuilder.append(sortedStyle);
    }

    // The first and last columns could be the same column.
    classesBuilder.append(" ").append(isFooter ? style.lastColumnFooter() : style.lastColumnHeader());
    appendExtraStyles(prevHeader, classesBuilder);

    // Render the last header.
    TableCellBuilder th = tr.startTH().colSpan(prevColspan).className(classesBuilder.toString());
    enableColumnHandlers(th, column);
    if (prevHeader != null) {
        Context context = new Context(0, curColumn - prevColspan, prevHeader.getKey());
        updatedRenderSortableHeader(th, context, prevHeader, isSorted, isSortAscending);
    }
    th.endTH();

    // End the row.
    tr.endTR();

    return true;
}

From source file:org.rstudio.studio.client.ResizableHeader.java

License:Open Source License

public ResizableHeader(AbstractCellTable<?> table, String text) {
    super(new ResizableHeaderCell<String>(table));

    table_ = table;/*from w  w w. java 2  s  . c o m*/
    text_ = text;
    index_ = table.getColumnCount();

    MouseDragHandler.addHandler(table_, new MouseDragHandler() {
        List<Integer> columnWidths_ = new ArrayList<Integer>();

        @Override
        public boolean beginDrag(MouseDownEvent event) {
            // detect a click on this splitter
            Element targetEl = event.getNativeEvent().getEventTarget().cast();
            if (!targetEl.hasClassName(RES.styles().splitter()))
                return false;

            int index = StringUtil.parseInt(targetEl.getAttribute("data-index"), -1);
            if (index != index_)
                return false;

            // find the parent table row element
            Element rowEl = DomUtils.findParentElement(targetEl, new ElementPredicate() {
                @Override
                public boolean test(Element el) {
                    return el.hasTagName("tr");
                }
            });

            if (rowEl == null)
                return false;

            // initialize column widths
            columnWidths_.clear();
            for (int i = 0, n = rowEl.getChildCount(); i < n; i++) {
                Element childEl = rowEl.getChild(i).cast();
                int width = childEl.getOffsetWidth();
                columnWidths_.add(width);
                table_.setColumnWidth(i, width + "px");
            }

            return true;
        }

        @Override
        public void onDrag(MouseDragEvent event) {
            // discover the change in column widths
            int delta = event.getTotalDelta().getMouseX();

            // compute the right column width
            int leftWidth = columnWidths_.get(index_ - 1) + delta;
            int rightWidth = columnWidths_.get(index_) - delta;

            // avoid issues with resizing too small
            if (leftWidth < 0) {
                rightWidth = rightWidth + leftWidth;
                leftWidth = 0;
            }

            // update column widths
            table_.setColumnWidth(index_ - 1, leftWidth + "px");
            table_.setColumnWidth(index_, rightWidth + "px");
        }

        @Override
        public void endDrag() {
        }

    });
}