Merge branch 'develop' into LibrAlign
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / ui / section / agent / PersonDetailElement.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 import java.util.Collection;
14
15 import org.eclipse.swt.SWT;
16
17 import eu.etaxonomy.cdm.model.agent.Person;
18 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
19 import eu.etaxonomy.taxeditor.ui.element.CdmPropertyChangeEvent;
20 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
21 import eu.etaxonomy.taxeditor.ui.element.TextWithLabelElement;
22 import eu.etaxonomy.taxeditor.ui.section.AbstractIdentifiableEntityDetailElement;
23
24 /**
25 * <p>
26 * PersonDetailElement class.
27 * </p>
28 *
29 * @author n.hoffmann
30 * @created Mar 8, 2010
31 * @version 1.0
32 */
33 public class PersonDetailElement extends AbstractIdentifiableEntityDetailElement<Person> {
34
35 private TextWithLabelElement text_nomenclaturalTitle;
36 private TextWithLabelElement text_firstname;
37 private TextWithLabelElement text_lastname;
38 private TextWithLabelElement text_prefix;
39 private TextWithLabelElement text_suffix;
40
41 private Collection<Object> excludeFromIrrelevantToggleableObjects;
42
43 /**
44 * <p>
45 * Constructor for PersonDetailElement.
46 * </p>
47 *
48 * @param cdmFormFactory
49 * a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory}
50 * object.
51 * @param formElement
52 * a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
53 * object.
54 * @param style
55 * a int.
56 */
57 public PersonDetailElement(CdmFormFactory cdmFormFactory,
58 ICdmFormElement formElement, int style) {
59 super(cdmFormFactory, formElement);
60 }
61
62 /** {@inheritDoc} */
63 @Override
64 protected void createControls(ICdmFormElement formElement, Person entity,
65 int style) {
66 toggleable_cache = formFactory.createToggleableTextField(formElement,
67 "Title Cache", entity.getTitleCache(),
68 entity.isProtectedTitleCache(), SWT.NULL);
69
70 text_nomenclaturalTitle = formFactory.createTextWithLabelElement(
71 formElement, "Abbrev. Title", entity.getNomenclaturalTitle(),
72 SWT.NULL);
73
74 text_firstname = formFactory.createTextWithLabelElement(formElement,
75 "Firstname", entity.getFirstname(), SWT.NULL);
76 text_lastname = formFactory.createTextWithLabelElement(formElement,
77 "Lastname", entity.getLastname(), SWT.NULL);
78
79 text_prefix = formFactory.createTextWithLabelElement(formElement,
80 "Prefix", entity.getPrefix(), SWT.NULL);
81 text_suffix = formFactory.createTextWithLabelElement(formElement,
82 "Suffix", entity.getSuffix(), SWT.NULL);
83 }
84
85 /** {@inheritDoc} */
86 @Override
87 protected void updateContent() {
88 super.updateContent();
89
90 excludeFromIrrelevantToggleableObjects = Arrays.asList(new Object[] {
91 toggleable_cache, text_nomenclaturalTitle });
92
93 toggleable_cache.setEnabled(getEntity().isProtectedTitleCache());
94 setIrrelevant(toggleable_cache.getState(),
95 excludeFromIrrelevantToggleableObjects);
96 }
97
98 /** {@inheritDoc} */
99 @Override
100 public void handleEvent(Object eventSource) {
101 if (eventSource == toggleable_cache) {
102 handleToggleableCacheField();
103 } else if (eventSource == text_nomenclaturalTitle) {
104 getEntity()
105 .setNomenclaturalTitle(text_nomenclaturalTitle.getText());
106 } else if (eventSource == text_firstname) {
107 getEntity().setFirstname(text_firstname.getText());
108 } else if (eventSource == text_lastname) {
109 getEntity().setLastname(text_lastname.getText());
110 } else if (eventSource == text_prefix) {
111 getEntity().setPrefix(text_prefix.getText());
112 } else if (eventSource == text_suffix) {
113 getEntity().setSuffix(text_suffix.getText());
114 }
115
116 if (eventSource != toggleable_cache) {
117 toggleable_cache.setText(getEntity().getTitleCache());
118 }
119
120 firePropertyChangeEvent(new CdmPropertyChangeEvent(this, null));
121 }
122
123 @Override
124 protected void handleToggleableCacheField() {
125 boolean pushedState = toggleable_cache.getState();
126
127 getEntity().setTitleCache(toggleable_cache.getText(), pushedState);
128 setIrrelevant(pushedState, Arrays.asList(new Object[] { toggleable_cache, text_nomenclaturalTitle }));
129 updateToggleableCacheField();
130 }
131 }