Pandaman
14 Jul 2009, 11:09 AM
When the browser is resized, the following code resizes the first treegrid in Tab 1 but fails to resize the second treegrid in Tab 1 when it should (since the tabitem containing this treegrid is resized and is FitLayout).
public void onModuleLoad() {
final TabPanel tabPanel;
final TabItem tabItem1;
final TabItem tabItem2;
final TreeGrid<BaseModel> treeGrida;
final TreeGrid<BaseModel> treeGridb;
final TreeGrid<BaseModel> treeGridc;
final LayoutContainer container = new LayoutContainer();
container.setLayout(new FitLayout());
tabPanel = new TabPanel();
tabItem1 = new TabItem("Tab 1");
tabItem1.setLayout(new FitLayout());
final ArrayList<ColumnConfig> columnsa = new ArrayList<ColumnConfig>();
columnsa.add(new ColumnConfig("name","name", 150));
columnsa.add(new ColumnConfig("details","details", 150));
final ColumnModel cma = new ColumnModel(columnsa);
final ArrayList<ColumnConfig> columnsb = new ArrayList<ColumnConfig>();
columnsb.add(new ColumnConfig("name","name", 150));
columnsb.add(new ColumnConfig("details","details", 150));
final ColumnModel cmb = new ColumnModel(columnsb);
final TreeStore<BaseModel> treeStorea = new TreeStore<BaseModel>();
addDummyData(0, treeStorea);
addDummyData(1, treeStorea);
addDummyData(2, treeStorea);
final TreeStore<BaseModel> treeStoreb = new TreeStore<BaseModel>();
addDummyData(0, treeStoreb);
addDummyData(1, treeStoreb);
addDummyData(2, treeStoreb);
treeGrida = new TreeGrid<BaseModel>(treeStorea, cma);
treeGrida.setWidth(Window.getClientWidth());
treeGrida.setAutoHeight(true);
tabItem1.add(treeGrida);
treeGridb = new TreeGrid<BaseModel>(treeStoreb, cmb);
treeGridb.setWidth(Window.getClientWidth());
treeGridb.setAutoHeight(true);
tabItem1.add(treeGridb);
tabItem1.setWidth(Window.getClientWidth());
tabItem1.setHeight(400);
tabPanel.add(tabItem1);
tabItem2 = new TabItem("Tab 2");
tabItem2.setLayout(new FitLayout());
final ArrayList<ColumnConfig> columnsc = new ArrayList<ColumnConfig>();
columnsc.add(new ColumnConfig("name","name", 150));
columnsc.add(new ColumnConfig("details","details", 150));
final ColumnModel cmc = new ColumnModel(columnsc);
final TreeStore<BaseModel> treeStorec = new TreeStore<BaseModel>();
addDummyData(0, treeStorec);
addDummyData(1, treeStorec);
addDummyData(2, treeStorec);
treeGridc = new TreeGrid<BaseModel>(treeStorec, cmc);
treeGridc.setWidth(Window.getClientWidth());
treeGridc.setAutoHeight(true);
tabItem2.add(treeGridc);
tabItem2.setWidth(Window.getClientWidth());
tabItem2.setHeight(400);
tabPanel.add(tabItem2);
Window.addResizeHandler(new ResizeHandler() {
public void onResize(ResizeEvent event) {
tabPanel.setWidth(event.getWidth());
tabItem1.setWidth(event.getWidth());
tabItem2.setWidth(event.getWidth());
}
});
tabPanel.setAutoWidth(true);
tabPanel.setHeight(400);
container.add(tabPanel);
tabPanel.setDeferredRender(false);
tabItem1.setHideMode(HideMode.OFFSETS);
tabItem2.setHideMode(HideMode.OFFSETS);
treeGrida.getView().setForceFit(true);
treeGridb.getView().setForceFit(true);
treeGridc.getView().setForceFit(true);
RootPanel.get().add(container);
}
private static void addDummyData(final int i, final TreeStore<BaseModel> treeStore) {
final BaseModel data = new BaseModel();
data.set("name", "data " + i);
data.set("details", "details about " + i);
treeStore.add(data, false);
}
public void onModuleLoad() {
final TabPanel tabPanel;
final TabItem tabItem1;
final TabItem tabItem2;
final TreeGrid<BaseModel> treeGrida;
final TreeGrid<BaseModel> treeGridb;
final TreeGrid<BaseModel> treeGridc;
final LayoutContainer container = new LayoutContainer();
container.setLayout(new FitLayout());
tabPanel = new TabPanel();
tabItem1 = new TabItem("Tab 1");
tabItem1.setLayout(new FitLayout());
final ArrayList<ColumnConfig> columnsa = new ArrayList<ColumnConfig>();
columnsa.add(new ColumnConfig("name","name", 150));
columnsa.add(new ColumnConfig("details","details", 150));
final ColumnModel cma = new ColumnModel(columnsa);
final ArrayList<ColumnConfig> columnsb = new ArrayList<ColumnConfig>();
columnsb.add(new ColumnConfig("name","name", 150));
columnsb.add(new ColumnConfig("details","details", 150));
final ColumnModel cmb = new ColumnModel(columnsb);
final TreeStore<BaseModel> treeStorea = new TreeStore<BaseModel>();
addDummyData(0, treeStorea);
addDummyData(1, treeStorea);
addDummyData(2, treeStorea);
final TreeStore<BaseModel> treeStoreb = new TreeStore<BaseModel>();
addDummyData(0, treeStoreb);
addDummyData(1, treeStoreb);
addDummyData(2, treeStoreb);
treeGrida = new TreeGrid<BaseModel>(treeStorea, cma);
treeGrida.setWidth(Window.getClientWidth());
treeGrida.setAutoHeight(true);
tabItem1.add(treeGrida);
treeGridb = new TreeGrid<BaseModel>(treeStoreb, cmb);
treeGridb.setWidth(Window.getClientWidth());
treeGridb.setAutoHeight(true);
tabItem1.add(treeGridb);
tabItem1.setWidth(Window.getClientWidth());
tabItem1.setHeight(400);
tabPanel.add(tabItem1);
tabItem2 = new TabItem("Tab 2");
tabItem2.setLayout(new FitLayout());
final ArrayList<ColumnConfig> columnsc = new ArrayList<ColumnConfig>();
columnsc.add(new ColumnConfig("name","name", 150));
columnsc.add(new ColumnConfig("details","details", 150));
final ColumnModel cmc = new ColumnModel(columnsc);
final TreeStore<BaseModel> treeStorec = new TreeStore<BaseModel>();
addDummyData(0, treeStorec);
addDummyData(1, treeStorec);
addDummyData(2, treeStorec);
treeGridc = new TreeGrid<BaseModel>(treeStorec, cmc);
treeGridc.setWidth(Window.getClientWidth());
treeGridc.setAutoHeight(true);
tabItem2.add(treeGridc);
tabItem2.setWidth(Window.getClientWidth());
tabItem2.setHeight(400);
tabPanel.add(tabItem2);
Window.addResizeHandler(new ResizeHandler() {
public void onResize(ResizeEvent event) {
tabPanel.setWidth(event.getWidth());
tabItem1.setWidth(event.getWidth());
tabItem2.setWidth(event.getWidth());
}
});
tabPanel.setAutoWidth(true);
tabPanel.setHeight(400);
container.add(tabPanel);
tabPanel.setDeferredRender(false);
tabItem1.setHideMode(HideMode.OFFSETS);
tabItem2.setHideMode(HideMode.OFFSETS);
treeGrida.getView().setForceFit(true);
treeGridb.getView().setForceFit(true);
treeGridc.getView().setForceFit(true);
RootPanel.get().add(container);
}
private static void addDummyData(final int i, final TreeStore<BaseModel> treeStore) {
final BaseModel data = new BaseModel();
data.set("name", "data " + i);
data.set("details", "details about " + i);
treeStore.add(data, false);
}