Merge branch 'develop' into LibrAlign
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / ui / section / agent / TeamDetailElement.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
10 package eu.etaxonomy.taxeditor.ui.section.agent;
11
12 import java.util.Arrays;
13
14 import org.eclipse.ui.forms.widgets.ExpandableComposite;
15
16 import eu.etaxonomy.cdm.model.agent.Team;
17 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
18 import eu.etaxonomy.taxeditor.ui.element.CdmPropertyChangeEvent;
19 import eu.etaxonomy.taxeditor.ui.element.CheckboxElement;
20 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
21 import eu.etaxonomy.taxeditor.ui.element.LayoutConstants;
22 import eu.etaxonomy.taxeditor.ui.element.ToggleableTextElement;
23 import eu.etaxonomy.taxeditor.ui.section.AbstractIdentifiableEntityDetailElement;
24
25 /**
26 * <p>
27 * TeamDetailElement class.
28 * </p>
29 *
30 * @author n.hoffmann
31 * @created Apr 26, 2010
32 * @version 1.0
33 */
34 public class TeamDetailElement extends AbstractIdentifiableEntityDetailElement<Team> {
35
36 private ToggleableTextElement toggleable_nomenclaturalTitleCache;
37 private CheckboxElement hasAdditionalMembers;
38
39 private TeamMemberSection section_teamMembers;
40 private boolean isNomenclaturalTeam;
41
42 /**
43 * <p>
44 * Constructor for TeamDetailElement.
45 * </p>
46 *
47 * @param cdmFormFactory
48 * a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory}
49 * object.
50 * @param formElement
51 * a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
52 * object.
53 * @param style
54 * a int.
55 */
56 public TeamDetailElement(CdmFormFactory cdmFormFactory,
57 ICdmFormElement formElement, int style, boolean isNomenclatural) {
58 super(cdmFormFactory, formElement);
59 this.isNomenclaturalTeam = isNomenclatural;
60 }
61
62 /** {@inheritDoc} */
63 @Override
64 protected void createControls(ICdmFormElement formElement, Team entity, int style) {
65
66 toggleable_cache = formFactory.createToggleableTextField(formElement, "Title Cache", entity.getTitleCache(), entity.isProtectedTitleCache(), style);
67 toggleable_nomenclaturalTitleCache = formFactory.createToggleableTextField(formElement, "Abbrev. Title", entity.getNomenclaturalTitle(), entity.isProtectedNomenclaturalTitleCache(), style);
68 hasAdditionalMembers = formFactory.createCheckbox(formElement, "Additional Members", entity.isHasMoreMembers(), style);
69 section_teamMembers = formFactory.createTeamMemberSection(getConversationHolder(), formElement, ExpandableComposite.EXPANDED, isNomenclaturalTeam);
70 section_teamMembers.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
71 }
72
73 /** {@inheritDoc} */
74 @Override
75 protected void updateContent() {
76 super.updateContent();
77 if (toggleable_cache != null){
78 toggleable_cache.setEnabled(getEntity().isProtectedTitleCache());
79 }
80 if (toggleable_nomenclaturalTitleCache != null){
81 toggleable_nomenclaturalTitleCache.setEnabled(getEntity()
82 .isProtectedNomenclaturalTitleCache());
83 }
84 if (toggleable_nomenclaturalTitleCache != null && toggleable_cache != null){
85 setIrrelevant(
86 toggleable_cache.getState(),
87 Arrays.asList(new Object[] { toggleable_cache,
88 toggleable_nomenclaturalTitleCache , hasAdditionalMembers}));
89 } else if (toggleable_cache != null){
90 setIrrelevant(
91 toggleable_cache.getState(),
92 Arrays.asList(new Object[] { toggleable_cache, hasAdditionalMembers}));
93 }
94
95 section_teamMembers.setEntity(getEntity());
96
97 }
98
99 /** {@inheritDoc} */
100 @Override
101 public void handleEvent(Object eventSource) {
102 if (eventSource == toggleable_cache) {
103 handleToggleableCacheField();
104
105 } else if (eventSource == toggleable_nomenclaturalTitleCache) {
106 updateToggleable_nomanclaturalTitleCacheField();
107 setIrrelevant(
108 toggleable_nomenclaturalTitleCache.getState(),
109 Arrays.asList(new Object[] { toggleable_nomenclaturalTitleCache, hasAdditionalMembers }));
110 } else if (eventSource == section_teamMembers) {
111 toggleable_cache.setText(getEntity().getTitleCache());
112 toggleable_nomenclaturalTitleCache.setText(getEntity()
113 .getNomenclaturalTitle());
114 } else if (eventSource == hasAdditionalMembers){
115 getEntity().setHasMoreMembers(hasAdditionalMembers.getSelection());
116 updateToggleableCacheField();
117 toggleable_nomenclaturalTitleCache.setText(getEntity()
118 .getNomenclaturalTitle());
119 }
120
121 firePropertyChangeEvent(new CdmPropertyChangeEvent(this, null));
122 }
123
124 public void updateToggleable_nomanclaturalTitleCacheField() {
125 boolean pushedState = toggleable_nomenclaturalTitleCache.getState();
126
127 getEntity().setNomenclaturalTitle(toggleable_nomenclaturalTitleCache.getText(), pushedState);
128 setIrrelevant(pushedState, Arrays.asList(new Object[] { toggleable_cache }));
129
130 if (!getEntity().isProtectedNomenclaturalTitleCache()) {
131 toggleable_nomenclaturalTitleCache.setText(getEntity().getNomenclaturalTitle());
132 }
133 }
134
135 /**
136 * @return the isNomenclaturalTeam
137 */
138 public boolean isNomenclaturalTeam() {
139 return isNomenclaturalTeam;
140 }
141
142 /**
143 * @param isNomenclaturalTeam the isNomenclaturalTeam to set
144 */
145 public void setNomenclaturalTeam(boolean isNomenclaturalTeam) {
146 this.isNomenclaturalTeam = isNomenclaturalTeam;
147 }
148 }