Project

General

Profile

Download (6.85 KB) Statistics
| Branch: | Tag: | Revision:
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.name;
12

    
13
import java.util.Arrays;
14

    
15
import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase;
16
import eu.etaxonomy.cdm.model.name.NomenclaturalCode;
17
import eu.etaxonomy.cdm.model.name.NonViralName;
18
import eu.etaxonomy.cdm.model.name.ZoologicalName;
19
import eu.etaxonomy.taxeditor.preference.IPreferenceKeys;
20
import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
21
import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
22
import eu.etaxonomy.taxeditor.ui.element.CdmPropertyChangeEvent;
23
import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
24
import eu.etaxonomy.taxeditor.ui.element.NumberWithLabelElement;
25
import eu.etaxonomy.taxeditor.ui.section.AbstractIdentifiableEntityDetailElement;
26
import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
27

    
28
/**
29
 * <p>
30
 * AuthorshipDetailElement class.
31
 * </p>
32
 *
33
 * @author n.hoffmann
34
 * @created Mar 4, 2010
35
 * @version 1.0
36
 */
37
public class AuthorshipDetailElement extends
38
	AbstractIdentifiableEntityDetailElement<NonViralName> {
39

    
40
    private EntitySelectionElement<TeamOrPersonBase> selectionExBasionymAuthor;
41
    private EntitySelectionElement<TeamOrPersonBase> selectionBasionymAuthor;
42
    private EntitySelectionElement<TeamOrPersonBase> selectionExCombinationAuthor;
43
    private EntitySelectionElement<TeamOrPersonBase> selectionCombinationAuthor;
44

    
45
    private NumberWithLabelElement text_publicationYear;
46
    private NumberWithLabelElement text_originalPublicationYear;
47
	/**
48
	 * <p>
49
	 * Constructor for AuthorshipDetailElement.
50
	 * </p>
51
	 *
52
	 * @param cdmFormFactory
53
	 *            a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory}
54
	 *            object.
55
	 * @param formElement
56
	 *            a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
57
	 *            object.
58
	 * @param style
59
	 *            a int.
60
	 */
61
	public AuthorshipDetailElement(CdmFormFactory cdmFormFactory,
62
			ICdmFormElement formElement, int style) {
63
		super(cdmFormFactory, formElement);
64
	}
65

    
66
	/** {@inheritDoc} */
67
	@Override
68
	protected void createControls(ICdmFormElement formElement,
69
			NonViralName entity, int style) {
70
	    if (isAdvancedView){
71
	        toggleable_cache = formFactory.createToggleableTextField(this,
72
				"Authorship Cache", entity.getAuthorshipCache(),
73
				entity.isProtectedAuthorshipCache(), style);
74
		    //TODO RL
75
            if(PreferencesUtil.getPreferenceStore().getBoolean(IPreferenceKeys.IS_RL)){
76
                toggleable_cache.setVisible(false);
77
            }
78
	    }
79
	    NomenclaturalCode code = entity.getNomenclaturalCode();
80

    
81
        selectionCombinationAuthor = formFactory.createSelectionElementWithAbbreviatedTitle(TeamOrPersonBase.class,
82
				getConversationHolder(),
83
				formElement, "Author",
84
				entity.getCombinationAuthorship(),
85
				EntitySelectionElement.ALL, style);
86
		addElement(selectionCombinationAuthor);
87
		selectionExCombinationAuthor = formFactory.createSelectionElementWithAbbreviatedTitle(TeamOrPersonBase.class,
88
				getConversationHolder(),
89
				formElement, "Ex Author",
90
				entity.getExCombinationAuthorship(),
91
				EntitySelectionElement.ALL, style);
92
		addElement(selectionExCombinationAuthor);
93
		if (code != null){
94
            if (code.equals(NomenclaturalCode.ICZN)){
95
                text_publicationYear = formFactory.createNumberTextWithLabelElement(formElement, "Publication Year", ((ZoologicalName)entity).getPublicationYear(), style);
96

    
97
            }
98
         }
99
		selectionBasionymAuthor = formFactory.createSelectionElementWithAbbreviatedTitle(TeamOrPersonBase.class, getConversationHolder(),
100
                formElement, "Basionym Author", entity.getBasionymAuthorship(),
101
                EntitySelectionElement.ALL, style);
102
		addElement(selectionBasionymAuthor);
103
		selectionExBasionymAuthor = formFactory.createSelectionElementWithAbbreviatedTitle(TeamOrPersonBase.class, getConversationHolder(),
104
		        formElement, "Ex Basionym Author",entity.getExBasionymAuthorship(),
105
		        EntitySelectionElement.ALL, style);
106

    
107
		addElement(selectionExBasionymAuthor);
108
		 if (code != null){
109
	            if (code.equals(NomenclaturalCode.ICZN)){
110

    
111
	                text_originalPublicationYear = formFactory.createNumberTextWithLabelElement(formElement, "Orig. Publication Year", ((ZoologicalName)entity).getOriginalPublicationYear(), style);
112

    
113
	            }
114
	         }
115

    
116

    
117

    
118
	}
119

    
120
	/** {@inheritDoc} */
121
	@Override
122
	public void updateContent() {
123
		if (getEntity() == null) {
124
			setEntity(NonViralName.NewInstance(null));
125
		}
126

    
127
		super.updateContent();
128
		if (toggleable_cache != null){
129
    		toggleable_cache.setEnabled(getEntity().isProtectedAuthorshipCache());
130

    
131

    
132
    		if (this.isIrrelevant()) {
133
    			setIrrelevant(isIrrelevant());
134
    		} else {
135
    			setIrrelevant(toggleable_cache.getState(),
136
    					Arrays.asList(new Object[] { toggleable_cache }));
137
    		}
138
		}
139
	}
140

    
141
	/** {@inheritDoc} */
142
	@Override
143
	public void handleEvent(Object eventSource) {
144
		if (eventSource == toggleable_cache) {
145
			getEntity().setAuthorshipCache(toggleable_cache.getText(),
146
					toggleable_cache.getState());
147
			if (!isIrrelevant()){
148
				setIrrelevant(toggleable_cache.getState(),
149
						Arrays.asList(new Object[] { toggleable_cache }));
150
			}
151
		} else if (eventSource == selectionCombinationAuthor) {
152
			getEntity().setCombinationAuthorship(
153
					selectionCombinationAuthor.getSelection());
154
		} else if (eventSource == selectionExCombinationAuthor) {
155
			getEntity().setExCombinationAuthorship(
156
					selectionExCombinationAuthor.getSelection());
157
		} else if (eventSource == selectionBasionymAuthor) {
158
			getEntity().setBasionymAuthorship(
159
					selectionBasionymAuthor.getSelection());
160
		} else if (eventSource == selectionExBasionymAuthor) {
161
			getEntity().setExBasionymAuthorship(
162
					selectionExBasionymAuthor.getSelection());
163
		} else if (eventSource == text_originalPublicationYear) {
164
            ((ZoologicalName)getEntity()).setOriginalPublicationYear(text_originalPublicationYear.getInteger());
165
        } else if (eventSource == text_publicationYear) {
166
            ((ZoologicalName)getEntity()).setPublicationYear(text_publicationYear.getInteger());
167
        }
168

    
169
//		if (eventSource != toggleable_cache) {
170
//			toggleable_cache.setText(getEntity().getAuthorshipCache());
171
//		}
172

    
173
//		 we have to notify the parent if this is embedded in the nonviral name
174
//		 section
175
//		 maybe we can handle this a little bit more elegant
176
//		if (getParentElement() instanceof AbstractCdmDetailSection)
177
			firePropertyChangeEvent(new CdmPropertyChangeEvent(
178
					getParentElement(), null));
179
	}
180

    
181
	@Override
182
	public void updateToggleableCacheField() {
183
	    if (toggleable_cache != null){
184
    		if(! getEntity().isProtectedAuthorshipCache()){
185
    			toggleable_cache.setText(getEntity().getAuthorshipCache());
186
    		}
187
	    }
188
	}
189
}
(2-2/25)