package com.demosten.client;
import com.google.gwt.user.client.DOM;
import com.google.gwt.user.client.Element;
import com.google.gwt.user.client.ui.ComplexPanel;
import com.google.gwt.user.client.ui.InsertPanel;
import com.google.gwt.user.client.ui.Widget;
public class GroupBoxPanel extends ComplexPanel implements InsertPanel
{
 private Element legend;
 public GroupBoxPanel()
 {
  Element fieldset = DOM.createFieldSet();
  this.legend = DOM.createLegend();
  DOM.appendChild(fieldset, legend);
  setElement(fieldset);
 }
 @Override
 public void add(Widget w)
 {
  add(w, getElement());
 }
 public void insert(Widget w, int beforeIndex)
 {
  insert(w, getElement(), beforeIndex, true);
 }
 public String getText()
 {
  return DOM.getInnerText(this.legend);
 }
 public void setText(String text)
 {
  DOM.setInnerText(this.legend, text);
 }
}
it can be used in UiBinder Templates:
<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
<ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder'
 xmlns:g='urn:import:com.google.gwt.user.client.ui'
 xmlns:d='urn:import:com.demosten.client'>
 
 <g:VerticalPanel>
  <d:GroupBoxPanel text="Account data">
   <g:HorizontalPanel>
    <g:Label>e-mail:</g:Label>
    <g:TextBox />
   </g:HorizontalPanel>
   <g:HorizontalPanel>
    <g:Label>password:</g:Label>
    <g:PasswordTextBox />
   </g:HorizontalPanel>
  </d:GroupBoxPanel>
  <g:HorizontalPanel>
   <g:Button text='Sign in' />
   <g:Button text='Register' />
  </g:HorizontalPanel>
 </g:VerticalPanel>
</ui:UiBinder>Use it as you like :)

