@Override
  @SuppressWarnings("unchecked")
  public void onBrowserEvent(
      Context context,
      Element parent,
      CellValue<? extends Comparable<?>> value,
      NativeEvent event,
      ValueUpdater<CellValue<? extends Comparable<?>>> valueUpdater) {

    // Updates are passed back to the DecoratedGridWidget where merged cells
    // are also updated. Override the Column's FieldUpdater because
    // a Horizontal MergableGridWidget will potentially have a different
    // data-type per row.
    cell.onBrowserEvent(
        context,
        parent,
        (T) value.getValue(),
        event,
        new ValueUpdater<T>() {

          public void update(T value) {
            eventBus.fireEvent(new UpdateSelectedCellsEvent(value));
          }
        });
  }
  @Override
  public void onBrowserEvent(
      Context context,
      Element parent,
      RichGroup value,
      NativeEvent event,
      ValueUpdater<RichGroup> valueUpdater) {
    super.onBrowserEvent(context, parent, value, event, valueUpdater);

    if (event.getType().equals("click")) {
      valueUpdater.update(value);
    }
  }
 /* (non-Javadoc)
  * @see com.google.gwt.cell.client.AbstractCell#onBrowserEvent(com.google.gwt.cell.client.Cell.Context, com.google.gwt.dom.client.Element, java.lang.Object, com.google.gwt.dom.client.NativeEvent, com.google.gwt.cell.client.ValueUpdater)
  */
 @Override
 public void onBrowserEvent(
     Context context,
     Element parent,
     CellTreeNode value,
     NativeEvent event,
     ValueUpdater<CellTreeNode> valueUpdater) {
   if (event.getType().equals(BrowserEvents.CONTEXTMENU)) {
     event.preventDefault();
     event.stopPropagation();
     if (MatContext.get().getMeasureLockService().checkForEditPermission()) {
       onRightClick(value, (Event) event, parent);
     }
   } else {
     super.onBrowserEvent(context, parent, value, event, valueUpdater);
   }
 }
 @Override
 public void onBrowserEvent(
     Context context,
     Element parent,
     String value,
     NativeEvent event,
     ValueUpdater<String> valueUpdater) {
   super.onBrowserEvent(context, parent, value, event, valueUpdater);
   if (CLICK.equals(event.getType())) {
     EventTarget eventTarget = event.getEventTarget();
     if (!Element.is(eventTarget)) {
       return;
     }
     final Element firstChildElement = parent.getFirstChildElement();
     if (firstChildElement.isOrHasChild(Element.as(eventTarget))) {
       // Ignore clicks that occur outside of the main element.
       onEnterKeyDown(context, parent, value, event, valueUpdater);
     }
   }
 }
 @Override
 public void onBrowserEvent(
     com.google.gwt.cell.client.Cell.Context context,
     Element parent,
     SummaryDTO value,
     NativeEvent event,
     ValueUpdater<SummaryDTO> valueUpdater) {
   super.onBrowserEvent(context, parent, value, event, valueUpdater);
   EventTarget eventTarget = event.getEventTarget();
   if (Element.is(eventTarget)) {
     Element src = Element.as(eventTarget);
     String id = src.getId();
     if (id.startsWith(SEE_METADATA)) {
       presenter.displayMetadata(value.getUuid());
     }
     if (id.startsWith(PDF_METADATA)) {
       presenter.displayMetadataPDF(value.getUuid());
     }
   }
 }
 @Override
 @SuppressWarnings("unchecked")
 public void render(
     Context context, CellValue<? extends Comparable<?>> value, SafeHtmlBuilder sb) {
   cell.render(context, (T) value.getValue(), sb);
 }
 @Override
 @SuppressWarnings("unchecked")
 public boolean isEditing(
     Context context, Element parent, CellValue<? extends Comparable<?>> value) {
   return cell.isEditing(context, parent, (T) value.getValue());
 }
 @Override
 public boolean handlesSelection() {
   return cell.handlesSelection();
 }
 @Override
 public Set<String> getConsumedEvents() {
   return cell.getConsumedEvents();
 }
 @Override
 public boolean dependsOnSelection() {
   return cell.dependsOnSelection();
 }
 /** @param cell */
 public DecoratedGridCellValueAdaptor(AbstractCell<T> cell, EventBus eventBus) {
   super(cell.getConsumedEvents());
   this.eventBus = eventBus;
   this.cell = cell;
 }
 @Override
 @SuppressWarnings("unchecked")
 public void setValue(Context context, Element parent, CellValue<? extends Comparable<?>> value) {
   cell.setValue(context, parent, (T) value.getValue());
 }