Project

General

Profile

« Previous | Next » 

Revision 782f192b

Added by Andreas Kohlbecker almost 6 years ago

ref #7458 implementation of the note field for the TypeSpecimenEditor

View differences:

src/main/java/eu/etaxonomy/cdm/service/RegistrationWorkingSetService.java
98 98
   */
99 99
  private List<String> FIELDUNIT_INIT_STRATEGY = Arrays.asList(new String[]{
100 100
          "$",
101
          "annotations.*", // * is needed as log as we are using a table in FilterableAnnotationsField
101 102
          "gatheringEvent.$",
102 103
          "gatheringEvent.country",
103 104
          "gatheringEvent.collectingAreas",
src/main/java/eu/etaxonomy/cdm/vaadin/model/registration/SpecimenTypeDesignationWorkingSetDTO.java
16 16
import org.joda.time.Partial;
17 17

  
18 18
import eu.etaxonomy.cdm.model.agent.AgentBase;
19
import eu.etaxonomy.cdm.model.common.Annotation;
19 20
import eu.etaxonomy.cdm.model.common.Language;
20 21
import eu.etaxonomy.cdm.model.common.LanguageString;
21 22
import eu.etaxonomy.cdm.model.common.VersionableEntity;
......
23 24
import eu.etaxonomy.cdm.model.location.Point;
24 25
import eu.etaxonomy.cdm.model.name.SpecimenTypeDesignation;
25 26
import eu.etaxonomy.cdm.model.name.TaxonName;
26
import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;
27 27
import eu.etaxonomy.cdm.model.occurrence.FieldUnit;
28 28
import eu.etaxonomy.cdm.model.occurrence.GatheringEvent;
29 29
import eu.etaxonomy.cdm.model.reference.Reference;
......
336 336
        return deletedEntities;
337 337
    }
338 338

  
339
    public Set<Annotation> getAnnotations() {
340
        if(fieldUnit != null){
341
            return fieldUnit.getAnnotations();
342
        } else {
343
            return null;
344
        }
345
    }
346

  
347
    public void setAnnotations(Set<Annotation> annotations) {
348

  
349
        if(fieldUnit != null){
350
            List<Annotation> currentAnnotations = new ArrayList<>(fieldUnit.getAnnotations());
351
            List<Annotation> annotationsSeen = new ArrayList<>();
352
            for(Annotation a : annotations){
353
                if(a == null){
354
                    continue;
355
                }
356
                if(!currentAnnotations.contains(a)){
357
                    fieldUnit.addAnnotation(a);
358
                }
359
                annotationsSeen.add(a);
360
            }
361
            for(Annotation a : currentAnnotations){
362
                if(!annotationsSeen.contains(a)){
363
                    fieldUnit.removeAnnotation(a);
364
                }
365
            }
366
        }
367
    }
368

  
339 369
}
src/main/java/eu/etaxonomy/cdm/vaadin/ui/RegistrationUIDefaults.java
10 10

  
11 11
import java.util.EnumSet;
12 12

  
13
import eu.etaxonomy.cdm.model.common.AnnotationType;
13 14
import eu.etaxonomy.cdm.model.name.NomenclaturalCode;
14 15
import eu.etaxonomy.cdm.model.reference.ReferenceType;
15 16

  
......
52 53
     */
53 54
    public static final NomenclaturalCode NOMENCLATURAL_CODE = NomenclaturalCode.ICNAFP;
54 55

  
56
    /**
57
     * should be configurable per UI
58
     */
59
    public static final AnnotationType[] EDITABLE_ANOTATION_TYPES = new AnnotationType[]{AnnotationType.EDITORIAL()};
60

  
61

  
55 62
    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.";
56 63
}
src/main/java/eu/etaxonomy/cdm/vaadin/view/AnnotationsEditor.java
1
/**
2
* Copyright (C) 2018 EDIT
3
* European Distributed Institute of Taxonomy
4
* http://www.e-taxonomy.eu
5
*
6
* The contents of this file are subject to the Mozilla Public License Version 1.1
7
* See LICENSE.TXT at the top of this package for the full license terms.
8
*/
9
package eu.etaxonomy.cdm.vaadin.view;
10

  
11
import eu.etaxonomy.cdm.model.common.AnnotationType;
12
import eu.etaxonomy.cdm.vaadin.component.common.FilterableAnnotationsField;
13

  
14
/**
15
 * @author a.kohlbecker
16
 * @since Jun 25, 2018
17
 *
18
 */
