Example usage for com.google.gwt.aria.client Roles getGridcellRole

List of usage examples for com.google.gwt.aria.client Roles getGridcellRole

Introduction

In this page you can find the example usage for com.google.gwt.aria.client Roles getGridcellRole.

Prototype

public static GridcellRole getGridcellRole() 

Source Link

Usage

From source file:com.example.test.client.VMultiSelectCalendarWidget.java

License:Apache License

/**
 * Sets the selection highlight to a given day in the current view
 * /*from   w  ww . j a v  a2s  .  c  o m*/
 * @param date
 *            A Date representing the day of month to be selected. Must be one of the days currently visible.
 * 
 */
private void toggleDate(Date date) {
    DayWidget dayToSelect = new DayWidget(date);
    for (DayWidget day : getDayWidgets()) {
        if (day.equals(dayToSelect)) {
            if (selectedDays.contains(day)) {
                day.removeStyleDependentName(CN_SELECTED);
                Roles.getGridcellRole().removeAriaSelectedState(day.getElement());
                selectedDays.remove(day);
            } else {
                day.addStyleDependentName(CN_SELECTED);
                Roles.getGridcellRole().setAriaSelectedState(day.getElement(), SelectedValue.TRUE);
                selectedDays.add(day);
            }
        }
    }
}

From source file:com.example.test.client.VMultiSelectCalendarWidget.java

License:Apache License

/**
 * Builds the day and time selectors of the calendar.
 *//*from www  .j  a va 2 s  .c o  m*/
private void buildCalendarBody() {

    final int weekColumn = 0;
    final int firstWeekdayColumn = 1;
    final int headerRow = 0;

    setWidget(1, 0, daysTable);
    setCellPadding(0);
    setCellSpacing(0);
    getFlexCellFormatter().setColSpan(1, 0, 5);
    getFlexCellFormatter().setStyleName(1, 0, STYLE_PRIMARY + "-calendarpanel-body");

    daysTable.getFlexCellFormatter().setStyleName(headerRow, weekColumn, "v-week");
    daysTable.setHTML(headerRow, weekColumn, "<strong></strong>");
    // Hide the week column if week numbers are not to be displayed.
    daysTable.getFlexCellFormatter().setVisible(headerRow, weekColumn, isShowISOWeekNumbers());

    daysTable.getRowFormatter().setStyleName(headerRow, STYLE_PRIMARY + "-calendarpanel-weekdays");

    if (isShowISOWeekNumbers()) {
        daysTable.getFlexCellFormatter().setStyleName(headerRow, weekColumn, "v-first");
        daysTable.getFlexCellFormatter().setStyleName(headerRow, firstWeekdayColumn, "");
        daysTable.getRowFormatter().addStyleName(headerRow, STYLE_PRIMARY + "-calendarpanel-weeknumbers");
    } else {
        daysTable.getFlexCellFormatter().setStyleName(headerRow, weekColumn, "");
        daysTable.getFlexCellFormatter().setStyleName(headerRow, firstWeekdayColumn, "v-first");
    }

    daysTable.getFlexCellFormatter().setStyleName(headerRow, firstWeekdayColumn + 6, "v-last");

    // Print weekday names
    final int firstDay = getDateTimeService().getFirstDayOfWeek();
    for (int i = 0; i < 7; i++) {
        int day = i + firstDay;
        if (day > 6) {
            day = 0;
        }
        daysTable.setHTML(headerRow, firstWeekdayColumn + i,
                "<strong>" + getDateTimeService().getShortDay(day) + "</strong>");

        Roles.getColumnheaderRole()
                .set(daysTable.getCellFormatter().getElement(headerRow, firstWeekdayColumn + i));
    }

    // Zero out hours, minutes, seconds, and milliseconds to compare dates
    // without time part
    final Date tmp = new Date();
    final Date today = new Date(tmp.getYear(), tmp.getMonth(), tmp.getDate());

    //final Date selectedDate = value == null ? null : new Date(value.getYear(), value.getMonth(), value.getDate());

    final int startWeekDay = getDateTimeService().getStartWeekDay(displayedMonth);
    final Date dateToAdd = (Date) displayedMonth.clone();
    // Start from the first day of the week that at least partially belongs
    // to the current month
    dateToAdd.setDate(1 - startWeekDay);

    // No month has more than 6 weeks so 6 is a safe maximum for rows.
    for (int weekOfMonth = 1; weekOfMonth < 7; weekOfMonth++) {
        for (int dayOfWeek = 0; dayOfWeek < 7; dayOfWeek++) {

            // Actually write the day of month
            Date dayDate = (Date) dateToAdd.clone();
            DayWidget day = new DayWidget(dayDate);

            day.setStyleName(STYLE_PRIMARY + "-calendarpanel-day");

            if (!isDateInsideRange(dayDate, Resolution.DAY)) {
                day.addStyleDependentName(CN_OUTSIDE_RANGE);
            }

            //if (dateToAdd.equals(selectedDate)) {
            if (selectedDates.contains(dateToAdd)) {
                day.addStyleDependentName(CN_SELECTED);
                Roles.getGridcellRole().setAriaSelectedState(day.getElement(), SelectedValue.TRUE);
                selectedDays.add(day);
            }
            if (dateToAdd.equals(today)) {
                day.addStyleDependentName(CN_TODAY);
            }
            if (focusedDay != null && dateToAdd.equals(focusedDay.getDate())) {
                focusedDay = day;
                if (hasFocus) {
                    day.addStyleDependentName(CN_FOCUSED);
                }
            }
            if (dateToAdd.getMonth() != displayedMonth.getMonth()) {
                day.addStyleDependentName(CN_OFFMONTH);
            }

            daysTable.setWidget(weekOfMonth, firstWeekdayColumn + dayOfWeek, day);
            Roles.getGridcellRole()
                    .set(daysTable.getCellFormatter().getElement(weekOfMonth, firstWeekdayColumn + dayOfWeek));

            // ISO week numbers if requested
            daysTable.getCellFormatter().setVisible(weekOfMonth, weekColumn, isShowISOWeekNumbers());

            if (isShowISOWeekNumbers()) {
                final String baseCssClass = STYLE_PRIMARY + "-calendarpanel-weeknumber";
                String weekCssClass = baseCssClass;

                int weekNumber = DateTimeService.getISOWeekNumber(dateToAdd);

                daysTable.setHTML(weekOfMonth, 0,
                        "<span class=\"" + weekCssClass + "\"" + ">" + weekNumber + "</span>");
            }
            dateToAdd.setDate(dateToAdd.getDate() + 1);
        }
    }
}

