@Override
    public void onCellClick(final CellClickEvent event) {
      final int level = event.getRecord().getAttributeAsInt(MillerTreeView.LEVEL);
      final int id = event.getRecord().getAttributeAsInt(MillerTreeView.ID);

      if (level == 0) {
        redrawParents(level, id);
        redrawChildren(level, id);
        asCanvas()
            .scrollTo(
                (treecolumns.get(0).getLeft()
                    - (asCanvas().getWidth() - MillerTreeView.MILLERCOLUMNSWIDTH) / 2),
                0);
      } else {
        if (level > 0 && level < maxlevelchildren) {
          redrawChildren(level, id);
          redrawParents(-1, id);

          asCanvas().scrollTo(treecolumns.get(level + 1).getRight() - asCanvas().getWidth(), 0);
        } else if (level < 0 && level > maxlevelparents) {
          redrawParents(level, id);
          redrawChildren(1, id);

          asCanvas().scrollTo(treecolumns.get(level - 1).getLeft(), 0);
        } else if (level > 0 && level == maxlevelchildren) {
          treecolumns.get(level).resetSelectedFlag();
        }
      }
      event.getRecord().setAttribute("selected", true);
    }
 public void onCellClick(CellClickEvent event) {
   ListGridField gridField = AttributeListGrid.this.getField(event.getColNum());
   if (gridField.getName().equals(attributeInfo.getName())) {
     ListGridRecord record = event.getRecord();
     String value = record.getAttribute(attributeInfo.getName());
     Window.open(value, "urlWindow", null);
   }
 }