Project

General

Profile

Download (8.37 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.Collection;
12

    
13
import org.springframework.security.core.GrantedAuthority;
14
import org.vaadin.viritin.fields.ElementCollectionField;
15

    
16
import com.vaadin.data.validator.DoubleRangeValidator;
17
import com.vaadin.ui.AbstractSelect.ItemCaptionMode;
18
import com.vaadin.ui.Component;
19
import com.vaadin.ui.GridLayout;
20
import com.vaadin.ui.ListSelect;
21
import com.vaadin.ui.Panel;
22
import com.vaadin.ui.TextArea;
23
import com.vaadin.ui.TextField;
24

    
25
import eu.etaxonomy.cdm.vaadin.component.PartialDateField;
26
import eu.etaxonomy.cdm.vaadin.component.common.GeoLocationField;
27
import eu.etaxonomy.cdm.vaadin.component.common.MinMaxTextField;
28
import eu.etaxonomy.cdm.vaadin.component.common.TeamOrPersonField;
29
import eu.etaxonomy.cdm.vaadin.model.registration.SpecimenTypeDesignationDTO;
30
import eu.etaxonomy.cdm.vaadin.model.registration.SpecimenTypeDesignationWorkingSetDTO;
31
import eu.etaxonomy.cdm.vaadin.security.AccessRestrictedView;
32
import eu.etaxonomy.vaadin.mvp.AbstractPopupEditor;
33

    
34
/**
35
 * @author a.kohlbecker
36
 * @since May 15, 2017
37
 *
38
 */
39
public class SpecimenTypeDesignationWorkingsetPopupEditor extends AbstractPopupEditor<SpecimenTypeDesignationWorkingSetDTO, SpecimenTypeDesignationWorkingsetEditorPresenter>
40
    implements SpecimenTypeDesignationWorkingsetPopupEditorView, AccessRestrictedView {
41

    
42
    /**
43
     * @param layout
44
     * @param dtoType
45
     */
46
    public SpecimenTypeDesignationWorkingsetPopupEditor() {
47
        super(new GridLayout(), SpecimenTypeDesignationWorkingSetDTO.class);
48
        GridLayout grid = (GridLayout) getFieldLayout();
49
        grid.setMargin(true);
50
        grid.setSpacing(true);
51
    }
52

    
53
    private static final long serialVersionUID = 5418275817834009509L;
54

    
55
    private ListSelect countrySelectField;
56

    
57
    private ElementCollectionField<SpecimenTypeDesignationDTO> typeDesignationsCollectionField;
58

    
59
    /**
60
     * @return the countrySelectField
61
     */
62
    @Override
63
    public ListSelect getCountrySelectField() {
64
        return countrySelectField;
65
    }
66

    
67
    /**
68
     * {@inheritDoc}
69
     */
70
    @Override
71
    protected void initContent() {
72

    
73
        GridLayout grid = (GridLayout)getFieldLayout();
74
        grid.setSpacing(true);
75
        grid.setMargin(true);
76
        grid.setColumns(3);
77
        grid.setRows(9);
78
        grid.setWidth("1200px");
79

    
80
        //TODO typifyingAuthors
81

    
82
        // FieldUnit + GatheringEvent
83

    
84
        int row = 0;
85
        countrySelectField = new ListSelect("Country");
86
        addField(countrySelectField, "country", 1, row , 2, row);
87
        countrySelectField.setWidth("100%");
88
        countrySelectField.setItemCaptionMode(ItemCaptionMode.PROPERTY);
89
        countrySelectField.setItemCaptionPropertyId("label");
90
        countrySelectField.setRows(1);
91

    
92
        row++;
93
        TextArea localityField = new TextArea("Locality");
94
        addField(localityField, "locality", 0, row , 2, row);
95
        localityField.setWidth("100%");
96
        // NOTE: setRows and SetCold breaks he width setting,
97
        //        see https://github.com/vaadin/framework/issues/3617
98

    
99
        row++;
100
        GeoLocationField exactLocation = new GeoLocationField("Geo location");
101
        addField(exactLocation, "exactLocation", 0, row, 2, row);
102
        exactLocation.setWidth("100%");
103

    
104
        row++;
105
        MinMaxTextField absElevationMinMax = new MinMaxTextField("Altitude", "m");
106
        absElevationMinMax.setWidth("100%");
107
        absElevationMinMax.addSubComponentsStyleName(getDefaultComponentStyles());
108
        grid.addComponent(absElevationMinMax, 0, row, 2, row);
109

    
110
        bindField(absElevationMinMax.getMinField(), "absoluteElevation");
111
        bindField(absElevationMinMax.getMaxField(), "absoluteElevationMax");
112
        bindField(absElevationMinMax.getTextField(), "absoluteElevationText");
113

    
114
        row++;
115
        MinMaxTextField distanceToWaterSurfaceMinMax = new MinMaxTextField("Distance to water surface", "m");
116
        distanceToWaterSurfaceMinMax.setWidth("100%");
117
        distanceToWaterSurfaceMinMax.addSubComponentsStyleName(getDefaultComponentStyles());
118
        grid.addComponent(distanceToWaterSurfaceMinMax, 0, row, 2, row);
119

    
120
        bindField(distanceToWaterSurfaceMinMax.getMinField(), "distanceToWaterSurface");
121
        bindField(distanceToWaterSurfaceMinMax.getMaxField(), "distanceToWaterSurfaceMax");
122
        bindField(distanceToWaterSurfaceMinMax.getTextField(), "distanceToWaterSurfaceText");
123
        distanceToWaterSurfaceMinMax.getMaxField().addValidator(new DoubleRangeValidator("Negative values are not allowed here.", 0.0, Double.MAX_VALUE));
124
        distanceToWaterSurfaceMinMax.getMinField().addValidator(new DoubleRangeValidator("Negative values are not allowed here.", 0.0, Double.MAX_VALUE));
125

    
126
        row++;
127
        MinMaxTextField distanceToGroundMinMax = new MinMaxTextField("Distance to substrate", "m");
128
        distanceToGroundMinMax.setWidth("100%");
129
        distanceToGroundMinMax.addSubComponentsStyleName(getDefaultComponentStyles());
130
        grid.addComponent(distanceToGroundMinMax, 0, row, 2, row);
131

    
132
        bindField(distanceToGroundMinMax.getMinField(), "distanceToGround");
133
        bindField(distanceToGroundMinMax.getMaxField(), "distanceToGroundMax");
134
        bindField(distanceToGroundMinMax.getTextField(), "distanceToGroundText");
135

    
136
        row++;
137
        TeamOrPersonField collectorField = new TeamOrPersonField("Collector");
138
        addField(collectorField, "collector", 0, row, 2, row);
139

    
140
        row++;
141
        PartialDateField collectionDateField = new PartialDateField("Collection date");
142
        addField(collectionDateField, "gatheringDate", 0, row);
143
        TextField fieldNumberField = addTextField("Field number", "fieldNumber", 2, row);
144

    
145
        row++;
146

    
147
        // FIXME: can we use the Grid instaed?
148
        typeDesignationsCollectionField = new ElementCollectionField<>(
149
                SpecimenTypeDesignationDTO.class,
150
                SpecimenTypeDesignationDTORow.class
151
                );
152
        typeDesignationsCollectionField.withCaption("Types");
153
        typeDesignationsCollectionField.getLayout().setSpacing(false);
154
        typeDesignationsCollectionField.getLayout().setColumns(3);
155

    
156
        typeDesignationsCollectionField.setPropertyHeader("accessionNumber", "Access. num.");
157
        typeDesignationsCollectionField.setPropertyHeader("mediaSpecimenReference", "Image reference");
158
        typeDesignationsCollectionField.setPropertyHeader("mediaSpecimenReferenceDetail", "Reference detail");
159

    
160
        // typeDesignationsCollectionField.getLayout().setMargin(false);
161
        // typeDesignationsCollectionField.addStyleName("composite-field-wrapper");
162
        // addField(typeDesignationsCollectionField, "specimenTypeDesignationDTOs", 0, row, 2, row);
163

    
164
        Panel scrollPanel = new Panel(typeDesignationsCollectionField.getLayout());
165
        scrollPanel.setCaption("Types");
166
        scrollPanel.setWidth(800, Unit.PIXELS);
167

    
168
        bindField(typeDesignationsCollectionField, "specimenTypeDesignationDTOs");
169
        addComponent(scrollPanel, 0, row, 2, row);
170

    
171
     }
172

    
173

    
174
    /**
175
     * {@inheritDoc}
176
     */
177
    @Override
178
    public String getWindowCaption() {
179
        return "Specimen typedesignations editor";
180
    }
181

    
182
    /**
183
     * {@inheritDoc}
184
     */
185
    @Override
186
    public void focusFirst() {
187
        // none
188
    }
189

    
190
    /**
191
     * {@inheritDoc}
192
     */
193
    @Override
194
    protected String getDefaultComponentStyles() {
195
        return "tiny";
196
    }
197

    
198
    /**
199
     * {@inheritDoc}
200
     */
201
    @Override
202
    public boolean allowAnonymousAccess() {
203
        return false;
204
    }
205

    
206
    /**
207
     * {@inheritDoc}
208
     */
209
    @Override
210
    public Collection<Collection<GrantedAuthority>> allowedGrantedAuthorities() {
211
        return null;
212
    }
213

    
214
    /**
215
     * {@inheritDoc}
216
     */
217
    @Override
218
    public boolean isResizable() {
219
        return true;
220
    }
221

    
222

    
223
    // ------- SpecimenTypeDesignationWorkingsetPopupEditorView methods ---- //
224
    @Override
225
    public ElementCollectionField<SpecimenTypeDesignationDTO> getTypeDesignationsCollectionField() {
226
        return typeDesignationsCollectionField;
227
    }
228

    
229
    @Override
230
    public void applyDefaultComponentStyle(Component ... components){
231
        for(int i = 0; i <components.length; i++){
232
            components[i].setStyleName(getDefaultComponentStyles());
233
        }
234
    }
235

    
236

    
237

    
238

    
239
}
(3-3/7)