From source file:com.vaadin.client.ui.VAbstractCalendarPanel.java

License:Apache License

/**
 * Sets the selection highlight to a given day in the current view
 *
 * @param date/* w  w w . j  a v  a  2  s . c o  m*/
 *            A Date representing the day of month to be selected. Must be
 *            one of the days currently visible.
 *
 */
private void selectDate(Date date) {
    if (selectedDay != null) {
        selectedDay.removeStyleDependentName(CN_SELECTED);
        Roles.getGridcellRole().removeAriaSelectedState(selectedDay.getElement());
    }

    int rowCount = days.getRowCount();
    for (int i = 0; i < rowCount; i++) {
        int cellCount = days.getCellCount(i);
        for (int j = 0; j < cellCount; j++) {
            Widget widget = days.getWidget(i, j);
            if (widget != null && widget instanceof VAbstractCalendarPanel.Day) {
                Day curday = (Day) widget;
                if (curday.getDate().equals(date)) {
                    curday.addStyleDependentName(CN_SELECTED);
                    selectedDay = curday;
                    Roles.getGridcellRole().setAriaSelectedState(selectedDay.getElement(), SelectedValue.TRUE);
                    return;
                }
            }
        }
    }
}

From source file:com.vaadin.client.ui.VAbstractCalendarPanel.java

License:Apache License

/**
 * Builds the day and time selectors of the calendar.
 *//*from   w  w w  . j  a  va  2  s .  c o m*/
