had to rename the packages to make them compliant with buckminster
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / ui / section / taxon / TaxonBaseDetailElement.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.taxon;
12
13 import java.util.Arrays;
14
15 import org.eclipse.jface.util.PropertyChangeEvent;
16 import org.eclipse.swt.SWT;
17
18 import eu.etaxonomy.cdm.model.taxon.Taxon;
19 import eu.etaxonomy.cdm.model.taxon.TaxonBase;
20 import eu.etaxonomy.taxeditor.ui.forms.CdmFormFactory;
21 import eu.etaxonomy.taxeditor.ui.forms.CheckboxElement;
22 import eu.etaxonomy.taxeditor.ui.forms.ICdmFormElement;
23 import eu.etaxonomy.taxeditor.ui.forms.TextWithLabelElement;
24 import eu.etaxonomy.taxeditor.ui.forms.ToggleableTextElement;
25 import eu.etaxonomy.taxeditor.ui.forms.CdmFormFactory.SelectionType;
26 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
27 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection;
28 import eu.etaxonomy.taxeditor.ui.section.name.NonViralNameDetailElement;
29 import eu.etaxonomy.taxeditor.ui.selection.ReferenceSelectionElement;
30
31 /**
32 * <p>TaxonBaseDetailElement class.</p>
33 *
34 * @author n.hoffmann
35 * @created Feb 26, 2010
36 * @version 1.0
37 */
38 public class TaxonBaseDetailElement extends AbstractCdmDetailElement<TaxonBase>{
39
40 private CheckboxElement checkbox_doubtful;
41
42 private CheckboxElement checkbox_useNameCache;
43
44 private ReferenceSelectionElement selection_secundum;
45
46 private TextWithLabelElement text_appendedPhrase;
47
48 private ToggleableTextElement toggleable_cache;
49
50 private CheckboxElement checkbox_excluded;
51
52 private CheckboxElement checkbox_unplaced;
53
54 /**
55 * <p>Constructor for TaxonBaseDetailElement.</p>
56 *
57 * @param cdmFormFactory a {@link eu.etaxonomy.taxeditor.ui.forms.CdmFormFactory} object.
58 * @param formElement a {@link eu.etaxonomy.taxeditor.ui.forms.ICdmFormElement} object.
59 * @param style a int.
60 */
61 public TaxonBaseDetailElement(CdmFormFactory cdmFormFactory,
62 ICdmFormElement formElement, int style) {
63 super(cdmFormFactory, formElement);
64 }
65
66 /** {@inheritDoc} */
67 @Override
68 protected void createControls(ICdmFormElement formElement, TaxonBase entity, int style){
69 toggleable_cache = formFactory.createToggleableTextField(formElement, "Title Cache", entity.getTitleCache(), entity.isProtectedTitleCache(), style);
70
71 checkbox_doubtful = formFactory.createCheckbox(formElement, "Is doubtful", entity.isDoubtful(), style);
72 checkbox_useNameCache = formFactory.createCheckbox(formElement, "Exclude Authorship", entity.isUseNameCache(), style);
73 selection_secundum = (ReferenceSelectionElement) formFactory.createSelectionElement(SelectionType.REFERENCE, getConversationHolder(), formElement, "Secundum", entity.getSec(), style);
74 text_appendedPhrase = formFactory.createTextWithLabelElement(formElement, "Appended Phrase", entity.getAppendedPhrase(), SWT.NULL);
75
76 if(entity instanceof Taxon){
77 checkbox_excluded = formFactory.createCheckbox(formElement, "Is excluded", ((Taxon) entity).isExcluded(), style);
78 checkbox_unplaced = formFactory.createCheckbox(formElement, "Is unplaced", ((Taxon) entity).isUnplaced(), style);
79 }
80 }
81
82 /** {@inheritDoc} */
83 @Override
84 protected void updateContent() {
85 super.updateContent();
86 toggleable_cache.setEnabled(getEntity().isProtectedTitleCache());
87 setIrrelevant(toggleable_cache.getState(), Arrays.asList(new Object[]{toggleable_cache}));
88 }
89
90 /** {@inheritDoc} */
91 @Override
92 public void propertyChange(PropertyChangeEvent event) {
93 Object eventSource = event.getSource();
94 if(eventSource instanceof ICdmFormElement){
95 ICdmFormElement element = (ICdmFormElement) eventSource;
96 ICdmFormElement parentElement = element.getParentElement();
97 if(parentElement instanceof NonViralNameDetailElement){
98 String title = getEntity().generateTitle();
99 getEntity().setTitleCache(title);
100 toggleable_cache.setText(title);
101 if(getParentElement() instanceof AbstractCdmDetailSection)
102 ((AbstractCdmDetailSection)getParentElement()).updateTitle();
103 }
104 }
105
106 super.propertyChange(event);
107 }
108
109 /** {@inheritDoc} */
110 @Override
111 public void handleEvent(Object eventSource) {
112 if(eventSource.equals(toggleable_cache)){
113 getEntity().setTitleCache(toggleable_cache.getText(), toggleable_cache.getState());
114 // setEnabled(! toggleable_titleCache.getState(), Arrays.asList(new Object[]{toggleable_titleCache}));
115 setIrrelevant(toggleable_cache.getState(), Arrays.asList(new Object[]{toggleable_cache}));
116 }
117 else if(eventSource.equals(checkbox_doubtful)){
118 getEntity().setDoubtful(checkbox_doubtful.getSelection());
119 }
120 else if(eventSource.equals(checkbox_useNameCache)){
121 getEntity().setUseNameCache(checkbox_useNameCache.getSelection());
122 }
123 else if(eventSource.equals(selection_secundum)){
124 getEntity().setSec(selection_secundum.getSelection());
125 }
126 else if(eventSource.equals(text_appendedPhrase)){
127 getEntity().setAppendedPhrase(text_appendedPhrase.getText());
128 }
129 else if(eventSource == checkbox_excluded){
130 ((Taxon) getEntity()).setExcluded(checkbox_excluded.getSelection());
131 }
132 else if(eventSource == checkbox_unplaced){
133 ((Taxon) getEntity()).setUnplaced(checkbox_unplaced.getSelection());
134 }
135
136 if(eventSource != toggleable_cache){
137 toggleable_cache.setText(getEntity().getTitleCache());
138 }
139 }
140 }