Revision f7882bff
Added by Andreas Kohlbecker almost 6 years ago
src/main/java/eu/etaxonomy/cdm/vaadin/view/reference/ReferencePopupEditor.java | ||
---|---|---|
10 | 10 |
|
11 | 11 |
import java.util.Collection; |
12 | 12 |
import java.util.EnumSet; |
13 |
import java.util.HashMap; |
|
14 |
import java.util.Map; |
|
13 | 15 |
|
14 | 16 |
import org.springframework.context.annotation.Scope; |
15 | 17 |
import org.springframework.security.core.GrantedAuthority; |
16 | 18 |
|
17 | 19 |
import com.vaadin.spring.annotation.SpringComponent; |
20 |
import com.vaadin.ui.AbstractField; |
|
18 | 21 |
import com.vaadin.ui.Alignment; |
22 |
import com.vaadin.ui.Component; |
|
23 |
import com.vaadin.ui.Field; |
|
19 | 24 |
import com.vaadin.ui.GridLayout; |
20 | 25 |
import com.vaadin.ui.ListSelect; |
21 | 26 |
import com.vaadin.ui.TextField; |
22 | 27 |
|
23 | 28 |
import eu.etaxonomy.cdm.model.reference.Reference; |
29 |
import eu.etaxonomy.cdm.model.reference.ReferencePropertyDefinitions; |
|
30 |
import eu.etaxonomy.cdm.model.reference.ReferencePropertyDefinitions.UnimplemetedCaseException; |
|
24 | 31 |
import eu.etaxonomy.cdm.model.reference.ReferenceType; |
25 | 32 |
import eu.etaxonomy.cdm.vaadin.component.TextFieldNFix; |
26 | 33 |
import eu.etaxonomy.cdm.vaadin.component.common.TeamOrPersonField; |
... | ... | |
60 | 67 |
|
61 | 68 |
private EnumSet<ReferenceType> referenceTypes = EnumSet.allOf(ReferenceType.class); |
62 | 69 |
|
70 |
private static Map<String,String> propertyNameLabelMap = new HashMap<>(); |
|
71 |
|
|
72 |
static { |
|
73 |
propertyNameLabelMap.put("inReference", "In reference"); |
|
74 |
propertyNameLabelMap.put("inJournal", "In journal"); |
|
75 |
propertyNameLabelMap.put("inSeries", "In series"); |
|
76 |
propertyNameLabelMap.put("inBook", "In book"); |
|
77 |
} |
|
78 |
|
|
63 | 79 |
/** |
64 | 80 |
* @param layout |
65 | 81 |
* @param dtoType |
... | ... | |
186 | 202 |
* @return |
187 | 203 |
*/ |
188 | 204 |
private Object updateFieldVisibility(ReferenceType value) { |
189 |
getField("volume").setVisible(value.isVolumeReference()); |
|
190 | 205 |
|
191 |
getField("placePublished").setVisible(value.isPublication()); |
|
192 |
getField("publisher").setVisible(value.isPublication()); |
|
193 |
|
|
194 |
getField("editor").setVisible(value.isPrintedUnit()); |
|
195 |
getField("seriesPart").setVisible(value.isPrintedUnit()); |
|
196 |
|
|
197 |
getField("inReference").setVisible(value.isPrintedUnit() || value.isSection()); |
|
198 |
getField("pages").setVisible(value.isSection()); |
|
206 |
try { |
|
207 |
Map<String, String> fieldPropertyDefinition = ReferencePropertyDefinitions.fieldPropertyDefinition(value); |
|
208 |
setAllFieldsVisible(false); |
|
209 |
for(String fieldName : fieldPropertyDefinition.keySet()){ |
|
210 |
Field<?> field = getField(fieldName); |
|
211 |
if(field == null){ |
|
212 |
continue; |
|
213 |
} |
|
214 |
field.setVisible(true); |
|
215 |
String propertyName = fieldPropertyDefinition.get(fieldName); |
|
216 |
if(propertyName != fieldName){ |
|
217 |
field.setCaption(propertyNameLabelMap.get(propertyName)); |
|
218 |
} |
|
219 |
} |
|
220 |
} catch (UnimplemetedCaseException e) { |
|
221 |
logger.error(e); |
|
222 |
// enable all fields |
|
223 |
setAllFieldsVisible(true); |
|
224 |
// fix inReference label |
|
225 |
getField("inReference").setCaption(propertyNameLabelMap.get("inReference")); |
|
226 |
} |
|
199 | 227 |
|
200 | 228 |
EnumSet<ReferenceType> hideNomTitle = EnumSet.of(ReferenceType.Article, ReferenceType.Section, ReferenceType.BookSection, ReferenceType.InProceedings, ReferenceType.PrintSeries); |
201 | 229 |
EnumSet<ReferenceType> hideTitle = EnumSet.of(ReferenceType.Section, ReferenceType.BookSection); |
... | ... | |
205 | 233 |
return null; |
206 | 234 |
} |
207 | 235 |
|
236 |
protected void setAllFieldsVisible(boolean visible){ |
|
237 |
GridLayout grid = (GridLayout)getFieldLayout(); |
|
238 |
for(Component c : grid){ |
|
239 |
if(AbstractField.class.isAssignableFrom(c.getClass())){ |
|
240 |
c.setVisible(visible); |
|
241 |
} |
|
242 |
} |
|
243 |
} |
|
244 |
|
|
208 | 245 |
/** |
209 | 246 |
* {@inheritDoc} |
210 | 247 |
*/ |
Also available in: Unified diff
ref #7223 implementing adaptive field visibility for ReferenceEditor