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.data.util.BeanItemContainer;
17
import com.vaadin.ui.Alignment;
18
import com.vaadin.ui.GridLayout;
19
import com.vaadin.ui.ListSelect;
20
import com.vaadin.ui.TextField;
21

    
22
import eu.etaxonomy.cdm.model.reference.Reference;
23
import eu.etaxonomy.cdm.model.reference.ReferenceType;
24
import eu.etaxonomy.cdm.vaadin.component.common.TeamOrPersonField;
25
import eu.etaxonomy.cdm.vaadin.component.common.TimePeriodField;
26
import eu.etaxonomy.cdm.vaadin.event.AbstractEditorAction;
27
import eu.etaxonomy.cdm.vaadin.event.ReferenceEditorAction;
28
import eu.etaxonomy.cdm.vaadin.security.AccessRestrictedView;
29
import eu.etaxonomy.vaadin.component.SwitchableTextField;
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
    /**
53
     * @param layout
54
     * @param dtoType
55
     */
56
    public ReferencePopupEditor() {
57
        super(new GridLayout(GRID_COLS, GRID_ROWS), Reference.class);
58
    }
59

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

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

    
146
//        titleField.setRequired(true);
147
//        publisherField.setRequired(true);
148

    
149
        setAdvancedModeEnabled(true);
150
        registerAdvancedModeComponents(titleCacheField, abbrevTitleCacheField);
151
        registerAdvancedModeComponents(authorshipField.getCachFields());
152
        setAdvancedMode(false);
153

    
154
    }
155

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

    
163
        getField("placePublished").setVisible(value.isPublication());
164
        getField("publisher").setVisible(value.isPublication());
165

    
166
        getField("editor").setVisible(value.isPrintedUnit());
167
        getField("seriesPart").setVisible(value.isPrintedUnit());
168

    
169
        getField("inReference").setVisible(value.isPrintedUnit() || value.isSection());
170
        getField("pages").setVisible(value.isSection());
171

    
172
        return null;
173
    }
174

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

    
183
    /**
184
     * {@inheritDoc}
185
     */
186
    @Override
187
    protected String getDefaultComponentStyles() {
188
        return "tiny";
189
    }
190

    
191
    /**
192
     * {@inheritDoc}
193
     */
194
    @Override
195
    public void focusFirst() {
196
        titleField.focus();
197
    }
198

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

    
207
    /**
208
     * {@inheritDoc}
209
     */
210
    @Override
211
    public boolean allowAnonymousAccess() {
212
        return false;
213
    }
214

    
215
    /**
216
     * {@inheritDoc}
217
     */
218
    @Override
219
    public Collection<Collection<GrantedAuthority>> allowedGrantedAuthorities() {
220
        return null;
221
    }
222

    
223
    @Override
224
    public ListSelect getTypeSelect() {
225
        return typeSelect;
226
    }
227

    
228
    @Override
229
    public ToOneRelatedEntityListSelect<Reference> getInReferenceSelect() {
230
        return inReferenceSelect;
231
    }
232

    
233
}
(2-2/3)