19
public interface AnnotationsEditor {
20

  
21
    /**
22
     *
23
     * @return the EDITABLE_ANOTATION_TYPES
24
     */
25
    public AnnotationType[] getEditableAnotationTypes();
26

  
27
    /**
28
     *
29
     * @param EDITABLE_ANOTATION_TYPES the EDITABLE_ANOTATION_TYPES to set
30
     */
31
    public void setEditableAnotationTypes(AnnotationType... editableAnotationTypes);
32

  
33
    /**
34
     * @return
35
     */
36
    public FilterableAnnotationsField getAnnotationsField();
37

  
38
}
src/main/java/eu/etaxonomy/cdm/vaadin/view/name/SpecimenTypeDesignationWorkingsetPopupEditor.java
24 24
import com.vaadin.ui.Panel;
25 25
import com.vaadin.ui.TextArea;
26 26

  
27
import eu.etaxonomy.cdm.model.common.AnnotationType;
27 28
import eu.etaxonomy.cdm.persistence.hibernate.permission.CRUD;
28 29
import eu.etaxonomy.cdm.vaadin.component.CollectionRowRepresentative;
29 30
import eu.etaxonomy.cdm.vaadin.component.PartialDateField;
31
import eu.etaxonomy.cdm.vaadin.component.common.FilterableAnnotationsField;
30 32
import eu.etaxonomy.cdm.vaadin.component.common.GeoLocationField;
31 33
import eu.etaxonomy.cdm.vaadin.component.common.MinMaxTextField;
32 34
import eu.etaxonomy.cdm.vaadin.component.common.TeamOrPersonField;
33 35
import eu.etaxonomy.cdm.vaadin.model.registration.SpecimenTypeDesignationDTO;
34 36
import eu.etaxonomy.cdm.vaadin.model.registration.SpecimenTypeDesignationWorkingSetDTO;
35 37
import eu.etaxonomy.cdm.vaadin.permission.AccessRestrictedView;
38
import eu.etaxonomy.cdm.vaadin.ui.RegistrationUIDefaults;
36 39
import eu.etaxonomy.cdm.vaadin.util.TeamOrPersonBaseCaptionGenerator;
37 40
import eu.etaxonomy.cdm.vaadin.util.converter.DoubleConverter;
38 41
import eu.etaxonomy.cdm.vaadin.util.converter.IntegerConverter;
......
75 78

  
76 79
    private TeamOrPersonField collectorField;
77 80

  
81
    private FilterableAnnotationsField annotationsListField;
82

  
83
    private AnnotationType[] editableAnotationTypes = RegistrationUIDefaults.EDITABLE_ANOTATION_TYPES;
84

  
78 85
    /**
79 86
     * @return the countrySelectField
80 87
     */
......
93 100
        grid.setSpacing(true);
94 101
        grid.setMargin(true);
95 102
        grid.setColumns(3);
96
        grid.setRows(9);
103
        grid.setRows(10);
97 104

  
98 105
        //TODO typifyingAuthors
99 106

  
......
201 208
        bindField(typeDesignationsCollectionField, "specimenTypeDesignationDTOs");
202 209
        addComponent(scrollPanel, 0, row, 2, row);
203 210

  
211
        row++;
212
        annotationsListField = new FilterableAnnotationsField("Editorial notes");
213
        annotationsListField.setWidth(100, Unit.PERCENTAGE);
214
        annotationsListField.setAnnotationTypesVisible(editableAnotationTypes);
215
        addField(annotationsListField, "annotations", 0, row, 2, row);
216

  
204 217
     }
205 218

  
206 219

  
......
334 347
        return collectorField;
335 348
    }
336 349

  
350
    /**
351
     * By default  AnnotationType.EDITORIAL() is enabled.
352
     *
353
     * @return the editableAnotationTypes
354
     */
355
    @Override
356
    public AnnotationType[] getEditableAnotationTypes() {
357
        return editableAnotationTypes;
358
    }
359

  
360
    /**
361
     * By default  AnnotationType.EDITORIAL() is enabled.
362
     *
363
     *
364
     * @param editableAnotationTypes the editableAnotationTypes to set
365
     */
366
    @Override
367
    public void setEditableAnotationTypes(AnnotationType ... editableAnotationTypes) {
368
        this.editableAnotationTypes = editableAnotationTypes;
369
    }
370

  
371
    /**
372
     * {@inheritDoc}
373
     */
374
    @Override
375
    public FilterableAnnotationsField getAnnotationsField() {
376
        return annotationsListField;
377
    }
