GWT 2.1.0

com.google.gwt.cell.client
Interface Cell<C>

Type Parameters:
C - the type that this Cell represents
All Known Implementing Classes:
AbstractCell, AbstractEditableCell, AbstractInputCell, AbstractSafeHtmlCell, ActionCell, ButtonCell, CheckboxCell, ClickableTextCell, CompositeCell, DateCell, DatePickerCell, EditTextCell, IconCellDecorator, ImageCell, ImageLoadingCell, ImageResourceCell, NumberCell, SafeHtmlCell, SelectionCell, TextCell, TextInputCell

public interface Cell<C>

A light weight representation of a renderable object.

Example

public class CellExample implements EntryPoint {

  /**
   * A custom {@link Cell} used to render a string that contains the name of a
   * color.
   */
  private static class ColorCell extends AbstractCell<String> {

    @Override
    public void render(String value, Object key, SafeHtmlBuilder sb) {
      /*
       * Always do a null check on the value. Cell widgets can pass null to
       * cells if the underlying data contains a null, or if the data arrives
       * out of order.
       */
      if (value == null) {
        return;
      }

      // If the value comes from the user, we escape it to avoid XSS attacks.
      SafeHtml safeValue = SafeHtmlUtils.fromString(value);

      // Append some HTML that sets the text color.
      sb.appendHtmlConstant("<div style=\"color:" + safeValue.asString()
          + "\">");
      sb.append(safeValue);
      sb.appendHtmlConstant("</div>");
    }
  }

  /**
   * The list of data to display.
   */
  private static final List<String> COLORS = Arrays.asList("red", "green",
      "blue", "violet", "black", "gray");

  public void onModuleLoad() {
    // Create a cell to render each value.
    ColorCell cell = new ColorCell();

    // Use the cell in a CellList.
    CellList<String> cellList = new CellList<String>(cell);

    // Push the data into the widget.
    cellList.setRowData(0, COLORS);

    // Add it to the root panel.
    RootPanel.get().add(cellList);
  }
}


Method Summary
 boolean dependsOnSelection()
          Check if this cell depends on the selection state.
 java.util.Set<java.lang.String> getConsumedEvents()
          Get the set of events that this cell consumes.
 boolean handlesSelection()
          Check if this cell handles selection.
 boolean isEditing(Element parent, C value, java.lang.Object key)
          Returns true if the cell is currently editing the data identified by the given element and key.
 void onBrowserEvent(Element parent, C value, java.lang.Object key, NativeEvent event, ValueUpdater<C> valueUpdater)
          Handle a browser event that took place within the cell.
 void render(C value, java.lang.Object key, SafeHtmlBuilder sb)
          Render a cell as HTML into a SafeHtmlBuilder, suitable for passing to Element.setInnerHTML(java.lang.String) on a container element.
 boolean resetFocus(Element parent, C value, java.lang.Object key)
          Reset focus on the Cell.
 void setValue(Element parent, C value, java.lang.Object key)
          This method may be used by cell containers to set the value on a single cell directly, rather than using Element.setInnerHTML(String).
 

Method Detail

dependsOnSelection

boolean dependsOnSelection()
Check if this cell depends on the selection state.

Returns:
true if dependent on selection, false if not

getConsumedEvents

java.util.Set<java.lang.String> getConsumedEvents()
Get the set of events that this cell consumes. The container that uses this cell should only pass these events to onBrowserEvent(Element, Object, Object, NativeEvent, ValueUpdater).

The returned value should not be modified, and may be an unmodifiable set. Changes to the return value may not be reflected in the cell.

Returns:
the consumed events, or null if no events are consumed

handlesSelection

boolean handlesSelection()
Check if this cell handles selection. If the cell handles selection, then its container should not automatically handle selection.

Returns:
true if the cell handles selection, false if not

isEditing

boolean isEditing(Element parent,
                  C value,
                  java.lang.Object key)
Returns true if the cell is currently editing the data identified by the given element and key. While a cell is editing, widgets containing the cell may chooses to pass keystrokes directly to the cell rather than using them for navigation purposes.

Parameters:
parent - the parent Element
value - the value associated with the cell
key - the unique key associated with the row object
Returns:
true if the cell is in edit mode

onBrowserEvent

void onBrowserEvent(Element parent,
                    C value,
                    java.lang.Object key,
                    NativeEvent event,
                    ValueUpdater<C> valueUpdater)
Handle a browser event that took place within the cell. The default implementation returns null.

Parameters:
parent - the parent Element
value - the value associated with the cell
key - the unique key associated with the row object
event - the native browser event
valueUpdater - a ValueUpdater, or null if not specified

render

void render(C value,
            java.lang.Object key,
            SafeHtmlBuilder sb)
Render a cell as HTML into a SafeHtmlBuilder, suitable for passing to Element.setInnerHTML(java.lang.String) on a container element.

Note: If your cell contains natively focusable elements, such as buttons or input elements, be sure to set the tabIndex to -1 so that they do not steal focus away from the containing widget.

Parameters:
value - the cell value to be rendered
key - the unique key associated with the row object
sb - the SafeHtmlBuilder to be written to

resetFocus

boolean resetFocus(Element parent,
                   C value,
                   java.lang.Object key)
Reset focus on the Cell. This method is called if the cell has focus when it is refreshed.

Parameters:
parent - the parent Element
value - the value associated with the cell
key - the unique key associated with the row object
Returns:
true if focus is taken, false if not

setValue

void setValue(Element parent,
              C value,
              java.lang.Object key)
This method may be used by cell containers to set the value on a single cell directly, rather than using Element.setInnerHTML(String). See AbstractCell.setValue(Element, Object, Object) for a default implementation that uses render(Object, Object, SafeHtmlBuilder).

Parameters:
parent - the parent Element
value - the value associated with the cell
key - the unique key associated with the row object

GWT 2.1.0