Project

General

Profile

Download (4.2 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.component.TextFieldNFix;
21
import eu.etaxonomy.cdm.vaadin.model.registration.KindOfUnitTerms;
22
import eu.etaxonomy.cdm.vaadin.util.converter.UriConverter;
23
import eu.etaxonomy.vaadin.component.ToOneRelatedEntityCombobox;
24

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

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

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

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

    
70
    }
71

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

    
85
    @Override
86
    public void updateRowItemsEnablement() {
87

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

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

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

    
97
    }
98

    
99
    class RowListSelect extends ListSelect implements CollectionRowRepresentative {
100

    
101
        private static final long serialVersionUID = 3235653923633494213L;
102

    
103
        CollectionRow row;
104

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

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

    
113
        }
114

    
115
    }
116

    
117
}
(2-2/9)