378

  
337 379

  
338 380

  
339 381
}
src/main/java/eu/etaxonomy/cdm/vaadin/view/name/SpecimenTypeDesignationWorkingsetPopupEditorView.java
15 15

  
16 16
import eu.etaxonomy.cdm.vaadin.component.common.TeamOrPersonField;
17 17
import eu.etaxonomy.cdm.vaadin.model.registration.SpecimenTypeDesignationDTO;
18
import eu.etaxonomy.cdm.vaadin.view.AnnotationsEditor;
18 19
import eu.etaxonomy.vaadin.mvp.ApplicationView;
19 20

  
20 21
/**
......
22 23
 * @since Jun 13, 2017
23 24
 *
24 25
 */
25
public interface SpecimenTypeDesignationWorkingsetPopupEditorView extends ApplicationView<SpecimenTypeDesignationWorkingsetEditorPresenter> {
26
public interface SpecimenTypeDesignationWorkingsetPopupEditorView extends ApplicationView<SpecimenTypeDesignationWorkingsetEditorPresenter>,
27
    AnnotationsEditor {
26 28

  
27 29
    public ListSelect getCountrySelectField();
28 30

  
src/main/java/eu/etaxonomy/cdm/vaadin/view/name/TaxonNamePopupEditor.java
50 50
import eu.etaxonomy.cdm.vaadin.model.name.TaxonNameDTO;
51 51
import eu.etaxonomy.cdm.vaadin.permission.AccessRestrictedView;
52 52
import eu.etaxonomy.cdm.vaadin.permission.CdmEditDeletePermissionTester;
53
import eu.etaxonomy.cdm.vaadin.ui.RegistrationUIDefaults;
53 54
import eu.etaxonomy.cdm.vaadin.util.TeamOrPersonBaseCaptionGenerator;
54 55
import eu.etaxonomy.cdm.vaadin.util.converter.SetToListConverter;
55 56
import eu.etaxonomy.vaadin.component.NameRelationField;
......
68 69
@SpringComponent
69 70
@Scope("prototype")
70 71
public class TaxonNamePopupEditor extends AbstractCdmDTOPopupEditor<TaxonNameDTO, TaxonName, TaxonNameEditorPresenter>
71
    implements TaxonNamePopupEditorView, AccessRestrictedView {
72
    implements TaxonNamePopupEditorView, AccessRestrictedView{
72 73

  
73 74
    private static final long serialVersionUID = -7037436241474466359L;
74 75

  
......
134 135

  
135 136
    private FilterableAnnotationsField annotationsListField;
136 137

  
137
    private AnnotationType[] editableAnotationTypes = new AnnotationType[]{AnnotationType.EDITORIAL()};
138

  
138
    private AnnotationType[] editableAnotationTypes = RegistrationUIDefaults.EDITABLE_ANOTATION_TYPES;
139 139

  
140 140
    /**
141 141
     * By default  AnnotationType.EDITORIAL() is enabled.
142 142
     *
143 143
     * @return the editableAnotationTypes
144 144
     */
145
    @Override
145 146
    public AnnotationType[] getEditableAnotationTypes() {
146 147
        return editableAnotationTypes;
147 148
    }
......
152 153
     *
153 154
     * @param editableAnotationTypes the editableAnotationTypes to set
154 155
     */
156
    @Override
155 157
    public void setEditableAnotationTypes(AnnotationType ... editableAnotationTypes) {
156 158
        this.editableAnotationTypes = editableAnotationTypes;
157 159
    }
src/main/java/eu/etaxonomy/cdm/vaadin/view/name/TaxonNamePopupEditorView.java
16 16

  
17 17
import eu.etaxonomy.cdm.model.name.TaxonName;
18 18
import eu.etaxonomy.cdm.model.reference.Reference;
19
import eu.etaxonomy.cdm.vaadin.component.common.FilterableAnnotationsField;
20 19
import eu.etaxonomy.cdm.vaadin.component.common.TeamOrPersonField;
20
import eu.etaxonomy.cdm.vaadin.view.AnnotationsEditor;
21 21
import eu.etaxonomy.vaadin.component.NameRelationField;
22 22
import eu.etaxonomy.vaadin.component.ToManyRelatedEntitiesComboboxSelect;
23 23
import eu.etaxonomy.vaadin.component.ToOneRelatedEntityCombobox;
......
28 28
 * @since May 22, 2017
29 29
 *
30 30
 */
31
public interface TaxonNamePopupEditorView extends ApplicationView<TaxonNameEditorPresenter> {
31
public interface TaxonNamePopupEditorView extends ApplicationView<TaxonNameEditorPresenter>, AnnotationsEditor {
32 32

  
33 33
    /**
34 34
     * @return
......
116 116
     */
117 117
    public AbstractField<String> getInfraSpecificEpithetField();
118 118

  
119
    /**
120
     * @return
121
     */
122
    FilterableAnnotationsField getAnnotationsField();
123 119

  
124 120
}

Also available in: Unified diff