Project

General

Profile

Download (4.13 KB) Statistics
| Branch: | Tag: | Revision:
1
/**
2
* Copyright (C) 2017 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.name;
10

    
11
import com.vaadin.server.Sizeable.Unit;
12
import com.vaadin.ui.Component;
13
import com.vaadin.ui.ListSelect;
14
import com.vaadin.ui.TextField;
15

    
16
import eu.etaxonomy.cdm.model.common.DefinedTerm;
17
import eu.etaxonomy.cdm.model.reference.Reference;
18
import eu.etaxonomy.cdm.vaadin.component.CollectionRow;
19
import eu.etaxonomy.cdm.vaadin.component.CollectionRowRepresentative;
20
import eu.etaxonomy.cdm.vaadin.model.registration.KindOfUnitTerms;
21
import eu.etaxonomy.cdm.vaadin.util.converter.UriConverter;
22
import eu.etaxonomy.vaadin.component.ToOneRelatedEntityCombobox;
23

    
24
/**
25
 * CollectionRow for {@link SpecimenTypeDesignationDTO}
26
 * SpecimenTypeDesignationDTORow needs to be instantiated by a EditorInstantiator which can only be provided by the presenter
27
 *  {@link SpecimenTypeDesignationWorkingsetEditorPresenter#handleViewEntered()}
28
 *
29
 * @author a.kohlbecker
30
 * @since Jun 22, 2017
31
 *
32
 */
33
public class SpecimenTypeDesignationDTORow implements CollectionRow {
34

    
35
    /* CONVENTION!
36
     *
37
     * The fieldname must match the properties of the SpecimenTypeDesignationDTO
38
     */
39
    RowListSelect kindOfUnit = new RowListSelect();
40
    ListSelect typeStatus = new ListSelect();
41
    ToOneRelatedEntityCombobox<eu.etaxonomy.cdm.model.occurrence.Collection> collection =
42
            new ToOneRelatedEntityCombobox<eu.etaxonomy.cdm.model.occurrence.Collection>(null, eu.etaxonomy.cdm.model.occurrence.Collection.class);
43
    TextField accessionNumber = new TextField();
44
    TextField preferredStableUri = new TextField();
45
    TextField mediaUri = new TextField();
46
    ToOneRelatedEntityCombobox<Reference> mediaSpecimenReference =
47
            new ToOneRelatedEntityCombobox<Reference>(null, Reference.class);
48
    TextField mediaSpecimenReferenceDetail = new TextField(); //"Image reference detail");
49

    
50
    public SpecimenTypeDesignationDTORow(){
51
        kindOfUnit.setRows(1);
52
        kindOfUnit.setRequired(true);
53
        kindOfUnit.setRow(this);
54
        typeStatus.setRows(1);
55
        typeStatus.setRequired(true);
56
        accessionNumber.setWidth(100, Unit.PIXELS);
57
        preferredStableUri.setWidth(150, Unit.PIXELS);
58
        preferredStableUri.setConverter(new UriConverter());
59
        collection.setWidth(150, Unit.PIXELS);
60
        mediaUri.setWidth(150, Unit.PIXELS);
61
        mediaUri.setConverter(new UriConverter());
62
        mediaSpecimenReference.setWidth(200, Unit.PIXELS);
63
        mediaSpecimenReferenceDetail.setWidth(200, Unit.PIXELS);
64

    
65
        kindOfUnit.addValueChangeListener(e ->
66
                updateRowItemsEnablement()
67
        );
68

    
69
    }
70

    
71
    /**
72
     * @return
73
     */
74
    public Component[] components() {
75
        return new Component[]{
76
                kindOfUnit, typeStatus,
77
                collection, accessionNumber,
78
                preferredStableUri,
79
                mediaUri, mediaSpecimenReference,
80
                mediaSpecimenReferenceDetail, mediaSpecimenReferenceDetail
81
                };
82
    }
83

    
84
    @Override
85
    public void updateRowItemsEnablement() {
86

    
87
        DefinedTerm kindOfUnitTerm = (DefinedTerm)kindOfUnit.getValue();
88

    
89
        boolean publishedImageType = kindOfUnitTerm != null && kindOfUnitTerm.equals(KindOfUnitTerms.PUBLISHED_IMAGE());
90
        boolean unPublishedImageType = kindOfUnitTerm != null && kindOfUnitTerm.equals(KindOfUnitTerms.UNPUBLISHED_IMAGE());
91

    
92
        mediaSpecimenReference.setEnabled(publishedImageType);
93
        mediaSpecimenReferenceDetail.setEnabled(publishedImageType);
94
        mediaUri.setEnabled(publishedImageType || unPublishedImageType);
95

    
96
    }
97

    
98
    class RowListSelect extends ListSelect implements CollectionRowRepresentative {
99

    
100
        private static final long serialVersionUID = 3235653923633494213L;
101

    
102
        CollectionRow row;
103

    
104
        protected void setRow(CollectionRow row){
105
            this.row = row;
106
        }
107

    
108
        @Override
109
        public void updateRowItemsEnabledStates() {
110
            row.updateRowItemsEnablement();
111

    
112
        }
113

    
114
    }
115

    
116
}
(2-2/9)