Merge branch 'hotfix/5.45.1'
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / ui / section / description / detail / CategoricalDataDetailElement.java
1 /**
2 *
3 */
4 package eu.etaxonomy.taxeditor.ui.section.description.detail;
5
6 import java.util.Comparator;
7
8 import eu.etaxonomy.cdm.common.CdmUtils;
9 import eu.etaxonomy.cdm.model.description.CategoricalData;
10 import eu.etaxonomy.cdm.model.description.NoDescriptiveDataStatus;
11 import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
12 import eu.etaxonomy.taxeditor.store.StoreUtil;
13 import eu.etaxonomy.taxeditor.ui.combo.EnumComboElement;
14 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
15 import eu.etaxonomy.taxeditor.ui.element.CheckboxElement;
16 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
17 import eu.etaxonomy.taxeditor.ui.element.LayoutConstants;
18 import eu.etaxonomy.taxeditor.ui.section.description.StateDataSection;
19
20 /**
21 * <p>CategoricalDataDetailElement class.</p>
22 *
23 * @author n.hoffmann
24 */
25 public class CategoricalDataDetailElement extends AbstractDetailedDescriptionDetailElement<CategoricalData> {
26
27 private CheckboxElement checkbox_orderRelevant;
28 private StateDataSection section_stateData;
29
30 private EnumComboElement<NoDescriptiveDataStatus> noDataStatusCombo;
31 private CategoricalData tempData;
32 /**
33 * <p>Constructor for CategoricalDataDetailElement.</p>
34 *
35 * @param formFactory a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory} object.
36 * @param formElement a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement} object.
37 * @param entity a {@link eu.etaxonomy.cdm.model.description.CategoricalData} object.
38 * @param style a int.
39 */
40 public CategoricalDataDetailElement(CdmFormFactory formFactory,
41 ICdmFormElement formElement, CategoricalData entity, boolean enabled, int style) {
42 super(formFactory, formElement, entity, enabled, style);
43
44 }
45
46 @Override
47 protected void createControls(ICdmFormElement formElement,
48 CategoricalData entity, int style) {
49 Comparator<NoDescriptiveDataStatus> comp = new Comparator<NoDescriptiveDataStatus>() {
50
51 @Override
52 public int compare(NoDescriptiveDataStatus o1, NoDescriptiveDataStatus o2) {
53 return o1.getLabel(PreferencesUtil.getGlobalLanguage()).compareTo(o2.getLabel(PreferencesUtil.getGlobalLanguage()));
54 }
55 };
56 noDataStatusCombo = formFactory.createEnumComboElement(NoDescriptiveDataStatus.class, formElement, comp, style, true);
57 noDataStatusCombo.setSelection(entity.getNoDataStatus());
58
59 checkbox_orderRelevant = formFactory.createCheckbox(formElement, "Order Relevant", entity.getOrderRelevant(), style);
60 section_stateData = formFactory.createStateDataSection(formElement, StoreUtil.getSectionStyle(StateDataSection.class, entity.getClass().getCanonicalName(), true));
61 section_stateData.setEntity(entity);
62 section_stateData.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
63 section_stateData.setEnabled(enabled);
64 createTimePeriod(formElement, entity, style);
65 if (!CdmUtils.isNullSafeEmpty(entity.getFeature().getRecommendedModifierEnumeration()) || !CdmUtils.isNullSafeEmpty(entity.getModifiers())){
66 createModifier(formElement, entity, style);
67 }else{
68 createFreetextModifier(formElement, entity, style);
69 }
70 }
71
72 @Override
73 public void handleEvent(Object eventSource) {
74 super.handleEvent(eventSource);
75 if(eventSource == checkbox_orderRelevant){
76 getEntity().setOrderRelevant(checkbox_orderRelevant.getSelection());
77 } else if (eventSource == noDataStatusCombo) {
78 getEntity().setNoDataStatus(noDataStatusCombo.getSelection());
79 if (noDataStatusCombo.getSelection() != null) {
80 this.setEnabled(false);
81 if (!this.getEntity().getStateData().isEmpty()) {
82 tempData = this.getEntity().clone();
83 }
84 this.getEntity().getStateData().clear();
85 } else {
86 if (tempData != null) {
87 this.getEntity().getStateData().addAll(tempData.getStateData());
88 }
89 this.setEnabled(true);
90 }
91 noDataStatusCombo.setEnabled(true);
92 }
93 }
94
95 @Override
96 public void fillFields() {
97 if (getEntity()!= null) {
98 super.fillFields();
99 checkbox_orderRelevant.setEnabled(getEntity().getOrderRelevant());
100 section_stateData.setEntity(getEntity());
101 noDataStatusCombo.setSelection(getEntity().getNoDataStatus());
102 }
103 }
104 }