I have a TabPanel with several tabs. In every tab I want to show a table 
with the information of several objects. The table will show three fields 
of the object (name, address and description).
For every tab I create a VerticalPanel that contains the class 
MyPaginationDataGrid thats extends from Composite. I include the class at 
the end of the message.

The problem I am experiencing is that when I create the TabPanel, the 
selected tab (it doesn't matter if I select tab 1 or tab 3) shows the 
information correctly (columns headers and objects information), but when I 
select another tab I only can see the columns headers.

Here I show you how I create the TabPanel.

private void createTabPanel() {
TabPanel groupsTab = new TabPanel();
groupsTab.setStyleName("tabPanel");
groupsTab.setSize("657px", "537px"); 
this.add(groupsTab);
        loadGroupsInTabPanel(groups);
}

private void loadGroupsInTabPanel(TabPanel groupsTab, ArrayList<Group> 
groups) {
if (groups != null) {
for (Group g : groups) {
ArrayList<Local> locals = g.getLocals();
if (locals != null) {
MyPaginationDataGrid<Local> grid = new MyPaginationDataGrid<Local>();
grid.setSize("1500px", "459px");
grid.setDataList(locals); 
VerticalPanel vPanel = new VerticalPanel();
vPanel.setSize("100%", "100%");
vPanel.setVerticalAlignment(HasVerticalAlignment.ALIGN_TOP);
vPanel.add(grid);
groupsTab.add(vPanel, g.getName());
}
}
this.groupsTab.selectTab(0);
}
}

public class MyPaginationDataGrid<T> extends PagingDataGrid<T> {

@Override
public void initTableColumns(DataGrid<T> dataGrid,
ListHandler<T> sortHandler) {
Column<T, String> nameColumn = new Column<T, String>(new TextCell()) {
@Override
public String getValue(T object) {
return ((Local) object).getName();
}
};
nameColumn.setSortable(true);
sortHandler.setComparator(nameColumn, new Comparator<T>() {
public int compare(T o1, T o2) {
return ((Local) o1).getName().compareTo(((Local) o2).getName());
}
});
dataGrid.addColumn(nameColumn, "Nombre");

dataGrid.setColumnWidth(nameColumn, 20, Unit.PCT);

// Dirección.
Column<T, String> addressColumn = new Column<T, String>(new TextCell()) {
@Override
public String getValue(T object) {
return ((Local) object).getAddress();
}
};
addressColumn.setSortable(false);
dataGrid.addColumn(addressColumn, "Direcci\u00F3n");
dataGrid.setColumnWidth(addressColumn, 20, Unit.PCT);

// Descripción.
Column<T, String> descriptionColumn = new Column<T, String>(
new TextCell()) {
@Override
public String getValue(T object) {
return ((Local) object).getShortDescription();
}
};
descriptionColumn.setSortable(false);
dataGrid.addColumn(descriptionColumn, "Descripci\u00F3n");
dataGrid.setColumnWidth(descriptionColumn, 20, Unit.PCT);
}
}

public abstract class PagingDataGrid<T> extends Composite {

private DataGrid<T> dataGrid;
private String height;
private ListDataProvider<T> dataProvider;
private List<T> dataList;
private DockPanel dock = new DockPanel();

public PagingDataGrid() {
initWidget(dock);
dataGrid = new DataGrid<T>();
dataGrid.setWidth("100%");
dataProvider = new ListDataProvider<T>();
dataProvider.setList(new ArrayList<T>());
dataGrid.setEmptyTableWidget(new HTML("No Data to Display"));
ListHandler<T> sortHandler = new ListHandler<T>(dataProvider.getList());

initTableColumns(dataGrid, sortHandler);

dataGrid.addColumnSortHandler(sortHandler);
final SingleSelectionModel<T> selectionModel = new 
SingleSelectionModel<T>();
dataGrid.setSelectionModel(selectionModel);
selectionModel.addSelectionChangeHandler(new SelectionChangeEvent.Handler() 
{
    @Override  
public void onSelectionChange(SelectionChangeEvent event) {
        Local local = (Local) selectionModel.getSelectedObject();
        if (local != null) {
         local = null;
        }
      }
    });
 dataProvider.addDataDisplay(dataGrid);
dataGrid.setVisible(true);

dock.add(dataGrid, DockPanel.CENTER);
dock.setWidth("100%");
dock.setCellWidth(dataGrid, "100%");

}

public void setEmptyTableWidget() {
dataGrid.setEmptyTableWidget(new HTML(
"The current request has taken longer than the allowed time limit. Please 
try your report query again."));
}

/**
 * 
 * Abstract Method to implements for adding Column into Grid
 * 
 * @param dataGrid
 * @param sortHandler
 */
public abstract void initTableColumns(DataGrid<T> dataGrid, ListHandler<T> 
sortHandler);

public String getHeight() {
return height;
}

public void setHeight(String height) {
this.height = height;
dataGrid.setHeight(height);
}

public List<T> getDataList() {
return dataList;
}

public void setDataList(List<T> dataList) {
this.dataList = dataList;
List<T> list = dataProvider.getList();
list.addAll(this.dataList);
dataProvider.refresh();
}

public ListDataProvider<T> getDataProvider() {
return dataProvider;
}

public void setDataProvider(ListDataProvider<T> dataProvider) {
this.dataProvider = dataProvider;
}
}

Thanks in anticipation for any clue you can give me to know what I am doing 
wrong.

-- 
You received this message because you are subscribed to the Google Groups 
"Google Web Toolkit" group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/google-web-toolkit/-/RC8jAl5qESoJ.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/google-web-toolkit?hl=en.

Reply via email to