Merge branch 'release/5.19.0'
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / ui / section / name / HybridDetailElement.java
1 /**
2 * Copyright (C) 2007 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.name;
10
11 import org.eclipse.jface.util.PropertyChangeEvent;
12
13 import eu.etaxonomy.cdm.model.name.INonViralName;
14 import eu.etaxonomy.cdm.model.name.Rank;
15 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
16 import eu.etaxonomy.taxeditor.ui.element.CheckboxElement;
17 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
18 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
19
20 /**
21 * @author n.hoffmann
22 * @created Jan 5, 2011
23 */
24 public class HybridDetailElement extends AbstractCdmDetailElement<INonViralName> {
25
26 private CheckboxElement checkboxMonomHybrid;
27 private CheckboxElement checkboxBinomHybrid;
28 private CheckboxElement checkboxTrinomHybrid;
29 private CheckboxElement checkboxHybridFormula;
30
31 public HybridDetailElement(CdmFormFactory formFactory,
32 ICdmFormElement formElement) {
33 super(formFactory, formElement);
34 }
35
36 @Override
37 protected void createControls(ICdmFormElement formElement, INonViralName entity,
38 int style) {
39 boolean enableBinom = false;
40 boolean enableTrinom = false;
41 if (entity.getRank() != null){
42 if (entity.getRank().isLower(Rank.GENUS())){
43 enableBinom = true;
44 }
45
46 if (entity.getRank().isLower(Rank.SPECIES())){
47 enableTrinom = true;
48 }
49 }
50 checkboxMonomHybrid = formFactory.createCheckbox(formElement, "Monom hybrid", entity.isMonomHybrid(), style);
51 checkboxBinomHybrid = formFactory.createCheckbox(formElement, "Binom hybrid", entity.isBinomHybrid(), style);
52 checkboxBinomHybrid.setEnabled(enableBinom);
53 checkboxTrinomHybrid = formFactory.createCheckbox(formElement, "Trinom hybrid", entity.isTrinomHybrid(), style);
54 checkboxTrinomHybrid.setEnabled(enableTrinom);
55 checkboxHybridFormula = formFactory.createCheckbox(formElement, "Hybrid formula", entity.isHybridFormula(), style);
56 checkboxHybridFormula.setEnabled(false);//read-only
57
58 registerCacheRelevance(checkboxMonomHybrid, cacheRelevanceHelper.getDependenciesArray());
59 registerCacheRelevance(checkboxBinomHybrid, cacheRelevanceHelper.getDependenciesArray());
60 registerCacheRelevance(checkboxTrinomHybrid, cacheRelevanceHelper.getDependenciesArray());
61 registerCacheRelevance(checkboxHybridFormula, cacheRelevanceHelper.getDependenciesArray());
62
63 }
64
65 @Override
66 public void handleEvent(Object eventSource) {
67 if(eventSource == checkboxMonomHybrid){
68 getEntity().setMonomHybrid(checkboxMonomHybrid.getSelection());
69 }
70 else if(eventSource == checkboxBinomHybrid){
71 getEntity().setBinomHybrid(checkboxBinomHybrid.getSelection());
72 }
73 else if(eventSource == checkboxTrinomHybrid){
74 getEntity().setTrinomHybrid(checkboxTrinomHybrid.getSelection());
75 }
76 }
77
78 @Override
79 public void propertyChange(PropertyChangeEvent event) {
80 if (event == null) {
81 return;
82 }
83
84 Object obj = event.getSource();
85 handleEvent(obj);
86 if (obj instanceof NameDetailElement){
87 if (getEntity().getRank() != null){
88 checkboxBinomHybrid.setEnabled(getEntity().getRank().isLower(Rank.GENUS()));
89 checkboxTrinomHybrid.setEnabled(getEntity().getRank().isLower(Rank.SPECIES()));
90 }
91 }
92 }
93 }