@Override public void setValue(Collection<V> value) { if (metaPropertyPath == null) { setDatasourceValue(value); } else { setPropertyDatasourceValue(value); } }
@Override public ValueSource<?> getValueSource(String property) { return new ContainerValueSource<>(container, property); } }
/** * @return a value source that can be used to create the component */ @SuppressWarnings("unchecked") @Nullable public ValueSource getValueSource() { return valueSource == null && datasource != null ? new DatasourceValueSource(datasource, property) : valueSource; }
@Override public void write() { if (isBuffered() && isModified()) { setValueToSource(component.getValue()); } }
/** * @return datasource property path * * @deprecated Use {@link #getValueSource()} instead */ @Deprecated default MetaPropertyPath getMetaPropertyPath() { ValueSource<V> valueSource = getValueSource(); if (valueSource instanceof DatasourceValueSource) { return ((DatasourceValueSource) valueSource).getMetaPropertyPath(); } if (valueSource instanceof ContainerValueSource) { return ((ContainerValueSource) valueSource).getMetaPropertyPath(); } return null; }
@SuppressWarnings("unchecked") protected void componentValueChanged(@SuppressWarnings("unused") HasValue.ValueChangeEvent event) { if (!isBuffered()) { setValueToSource((V) event.getValue()); } }
protected ValueSourceProvider createValueSourceProvider(E item) { InstanceContainer<E> instanceContainer = createInstanceContainer(item); return new ContainerValueSourceProvider<>(instanceContainer); }
@Override public void discard() { if (source.getState() == BindingState.ACTIVE && isBuffered() && isModified()) { component.setValue(source.getValue()); } }
protected void sourceValueChanged(ValueSource.ValueChangeEvent<V> event) { if (!isBuffered()) { component.setValue(event.getValue()); } }
/** * @return datasource instance * @deprecated Use {@link #getValueSource()} instead. */ @Deprecated default Datasource getDatasource() { ValueSource<FileDescriptor> valueSource = getValueSource(); return valueSource instanceof DatasourceValueSource ? ((DatasourceValueSource) valueSource).getDatasource() : null; }
/** * Binds the given {@code datasource} with field. * * @param datasource {@link CollectionDatasource} instance * * @deprecated use {@link HasValueSource#setValueSource(ValueSource)} instead */ @Deprecated default void setDatasource(CollectionDatasource datasource) { setValueSource(datasource == null ? null : new LegacyCollectionDsValueSource<>(datasource)); }
/** * Returns the edit form's data container. */ @SuppressWarnings("unchecked") protected InstanceContainer<T> getEditContainer() { return ((ContainerValueSourceProvider) getForm().getValueSourceProvider()).getContainer(); }
@Nullable public static String getInferredTestId(ValueSource<?> valueSource) { if (valueSource instanceof DatasourceValueSource) { DatasourceValueSource dsValueSource = (DatasourceValueSource) valueSource; return StringUtils.join(dsValueSource.getMetaPropertyPath().getPropertyNames(), "_"); } else if (valueSource instanceof ContainerValueSource) { ContainerValueSource dcValueSource = (ContainerValueSource) valueSource; return StringUtils.join(dcValueSource.getMetaPropertyPath().getPropertyNames(), "_"); } return null; }
@SuppressWarnings("unchecked") @Override public Field createField(Datasource datasource, String property) { return createField(new DatasourceValueSource(datasource, property), property); }
protected void sourceInstanceChanged(@SuppressWarnings("unused") EntityValueSource.InstanceChangeEvent<Entity> event) { if (source.getState() == BindingState.ACTIVE && !isBuffered()) { // read value to component component.setValue(source.getValue()); } } }
/** * @return datasource instance * * @deprecated Use {@link #getValueSource()} instead */ @Deprecated default Datasource getDatasource() { ValueSource<V> valueSource = getValueSource(); return valueSource instanceof DatasourceValueSource ? ((DatasourceValueSource) valueSource).getDatasource() : null; }
/** * @return datasource property * @deprecated Use {@link #getValueSource()} instead */ @Deprecated default MetaProperty getMetaProperty() { ValueSource<V> valueSource = getValueSource(); if (valueSource instanceof DatasourceValueSource) { return ((DatasourceValueSource) valueSource).getMetaPropertyPath().getMetaProperty(); } if (valueSource instanceof ContainerValueSource) { return ((ContainerValueSource) valueSource).getMetaPropertyPath().getMetaProperty(); } return null; }
@SuppressWarnings("unchecked") @Override public Component createField(Datasource datasource, String property, Element xmlDescriptor) { return createField(new DatasourceValueSource(datasource, property), property, xmlDescriptor); }
@Override public Component generateField(Datasource datasource, String propertyId) { DynamicAttributeComponentsGenerator generator = AppBeans.get(DynamicAttributeComponentsGenerator.NAME); //noinspection unchecked return generator.generateComponent(new DatasourceValueSource(datasource, propertyId), propertyId); } }