ref #8774: fix term combo for dto selection
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / ui / section / vocabulary / MeasurementUnitDtoCollectionElement.java
1 /**
2 * Copyright (C) 2015 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.taxeditor.ui.section.vocabulary;
10
11 import org.eclipse.swt.events.SelectionListener;
12 import org.eclipse.swt.graphics.Color;
13
14 import eu.etaxonomy.cdm.model.description.MeasurementUnit;
15 import eu.etaxonomy.cdm.model.term.TermType;
16 import eu.etaxonomy.cdm.persistence.dto.FeatureDto;
17 import eu.etaxonomy.cdm.persistence.dto.TermDto;
18 import eu.etaxonomy.taxeditor.ui.combo.term.TermComboElement;
19 import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
20 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
21 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
22 import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionElement;
23
24 /**
25 * @author pplitzner
26 * @date Apr 27, 2015
27 *
28 */
29 public class MeasurementUnitDtoCollectionElement extends AbstractEntityCollectionElement<TermDto> {
30
31
32 private TermComboElement<MeasurementUnit> comboMeasurementUnit;
33
34 /**
35 * @param formFactory
36 * @param section
37 * @param entity
38 * @param removeListener
39 * @param isChoosableEntity
40 * @param backgroundColor
41 * @param style
42 */
43 public MeasurementUnitDtoCollectionElement(CdmFormFactory formFactory, AbstractFormSection section, TermDto entity,
44 SelectionListener removeListener, Color backgroundColor, int style) {
45 super(formFactory, section, entity, removeListener, backgroundColor, style);
46
47 }
48
49 @Override
50 public void createControls(ICdmFormElement element, int style) {
51 comboMeasurementUnit = formFactory.createDefinedTermComboElementDto(TermType.MeasurementUnit, element, "Measurement unit", null, style);
52 }
53
54 @Override
55 public void setEntity(TermDto entity) {
56 this.entity = entity;
57 // if(entity.getId()!=0){
58 comboMeasurementUnit.setSelectionDto(entity);
59 comboMeasurementUnit.removeEmptyElement();
60 // }
61 }
62
63 @Override
64 public void handleEvent(Object eventSource) {
65 if(eventSource==comboMeasurementUnit && comboMeasurementUnit.getSelection()!=null){
66 if(getParentElement() instanceof MeasurementUnitDtoCollectionSection){
67 MeasurementUnitDtoCollectionSection parentElement = (MeasurementUnitDtoCollectionSection) getParentElement();
68 FeatureDto feature = parentElement.getEntity();
69 TermDto remove = null;
70 for (TermDto unit: feature.getRecommendedMeasurementUnits()){
71 if (unit.getUuid().equals(getEntity().getUuid())){
72 remove =unit;
73 break;
74 }
75 }
76 feature.getRecommendedMeasurementUnits().remove(remove);
77 MeasurementUnit measurementUnit = comboMeasurementUnit.getSelection();
78 entity = TermDto.fromTerm(measurementUnit);
79 feature.getRecommendedMeasurementUnits().add(entity);
80
81 //update the parent section to re-set the listeners to the persisted measurement unit
82 // parentElement.removeElementAndUpdate(null);
83 }
84 }
85 }
86
87 }