Tuesday, July 7, 2009

example for gwt lazy panel

The gwt lazy panel has a createWidget method that is created when lazyPanel.setVisible("true") is called, making it possible to reduce initial loading of a tab panel

hasBeenLoaded = false;
TabPanel tp = new TabPanel();
tp.getTabBar().setStylePrimaryName("tabStatisticsMain");
tp.getDeckPanel().setStylePrimaryName("tabStatisticsMain");
tp.setWidth("100%");
VerticalPanel vp1 = new VerticalPanel();
VerticalPanel vp2 = new VerticalPanel();
create(vp1);

tp.add(vp1, "Individual stats");
tp.setVisible(true);
final LazyPanel lp = new LazyPanel()
{
@Override
protected Widget createWidget()
{
return create(vp2);
}
};
lp.setVisible(false);
tp.add(lp, "Team stats");
tp.addBeforeSelectionHandler(new BeforeSelectionHandler()
{
public void onBeforeSelection(BeforeSelectionEvent event)
{
if (event.getItem().intValue() == 1){
lp.setVisible(true);
if(!hasBeenLoaded){
Document.get().getElementById("Loading- Message").getStyle().setProperty("visibility", "visible");
hasBeenLoaded = true;
}
}
else
lp.setVisible(false);
}
});

tp.selectTab(0);
container.add(tp);