*/
private List<String> FIELDUNIT_INIT_STRATEGY = Arrays.asList(new String[]{
"$",
+ "annotations.*", // * is needed as log as we are using a table in FilterableAnnotationsField
"gatheringEvent.$",
"gatheringEvent.country",
"gatheringEvent.collectingAreas",
import org.joda.time.Partial;
import eu.etaxonomy.cdm.model.agent.AgentBase;
+import eu.etaxonomy.cdm.model.common.Annotation;
import eu.etaxonomy.cdm.model.common.Language;
import eu.etaxonomy.cdm.model.common.LanguageString;
import eu.etaxonomy.cdm.model.common.VersionableEntity;
import eu.etaxonomy.cdm.model.location.Point;
import eu.etaxonomy.cdm.model.name.SpecimenTypeDesignation;
import eu.etaxonomy.cdm.model.name.TaxonName;
-import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;
import eu.etaxonomy.cdm.model.occurrence.FieldUnit;
import eu.etaxonomy.cdm.model.occurrence.GatheringEvent;
import eu.etaxonomy.cdm.model.reference.Reference;
return deletedEntities;
}
+ public Set<Annotation> getAnnotations() {
+ if(fieldUnit != null){
+ return fieldUnit.getAnnotations();
+ } else {
+ return null;
+ }
+ }
+
+ public void setAnnotations(Set<Annotation> annotations) {
+
+ if(fieldUnit != null){
+ List<Annotation> currentAnnotations = new ArrayList<>(fieldUnit.getAnnotations());
+ List<Annotation> annotationsSeen = new ArrayList<>();
+ for(Annotation a : annotations){
+ if(a == null){
+ continue;
+ }
+ if(!currentAnnotations.contains(a)){
+ fieldUnit.addAnnotation(a);
+ }
+ annotationsSeen.add(a);
+ }
+ for(Annotation a : currentAnnotations){
+ if(!annotationsSeen.contains(a)){
+ fieldUnit.removeAnnotation(a);
+ }
+ }
+ }
+ }
+
}
import java.util.EnumSet;
+import eu.etaxonomy.cdm.model.common.AnnotationType;
import eu.etaxonomy.cdm.model.name.NomenclaturalCode;
import eu.etaxonomy.cdm.model.reference.ReferenceType;
*/
public static final NomenclaturalCode NOMENCLATURAL_CODE = NomenclaturalCode.ICNAFP;
+ /**
+ * should be configurable per UI
+ */
+ public static final AnnotationType[] EDITABLE_ANOTATION_TYPES = new AnnotationType[]{AnnotationType.EDITORIAL()};
+
+
public static final String ERROR_CONTACT_MESSAGE_LINE = "Please contact <a href=\"mailto:editsupport@bgbm.org\">editsupport@bgbm.org</a> for support and more information.";
}
--- /dev/null
+/**
+* Copyright (C) 2018 EDIT
+* European Distributed Institute of Taxonomy
+* http://www.e-taxonomy.eu
+*
+* The contents of this file are subject to the Mozilla Public License Version 1.1
+* See LICENSE.TXT at the top of this package for the full license terms.
+*/
+package eu.etaxonomy.cdm.vaadin.view;
+
+import eu.etaxonomy.cdm.model.common.AnnotationType;
+import eu.etaxonomy.cdm.vaadin.component.common.FilterableAnnotationsField;
+
+/**
+ * @author a.kohlbecker
+ * @since Jun 25, 2018
+ *
+ */
+public interface AnnotationsEditor {
+
+ /**
+ *
+ * @return the EDITABLE_ANOTATION_TYPES
+ */
+ public AnnotationType[] getEditableAnotationTypes();
+
+ /**
+ *
+ * @param EDITABLE_ANOTATION_TYPES the EDITABLE_ANOTATION_TYPES to set
+ */
+ public void setEditableAnotationTypes(AnnotationType... editableAnotationTypes);
+
+ /**
+ * @return
+ */
+ public FilterableAnnotationsField getAnnotationsField();
+
+}
\ No newline at end of file
import com.vaadin.ui.Panel;
import com.vaadin.ui.TextArea;
+import eu.etaxonomy.cdm.model.common.AnnotationType;
import eu.etaxonomy.cdm.persistence.hibernate.permission.CRUD;
import eu.etaxonomy.cdm.vaadin.component.CollectionRowRepresentative;
import eu.etaxonomy.cdm.vaadin.component.PartialDateField;
+import eu.etaxonomy.cdm.vaadin.component.common.FilterableAnnotationsField;
import eu.etaxonomy.cdm.vaadin.component.common.GeoLocationField;
import eu.etaxonomy.cdm.vaadin.component.common.MinMaxTextField;
import eu.etaxonomy.cdm.vaadin.component.common.TeamOrPersonField;
import eu.etaxonomy.cdm.vaadin.model.registration.SpecimenTypeDesignationDTO;
import eu.etaxonomy.cdm.vaadin.model.registration.SpecimenTypeDesignationWorkingSetDTO;
import eu.etaxonomy.cdm.vaadin.permission.AccessRestrictedView;
+import eu.etaxonomy.cdm.vaadin.ui.RegistrationUIDefaults;
import eu.etaxonomy.cdm.vaadin.util.TeamOrPersonBaseCaptionGenerator;
import eu.etaxonomy.cdm.vaadin.util.converter.DoubleConverter;
import eu.etaxonomy.cdm.vaadin.util.converter.IntegerConverter;
private TeamOrPersonField collectorField;
+ private FilterableAnnotationsField annotationsListField;
+
+ private AnnotationType[] editableAnotationTypes = RegistrationUIDefaults.EDITABLE_ANOTATION_TYPES;
+
/**
* @return the countrySelectField
*/
grid.setSpacing(true);
grid.setMargin(true);
grid.setColumns(3);
- grid.setRows(9);
+ grid.setRows(10);
//TODO typifyingAuthors
bindField(typeDesignationsCollectionField, "specimenTypeDesignationDTOs");
addComponent(scrollPanel, 0, row, 2, row);
+ row++;
+ annotationsListField = new FilterableAnnotationsField("Editorial notes");
+ annotationsListField.setWidth(100, Unit.PERCENTAGE);
+ annotationsListField.setAnnotationTypesVisible(editableAnotationTypes);
+ addField(annotationsListField, "annotations", 0, row, 2, row);
+
}
return collectorField;
}
+ /**
+ * By default AnnotationType.EDITORIAL() is enabled.
+ *
+ * @return the editableAnotationTypes
+ */
+ @Override
+ public AnnotationType[] getEditableAnotationTypes() {
+ return editableAnotationTypes;
+ }
+
+ /**
+ * By default AnnotationType.EDITORIAL() is enabled.
+ *
+ *
+ * @param editableAnotationTypes the editableAnotationTypes to set
+ */
+ @Override
+ public void setEditableAnotationTypes(AnnotationType ... editableAnotationTypes) {
+ this.editableAnotationTypes = editableAnotationTypes;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public FilterableAnnotationsField getAnnotationsField() {
+ return annotationsListField;
+ }
+
}
import eu.etaxonomy.cdm.vaadin.component.common.TeamOrPersonField;
import eu.etaxonomy.cdm.vaadin.model.registration.SpecimenTypeDesignationDTO;
+import eu.etaxonomy.cdm.vaadin.view.AnnotationsEditor;
import eu.etaxonomy.vaadin.mvp.ApplicationView;
/**
* @since Jun 13, 2017
*
*/
-public interface SpecimenTypeDesignationWorkingsetPopupEditorView extends ApplicationView<SpecimenTypeDesignationWorkingsetEditorPresenter> {
+public interface SpecimenTypeDesignationWorkingsetPopupEditorView extends ApplicationView<SpecimenTypeDesignationWorkingsetEditorPresenter>,
+ AnnotationsEditor {
public ListSelect getCountrySelectField();
import eu.etaxonomy.cdm.vaadin.model.name.TaxonNameDTO;
import eu.etaxonomy.cdm.vaadin.permission.AccessRestrictedView;
import eu.etaxonomy.cdm.vaadin.permission.CdmEditDeletePermissionTester;
+import eu.etaxonomy.cdm.vaadin.ui.RegistrationUIDefaults;
import eu.etaxonomy.cdm.vaadin.util.TeamOrPersonBaseCaptionGenerator;
import eu.etaxonomy.cdm.vaadin.util.converter.SetToListConverter;
import eu.etaxonomy.vaadin.component.NameRelationField;
@SpringComponent
@Scope("prototype")
public class TaxonNamePopupEditor extends AbstractCdmDTOPopupEditor<TaxonNameDTO, TaxonName, TaxonNameEditorPresenter>
- implements TaxonNamePopupEditorView, AccessRestrictedView {
+ implements TaxonNamePopupEditorView, AccessRestrictedView{
private static final long serialVersionUID = -7037436241474466359L;
private FilterableAnnotationsField annotationsListField;
- private AnnotationType[] editableAnotationTypes = new AnnotationType[]{AnnotationType.EDITORIAL()};
-
+ private AnnotationType[] editableAnotationTypes = RegistrationUIDefaults.EDITABLE_ANOTATION_TYPES;
/**
* By default AnnotationType.EDITORIAL() is enabled.
*
* @return the editableAnotationTypes
*/
+ @Override
public AnnotationType[] getEditableAnotationTypes() {
return editableAnotationTypes;
}
*
* @param editableAnotationTypes the editableAnotationTypes to set
*/
+ @Override
public void setEditableAnotationTypes(AnnotationType ... editableAnotationTypes) {
this.editableAnotationTypes = editableAnotationTypes;
}
import eu.etaxonomy.cdm.model.name.TaxonName;
import eu.etaxonomy.cdm.model.reference.Reference;
-import eu.etaxonomy.cdm.vaadin.component.common.FilterableAnnotationsField;
import eu.etaxonomy.cdm.vaadin.component.common.TeamOrPersonField;
+import eu.etaxonomy.cdm.vaadin.view.AnnotationsEditor;
import eu.etaxonomy.vaadin.component.NameRelationField;
import eu.etaxonomy.vaadin.component.ToManyRelatedEntitiesComboboxSelect;
import eu.etaxonomy.vaadin.component.ToOneRelatedEntityCombobox;
* @since May 22, 2017
*
*/
-public interface TaxonNamePopupEditorView extends ApplicationView<TaxonNameEditorPresenter> {
+public interface TaxonNamePopupEditorView extends ApplicationView<TaxonNameEditorPresenter>, AnnotationsEditor {
/**
* @return
*/
public AbstractField<String> getInfraSpecificEpithetField();
- /**
- * @return
- */
- FilterableAnnotationsField getAnnotationsField();
}