Example usage for com.google.gwt.cell.client HasCell getFieldUpdater

List of usage examples for com.google.gwt.cell.client HasCell getFieldUpdater

Introduction

In this page you can find the example usage for com.google.gwt.cell.client HasCell getFieldUpdater.

Prototype

FieldUpdater<T, C> getFieldUpdater();

Source Link

Document

Returns the FieldUpdater instance.

Usage

From source file:gwt.material.design.client.ui.table.AbstractDataTable.java

License:Apache License

/**
 * Fire an event to the Cell within the specified {@link TableCellElement}.
 *///from www. j  a  v  a 2s .c  o  m
private <C> void fireEventToCell(Event event, String eventType, Element parentElem, final T rowValue,
        Context context, HasCell<T, C> column) {
    // Check if the cell consumes the event.
    Cell<C> cell = column.getCell();
    if (!cellConsumesEventType(cell, eventType)) {
        return;
    }

    C cellValue = column.getValue(rowValue);
    boolean cellWasEditing = cell.isEditing(context, parentElem, cellValue);
    if (column instanceof Column) {
        /*
         * If the HasCell is a Column, let it handle the event itself. This is
         * here for legacy support.
         */
        Column<T, C> col = (Column<T, C>) column;
        col.onBrowserEvent(context, parentElem, rowValue, event);
    } else {
        // Create a FieldUpdater.
        final FieldUpdater<T, C> fieldUpdater = column.getFieldUpdater();
        final int index = context.getIndex();
        ValueUpdater<C> valueUpdater = (fieldUpdater == null) ? null : (value) -> {
            fieldUpdater.update(index, rowValue, value);
        };

        // Fire the event to the cell.
        cell.onBrowserEvent(context, parentElem, cellValue, event, valueUpdater);
    }

    // Reset focus if needed.
    cellIsEditing = cell.isEditing(context, parentElem, cellValue);
    if (cellWasEditing && !cellIsEditing) {
        CellBasedWidgetImpl.get().resetFocus(() -> {
            setFocus(true);
        });
    }
}