/** * Adds a new text column to this {@link Grid} with a value provider. The * column will use a {@link TextRenderer}. The value is converted to a * String using {@link Object#toString()}. In-memory sorting will use the * natural ordering of elements if they are mutually comparable and * otherwise fall back to comparing the string representations of the * values. * * @param valueProvider * the value provider * * @return the new column */ public <V> Column<T, V> addColumn(ValueProvider<T, V> valueProvider) { return addColumn(valueProvider, new TextRenderer()); }
/** * Adds a new column with the given property name. The column will use a * {@link TextRenderer}. The value is converted to a String using * {@link Object#toString()}. The property name will be used as the * {@link Column#getId() column id} and the {@link Column#getCaption() * column caption} will be set based on the property definition. * <p> * This method can only be used for a <code>Grid</code> created using * {@link Grid#Grid(Class)} or {@link #withPropertySet(PropertySet)}. * <p> * You can add columns for nested properties with dot notation, eg. * <code>"property.nestedProperty"</code> * * @param propertyName * the property name of the new column, not <code>null</code> * @return the newly added column, not <code>null</code> */ public Column<T, ?> addColumn(String propertyName) { return addColumn(propertyName, new TextRenderer()); }
/** * Adds a new column to this {@link Grid} with value provider and * presentation provider. * <p> * <strong>Note:</strong> The presentation type for this method is set to be * String. To use any custom renderer with the presentation provider, use * {@link #addColumn(ValueProvider, ValueProvider, AbstractRenderer)}. * * @param valueProvider * the value provider * @param presentationProvider * the value presentation provider * @param <V> * the column value type * * @see #addColumn(ValueProvider, ValueProvider, AbstractRenderer) * * @return the new column * @since 8.1 */ public <V> Column<T, V> addColumn(ValueProvider<T, V> valueProvider, ValueProvider<V, String> presentationProvider) { return addColumn(valueProvider, presentationProvider, new TextRenderer()); }
@Override protected TextRenderer createImplementation() { return new TextRenderer(getNullRepresentation()); }
public void listing5() { // tag::listing5[] PropertyListing listing = Components.listing.properties(PROPERTIES) // .render(ID, new NumberRenderer(Locale.US)) // <1> .render(ID, value -> String.valueOf(value), new TextRenderer()) // <2> .build(); // end::listing5[] }
protected com.vaadin.ui.renderers.Renderer getDefaultRenderer(Column<E> column) { MetaProperty metaProperty = column.getPropertyPath() != null ? column.getPropertyPath().getMetaProperty() : null; return column.getType() == Boolean.class && metaProperty != null ? new com.vaadin.ui.renderers.HtmlRenderer() : new com.vaadin.ui.renderers.TextRenderer(); }
@SuppressWarnings("serial") public void listing5() { // tag::listing5[] PropertyListing listing = Components.listing.properties(PROPERTIES) // .render(ID, new NumberRenderer(Locale.US)) // <1> .render(ID, new Converter<String, Long>() { // <2> @Override public Long convertToModel(String value, Class<? extends Long> targetType, Locale locale) throws ConversionException { return Long.valueOf(value); } @Override public String convertToPresentation(Long value, Class<? extends String> targetType, Locale locale) throws ConversionException { return (value == null) ? null : String.valueOf(value); } @Override public Class<Long> getModelType() { return Long.class; } @Override public Class<String> getPresentationType() { return String.class; } }, new TextRenderer()).build(); // end::listing5[] }
Renderer renderer = getPropertyRenderer(property).orElse(new TextRenderer()); Optional<ValueProvider<?, ?>> presenter = getPropertyPresenter(property);