Project

General

Profile

Download (7.53 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.reference;
10

    
11
import java.util.Arrays;
12
import java.util.Collection;
13

    
14
import org.springframework.security.core.GrantedAuthority;
15

    
16
import com.vaadin.ui.Alignment;
17
import com.vaadin.ui.GridLayout;
18
import com.vaadin.ui.ListSelect;
19
import com.vaadin.ui.TextField;
20

    
21
import eu.etaxonomy.cdm.model.reference.Reference;
22
import eu.etaxonomy.cdm.model.reference.ReferenceType;
23
import eu.etaxonomy.cdm.vaadin.component.common.TeamOrPersonField;
24
import eu.etaxonomy.cdm.vaadin.component.common.TimePeriodField;
25
import eu.etaxonomy.cdm.vaadin.event.AbstractEditorAction;
26
import eu.etaxonomy.cdm.vaadin.event.ReferenceEditorAction;
27
import eu.etaxonomy.cdm.vaadin.security.AccessRestrictedView;
28
import eu.etaxonomy.vaadin.component.SwitchableTextField;
29
import eu.etaxonomy.vaadin.component.ToOneRelatedEntityCombobox;
30
import eu.etaxonomy.vaadin.mvp.AbstractCdmPopupEditor;
31

    
32
/**
33
 * @author a.kohlbecker
34
 * @since Apr 4, 2017
35
 *
36
 */
37
public class ReferencePopupEditor extends AbstractCdmPopupEditor<Reference, ReferenceEditorPresenter> implements ReferencePopupEditorView, AccessRestrictedView {
38

    
39
    private static final long serialVersionUID = -4347633563800758815L;
40

    
41
    private TextField titleField;
42

    
43
    private final static int GRID_COLS = 4;
44

    
45
    private final static int GRID_ROWS = 10;
46

    
47
    private ListSelect typeSelect;
48

    
49
    private ToOneRelatedEntityCombobox<Reference> inReferenceCombobox;
50

    
51
    /**
52
     * @param layout
53
     * @param dtoType
54
     */
55
    public ReferencePopupEditor() {
56
        super(new GridLayout(GRID_COLS, GRID_ROWS), Reference.class);
57
    }
58

    
59
    @Override
60
    protected void initContent() {
61
        GridLayout grid = (GridLayout)getFieldLayout();
62
        grid.setSpacing(true);
63
        grid.setMargin(true);
64

    
65
        /*
66
        "type",
67
        "uri",
68
        "abbrevTitleCache",
69
        "protectedAbbrevTitleCache",
70
        "nomenclaturallyRelevant",
71
        "authorship",
72
        "referenceAbstract",
73
        "title",
74
        "abbrevTitle",
75
        "editor",
76
        "volume",
77
        "pages",
78
        "edition",
79
        "isbn",
80
        "issn",
81
        "doi",
82
        "seriesPart",
83
        "datePublished",
84
        "publisher",
85
        "placePublished",
86
        "institution",
87
        "school",
88
        "organization",
89
        "inReference"
90
         */
91
        int row = 0;
92
        typeSelect = new ListSelect("Reference type", Arrays.asList(ReferenceType.values()));
93
        typeSelect.setNullSelectionAllowed(false);
94
        typeSelect.setRows(1);
95
        typeSelect.addValueChangeListener(e -> updateFieldVisibility((ReferenceType)e.getProperty().getValue()));
96
        addField(typeSelect, "type", 3, row);
97
        grid.setComponentAlignment(typeSelect, Alignment.TOP_RIGHT);
98
        row++;
99
        SwitchableTextField titleCacheField = addSwitchableTextField("Reference cache", "titleCache", "protectedTitleCache", 0, row, GRID_COLS-1, row);
100
        titleCacheField.setWidth(100, Unit.PERCENTAGE);
101
        row++;
102
        SwitchableTextField abbrevTitleCacheField = addSwitchableTextField("Abbrev. cache", "abbrevTitleCache", "protectedAbbrevTitleCache", 0, row, GRID_COLS-1, row);
103
        abbrevTitleCacheField.setWidth(100, Unit.PERCENTAGE);
104
        row++;
105
        titleField = addTextField("Title", "title", 0, row, GRID_COLS-1, row);
106
        titleField.setWidth(100, Unit.PERCENTAGE);
107
        row++;
108
        addTextField("NomenclaturalTitle", "abbrevTitle", 0, row, GRID_COLS-1, row).setWidth(100, Unit.PERCENTAGE);
109
        row++;
110
        TeamOrPersonField authorshipField = new TeamOrPersonField("Author(s)");
111
        authorshipField.setWidth(100,  Unit.PERCENTAGE);
112
        addField(authorshipField, "authorship", 0, row, 3, row);
113
        row++;
114
        addTextField("Series", "seriesPart", 0, row);
115
        addTextField("Volume", "volume", 1, row);
116
        addTextField("Pages", "pages", 2, row);
117
        addTextField("Editor", "editor", 3, row).setWidth(100, Unit.PERCENTAGE);
118
        row++;
119

    
120
        inReferenceCombobox = new ToOneRelatedEntityCombobox<Reference>("In-reference", Reference.class);
121
        inReferenceCombobox.setWidth(100, Unit.PERCENTAGE);
122
        inReferenceCombobox.addClickListenerAddEntity(e -> getEventBus().publishEvent(
123
                new ReferenceEditorAction(AbstractEditorAction.Action.ADD, null, inReferenceCombobox, this)
124
                ));
125
        inReferenceCombobox.addClickListenerEditEntity(e -> {
126
            if(inReferenceCombobox.getValue() != null){
127
                getEventBus().publishEvent(
128
                    new ReferenceEditorAction(
129
                            AbstractEditorAction.Action.EDIT,
130
                            inReferenceCombobox.getValue().getId(),
131
                            inReferenceCombobox,
132
                            this)
133
                );
134
            }
135
            });
136
        addField(inReferenceCombobox, "inReference", 0, row, 3, row);
137
        row++;
138
        addTextField("Place published", "placePublished", 0, row, 1, row).setWidth(100, Unit.PERCENTAGE);
139
        TextField publisherField = addTextField("Publisher", "publisher", 2, row, 3, row);
140
        publisherField.setWidth(100, Unit.PERCENTAGE);
141
        TimePeriodField timePeriodField = new TimePeriodField("Date published");
142
        addField(timePeriodField, "datePublished");
143
        row++;
144
        addTextField("ISSN", "issn", 0, row);
145
        addTextField("ISBN", "isbn", 1, row);
146
        addTextField("DOI", "doi", 2, row);
147
        addTextField("Uri", "uri", 3, row);
148

    
149
//        titleField.setRequired(true);
150
//        publisherField.setRequired(true);
151

    
152
        setAdvancedModeEnabled(true);
153
        registerAdvancedModeComponents(titleCacheField, abbrevTitleCacheField);
154
        registerAdvancedModeComponents(authorshipField.getCachFields());
155
        setAdvancedMode(false);
156

    
157
    }
158

    
159
    /**
160
     * @param value
161
     * @return
162
     */
163
    private Object updateFieldVisibility(ReferenceType value) {
164
        getField("volume").setVisible(value.isVolumeReference());
165

    
166
        getField("placePublished").setVisible(value.isPublication());
167
        getField("publisher").setVisible(value.isPublication());
168

    
169
        getField("editor").setVisible(value.isPrintedUnit());
170
        getField("seriesPart").setVisible(value.isPrintedUnit());
171

    
172
        getField("inReference").setVisible(value.isPrintedUnit() || value.isSection());
173
        getField("pages").setVisible(value.isSection());
174

    
175
        return null;
176
    }
177

    
178
    /**
179
     * {@inheritDoc}
180
     */
181
    @Override
182
    public String getWindowCaption() {
183
        return "Reference editor";
184
    }
185

    
186
    /**
187
     * {@inheritDoc}
188
     */
189
    @Override
190
    protected String getDefaultComponentStyles() {
191
        return "tiny";
192
    }
193

    
194
    /**
195
     * {@inheritDoc}
196
     */
197
    @Override
198
    public void focusFirst() {
199
        titleField.focus();
200
    }
201

    
202
    /**
203
     * {@inheritDoc}
204
     */
205
    @Override
206
    public boolean isResizable() {
207
        return false;
208
    }
209

    
210
    /**
211
     * {@inheritDoc}
212
     */
213
    @Override
214
    public boolean allowAnonymousAccess() {
215
        return false;
216
    }
217

    
218
    /**
219
     * {@inheritDoc}
220
     */
221
    @Override
222
    public Collection<Collection<GrantedAuthority>> allowedGrantedAuthorities() {
223
        return null;
224
    }
225

    
226
    @Override
227
    public ListSelect getTypeSelect() {
228
        return typeSelect;
229
    }
230

    
231
    /**
232
     * {@inheritDoc}
233
     */
234
    @Override
235
    public ToOneRelatedEntityCombobox<Reference> getInReferenceCombobox() {
236
        return inReferenceCombobox;
237
    }
238

    
239
}
(2-2/3)