Define each tab content as a separate UiBinder template. Since UiBinder classes are Composites you can add them to any container just like any other widget.
You can assemble your TabLayoutPanel in code by adding each UiBinder templeted object into a tab in the TabPanel or define another UiBinder Template with the TabPanel and all the Tabs defined.
If you go the UiBinder route for templating the TabLayoutPanel, import the tab panel contents (Composites you defined earlier using UiBinder) into the UiBinder by defining a new 'namespace' pointing to the package where all your composites reside. You then refer to your composites as namespace:ClassName in the UiBinder template.
if com.project.package
is where you keep all your composites which you want embeded in individual tabs then define a new namespace f as xmlns:f= 'com.project.package'
soon after xmlns:g declaration.
You refer to individual composites in your UiBinder as
<f:Composite1 />
<f:Composite2 />