From f7882bff1972c7f5360fef747e6b0246df747add Mon Sep 17 00:00:00 2001 From: Andreas Kohlbecker Date: Fri, 15 Jun 2018 15:27:36 +0200 Subject: [PATCH] ref #7223 implementing adaptive field visibility for ReferenceEditor --- .../view/reference/ReferencePopupEditor.java | 55 ++++++++++++++++--- 1 file changed, 46 insertions(+), 9 deletions(-) diff --git a/src/main/java/eu/etaxonomy/cdm/vaadin/view/reference/ReferencePopupEditor.java b/src/main/java/eu/etaxonomy/cdm/vaadin/view/reference/ReferencePopupEditor.java index b093e3cc..d6b9d2b0 100644 --- a/src/main/java/eu/etaxonomy/cdm/vaadin/view/reference/ReferencePopupEditor.java +++ b/src/main/java/eu/etaxonomy/cdm/vaadin/view/reference/ReferencePopupEditor.java @@ -10,17 +10,24 @@ package eu.etaxonomy.cdm.vaadin.view.reference; import java.util.Collection; import java.util.EnumSet; +import java.util.HashMap; +import java.util.Map; import org.springframework.context.annotation.Scope; import org.springframework.security.core.GrantedAuthority; import com.vaadin.spring.annotation.SpringComponent; +import com.vaadin.ui.AbstractField; import com.vaadin.ui.Alignment; +import com.vaadin.ui.Component; +import com.vaadin.ui.Field; import com.vaadin.ui.GridLayout; import com.vaadin.ui.ListSelect; import com.vaadin.ui.TextField; import eu.etaxonomy.cdm.model.reference.Reference; +import eu.etaxonomy.cdm.model.reference.ReferencePropertyDefinitions; +import eu.etaxonomy.cdm.model.reference.ReferencePropertyDefinitions.UnimplemetedCaseException; import eu.etaxonomy.cdm.model.reference.ReferenceType; import eu.etaxonomy.cdm.vaadin.component.TextFieldNFix; import eu.etaxonomy.cdm.vaadin.component.common.TeamOrPersonField; @@ -60,6 +67,15 @@ public class ReferencePopupEditor extends AbstractCdmPopupEditor referenceTypes = EnumSet.allOf(ReferenceType.class); + private static Map propertyNameLabelMap = new HashMap<>(); + + static { + propertyNameLabelMap.put("inReference", "In reference"); + propertyNameLabelMap.put("inJournal", "In journal"); + propertyNameLabelMap.put("inSeries", "In series"); + propertyNameLabelMap.put("inBook", "In book"); + } + /** * @param layout * @param dtoType @@ -186,16 +202,28 @@ public class ReferencePopupEditor extends AbstractCdmPopupEditor fieldPropertyDefinition = ReferencePropertyDefinitions.fieldPropertyDefinition(value); + setAllFieldsVisible(false); + for(String fieldName : fieldPropertyDefinition.keySet()){ + Field field = getField(fieldName); + if(field == null){ + continue; + } + field.setVisible(true); + String propertyName = fieldPropertyDefinition.get(fieldName); + if(propertyName != fieldName){ + field.setCaption(propertyNameLabelMap.get(propertyName)); + } + } + } catch (UnimplemetedCaseException e) { + logger.error(e); + // enable all fields + setAllFieldsVisible(true); + // fix inReference label + getField("inReference").setCaption(propertyNameLabelMap.get("inReference")); + } EnumSet hideNomTitle = EnumSet.of(ReferenceType.Article, ReferenceType.Section, ReferenceType.BookSection, ReferenceType.InProceedings, ReferenceType.PrintSeries); EnumSet hideTitle = EnumSet.of(ReferenceType.Section, ReferenceType.BookSection); @@ -205,6 +233,15 @@ public class ReferencePopupEditor extends AbstractCdmPopupEditor