fix #5574
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / ui / section / agent / TeamDetailElement.java
1 // $Id$
2 /**
3 * Copyright (C) 2007 EDIT
4 * European Distributed Institute of Taxonomy
5 * http://www.e-taxonomy.eu
6 *
7 * The contents of this file are subject to the Mozilla Public License Version 1.1
8 * See LICENSE.TXT at the top of this package for the full license terms.
9 */
10
11 package eu.etaxonomy.taxeditor.ui.section.agent;
12
13 import java.util.Arrays;
14
15 import org.eclipse.ui.forms.widgets.ExpandableComposite;
16
17 import eu.etaxonomy.cdm.model.agent.Team;
18 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
19 import eu.etaxonomy.taxeditor.ui.element.CdmPropertyChangeEvent;
20 import eu.etaxonomy.taxeditor.ui.element.CheckboxElement;
21 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
22 import eu.etaxonomy.taxeditor.ui.element.LayoutConstants;
23 import eu.etaxonomy.taxeditor.ui.element.ToggleableTextElement;
24 import eu.etaxonomy.taxeditor.ui.section.AbstractIdentifiableEntityDetailElement;
25
26 /**
27 * <p>
28 * TeamDetailElement class.
29 * </p>
30 *
31 * @author n.hoffmann
32 * @created Apr 26, 2010
33 * @version 1.0
34 */
35 public class TeamDetailElement extends AbstractIdentifiableEntityDetailElement<Team> {
36
37 private ToggleableTextElement toggleable_nomenclaturalTitleCache;
38 private CheckboxElement hasAdditionalMembers;
39
40 private TeamMemberSection section_teamMembers;
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) {
58 super(cdmFormFactory, formElement);
59 }
60
61 /** {@inheritDoc} */
62 @Override
63 protected void createControls(ICdmFormElement formElement, Team entity, int style) {
64
65 toggleable_cache = formFactory.createToggleableTextField(formElement, "Title Cache", entity.getTitleCache(), entity.isProtectedTitleCache(), style);
66 toggleable_nomenclaturalTitleCache = formFactory.createToggleableTextField(formElement, "Abbrev. Title", entity.getNomenclaturalTitle(), entity.isProtectedNomenclaturalTitleCache(), style);
67 hasAdditionalMembers = formFactory.createCheckbox(formElement, "Additional Members", entity.isHasMoreMembers(), style);
68 section_teamMembers = formFactory.createTeamMemberSection(getConversationHolder(), formElement, ExpandableComposite.EXPANDED);
69 section_teamMembers.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
70 }
71
72 /** {@inheritDoc} */
73 @Override
74 protected void updateContent() {
75 super.updateContent();
76
77 toggleable_cache.setEnabled(getEntity().isProtectedTitleCache());
78 toggleable_nomenclaturalTitleCache.setEnabled(getEntity()
79 .isProtectedNomenclaturalTitleCache());
80 setIrrelevant(
81 toggleable_cache.getState(),
82 Arrays.asList(new Object[] { toggleable_cache,
83 toggleable_nomenclaturalTitleCache , hasAdditionalMembers}));
84
85 section_teamMembers.setEntity(getEntity());
86
87 }
88
89 /** {@inheritDoc} */
90 @Override
91 public void handleEvent(Object eventSource) {
92 if (eventSource == toggleable_cache) {
93 handleToggleableCacheField();
94
95 } else if (eventSource == toggleable_nomenclaturalTitleCache) {
96 updateToggleable_nomanclaturalTitleCacheField();
97 setIrrelevant(
98 toggleable_nomenclaturalTitleCache.getState(),
99 Arrays.asList(new Object[] { toggleable_nomenclaturalTitleCache, hasAdditionalMembers }));
100 } else if (eventSource == section_teamMembers) {
101 toggleable_cache.setText(getEntity().getTitleCache());
102 toggleable_nomenclaturalTitleCache.setText(getEntity()
103 .getNomenclaturalTitle());
104 } else if (eventSource == hasAdditionalMembers){
105 getEntity().setHasMoreMembers(hasAdditionalMembers.getSelection());
106 updateToggleableCacheField();
107 toggleable_nomenclaturalTitleCache.setText(getEntity()
108 .getNomenclaturalTitle());
109 }
110
111 firePropertyChangeEvent(new CdmPropertyChangeEvent(this, null));
112 }
113
114 public void updateToggleable_nomanclaturalTitleCacheField() {
115 boolean pushedState = toggleable_nomenclaturalTitleCache.getState();
116
117 getEntity().setNomenclaturalTitle(toggleable_nomenclaturalTitleCache.getText(), pushedState);
118 setIrrelevant(pushedState, Arrays.asList(new Object[] { toggleable_cache }));
119
120 if (!getEntity().isProtectedNomenclaturalTitleCache()) {
121 toggleable_nomenclaturalTitleCache.setText(getEntity().getNomenclaturalTitle());
122 }
123 }
124 }