private void buildCalendarBody() {

    final int weekColumn = 0;
    final int firstWeekdayColumn = 1;
    final int headerRow = 0;

    setWidget(1, 0, days);
    setCellPadding(0);
    setCellSpacing(0);
    getFlexCellFormatter().setColSpan(1, 0, 5);
    getFlexCellFormatter().setStyleName(1, 0, getDateField().getStylePrimaryName() + "-calendarpanel-body");

    days.getFlexCellFormatter().setStyleName(headerRow, weekColumn, "v-week");
    days.setHTML(headerRow, weekColumn, "<strong></strong>");
    // Hide the week column if week numbers are not to be displayed.
    days.getFlexCellFormatter().setVisible(headerRow, weekColumn, isShowISOWeekNumbers());

    days.getRowFormatter().setStyleName(headerRow,
            getDateField().getStylePrimaryName() + "-calendarpanel-weekdays");

    if (isShowISOWeekNumbers()) {
        days.getFlexCellFormatter().setStyleName(headerRow, weekColumn, "v-first");
        days.getFlexCellFormatter().setStyleName(headerRow, firstWeekdayColumn, "");
        days.getRowFormatter().addStyleName(headerRow,
                getDateField().getStylePrimaryName() + "-calendarpanel-weeknumbers");
    } else {
        days.getFlexCellFormatter().setStyleName(headerRow, weekColumn, "");
        days.getFlexCellFormatter().setStyleName(headerRow, firstWeekdayColumn, "v-first");
    }

    days.getFlexCellFormatter().setStyleName(headerRow, firstWeekdayColumn + 6, "v-last");

    // Print weekday names
    final int firstDay = getDateTimeService().getFirstDayOfWeek();
    for (int i = 0; i < 7; i++) {
        int day = i + firstDay;
        if (day > 6) {
            day = 0;
        }
        if (isBelowMonth(getResolution())) {
            days.setHTML(headerRow, firstWeekdayColumn + i,
                    "<strong>" + getDateTimeService().getShortDay(day) + "</strong>");
        } else {
            days.setHTML(headerRow, firstWeekdayColumn + i, "");
        }

        Roles.getColumnheaderRole().set(days.getCellFormatter().getElement(headerRow, firstWeekdayColumn + i));
    }

    // Zero out hours, minutes, seconds, and milliseconds to compare dates
    // without time part
    final Date tmp = new Date();
    final Date today = new Date(tmp.getYear(), tmp.getMonth(), tmp.getDate());

    final Date selectedDate = value == null ? null
            : new Date(value.getYear(), value.getMonth(), value.getDate());

    final int startWeekDay = getDateTimeService().getStartWeekDay(displayedMonth);
    final Date curr = (Date) displayedMonth.clone();
    // Start from the first day of the week that at least partially belongs
    // to the current month
    curr.setDate(1 - startWeekDay);

    // No month has more than 6 weeks so 6 is a safe maximum for rows.
    for (int weekOfMonth = 1; weekOfMonth < 7; weekOfMonth++) {
        for (int dayOfWeek = 0; dayOfWeek < 7; dayOfWeek++) {

            // Actually write the day of month
            Date dayDate = (Date) curr.clone();
            Day day = new Day(dayDate);

            day.setStyleName(getDateField().getStylePrimaryName() + "-calendarpanel-day");

            if (!isDateInsideRange(dayDate, getResolution(this::isDay))) {
                day.addStyleDependentName(CN_OUTSIDE_RANGE);
            }

            if (curr.equals(selectedDate)) {
                day.addStyleDependentName(CN_SELECTED);
                Roles.getGridcellRole().setAriaSelectedState(day.getElement(), SelectedValue.TRUE);
                selectedDay = day;
            }
            if (curr.equals(today)) {
                day.addStyleDependentName(CN_TODAY);
            }
            if (curr.equals(focusedDate)) {
                focusedDay = day;
                if (hasFocus) {
                    day.addStyleDependentName(CN_FOCUSED);
                }
            }
            if (curr.getMonth() != displayedMonth.getMonth()) {
                day.addStyleDependentName(CN_OFFMONTH);
            }

            days.setWidget(weekOfMonth, firstWeekdayColumn + dayOfWeek, day);
            Roles.getGridcellRole()
                    .set(days.getCellFormatter().getElement(weekOfMonth, firstWeekdayColumn + dayOfWeek));

            // ISO week numbers if requested
            days.getCellFormatter().setVisible(weekOfMonth, weekColumn, isShowISOWeekNumbers());

            if (isShowISOWeekNumbers()) {
                final String baseCssClass = getDateField().getStylePrimaryName() + "-calendarpanel-weeknumber";
                String weekCssClass = baseCssClass;

                int weekNumber = DateTimeService.getISOWeekNumber(curr);

                days.setHTML(weekOfMonth, 0,
                        "<span class=\"" + weekCssClass + "\"" + ">" + weekNumber + "</span>");
            }
            curr.setDate(curr.getDate() + 1);
        }
    }
}

