* @since Jun 6, 2018
*
*/
-public interface NestedButtonStateUpdater extends ValueChangeListener{
+public interface NestedButtonStateUpdater<T> extends ValueChangeListener{
+
+ public void updateButtons(T value);
}
package eu.etaxonomy.cdm.vaadin.event;
import com.vaadin.data.Property.ValueChangeEvent;
+import com.vaadin.ui.Field;
import eu.etaxonomy.cdm.model.common.CdmBase;
import eu.etaxonomy.cdm.persistence.hibernate.permission.CRUD;
* @since 19.10.2017
*
*/
-public class ToOneRelatedEntityButtonUpdater<CDM extends CdmBase> implements NestedButtonStateUpdater {
+public class ToOneRelatedEntityButtonUpdater<CDM extends CdmBase> implements NestedButtonStateUpdater<CDM> {
private static final long serialVersionUID = 4472031263172275012L;
public ToOneRelatedEntityButtonUpdater(ToOneRelatedEntityField<CDM> toOneRelatedEntityField){
this.toOneRelatedEntityField = toOneRelatedEntityField;
this.type = toOneRelatedEntityField.getType();
+ updateButtons(((Field<CDM>)toOneRelatedEntityField).getValue());
toOneRelatedEntityField.setEditButtonEnabled(false);
}
@Override
public void valueChange(ValueChangeEvent event) {
- CdmBase value = (CdmBase)event.getProperty().getValue();
+ CDM value = (CDM)event.getProperty().getValue();
+ updateButtons(value);
+ }
+
+ /**
+ * @param value
+ */
+ @Override
+ public void updateButtons(CDM value) {
boolean userIsAllowedToUpdate = value != null && UserHelperAccess.userHelper().userHasPermission(value, CRUD.UPDATE);
boolean userIsAllowedToCreate = UserHelperAccess.userHelper().userHasPermission(type, CRUD.CREATE);
+ boolean isReadOnlyField = ((Field)toOneRelatedEntityField).isReadOnly();
- toOneRelatedEntityField.setAddButtonEnabled(userIsAllowedToCreate);
- toOneRelatedEntityField.setEditButtonEnabled(userIsAllowedToUpdate);
+ toOneRelatedEntityField.setAddButtonEnabled(!isReadOnlyField && userIsAllowedToCreate);
+ toOneRelatedEntityField.setEditButtonEnabled(!isReadOnlyField && userIsAllowedToUpdate);
}
partOfCombobox.getSelect().setCaptionGenerator(
new CdmTitleCacheCaptionGenerator<Institution>()
);
- partOfCombobox.getSelect().addValueChangeListener(
- new ToOneRelatedEntityButtonUpdater<Institution>(partOfCombobox)
- );
-
+ partOfCombobox.setNestedButtonStateUpdater(new ToOneRelatedEntityButtonUpdater<Institution>(partOfCombobox));
partOfCombobox.addClickListenerAddEntity( e -> getViewEventBus().publish(this,
new InstitutionEditorAction(
getView().getCitationCombobox().getSelect().setCaptionGenerator(new CdmTitleCacheCaptionGenerator<Reference>());
CdmFilterablePagingProvider<Reference,Reference> referencePagingProvider = pagingProviderFactory.referencePagingProvider();
getView().getCitationCombobox().loadFrom(referencePagingProvider, referencePagingProvider, referencePagingProvider.getPageSize());
- getView().getCitationCombobox().getSelect().addValueChangeListener(new ToOneRelatedEntityButtonUpdater<Reference>(getView().getCitationCombobox()));
+ getView().getCitationCombobox().setNestedButtonStateUpdater(new ToOneRelatedEntityButtonUpdater<Reference>(getView().getCitationCombobox()));
getView().getCitationCombobox().getSelect().addValueChangeListener(new ToOneRelatedEntityReloader<>(getView().getCitationCombobox(), this));
CdmFilterablePagingProvider<TaxonName,TaxonName> namePagingProvider = new CdmFilterablePagingProvider<TaxonName, TaxonName>(getRepo().getNameService());
getView().getTypeNameField().loadFrom(namePagingProvider, namePagingProvider, namePagingProvider.getPageSize());
- getView().getTypeNameField().getSelect().addValueChangeListener(new ToOneRelatedEntityButtonUpdater<TaxonName>(getView().getTypeNameField()));
+ getView().getTypeNameField().setNestedButtonStateUpdater(new ToOneRelatedEntityButtonUpdater<TaxonName>(getView().getTypeNameField()));
getView().getTypeNameField().getSelect().addValueChangeListener(new ToOneRelatedEntityReloader<>(getView().getTypeNameField(), this));
getView().getTypifiedNamesComboboxSelect().setPagingProviders(namePagingProvider, namePagingProvider, namePagingProvider.getPageSize(), this);
preferredStableUri.setWidth(150, Unit.PIXELS);
preferredStableUri.setConverter(new UriConverter());
collection.setWidth(200, Unit.PIXELS);
- collectionFieldUpdater = new ToOneRelatedEntityButtonUpdater<Collection>(collection);
- collection.addValueChangeListener(
- collectionFieldUpdater
- );
+ collection.setNestedButtonStateUpdater(new ToOneRelatedEntityButtonUpdater<Collection>(collection));
mediaUri.setWidth(150, Unit.PIXELS);
mediaUri.setConverter(new UriConverter());
mediaSpecimenReference.setWidth(200, Unit.PIXELS);
- mediaSpecimenReferenceUpdater = new ToOneRelatedEntityButtonUpdater<Reference>(mediaSpecimenReference);
- mediaSpecimenReference.addValueChangeListener(
- mediaSpecimenReferenceUpdater
- );
+ mediaSpecimenReference.setNestedButtonStateUpdater(new ToOneRelatedEntityButtonUpdater<Reference>(mediaSpecimenReference));
mediaSpecimenReferenceDetail.setWidth(200, Unit.PIXELS);
kindOfUnit.addValueChangeListener(e ->
nomReferencePagingProvider = pagingProviderFactory.referencePagingProvider();
nomReferencePagingProvider.setInitStrategy(REFERENCE_INIT_STRATEGY);
getView().getNomReferenceCombobox().loadFrom(nomReferencePagingProvider, nomReferencePagingProvider, nomReferencePagingProvider.getPageSize());
- getView().getNomReferenceCombobox().getSelect().addValueChangeListener(new ToOneRelatedEntityButtonUpdater<Reference>(getView().getNomReferenceCombobox()));
+ getView().getNomReferenceCombobox().setNestedButtonStateUpdater(new ToOneRelatedEntityButtonUpdater<Reference>(getView().getNomReferenceCombobox()));
getView().getNomReferenceCombobox().getSelect().addValueChangeListener(new ToOneRelatedEntityReloader<>(getView().getNomReferenceCombobox(), this));
getView().getBasionymComboboxSelect().setCaptionGenerator(new CdmTitleCacheCaptionGenerator<TaxonName>());
superCollectionCombobox.getSelect().setCaptionGenerator(
new CollectionCaptionGenerator()
);
- superCollectionCombobox.getSelect().addValueChangeListener(
- new ToOneRelatedEntityButtonUpdater<Collection>(superCollectionCombobox)
- );
-
+ superCollectionCombobox.setNestedButtonStateUpdater(new ToOneRelatedEntityButtonUpdater<Collection>(superCollectionCombobox));
superCollectionCombobox.addClickListenerAddEntity( e -> getViewEventBus().publish(this,
new CollectionEditorAction(
institutionCombobox.getSelect().setCaptionGenerator(
new CdmTitleCacheCaptionGenerator<Institution>()
);
- institutionCombobox.getSelect().addValueChangeListener(
- new ToOneRelatedEntityButtonUpdater<Institution>(institutionCombobox)
- );
-
+ institutionCombobox.setNestedButtonStateUpdater(new ToOneRelatedEntityButtonUpdater<Institution>(institutionCombobox));
institutionCombobox.addClickListenerAddEntity( e -> getViewEventBus().publish(this,
new InstitutionEditorAction(
CdmFilterablePagingProvider<Reference, Reference> collectionPagingProvider = pagingProviderFactory.referencePagingProvider();
getView().getInReferenceCombobox().loadFrom(collectionPagingProvider, collectionPagingProvider, collectionPagingProvider.getPageSize());
- getView().getInReferenceCombobox().getSelect().addValueChangeListener(new ToOneRelatedEntityButtonUpdater<Reference>(getView().getInReferenceCombobox()));
+ getView().getInReferenceCombobox().setNestedButtonStateUpdater(new ToOneRelatedEntityButtonUpdater<Reference>(getView().getInReferenceCombobox()));
getView().getInReferenceCombobox().getSelect().addValueChangeListener(new ToOneRelatedEntityReloader<Reference>(getView().getInReferenceCombobox(),this));
CdmFilterablePagingProvider<AgentBase, TeamOrPersonBase> teamOrPersonPagingProvider = new CdmFilterablePagingProvider<AgentBase, TeamOrPersonBase>(getRepo().getAgentService(), TeamOrPersonBase.class);
setValue(null);
updateToolBarButtonStates();
});
- validatedNameComboBox.getSelect().addValueChangeListener(new ToOneRelatedEntityButtonUpdater<TaxonName>(validatedNameComboBox));
- citatonComboBox.getSelect().addValueChangeListener(new ToOneRelatedEntityButtonUpdater<Reference>(citatonComboBox));
+ validatedNameComboBox.setNestedButtonStateUpdater(new ToOneRelatedEntityButtonUpdater<TaxonName>(validatedNameComboBox));
+ citatonComboBox.setNestedButtonStateUpdater(new ToOneRelatedEntityButtonUpdater<Reference>(citatonComboBox));
grid = new GridLayout(2, 3);
import com.vaadin.ui.themes.ValoTheme;
import eu.etaxonomy.cdm.vaadin.component.ButtonFactory;
+import eu.etaxonomy.cdm.vaadin.event.NestedButtonStateUpdater;
/**
* @author a.kohlbecker
private Button addButton = ButtonFactory.CREATE_NEW.createButton();
private Button editButton = ButtonFactory.EDIT_ITEM.createButton();
+ private NestedButtonStateUpdater<V> buttonUpdater;
+
public ToOneRelatedEntityCombobox(String caption, Class<V> type){
this.type = type;
setCaption(caption);
@Override
public void setPropertyDataSource(Property newDataSource) {
lazySelect.setPropertyDataSource(newDataSource);
+ if(buttonUpdater != null){
+ buttonUpdater.updateButtons(lazySelect.getValue());
+ }
}
/**
public void setReadOnly(boolean readOnly) {
super.setReadOnly(readOnly);
setDeepReadOnly(readOnly, getContent(), null);
+ if(buttonUpdater != null){
+ buttonUpdater.updateButtons(lazySelect.getValue());
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void setNestedButtonStateUpdater(NestedButtonStateUpdater<V> buttonUpdater) {
+ this.buttonUpdater = buttonUpdater;
+ lazySelect.addValueChangeListener(buttonUpdater);
}
import com.vaadin.ui.Button.ClickListener;
+import eu.etaxonomy.cdm.vaadin.event.NestedButtonStateUpdater;
+
/**
* @author a.kohlbecker
* @since May 25, 2017
*/
public interface ToOneRelatedEntityField<V extends Object> {
+ public void setNestedButtonStateUpdater(NestedButtonStateUpdater<V> buttonUpdater);
+
/**
* Set the enabled state of the edit button
*
import com.vaadin.ui.themes.ValoTheme;
import eu.etaxonomy.cdm.vaadin.component.ButtonFactory;
+import eu.etaxonomy.cdm.vaadin.event.NestedButtonStateUpdater;
/**
* @author a.kohlbecker
private ListSelect select;
+ NestedButtonStateUpdater<V> buttonUpdater;
private Button addButton = ButtonFactory.ADD_ITEM.createButton();
private Button editButton = ButtonFactory.EDIT_ITEM.createButton();
addSizedComponent(select);
}
+
/**
* {@inheritDoc}
*/
@Override
public void setPropertyDataSource(Property newDataSource) {
select.setPropertyDataSource(newDataSource);
+ if(buttonUpdater != null){
+ buttonUpdater.updateButtons((V) select.getValue());
+ }
}
@Override
}
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void setNestedButtonStateUpdater(NestedButtonStateUpdater<V> buttonUpdater) {
+ this.buttonUpdater = buttonUpdater;
+ select.addValueChangeListener(buttonUpdater);
+ }
+
+
}