It seems to be an issue with the HTMLPanel itself - it blocks @UiField (provided=true) explicitly. I still have no idea why, unfortunately.
Quickest workaround is to remove the (provided=true) part, and then make the HTMLPanel yourself explicitly, and add it to the original one.
eg in your code, change:
@UiField(provided = true)
HTMLPanel pnlContent;
to
@UiField
HTMLPanel pnlContent;
and
@Override
public Widget asWidget() {
lblName = new LabelToolItem(row.getStr());
pnlContent = new HTMLPanel(renderer.render(row));
return binder.createAndBindUi(this);
}
to
@Override
public Widget asWidget() {
lblName = new LabelToolItem(row.getStr());
HTMLPanel pnlContent_temp = new HTMLPanel(renderer.render(row));
Widget w = binder.createAndBindUi(this);
pnlContent.add(pnlContent_temp);
return w;
}