From source file:com.vaadin.client.ui.VCalendarPanel.java

License:Apache License

/**
 * Sets the selection highlight to a given day in the current view
 * // ww w. jav a  2  s  .  com
 * @param date
 *            A Date representing the day of month to be selected. Must be
 *            one of the days currently visible.
 * 
 */
private void selectDate(Date date) {
    if (selectedDay != null) {
        selectedDay.removeStyleDependentName(CN_SELECTED);
        Roles.getGridcellRole().removeAriaSelectedState(selectedDay.getElement());
    }

    int rowCount = days.getRowCount();
    for (int i = 0; i < rowCount; i++) {
        int cellCount = days.getCellCount(i);
        for (int j = 0; j < cellCount; j++) {
            Widget widget = days.getWidget(i, j);
            if (widget != null && widget instanceof Day) {
                Day curday = (Day) widget;
                if (curday.getDate().equals(date)) {
                    curday.addStyleDependentName(CN_SELECTED);
                    selectedDay = curday;
                    Roles.getGridcellRole().setAriaSelectedState(selectedDay.getElement(), SelectedValue.TRUE);
                    return;
                }
            }
        }
    }
}

From source file:com.vaadin.client.ui.VCalendarPanel.java

License:Apache License

/**
 * Builds the day and time selectors of the calendar.
 *///ww  w .jav  a2 s.  c  o  m
