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.