2 * Copyright (C) 2017 EDIT
3 * European Distributed Institute of Taxonomy
4 * http://www.e-taxonomy.eu
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.
9 package eu
.etaxonomy
.cdm
.vaadin
.view
.reference
;
11 import java
.util
.Arrays
;
12 import java
.util
.Collection
;
14 import org
.springframework
.security
.core
.GrantedAuthority
;
16 import com
.vaadin
.ui
.Alignment
;
17 import com
.vaadin
.ui
.GridLayout
;
18 import com
.vaadin
.ui
.ListSelect
;
19 import com
.vaadin
.ui
.TextField
;
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
;
33 * @author a.kohlbecker
37 public class ReferencePopupEditor
extends AbstractCdmPopupEditor
<Reference
, ReferenceEditorPresenter
> implements ReferencePopupEditorView
, AccessRestrictedView
{
39 private static final long serialVersionUID
= -4347633563800758815L;
41 private TextField titleField
;
43 private final static int GRID_COLS
= 4;
45 private final static int GRID_ROWS
= 10;
47 private ListSelect typeSelect
;
49 private ToOneRelatedEntityCombobox
<Reference
> inReferenceCombobox
;
55 public ReferencePopupEditor() {
56 super(new GridLayout(GRID_COLS
, GRID_ROWS
), Reference
.class);
60 protected void initContent() {
61 GridLayout grid
= (GridLayout
)getFieldLayout();
62 grid
.setSpacing(true);
69 "protectedAbbrevTitleCache",
70 "nomenclaturallyRelevant",
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
);
99 SwitchableTextField titleCacheField
= addSwitchableTextField("Reference cache", "titleCache", "protectedTitleCache", 0, row
, GRID_COLS
-1, row
);
100 titleCacheField
.setWidth(100, Unit
.PERCENTAGE
);
102 SwitchableTextField abbrevTitleCacheField
= addSwitchableTextField("Abbrev. cache", "abbrevTitleCache", "protectedAbbrevTitleCache", 0, row
, GRID_COLS
-1, row
);
103 abbrevTitleCacheField
.setWidth(100, Unit
.PERCENTAGE
);
105 titleField
= addTextField("Title", "title", 0, row
, GRID_COLS
-1, row
);
106 titleField
.setWidth(100, Unit
.PERCENTAGE
);
108 addTextField("NomenclaturalTitle", "abbrevTitle", 0, row
, GRID_COLS
-1, row
).setWidth(100, Unit
.PERCENTAGE
);
110 TeamOrPersonField authorshipField
= new TeamOrPersonField("Author(s)");
111 authorshipField
.setWidth(100, Unit
.PERCENTAGE
);
112 addField(authorshipField
, "authorship", 0, row
, 3, 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
);
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)
125 inReferenceCombobox
.addClickListenerEditEntity(e
-> {
126 if(inReferenceCombobox
.getValue() != null){
127 getEventBus().publishEvent(
128 new ReferenceEditorAction(
129 AbstractEditorAction
.Action
.EDIT
,
130 inReferenceCombobox
.getValue().getId(),
136 addField(inReferenceCombobox
, "inReference", 0, row
, 3, 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");
144 addTextField("ISSN", "issn", 0, row
);
145 addTextField("ISBN", "isbn", 1, row
);
146 addTextField("DOI", "doi", 2, row
);
147 addTextField("Uri", "uri", 3, row
);
149 // titleField.setRequired(true);
150 // publisherField.setRequired(true);
152 setAdvancedModeEnabled(true);
153 registerAdvancedModeComponents(titleCacheField
, abbrevTitleCacheField
);
154 registerAdvancedModeComponents(authorshipField
.getCachFields());
155 setAdvancedMode(false);
163 private Object
updateFieldVisibility(ReferenceType value
) {
164 getField("volume").setVisible(value
.isVolumeReference());
166 getField("placePublished").setVisible(value
.isPublication());
167 getField("publisher").setVisible(value
.isPublication());
169 getField("editor").setVisible(value
.isPrintedUnit());
170 getField("seriesPart").setVisible(value
.isPrintedUnit());
172 getField("inReference").setVisible(value
.isPrintedUnit() || value
.isSection());
173 getField("pages").setVisible(value
.isSection());
182 public String
getWindowCaption() {
183 return "Reference editor";
190 protected String
getDefaultComponentStyles() {
198 public void focusFirst() {
206 public boolean isResizable() {
214 public boolean allowAnonymousAccess() {
222 public Collection
<Collection
<GrantedAuthority
>> allowedGrantedAuthorities() {
227 public ListSelect
getTypeSelect() {
235 public ToOneRelatedEntityCombobox
<Reference
> getInReferenceCombobox() {
236 return inReferenceCombobox
;