private void buildCalendarBody() {

    final int weekColumn = 0;
    final int firstWeekdayColumn = 1;
    final int headerRow = 0;

    setWidget(1, 0, days);
    setCellPadding(0);
    setCellSpacing(0);
    getFlexCellFormatter().setColSpan(1, 0, 5);
    getFlexCellFormatter().setStyleName(1, 0, parent.getStylePrimaryName() + "-calendarpanel-body");

    days.getFlexCellFormatter().setStyleName(headerRow, weekColumn, "v-week");
    days.setHTML(headerRow, weekColumn, "<strong></strong>");
    // Hide the week column if week numbers are not to be displayed.
    days.getFlexCellFormatter().setVisible(headerRow, weekColumn, isShowISOWeekNumbers());

    days.getRowFormatter().setStyleName(headerRow, parent.getStylePrimaryName() + "-calendarpanel-weekdays");

    if (isShowISOWeekNumbers()) {
        days.getFlexCellFormatter().setStyleName(headerRow, weekColumn, "v-first");
        days.getFlexCellFormatter().setStyleName(headerRow, firstWeekdayColumn, "");
        days.getRowFormatter().addStyleName(headerRow,
                parent.getStylePrimaryName() + "-calendarpanel-weeknumbers");
    } else {
        days.getFlexCellFormatter().setStyleName(headerRow, weekColumn, "");
        days.getFlexCellFormatter().setStyleName(headerRow, firstWeekdayColumn, "v-first");
    }

    days.getFlexCellFormatter().setStyleName(headerRow, firstWeekdayColumn + 6, "v-last");

    // Print weekday names
    final int firstDay = getDateTimeService().getFirstDayOfWeek();
    for (int i = 0; i < 7; i++) {
        int day = i + firstDay;
        if (day > 6) {
            day = 0;
        }
        if (getResolution().getCalendarField() > Resolution.MONTH.getCalendarField()) {
            days.setHTML(headerRow, firstWeekdayColumn + i,
                    "<strong>" + getDateTimeService().getShortDay(day) + "</strong>");
        } else {
            days.setHTML(headerRow, firstWeekdayColumn + i, "");
        }

        Roles.getColumnheaderRole().set(days.getCellFormatter().getElement(headerRow, firstWeekdayColumn + i));
    }

    // Zero out hours, minutes, seconds, and milliseconds to compare dates
    // without time part
    final Date tmp = new Date();
    final Date today = new Date(tmp.getYear(), tmp.getMonth(), tmp.getDate());

    final Date selectedDate = value == null ? null
            : new Date(value.getYear(), value.getMonth(), value.getDate());

    final int startWeekDay = getDateTimeService().getStartWeekDay(displayedMonth);
    final Date curr = (Date) displayedMonth.clone();
    // Start from the first day of the week that at least partially belongs
    // to the current month
    curr.setDate(1 - startWeekDay);

    // No month has more than 6 weeks so 6 is a safe maximum for rows.
    for (int weekOfMonth = 1; weekOfMonth < 7; weekOfMonth++) {
        for (int dayOfWeek = 0; dayOfWeek < 7; dayOfWeek++) {

            // Actually write the day of month
            Date dayDate = (Date) curr.clone();
            Day day = new Day(dayDate);

            day.setStyleName(parent.getStylePrimaryName() + "-calendarpanel-day");

            if (!isDateInsideRange(dayDate, Resolution.DAY)) {
                day.addStyleDependentName(CN_OUTSIDE_RANGE);
            }

            if (curr.equals(selectedDate)) {
                day.addStyleDependentName(CN_SELECTED);
                Roles.getGridcellRole().setAriaSelectedState(day.getElement(), SelectedValue.TRUE);
                selectedDay = day;
            }
            if (curr.equals(today)) {
                day.addStyleDependentName(CN_TODAY);
            }
            if (curr.equals(focusedDate)) {
                focusedDay = day;
                if (hasFocus) {
                    day.addStyleDependentName(CN_FOCUSED);
                }
            }
            if (curr.getMonth() != displayedMonth.getMonth()) {
                day.addStyleDependentName(CN_OFFMONTH);
            }

            days.setWidget(weekOfMonth, firstWeekdayColumn + dayOfWeek, day);
            Roles.getGridcellRole()
                    .set(days.getCellFormatter().getElement(weekOfMonth, firstWeekdayColumn + dayOfWeek));

            // ISO week numbers if requested
            days.getCellFormatter().setVisible(weekOfMonth, weekColumn, isShowISOWeekNumbers());

            if (isShowISOWeekNumbers()) {
                final String baseCssClass = parent.getStylePrimaryName() + "-calendarpanel-weeknumber";
                String weekCssClass = baseCssClass;

                int weekNumber = DateTimeService.getISOWeekNumber(curr);

                days.setHTML(weekOfMonth, 0,
                        "<span class=\"" + weekCssClass + "\"" + ">" + weekNumber + "</span>");
            }
            curr.setDate(curr.getDate() + 1);
        }
    }
}

From source file:org.unitime.timetable.gwt.client.widgets.UniTimeTable.java

License:Apache License

