import eu.etaxonomy.cdm.service.CdmFilterablePagingProvider;
import eu.etaxonomy.cdm.vaadin.event.ToOneRelatedEntityReloader;
import eu.etaxonomy.cdm.vaadin.security.UserHelper;
-import eu.etaxonomy.cdm.vaadin.util.CdmTitleCacheCaptionGenerator;
+import eu.etaxonomy.cdm.vaadin.util.TeamOrPersonBaseCaptionGenerator;
import eu.etaxonomy.cdm.vaadin.util.converter.CdmBaseDeproxyConverter;
import eu.etaxonomy.cdm.vaadin.view.name.CachingPresenter;
import eu.etaxonomy.vaadin.component.CompositeCustomField;
import eu.etaxonomy.vaadin.component.EntityFieldInstantiator;
+import eu.etaxonomy.vaadin.component.ReloadableLazyComboBox;
import eu.etaxonomy.vaadin.component.SwitchableTextField;
import eu.etaxonomy.vaadin.component.ToManyRelatedEntitiesListSelect;
private CssLayout toolBar= new CssLayout();
private CssLayout compositeWrapper = new CssLayout();
- private LazyComboBox<TeamOrPersonBase> teamOrPersonSelect = new LazyComboBox<TeamOrPersonBase>(TeamOrPersonBase.class);
+ private ReloadableLazyComboBox<TeamOrPersonBase> teamOrPersonSelect = new ReloadableLazyComboBox<TeamOrPersonBase>(TeamOrPersonBase.class);
private Button selectConfirmButton = new Button("OK");
private Button removeButton = new Button(FontAwesome.REMOVE);
private CdmFilterablePagingProvider<AgentBase, Person> pagingProviderPerson;
- public TeamOrPersonField(String caption){
+ private TeamOrPersonBaseCaptionGenerator.CacheType cacheType;
+
+ public TeamOrPersonField(String caption, TeamOrPersonBaseCaptionGenerator.CacheType cacheType){
setCaption(caption);
- teamOrPersonSelect.setCaptionGenerator(new CdmTitleCacheCaptionGenerator<TeamOrPersonBase>());
+ this.cacheType = cacheType;
+ teamOrPersonSelect.setCaptionGenerator(new TeamOrPersonBaseCaptionGenerator<TeamOrPersonBase>(cacheType));
addStyledComponent(teamOrPersonSelect);
PersonField f = new PersonField();
f.setAllowNewEmptyEntity(true); // otherwise new entities can not be added to the personsListEditor
f.getPersonSelect().loadFrom(pagingProvider, pagingProvider, pagingProvider.getPageSize());
- f.getPersonSelect().setCaptionGenerator(new CdmTitleCacheCaptionGenerator<Person>());
+ f.getPersonSelect().setCaptionGenerator(new TeamOrPersonBaseCaptionGenerator<Person>(cacheType));
f.getPersonSelect().addValueChangeListener(new ToOneRelatedEntityReloader<Person>(f.getPersonSelect(), cachingPresenter));
return f;
}
--- /dev/null
+/**
+* Copyright (C) 2017 EDIT
+* European Distributed Institute of Taxonomy
+* http://www.e-taxonomy.eu
+*
+* The contents of this file are subject to the Mozilla Public License Version 1.1
+* See LICENSE.TXT at the top of this package for the full license terms.
+*/
+package eu.etaxonomy.cdm.vaadin.util;
+
+import org.vaadin.viritin.fields.CaptionGenerator;
+
+import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase;
+
+/**
+ * @author a.kohlbecker
+ * @since Jun 7, 2017
+ *
+ */
+public final class TeamOrPersonBaseCaptionGenerator<T extends TeamOrPersonBase<?>> implements CaptionGenerator<T> {
+
+ public enum CacheType {
+ NOMENCLATURAL_TITLE,
+ COLLECTOR_TITLE,
+ BIBLIOGRAPHIC_TITLE;
+ }
+
+ CacheType cacheType;
+
+ private static final long serialVersionUID = 116448502301429773L;
+
+ public TeamOrPersonBaseCaptionGenerator(CacheType cacheType){
+ this.cacheType = cacheType;
+ }
+
+ @Override
+ public String getCaption(T option) {
+ switch(cacheType){
+ case NOMENCLATURAL_TITLE:
+ return option.getNomenclaturalTitle();
+ case COLLECTOR_TITLE:
+ // return option.getCollectorTitle(); // enable once #4311 is solved
+ case BIBLIOGRAPHIC_TITLE:
+ default:
+ return option.getTitleCache();
+ }
+ }
+}
\ No newline at end of file
}
+
@EventBusListenerMethod(filter = EditorActionTypeFilter.Add.class)
public void onTaxonNameEditorActionAdd(TaxonNameEditorAction action){
import eu.etaxonomy.cdm.vaadin.model.registration.SpecimenTypeDesignationDTO;
import eu.etaxonomy.cdm.vaadin.model.registration.SpecimenTypeDesignationWorkingSetDTO;
import eu.etaxonomy.cdm.vaadin.security.AccessRestrictedView;
+import eu.etaxonomy.cdm.vaadin.util.TeamOrPersonBaseCaptionGenerator;
import eu.etaxonomy.cdm.vaadin.view.PerEntityAuthorityGrantingEditor;
import eu.etaxonomy.vaadin.mvp.AbstractPopupEditor;
bindField(distanceToGroundMinMax.getTextField(), "distanceToGroundText");
row++;
- collectorField = new TeamOrPersonField("Collector");
+ collectorField = new TeamOrPersonField("Collector", TeamOrPersonBaseCaptionGenerator.CacheType.NOMENCLATURAL_TITLE);
addField(collectorField, "collector", 0, row, 2, row);
row++;
import eu.etaxonomy.cdm.vaadin.event.TaxonNameEditorAction;
import eu.etaxonomy.cdm.vaadin.security.AccessRestrictedView;
import eu.etaxonomy.cdm.vaadin.security.UserHelper;
+import eu.etaxonomy.cdm.vaadin.util.TeamOrPersonBaseCaptionGenerator;
import eu.etaxonomy.cdm.vaadin.util.converter.SetToListConverter;
import eu.etaxonomy.vaadin.component.SwitchableTextField;
import eu.etaxonomy.vaadin.component.ToManyRelatedEntitiesComboboxSelect;
grid.addComponent(new Label("Hint: <i>Edit nomenclatural authors in the nomenclatural reference.</i>", ContentMode.HTML), 0, row, 3, row);
row++;
- combinationAuthorshipField = new TeamOrPersonField("combination author(s)");
+ combinationAuthorshipField = new TeamOrPersonField("combination author(s)", TeamOrPersonBaseCaptionGenerator.CacheType.NOMENCLATURAL_TITLE);
combinationAuthorshipField.setWidth(100, Unit.PERCENTAGE);
addField(combinationAuthorshipField, "combinationAuthorship", 0, row, GRID_COLS-1, row);
nomenclaturalReferenceDetail.setWidth(100, Unit.PIXELS);
row++;
- exCombinationAuthorshipField = new TeamOrPersonField("Ex-combination author(s)");
+ exCombinationAuthorshipField = new TeamOrPersonField("Ex-combination author(s)", TeamOrPersonBaseCaptionGenerator.CacheType.NOMENCLATURAL_TITLE);
exCombinationAuthorshipField.setWidth(100, Unit.PERCENTAGE);
addField(exCombinationAuthorshipField, "exCombinationAuthorship", 0, row, GRID_COLS-1, row);
});
grid.setComponentAlignment(basionymsComboboxSelect, Alignment.TOP_RIGHT);
row++;
- basionymAuthorshipField = new TeamOrPersonField("Basionym author(s)");
+ basionymAuthorshipField = new TeamOrPersonField("Basionym author(s)", TeamOrPersonBaseCaptionGenerator.CacheType.NOMENCLATURAL_TITLE);
basionymAuthorshipField.setWidth(100, Unit.PERCENTAGE);
addField(basionymAuthorshipField, "basionymAuthorship", 0, row, GRID_COLS-1, row);
row++;
- exBasionymAuthorshipField = new TeamOrPersonField("Ex-basionym author(s)");
+ exBasionymAuthorshipField = new TeamOrPersonField("Ex-basionym author(s)", TeamOrPersonBaseCaptionGenerator.CacheType.NOMENCLATURAL_TITLE);
exBasionymAuthorshipField.setWidth(100, Unit.PERCENTAGE);
addField(exBasionymAuthorshipField, "exBasionymAuthorship", 0, row, GRID_COLS-1, row);
import eu.etaxonomy.cdm.vaadin.component.common.TimePeriodField;
import eu.etaxonomy.cdm.vaadin.event.ReferenceEditorAction;
import eu.etaxonomy.cdm.vaadin.security.AccessRestrictedView;
+import eu.etaxonomy.cdm.vaadin.util.TeamOrPersonBaseCaptionGenerator;
import eu.etaxonomy.cdm.vaadin.util.converter.DoiConverter;
import eu.etaxonomy.cdm.vaadin.util.converter.UriConverter;
import eu.etaxonomy.vaadin.component.SwitchableTextField;
row++;
addTextField("Nomenclatural title", "abbrevTitle", 0, row, GRID_COLS-1, row).setWidth(100, Unit.PERCENTAGE);
row++;
- authorshipField = new TeamOrPersonField("Author(s)");
+ authorshipField = new TeamOrPersonField("Author(s)", TeamOrPersonBaseCaptionGenerator.CacheType.BIBLIOGRAPHIC_TITLE);
authorshipField.setWidth(100, Unit.PERCENTAGE);
addField(authorshipField, "authorship", 0, row, 3, row);
row++;
String uuid = (String)item.getItemProperty("UUID").getValue();
Assert.assertEquals(uuids[count], uuid);
- String titleCache = (String)item.getItemProperty("TITLECACHE").getValue();
+ String titleCache = (String)item.getItemProperty("BIBLIOGRAPHIC_TITLE").getValue();
logger.info("titleCache : " + titleCache);
count++;