@Override
  public void render(Context context, SafeHtml value, SafeHtmlBuilder sb) {

    ObjectProperty property = (ObjectProperty) context.getKey();
    if (navigable && property != null && !property.isBaseType()) {
      SafeHtml startAnchor = null;
      SafeHtml endAnchor = null;
      startAnchor =
          new SafeHtml() {
            @Override
            public String asString() {
              return "<div style=\"cursor: pointer;\">";
            }
          };

      endAnchor =
          new SafeHtml() {
            @Override
            public String asString() {
              return "</div>";
            }
          };

      sb.append(startAnchor);
      sb.append(value);
      sb.append(endAnchor);

    } else {
      super.render(context, value, sb);
    }
  }
  @Override
  public void onBrowserEvent(
      Context context,
      Element parent,
      String value,
      NativeEvent event,
      ValueUpdater<String> stringValueUpdater) {

    ObjectProperty property = (ObjectProperty) context.getKey();
    if (DOM.eventGetType((Event) event) == Event.ONCLICK && !property.isBaseType()) {
      editor.onTypeCellSelection(property);
    } else {
      super.onBrowserEvent(context, parent, value, event, stringValueUpdater);
    }
  }