public void setRow(int row, T data, List<? extends Widget> widgets) {
    SmartTableRow<T> oldRow = getSmartRow(row);
    if (oldRow != null && oldRow.getData() != null) {
        DataChangedEvent<T> event = new DataChangedEvent<T>(oldRow.getData(), row);
        for (DataChangedListener<T> listener : iDataChangedListeners)
            listener.onDataRemoved(event);
    }/*ww w .  ja  v a 2s.  com*/
    SmartTableRow smartRow = new SmartTableRow(data);
    int col = 0, x = 0;
    for (Widget widget : widgets) {
        SmartTableCell cell = new SmartTableCell(smartRow, widget);
        int colspan = 1;
        if (widget instanceof HasColSpan) {
            colspan = ((HasColSpan) widget).getColSpan();
            getFlexCellFormatter().setColSpan(row, col, colspan);
        }
        if (widget instanceof HasStyleName && ((HasStyleName) widget).getStyleName() != null)
            getFlexCellFormatter().setStyleName(row, col, ((HasStyleName) widget).getStyleName());
        if (widget instanceof HasAdditionalStyleNames) {
            List<String> styleNames = ((HasAdditionalStyleNames) widget).getAdditionalStyleNames();
            if (styleNames != null)
                for (String styleName : styleNames)
                    getFlexCellFormatter().addStyleName(row, col, styleName);
        }
        if (widget instanceof HasCellAlignment)
            getFlexCellFormatter().setHorizontalAlignment(row, col,
                    ((HasCellAlignment) widget).getCellAlignment());
        if (widget instanceof HasVerticalCellAlignment)
            getFlexCellFormatter().setVerticalAlignment(row, col,
                    ((HasVerticalCellAlignment) widget).getVerticalCellAlignment());
        if (widget instanceof HasColumn)
            ((HasColumn) widget).setColumn(col);
        setWidget(row, col, cell);
        if (widget instanceof UniTimeTableHeader) {
            Roles.getColumnheaderRole().set(getCellFormatter().getElement(row, col));
        } else {
            Roles.getGridcellRole().set(getCellFormatter().getElement(row, col));
        }
        x += colspan;
        if (row > 0) {
            if (colspan == 1) {
                getCellFormatter().setVisible(row, col, isColumnVisible(x - 1));
            } else {
                int span = 0;
                for (int h = x - colspan; h < x; h++)
                    if (isColumnVisible(h))
                        span++;
                getCellFormatter().setVisible(row, col, span > 0);
                getFlexCellFormatter().setColSpan(row, col, Math.max(1, span));
            }
        }
        col++;
    }
    Roles.getRowRole().set(getRowFormatter().getElement(row));
    if (data != null) {
        DataChangedEvent<T> event = new DataChangedEvent<T>(data, row);
        for (DataChangedListener<T> listener : iDataChangedListeners)
            listener.onDataInserted(event);
    }
}

From source file:org.unitime.timetable.gwt.client.widgets.WebTable.java

License:Apache License

public void setHeader(Row... header) {
    iHeader = header;//w  ww. j  a  v a2 s.c  o m
    for (int i = 0; i < header.length; i++) {
        for (int j = 0; j < header[i].getNrCells(); j++) {
            Cell cell = header[i].getCell(j);
            if (cell.getWidget() == null) {
                iTable.setHTML(i, j,
                        (cell.getValue() == null || cell.getValue().isEmpty() ? "&nbsp;" : cell.getValue()));
                if (cell.getAriaLabel() != null && !cell.getAriaLabel().isEmpty())
                    Roles.getGridcellRole().setAriaLabelProperty(iTable.getCellFormatter().getElement(i, j),
                            cell.getAriaLabel());
            } else
                iTable.setWidget(i, j, cell.getWidget());
            iTable.getFlexCellFormatter().setWordWrap(i, j, cell.getWordWrap());
            iTable.getFlexCellFormatter().setStyleName(i, j,
                    (cell.getStyleName() == null ? "unitime-TableHeader" : cell.getStyleName()));
            iTable.getFlexCellFormatter().setWidth(i, j,
                    (cell.getWidth() == null ? (100 / header.length) + "%" : cell.getWidth()));
            iTable.getFlexCellFormatter().setColSpan(i, j, cell.getColSpan());
            iTable.getFlexCellFormatter().setVerticalAlignment(i, j, cell.getVerticalAlignment());
            iTable.getFlexCellFormatter().setHorizontalAlignment(i, j, cell.getHorizontalAlignment());
            iTable.getFlexCellFormatter().getElement(i, j).setTitle(cell.getTitle());
            Roles.getColumnheaderRole().set(iTable.getCellFormatter().getElement(i, j));
        }
        Roles.getRowRole().set(iTable.getRowFormatter().getElement(i));

        if (header[i].getAriaLabel() != null && !header[i].getAriaLabel().isEmpty()) {
            iTable.setWidget(i, header[i].getNrCells(), new AriaHiddenLabel(header[i].getAriaLabel()));
        } else {
            iTable.setHTML(i, header[i].getNrCells(), "");
        }
        Roles.getRowheaderRole().set(iTable.getCellFormatter().getElement(i, header[i].getNrCells()));
        iTable.getFlexCellFormatter().setStyleName(i, header[i].getNrCells(), "unitime-TableHeader");
        iTable.getFlexCellFormatter().addStyleName(i, header[i].getNrCells(), "rowheader");
    }
}

