¿Cómo agregar una clase css a la primera columna de un widget CellTable (GWT)?

Uso un widget de CellTable en GWT.

Quiero cambiar el tamaño de fuente de todos los textos contenidos en la primera columna. El método addColumnStyleName no se ajusta a mi necesidad porque agrega la clase a la colgroup etiqueta; solo se maneja css parcial en esta etiqueta, y no puedo cambiar los atributos de fuente de un colgroup (no tiene incidencia en el texto).

Entonces, quiero agregar una clase en cada td de la primera columna, pero no puede encontrar una manera fácil de hacerlo.

Algo como setRowStyles para columnas estaría bien pero no existe...

¿Tienes alguna pista sobre cómo hacer tal cosa?

EDITAR: uso GWT 2.3 y no 2.4 (que tiene el método setCellStyleNames)

preguntado el 22 de mayo de 12 a las 15:05

2 Respuestas

Es tan fácil como llamar setCellStyleNames al Column ejemplo.

contestado el 22 de mayo de 12 a las 16:05

jajaja, cuando publicaste tu respuesta, definitivamente me sentí estúpido por no verla. Y acabo de ver que este método solo está en 2.4. Yo uso 2.3... Así que no tan estúpido;) - Jerónimo Cance

Excepto que definitivamente deberías actualizar a la última versión de GWT cuando salga una ;-) - Tomas Broyer

No puedo usar 2.4 por el momento (aplicación grande, reglas de no regresión, estándares estrictos...). Pero verifico tu respuesta porque esta es la mejor cuando se usa 2.4;) - Jerónimo Cance

finalmente lo entiendo. Pero no estoy muy contento con esa solución. Es un poco detallado para una tarea tan simple. Estoy abierto a cualquier otra sugerencia.

La forma en que lo logro es crear una nueva celda y una nueva columna:

private class KeyColumn extends Column<SimpleLegendItem, String> {

    public KeyColumn() {
        super(new KeyCell());
    }

    @Override
    public String getValue(SimpleLegendItem item) {
        return item.getKey();
    }       
}

private class KeyCell extends AbstractCell<String> {

    @Override
    public void render(com.google.gwt.cell.client.Cell.Context context, String value, SafeHtmlBuilder sb) {
        sb.appendHtmlConstant("<span class=\"" + tableResources.cellTableStyle().box() + "\">");
        sb.appendEscaped(value);
        sb.appendHtmlConstant("</span>");
    }       
}

Para simplificar el ejemplo, intencionalmente no uso una plantilla.

contestado el 22 de mayo de 12 a las 17:05

Estaba a punto de proponer esa solución, o esperar a 2.5 y usar un CellTableBuilder, y luego (mirando el código de DefaultCellTableBuilder) Encontré setCellStyleNames. - Tomas Broyer

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.