Project

General

Profile

Download (4.39 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 java.util.Arrays;
12

    
13
import com.vaadin.server.Sizeable.Unit;
14
import com.vaadin.ui.Component;
15
import com.vaadin.ui.ListSelect;
16
import com.vaadin.ui.TextField;
17

    
18
import eu.etaxonomy.cdm.model.common.DefinedTerm;
19
import eu.etaxonomy.cdm.model.reference.Reference;
20
import eu.etaxonomy.cdm.vaadin.component.CollectionRow;
21
import eu.etaxonomy.cdm.vaadin.component.CollectionRowItemCollection;
22
import eu.etaxonomy.cdm.vaadin.component.CollectionRowRepresentative;
23
import eu.etaxonomy.cdm.vaadin.component.TextFieldNFix;
24
import eu.etaxonomy.cdm.vaadin.model.registration.KindOfUnitTerms;
25
import eu.etaxonomy.cdm.vaadin.util.converter.UriConverter;
26
import eu.etaxonomy.vaadin.component.ToOneRelatedEntityCombobox;
27

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

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

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

    
69
        kindOfUnit.addValueChangeListener(e ->
70
                updateRowItemsEnablement()
71
        );
72

    
73
    }
74

    
75
    /**
76
     * @return
77
     */
78
    public Component[] components() {
79
        Component[] components = new Component[]{
80
            kindOfUnit, typeStatus,
81
            collection, accessionNumber,
82
            preferredStableUri,
83
            mediaUri, mediaSpecimenReference,
84
            mediaSpecimenReferenceDetail, mediaSpecimenReferenceDetail
85
            };
86
        addAll(Arrays.asList(components));
87
        return components;
88
    }
89

    
90
    @Override
91
    public void updateRowItemsEnablement() {
92

    
93
        DefinedTerm kindOfUnitTerm = (DefinedTerm)kindOfUnit.getValue();
94

    
95
        boolean publishedImageType = kindOfUnitTerm != null && kindOfUnitTerm.equals(KindOfUnitTerms.PUBLISHED_IMAGE());
96
        boolean unPublishedImageType = kindOfUnitTerm != null && kindOfUnitTerm.equals(KindOfUnitTerms.UNPUBLISHED_IMAGE());
97

    
98
        mediaSpecimenReference.setEnabled(publishedImageType);
99
        mediaSpecimenReferenceDetail.setEnabled(publishedImageType);
100
        mediaUri.setEnabled(publishedImageType || unPublishedImageType);
101

    
102
    }
103

    
104
    class RowListSelect extends ListSelect implements CollectionRowRepresentative {
105

    
106
        private static final long serialVersionUID = 3235653923633494213L;
107

    
108
        CollectionRow row;
109

    
110
        protected void setRow(CollectionRow row){
111
            this.row = row;
112
        }
113

    
114
        @Override
115
        public void updateRowItemsEnabledStates() {
116
            row.updateRowItemsEnablement();
117

    
118
        }
119

    
120
    }
121

    
122
}
(5-5/13)