Project

General

Profile

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

    
12
import java.util.Arrays;
13

    
14
import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase;
15
import eu.etaxonomy.cdm.model.name.INonViralName;
16
import eu.etaxonomy.cdm.model.name.IZoologicalName;
17
import eu.etaxonomy.cdm.model.name.NomenclaturalCode;
18
import eu.etaxonomy.cdm.model.name.TaxonNameFactory;
19
import eu.etaxonomy.taxeditor.event.EventUtility;
20
import eu.etaxonomy.taxeditor.event.WorkbenchEventConstants;
21
import eu.etaxonomy.taxeditor.preference.NameDetailsConfigurator;
22
import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
23
import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
24
import eu.etaxonomy.taxeditor.ui.element.CdmPropertyChangeEvent;
25
import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
26
import eu.etaxonomy.taxeditor.ui.element.NumberWithLabelElement;
27
import eu.etaxonomy.taxeditor.ui.section.AbstractIdentifiableEntityDetailElement;
28
import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
29

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

    
42
    private EntitySelectionElement<TeamOrPersonBase> selectionExBasionymAuthor;
43
    private EntitySelectionElement<TeamOrPersonBase> selectionBasionymAuthor;
44
    private EntitySelectionElement<TeamOrPersonBase> selectionExCombinationAuthor;
45
    private EntitySelectionElement<TeamOrPersonBase> selectionCombinationAuthor;
46

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

    
68
	/** {@inheritDoc} */
69
	@Override
70
	protected void createControls(ICdmFormElement formElement,
71
			INonViralName entity, int style) {
72
	    NameDetailsConfigurator config = PreferencesUtil.getPreferredNameDetailsConfiguration(true);
73
	    if (!config.isSimpleDetailsViewActivated() || config.isAuthorCacheActivated()){
74
	        toggleable_cache = formFactory.createToggleableTextField(this,
75
				"Authorship Cache", entity.getAuthorshipCache(),
76
				entity.isProtectedAuthorshipCache(), style);
77
	        addElement(toggleable_cache);
78
	   }
79
	    NomenclaturalCode code = entity.getNomenclaturalCode();
80

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

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

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

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

    
114
    	            }
115
    	         }
116

    
117
	    }
118

    
119
	}
120

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

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

    
132

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

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

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

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

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