std.getTypeSpecimen().setPreferredStableUri(uri);
}
+ public Reference getDesignationReference() {
+ return std.getCitation();
+ }
+
+ public void setDesignationReference(Reference citation) {
+ std.setCitation(citation);
+ }
+
+ public String getDesignationReferenceDetail() {
+ return std.getCitationMicroReference();
+ }
+
+ public void setDesignationReferenceDetail(String detail) {
+ std.setCitationMicroReference(detail);
+ }
+
public URI getMediaUri(){
if(checkMediaSpecimen()){
MediaRepresentationPart part = findMediaRepresentationPart();
import com.vaadin.ui.NativeSelect;
import com.vaadin.ui.TextField;
+import eu.etaxonomy.cdm.model.name.SpecimenTypeDesignationStatus;
import eu.etaxonomy.cdm.model.occurrence.Collection;
import eu.etaxonomy.cdm.model.reference.Reference;
import eu.etaxonomy.cdm.model.term.DefinedTerm;
*/
TextField associatedTypeDesignationCount = new TextField();
RowListSelect kindOfUnit = new RowListSelect(); // position is IMPORTANT, see rowListSelectColumn()
- NativeSelect typeStatus = new NativeSelect();
+ RowListSelect typeStatus = new RowListSelect();
ToOneRelatedEntityCombobox<eu.etaxonomy.cdm.model.occurrence.Collection> collection =
new ToOneRelatedEntityCombobox<eu.etaxonomy.cdm.model.occurrence.Collection>(null, eu.etaxonomy.cdm.model.occurrence.Collection.class);
TextField accessionNumber = new TextFieldNFix();
TextField preferredStableUri = new TextFieldNFix();
+ ToOneRelatedEntityCombobox<Reference> designationReference =
+ new ToOneRelatedEntityCombobox<Reference>(null, Reference.class);
+ TextField designationReferenceDetail = new TextFieldNFix(); //"Image reference detail");
TextField mediaUri = new TextFieldNFix();
ToOneRelatedEntityCombobox<Reference> mediaSpecimenReference =
new ToOneRelatedEntityCombobox<Reference>(null, Reference.class);
kindOfUnit.setRequired(true);
kindOfUnit.setRow(this);
+ kindOfUnit.addValueChangeListener(e ->
+ updateRowItemsEnablement()
+ );
typeStatus.setRequired(true);
+ typeStatus.addValueChangeListener(e ->
+ updateRowItemsEnablement()
+ );
accessionNumber.setWidth(100, Unit.PIXELS);
+ collection.setWidth(200, Unit.PIXELS);
+ collection.setNestedButtonStateUpdater(new ToOneRelatedEntityButtonUpdater<Collection>(collection));
+
preferredStableUri.setWidth(150, Unit.PIXELS);
preferredStableUri.setConverter(new UriConverter());
- collection.setWidth(200, Unit.PIXELS);
- collection.setNestedButtonStateUpdater(new ToOneRelatedEntityButtonUpdater<Collection>(collection));
+ designationReference.setWidth(200, Unit.PIXELS);
+ designationReference.setNestedButtonStateUpdater(new ToOneRelatedEntityButtonUpdater<Reference>(mediaSpecimenReference));
+
+ designationReferenceDetail.setWidth(200, Unit.PIXELS);
mediaUri.setWidth(150, Unit.PIXELS);
mediaUri.setConverter(new UriConverter());
mediaSpecimenReferenceDetail.setWidth(200, Unit.PIXELS);
- kindOfUnit.addValueChangeListener(e ->
- updateRowItemsEnablement()
- );
}
kindOfUnit, typeStatus,
collection, accessionNumber,
preferredStableUri,
+ designationReference, designationReferenceDetail,
mediaUri, mediaSpecimenReference,
mediaSpecimenReferenceDetail
};
"kindOfUnit", "typeStatus",
"collection", "accessionNumber",
"preferredStableUri",
+ "designationReference", "designationReferenceDetail",
"mediaUri", "mediaSpecimenReference",
"mediaSpecimenReferenceDetail"
});
kindOfUnit.setDescription(kindOfUnitLocked ?
"Can not be changed since the type specimen is associated with multiple type designations" : "");
+ boolean withDesignationReference = typeStatus.getValue() != null && ((SpecimenTypeDesignationStatus)typeStatus.getValue()).hasDesignationSource();
+
+ designationReference.setEnabled(withDesignationReference);
+ designationReferenceDetail.setEnabled(withDesignationReference);
+
mediaSpecimenReference.setEnabled(publishedImageType || unPublishedImageType);
mediaSpecimenReferenceDetail.setEnabled(publishedImageType || unPublishedImageType);
mediaUri.setEnabled(publishedImageType || unPublishedImageType);
import java.util.EnumSet;
import java.util.HashMap;
import java.util.HashSet;
+import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.Stack;
private Map<CollectionPopupEditor, SpecimenTypeDesignationDTORow> collectionPopupEditorsRowMap = new HashMap<>();
- private Map<ReferencePopupEditor, SpecimenTypeDesignationDTORow> referencePopupEditorsRowMap = new HashMap<>();
+ private Map<ReferencePopupEditor, ToOneRelatedEntityCombobox<Reference>> referencePopupEditorsCombobox = new HashMap<>();
private Set<CollectionRowItemCollection> popuEditorTypeDesignationSourceRows = new HashSet<>();
}
});
- row.mediaSpecimenReference.loadFrom(
+ row.designationReference.loadFrom(
referencePagingProvider,
referencePagingProvider,
referencePagingProvider.getPageSize()
);
+ row.designationReference.getSelect().setCaptionGenerator(new ReferenceEllypsisCaptionGenerator(LabelType.BIBLIOGRAPHIC, row.designationReference.getSelect()));
+ row.designationReference.getSelect().addValueChangeListener(new ToOneRelatedEntityReloader<Reference>(row.designationReference.getSelect(),
+ SpecimenTypeDesignationWorkingsetEditorPresenter.this));
+ row.designationReference.addClickListenerAddEntity(e -> doReferenceEditorAdd(row.designationReference));
+ row.designationReference.addClickListenerEditEntity(e -> {
+ if(row.designationReference.getValue() != null){
+ doReferenceEditorEdit(row.designationReference);
+ }
+ });
+ row.mediaSpecimenReference.loadFrom(
+ referencePagingProvider,
+ referencePagingProvider,
+ referencePagingProvider.getPageSize()
+ );
row.mediaSpecimenReference.getSelect().setCaptionGenerator(new ReferenceEllypsisCaptionGenerator(LabelType.BIBLIOGRAPHIC, row.mediaSpecimenReference.getSelect()));
row.mediaSpecimenReference.getSelect().addValueChangeListener(new ToOneRelatedEntityReloader<Reference>(row.mediaSpecimenReference.getSelect(),
SpecimenTypeDesignationWorkingsetEditorPresenter.this));
- row.mediaSpecimenReference.addClickListenerAddEntity(e -> doReferenceEditorAdd(row));
+ row.mediaSpecimenReference.addClickListenerAddEntity(e -> doReferenceEditorAdd(row.mediaSpecimenReference));
row.mediaSpecimenReference.addClickListenerEditEntity(e -> {
if(row.mediaSpecimenReference.getValue() != null){
- doReferenceEditorEdit(row);
+ doReferenceEditorEdit(row.mediaSpecimenReference);
}
});
UserHelperAccess.userHelper().createAuthorityForCurrentUser(dto.getFieldUnit(), crud, null);
}
+ List<SpecimenTypeDesignationDTO> stdDTOs = dto.getSpecimenTypeDesignationDTOs();
+ for(SpecimenTypeDesignationDTO stddto : stdDTOs) {
+ // clean up
+ if(!stddto.getTypeStatus().hasDesignationSource()) {
+ stddto.setDesignationReference(null);
+ stddto.setDesignationReferenceDetail(null);
+ }
+ }
+
specimenTypeDesignationWorkingSetService.save(dto);
}
}
}
- public void doReferenceEditorAdd(SpecimenTypeDesignationDTORow row) {
+ public void doReferenceEditorAdd(ToOneRelatedEntityCombobox<Reference> referenceComobox) {
ReferencePopupEditor referencePopupEditor = openPopupEditor(ReferencePopupEditor.class, null);
referencePopupEditor.withDeleteButton(true);
referencePopupEditor.loadInEditor(null);
- referencePopupEditorsRowMap.put(referencePopupEditor, row);
+ referencePopupEditorsCombobox.put(referencePopupEditor, referenceComobox);
}
- public void doReferenceEditorEdit(SpecimenTypeDesignationDTORow row) {
+ public void doReferenceEditorEdit(ToOneRelatedEntityCombobox<Reference> referenceComobox) {
ReferencePopupEditor referencePopupEditor = openPopupEditor(ReferencePopupEditor.class, null);
referencePopupEditor.withReferenceTypes(RegistrationUIDefaults.MEDIA_REFERENCE_TYPES);
referencePopupEditor.grantToCurrentUser(COLLECTION_EDITOR_CRUD);
referencePopupEditor.withDeleteButton(true);
- referencePopupEditor.loadInEditor(row.mediaSpecimenReference.getValue().getUuid());
+ referencePopupEditor.loadInEditor(referenceComobox.getValue().getUuid());
- referencePopupEditorsRowMap.put(referencePopupEditor, row);
+ referencePopupEditorsCombobox.put(referencePopupEditor, referenceComobox);
}
@EventBusListenerMethod(filter = EntityChangeEventFilter.ReferenceFilter.class)
Reference newRef = getRepo().getReferenceService().load(event.getEntityUuid(), Arrays.asList(new String[]{"$"}));
cache.load(newRef);
+ ToOneRelatedEntityCombobox<Reference> combobox = referencePopupEditorsCombobox.get(event.getSourceView());
if(event.isCreatedType()){
- SpecimenTypeDesignationDTORow row = referencePopupEditorsRowMap.get(event.getSourceView());
- ToOneRelatedEntityCombobox<Reference> combobox = row.getComponent(ToOneRelatedEntityCombobox.class, 7);
combobox.setValue((Reference) event.getEntity());
} else {
for( CollectionRowItemCollection row : popuEditorTypeDesignationSourceRows) {
- ToOneRelatedEntityCombobox<Reference> combobox = row.getComponent(ToOneRelatedEntityCombobox.class, 7);
combobox.reload();
}
}