Project

General

Profile

Download (8.64 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.component.ToOneRelatedEntityListSelect;
31
import eu.etaxonomy.vaadin.mvp.AbstractCdmPopupEditor;
32

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

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

    
42
    private TextField titleField;
43

    
44
    private final static int GRID_COLS = 4;
45

    
46
    private final static int GRID_ROWS = 10;
47

    
48
    private ListSelect typeSelect;
49

    
50
    private ToOneRelatedEntityListSelect<Reference> inReferenceSelect;
51

    
52
    private ToOneRelatedEntityCombobox<Reference> inReferenceCombobox;
53

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

    
62
    @Override
63
    protected void initContent() {
64
        GridLayout grid = (GridLayout)getFieldLayout();
65
        grid.setSpacing(true);
66
        grid.setMargin(true);
67

    
68
        /*
69
        "type",
70
        "uri",
71
        "abbrevTitleCache",
72
        "protectedAbbrevTitleCache",
73
        "nomenclaturallyRelevant",
74
        "authorship",
75
        "referenceAbstract",
76
        "title",
77
        "abbrevTitle",
78
        "editor",
79
        "volume",
80
        "pages",
81
        "edition",
82
        "isbn",
83
        "issn",
84
        "doi",
85
        "seriesPart",
86
        "datePublished",
87
        "publisher",
88
        "placePublished",
89
        "institution",
90
        "school",
91
        "organization",
92
        "inReference"
93
         */
94
        int row = 0;
95
        typeSelect = new ListSelect("Reference type", Arrays.asList(ReferenceType.values()));
96
        typeSelect.setNullSelectionAllowed(false);
97
        typeSelect.setRows(1);
98
        typeSelect.addValueChangeListener(e -> updateFieldVisibility((ReferenceType)e.getProperty().getValue()));
99
        addField(typeSelect, "type", 3, row);
100
        grid.setComponentAlignment(typeSelect, Alignment.TOP_RIGHT);
101
        row++;
102
        SwitchableTextField titleCacheField = addSwitchableTextField("Reference cache", "titleCache", "protectedTitleCache", 0, row, GRID_COLS-1, row);
103
        titleCacheField.setWidth(100, Unit.PERCENTAGE);
104
        row++;
105
        SwitchableTextField abbrevTitleCacheField = addSwitchableTextField("Abbrev. cache", "abbrevTitleCache", "protectedAbbrevTitleCache", 0, row, GRID_COLS-1, row);
106
        abbrevTitleCacheField.setWidth(100, Unit.PERCENTAGE);
107
        row++;
108
        titleField = addTextField("Title", "title", 0, row, GRID_COLS-1, row);
109
        titleField.setWidth(100, Unit.PERCENTAGE);
110
        row++;
111
        addTextField("NomenclaturalTitle", "abbrevTitle", 0, row, GRID_COLS-1, row).setWidth(100, Unit.PERCENTAGE);
112
        row++;
113
        TeamOrPersonField authorshipField = new TeamOrPersonField("Author(s)");
114
        authorshipField.setWidth(100,  Unit.PERCENTAGE);
115
        addField(authorshipField, "authorship", 0, row, 3, row);
116
        row++;
117
        addTextField("Series", "seriesPart", 0, row);
118
        addTextField("Volume", "volume", 1, row);
119
        addTextField("Pages", "pages", 2, row);
120
        addTextField("Editor", "editor", 3, row).setWidth(100, Unit.PERCENTAGE);
121
        row++;
122
        /*
123
        inReferenceSelect = new ToOneRelatedEntityListSelect<Reference>("In-reference", Reference.class, new BeanItemContainer<>(Reference.class));
124
        inReferenceSelect.setWidth(100, Unit.PERCENTAGE);
125
        inReferenceSelect.getSelect().setRows(1);
126
        inReferenceSelect.addClickListenerAddEntity(e -> getEventBus().publishEvent(
127
                new ReferenceEditorAction(AbstractEditorAction.Action.ADD, null, inReferenceSelect, this)
128
                ));
129
        inReferenceSelect.addClickListenerEditEntity(e -> {
130
            if(inReferenceSelect.getSelect().getValue() != null){
131
                getEventBus().publishEvent(
132
                    new ReferenceEditorAction(AbstractEditorAction.Action.EDIT, ((Reference)inReferenceSelect.getSelect().getValue()).getId(), inReferenceSelect, this)
133
                );
134
            }
135
            });
136
        addField(inReferenceSelect, "inReference", 0, row, 3, row);
137
        */
138
        inReferenceCombobox = new ToOneRelatedEntityCombobox<Reference>("In-reference", Reference.class);
139
        inReferenceCombobox.setWidth(100, Unit.PERCENTAGE);
140
        inReferenceCombobox.addClickListenerAddEntity(e -> getEventBus().publishEvent(
141
                new ReferenceEditorAction(AbstractEditorAction.Action.ADD, null, inReferenceSelect, this)
142
                ));
143
        inReferenceCombobox.addClickListenerEditEntity(e -> {
144
            if(inReferenceCombobox.getSelect().getValue() != null){
145
                getEventBus().publishEvent(
146
                    new ReferenceEditorAction(AbstractEditorAction.Action.EDIT, ((Reference)inReferenceSelect.getSelect().getValue()).getId(), inReferenceSelect, this)
147
                );
148
            }
149
            });
150
        addField(inReferenceCombobox, "inReference", 0, row, 3, row);
151
        row++;
152
        addTextField("Place published", "placePublished", 0, row, 1, row).setWidth(100, Unit.PERCENTAGE);
153
        TextField publisherField = addTextField("Publisher", "publisher", 2, row, 3, row);
154
        publisherField.setWidth(100, Unit.PERCENTAGE);
155
        TimePeriodField timePeriodField = new TimePeriodField("Date published");
156
        addField(timePeriodField, "datePublished");
157
        row++;
158
        addTextField("ISSN", "issn", 0, row);
159
        addTextField("ISBN", "isbn", 1, row);
160
        addTextField("DOI", "doi", 2, row);
161
        addTextField("Uri", "uri", 3, row);
162

    
163
//        titleField.setRequired(true);
164
//        publisherField.setRequired(true);
165

    
166
        setAdvancedModeEnabled(true);
167
        registerAdvancedModeComponents(titleCacheField, abbrevTitleCacheField);
168
        registerAdvancedModeComponents(authorshipField.getCachFields());
169
        setAdvancedMode(false);
170

    
171
    }
172

    
173
    /**
174
     * @param value
175
     * @return
176
     */
177
    private Object updateFieldVisibility(ReferenceType value) {
178
        getField("volume").setVisible(value.isVolumeReference());
179

    
180
        getField("placePublished").setVisible(value.isPublication());
181
        getField("publisher").setVisible(value.isPublication());
182

    
183
        getField("editor").setVisible(value.isPrintedUnit());
184
        getField("seriesPart").setVisible(value.isPrintedUnit());
185

    
186
        getField("inReference").setVisible(value.isPrintedUnit() || value.isSection());
187
        getField("pages").setVisible(value.isSection());
188

    
189
        return null;
190
    }
191

    
192
    /**
193
     * {@inheritDoc}
194
     */
195
    @Override
196
    public String getWindowCaption() {
197
        return "Reference editor";
198
    }
199

    
200
    /**
201
     * {@inheritDoc}
202
     */
203
    @Override
204
    protected String getDefaultComponentStyles() {
205
        return "tiny";
206
    }
207

    
208
    /**
209
     * {@inheritDoc}
210
     */
211
    @Override
212
    public void focusFirst() {
213
        titleField.focus();
214
    }
215

    
216
    /**
217
     * {@inheritDoc}
218
     */
219
    @Override
220
    public boolean isResizable() {
221
        return false;
222
    }
223

    
224
    /**
225
     * {@inheritDoc}
226
     */
227
    @Override
228
    public boolean allowAnonymousAccess() {
229
        return false;
230
    }
231

    
232
    /**
233
     * {@inheritDoc}
234
     */
235
    @Override
236
    public Collection<Collection<GrantedAuthority>> allowedGrantedAuthorities() {
237
        return null;
238
    }
239

    
240
    @Override
241
    public ListSelect getTypeSelect() {
242
        return typeSelect;
243
    }
244

    
245
    @Override
246
    public ToOneRelatedEntityListSelect<Reference> getInReferenceSelect() {
247
        return inReferenceSelect;
248
    }
249

    
250
    /**
251
     * {@inheritDoc}
252
     */
253
    @Override
254
    public ToOneRelatedEntityCombobox<Reference> getInReferenceCombobox() {
255
        return inReferenceCombobox;
256
    }
257

    
258
}
(2-2/3)