Thursday, May 30, 2013

GWT: Pass click event from widget contained in cell to the celltable

I have a widget that I render in a GWT cell, which extends the AbstractCell, via the render function below. The column is created as below with the getValue and the FieldUpdater (update) function being defined. The intent is to set selected row to correspond to the clicked widget. However, when I click on the widget, the onBrowserEvent function of the cell is not called. I think this is happening because the widget in question contains a FlexTable within it.

I verified this by setting a breakpoint in the function AbstractCellTable.onBrowserEvent2 and noticed that the function does not fire a cell event since the else if (section == getTableBodyElement())

return false. This is false because the section is a sub-section of the table body element corresponding to the table that I inserted via the widget.

Is there a way to pass the click in the inner table (widget) to the outer cell table?


//Render function to add widget to cell  public void render(Context context, MyItem value, SafeHtmlBuilder sb) {      if (value != null) {          SafeHtml safeValue = SafeHtmlUtils.fromTrustedString(value              .getWidget().getElement().getString());          sb.append(safeValue);      }  }      //Creating the corresponding column, setting up the field update,   // and adding the column to cell table    // Create Cell  MyItemCell myItemCell = new MyItemCell();    // Create Column  Column<MyItem, MyItem> myItemColumn = new Column<MyItem, MyItem>(myItemCell) {        @Override      public MyItem getValue(MyItem object) {          return object;      }    };    // add field updater  myItemColumn.setFieldUpdater(new FieldUpdater<MyItem, MyItem>() {      @Override      public void update(int index, MyItem object, MyItem value) {          // This function, for some reason,           // is not getting called when I click           // on the widget corresponding to MyItem          MyDataTable.this.getSelectionModel().setSelected(object, true);      }  });      // Add column to table
this.getDataTable().addColumn(myItemColumn);

--
You received this message because you are subscribed to the Google Groups "Google Web Toolkit" group.
To unsubscribe from this group and stop receiving emails from it, send an email to google-web-toolkit+unsubscribe@googlegroups.com.
To post to this group, send email to google-web-toolkit@googlegroups.com.
Visit this group at http://groups.google.com/group/google-web-toolkit?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.
 
 

No comments:

Post a Comment