import org.vaadin.viritin.fields.LazyComboBox.FilterablePagingProvider;
import com.vaadin.data.Property;
+import com.vaadin.data.Validator.InvalidValueException;
import com.vaadin.data.fieldgroup.FieldGroup;
import com.vaadin.data.util.converter.Converter.ConversionException;
+import com.vaadin.server.AbstractErrorMessage.ContentMode;
+import com.vaadin.server.ErrorMessage.ErrorLevel;
+import com.vaadin.server.UserError;
import com.vaadin.ui.Button;
import com.vaadin.ui.Button.ClickListener;
import com.vaadin.ui.Component;
import com.vaadin.ui.themes.ValoTheme;
import eu.etaxonomy.cdm.model.common.IdentifiableEntity;
-import eu.etaxonomy.cdm.persistence.hibernate.permission.CRUD;
-import eu.etaxonomy.cdm.service.FilterableStringRepresentationPagingProvider;
+import eu.etaxonomy.cdm.model.permission.CRUD;
+import eu.etaxonomy.cdm.service.IFilterableStringRepresentationPagingProvider;
import eu.etaxonomy.cdm.service.UserHelperAccess;
import eu.etaxonomy.cdm.vaadin.component.ButtonFactory;
import eu.etaxonomy.cdm.vaadin.event.NestedButtonStateUpdater;
private WeaklyRelatedEntityButtonUpdater buttonUpdater;
- private FilterableStringRepresentationPagingProvider<UUID> filterablePagingProvider;
+ private IFilterableStringRepresentationPagingProvider<UUID> filterablePagingProvider;
public WeaklyRelatedEntityCombobox(String caption, Class<V> type){
this.type = type;
addSizedComponents(lazySelect, container);
buttonUpdater = new WeaklyRelatedEntityButtonUpdater(this);
lazySelect.addValueChangeListener(buttonUpdater);
+ lazySelect.setValidationVisible(true);
lazySelect.addValueChangeListener(e -> {
// update the itemContainer immediately so that the edit button acts on the chosen item
- lazySelect.commit();
+ // TODO In contrast to ToOneRelatedEntityCombobox where getValue() is overwritten to call
+ // commitSelect() calling this method would most probably remove all strings witch do not have a
+ // weakly related entity. Such behavior would be very unfriendly to users.
+ try {
+ lazySelect.commit();
+ } catch (InvalidValueException ie){
+ /* Ignore here */
+ }
});
}
*/
public void loadFrom(FilterablePagingProvider<String> filterablePagingProvider, FilterableCountProvider filterableCountProvider, int pageLength) {
- this.filterablePagingProvider = (FilterableStringRepresentationPagingProvider<UUID>) filterablePagingProvider;
+ this.filterablePagingProvider = (IFilterableStringRepresentationPagingProvider<UUID>) filterablePagingProvider;
lazySelect.loadFrom(filterablePagingProvider, filterableCountProvider, pageLength);
buttonUpdater.updateButtons(getValue());
}
setValue(bean);
}
- /**
- * Returns always currently selected item by
- *
- * {@inheritDoc}
- */
- @Override
- public String getValue() {
- lazySelect.commit();
- return lazySelect.getValue();
- }
public UUID getIdForValue(){
return filterablePagingProvider.idFor(getValue());
}
}
+ @Override
+ public String getValue() {
+ return lazySelect.getValue();
+
+ }
+
/**
* @param newFieldValue
* @return
}
}
+ @Override
+ public void setRequired(boolean required) {
+ super.setRequired(required);
+ lazySelect.setRequired(required);
+ }
+
+ @Override
+ public void setImmediate(boolean immediate){
+ super.setImmediate(immediate);
+ lazySelect.setImmediate(immediate);
+ }
+
@Override
public void updateButtons(){
buttonUpdater.updateButtons(getValue());
}
+ @Override
+ public void commit() throws SourceException, InvalidValueException {
+ lazySelect.commit();
+ }
+
+ /**
+ *
+ */
+ public void commitSelect() {
+ try {
+ setComponentError(null);
+ lazySelect.commit();
+ } catch (InvalidValueException ex){
+ UserError componentError = new UserError(ex.getHtmlMessage(), ContentMode.HTML, ErrorLevel.ERROR);
+ lazySelect.setComponentError(componentError);
+ }
+ }
+
+
+
/**
* {@inheritDoc}
* @deprecated NestedButtonStateUpdater should rather be instantiated in the RelatedEntityField instead of passing it as property
public WeaklyRelatedEntityButtonUpdater(WeaklyRelatedEntityCombobox<V> toOneRelatedEntityField){
this.toOneRelatedEntityField = toOneRelatedEntityField;
- String stringValue = toOneRelatedEntityField.getValue();
updateButtons(toOneRelatedEntityField.getValue());
toOneRelatedEntityField.setEditButtonEnabled(false);
}
}
}
-
-
}