java - google - install gwt
GWT 2.1 CellTable Column Header haga clic en eventos (4)
¿Hay alguna manera de agregar clickHandlers (o cualquier tipo de controlador) a los encabezados de las columnas en una CellTable ? Deseo agregar algunas funcionalidades de clasificación a mi CellTable y no veo ningún método en las clases Column o Header que permita esto. Utilicé esta publicación para descubrir cómo usar la CellTable.
Solución alternativa para los eventos de clics
Header<String> columnHeader = new Header<String>(new ClickableTextCell()) {
@Override
public String getValue() {
return columnName;
}
};
columnHeader.setUpdater(new ValueUpdater<String>() {
@Override
public void update(String value) {
Window.alert("Header clicked!");
}
});
table.addColumn(column, columnHeader);
Con el lanzamiento final de GWT 2.1, ¿ha habido algún soporte para columnas ordenables agregadas a la CellTable? ¿O todavía es una buena solución después de mirar el ejemplo de Bikeshed?
CellTable<Contact> table = new CellTable<Contact>();
// Create name column.
final TextColumn<Contact> nameColumn = new TextColumn<Contact>() {
@Override
public String getValue(Contact contact) {
return contact.name;
}
};
// Create a data provider.
ListDataProvider<Contact> dataProvider = new ListDataProvider<Contact>();
// Connect the table to the data provider.
dataProvider.addDataDisplay(table);
final List<Contact> list = dataProvider.getList();
for (Contact contact : CONTACTS) {
list.add(contact);
}
final ListHandler<Contact> columnSortHandler = new ListHandler<Contact>(
list);
Header<String> columnHeader = new Header<String>(new ClickableTextCell()) {
@Override
public String getValue() {
return "Name";
}
};
columnHeader.setUpdater(new ValueUpdater<String>() {
@Override
public void update(String value) {
if (Window.confirm("Want to do?")){
nameColumn.setSortable(true);
columnSortHandler.setComparator(nameColumn,
new Comparator<Contact>() {
public int compare(Contact o1, Contact o2) {
if (o1 == o2) {
return 0;
}
// Compare the name columns.
if (o1 != null) {
return (o2 != null) ? o1.name.compareTo(o2.name) : 1;
}
return -1;
}
});
} else nameColumn.setSortable(false);
}
});
// Make the name column sortable.
nameColumn.setSortable(false);
// Create address column.
TextColumn<Contact> addressColumn = new TextColumn<Contact>() {
@Override
public String getValue(Contact contact) {
return contact.address;
}
};
// Add the columns.
table.addColumn(nameColumn, columnHeader);
table.addColumn(addressColumn, "Address");
// Add the data to the data provider, which automatically pushes it to the
// widget.
// Add a ColumnSortEvent.ListHandler to connect sorting to the
// java.util.List.
//------------------ Code to add --------------------------------//
VerticalPanel vp = new VerticalPanel();
table.addColumnSortHandler(columnSortHandler);
//------------------ Code end --------------------------------//
// We know that the data is sorted alphabetically by default.
table.getColumnSortList().push(nameColumn);
// Add it to the root panel.
vp.add(table);
RootPanel.get().add(vp);
No existe una forma inmediata de admitir el género aún en la CellTable. Sin embargo, hay una solución manual que implica una gran cantidad de trabajo pesado de código. Consulte las clases SortableHeader
y SortableColumn
en el cobertizo de bicicletas en la muestra de gastos. Encontrará el uso en com.google.gwt.sample.expenses.gwt.client.ExpenseDetails
. Puedes usar esto hasta que salga algo concreto en la próxima versión.
consultar el directorio: http://google-web-toolkit.googlecode.com/svn/trunk/bikeshed