From source file:org.unitime.timetable.gwt.client.widgets.WebTable.java

License:Apache License

public void setData(Row... rows) {
    setSelectedRow(-1);/*  ww w. j  av  a2  s.  c  o  m*/
    if (rows == null || rows.length == 0) {
        clearData(true);
        return;
    }
    clearData(rows.length);
    iRows = rows;
    for (int i = 0; i < iRows.length; i++) {
        if (iRows[i] == null)
            continue;
        iRows[i].setRowIdx(i);
        iRows[i].setTable(this);
        iTable.getRowFormatter().setStyleName(i + getHeaderRowsCount(), null);
        for (int j = 0; j < iRows[i].getNrCells(); j++) {
            Cell cell = iRows[i].getCell(j);
            cell.setColIdx(j);
            cell.setRow(iRows[i]);
            if (cell.getWidget() == null) {
                iTable.setHTML(i + getHeaderRowsCount(), j,
                        (cell.getValue() == null || cell.getValue().isEmpty() ? "&nbsp;" : cell.getValue()));
                if (cell.getAriaLabel() != null && !cell.getAriaLabel().isEmpty())
                    Roles.getGridcellRole().setAriaLabelProperty(
                            iTable.getCellFormatter().getElement(i + getHeaderRowsCount(), j),
                            cell.getAriaLabel());
            } else
                iTable.setWidget(i + getHeaderRowsCount(), j, cell.getWidget());
            iTable.getFlexCellFormatter().setWordWrap(i + getHeaderRowsCount(), j, cell.getWordWrap());
            iTable.getFlexCellFormatter().setColSpan(i + getHeaderRowsCount(), j, cell.getColSpan());
            iTable.getFlexCellFormatter().setStyleName(i + getHeaderRowsCount(), j, cell.getStyleName());
            iTable.getFlexCellFormatter().setWidth(i + getHeaderRowsCount(), j, cell.getWidth());
            iTable.getFlexCellFormatter().setVerticalAlignment(i + getHeaderRowsCount(), j,
                    cell.getVerticalAlignment());
            iTable.getFlexCellFormatter().setHorizontalAlignment(i + getHeaderRowsCount(), j,
                    cell.getHorizontalAlignment());
            iTable.getFlexCellFormatter().getElement(i + getHeaderRowsCount(), j).setTitle(cell.getTitle());
            Roles.getGridcellRole().set(iTable.getCellFormatter().getElement(i + getHeaderRowsCount(), j));
        }
        Roles.getRowRole().set(iTable.getRowFormatter().getElement(i + getHeaderRowsCount()));

        for (int j = iTable.getCellCount(i + getHeaderRowsCount()) - 1; j >= iRows[i].getNrCells(); j--)
            iTable.removeCell(i + getHeaderRowsCount(), j);

        if (iRows[i].getAriaLabel() != null && !iRows[i].getAriaLabel().isEmpty()) {
            iTable.setWidget(i + getHeaderRowsCount(), iRows[i].getNrCells(),
                    new AriaHiddenLabel(iRows[i].getAriaLabel()));
        } else {
            iTable.setHTML(i + getHeaderRowsCount(), iRows[i].getNrCells(), "");
        }
        Roles.getRowheaderRole()
                .set(iTable.getCellFormatter().getElement(i + getHeaderRowsCount(), iRows[i].getNrCells()));
        iTable.getFlexCellFormatter().setStyleName(i + getHeaderRowsCount(), iRows[i].getNrCells(),
                iRows[i].getCell(iRows[i].getNrCells() - 1).getStyleName());
        iTable.getFlexCellFormatter().addStyleName(i + getHeaderRowsCount(), iRows[i].getNrCells(),
                "rowheader");
    }
}