Hi,
I’m trying to extend Grid to have a custom addColumn method.
This is the code I wrote:
public class AGrid<T> extends Grid<T> {
public static enum ColumnType {
TEXT,
INTEGER_NUMBER,
DECIMAL_NUMBER_2,
DATE,
DATETIME;
}
/* Columns. */
public <V>Grid.Column<T,V> addColumn(ValueProvider<T,V> valueProvider, AGrid.ColumnType type, String id, String caption, String styleGenerator, double width) {
if (null == valueProvider) {
throw new IllegalArgumentException("Invalid 'valueProvider': null.");
}
if (null == type) {
throw new IllegalArgumentException("Invalid 'type': null.");
}
if (MText.isBlank(id)) {
throw new IllegalArgumentException("Invalid 'id': null or empty.");
}
if (MText.isBlank(caption)) {
throw new IllegalArgumentException("Invalid 'caption': null or empty.");
}
if (-1 > width) {
throw new IllegalArgumentException("Invalid 'width': lesser than -1.");
}
//
AApplicationUi applicationUi = this.getApplicationUi();
AUser currentUser = applicationUi.getUser();
//
Grid.Column<T,V> column = this.addColumn(valueProvider);
//
switch (type) {
case TEXT:
break;
case INTEGER_NUMBER:
column.setRenderer(new NumberRenderer(new DecimalFormat(currentUser.getIntegerNumberConverter().getDefaultNumberFormat(), new DecimalFormatSymbols(currentUser.getIntegerNumberConverter().getLocale()))));
break;
case DECIMAL_NUMBER_2:
column.setRenderer(new NumberRenderer(new DecimalFormat(currentUser.getDecimalNumberConverter(2).getDefaultNumberFormat(), new DecimalFormatSymbols(currentUser.getDecimalNumberConverter(2).getLocale()))));
break;
case DATE:
column.setRenderer(new LocalDateRenderer(currentUser.getDateConverter().getDefaultDateFormat(), currentUser.getDateConverter().getLocale()));
break;
case DATETIME:
column.setRenderer(new LocalDateTimeRenderer(currentUser.getDatetimeConverter().getDefaultDatetimeFormat(), currentUser.getDatetimeConverter().getLocale()));
break;
}
//
column.setId(id);
//
column.setCaption(caption);
//
if (null != styleGenerator) {
column.setStyleGenerator(c -> styleGenerator);
this.getDefaultHeaderRow().getCell(id).setStyleName(styleGenerator);
}
//
if (-1 < width) {
column.setWidth(width);
}
//
return column;
}
}
but compiling it returns:
error: incompatible types: NumberRenderer cannot be converted to Renderer<? super V>
and similar errors.
Thanks in advance for any suggestions.
Marco