Project

General

Profile

Download (6.66 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.section.classification;
12

    
13
import org.apache.log4j.Logger;
14

    
15
import eu.etaxonomy.cdm.model.name.TaxonNameBase;
16
import eu.etaxonomy.cdm.model.reference.ReferenceBase;
17
import eu.etaxonomy.cdm.model.taxon.ITreeNode;
18
import eu.etaxonomy.cdm.model.taxon.Taxon;
19
import eu.etaxonomy.cdm.model.taxon.TaxonNode;
20
import eu.etaxonomy.cdm.model.taxon.TaxonomicTree;
21
import eu.etaxonomy.cdm.persistence.hibernate.CdmPostDataChangeObservableListener;
22
import eu.etaxonomy.taxeditor.forms.CdmFormFactory;
23
import eu.etaxonomy.taxeditor.forms.CdmFormFactory.SelectionType;
24
import eu.etaxonomy.taxeditor.forms.CdmPropertyChangeEvent;
25
import eu.etaxonomy.taxeditor.forms.CheckboxElement;
26
import eu.etaxonomy.taxeditor.forms.ICdmFormElement;
27
import eu.etaxonomy.taxeditor.forms.TextWithLabelElement;
28
import eu.etaxonomy.taxeditor.forms.selection.ClassificationSelectionElement;
29
import eu.etaxonomy.taxeditor.forms.selection.TaxonNodeSelectionElement;
30
import eu.etaxonomy.taxeditor.forms.selection.TaxonBaseSelectionElement;
31
import eu.etaxonomy.taxeditor.parser.ParseHandler;
32
import eu.etaxonomy.taxeditor.section.AbstractCdmDetailElement;
33

    
34
/**
35
 * <p>TaxonNodeDetailElement class.</p>
36
 *
37
 * @author n.hoffmann
38
 * @created Sep 27, 2010
39
 * @version 1.0
40
 */
41
public class TaxonNodeDetailElement extends AbstractCdmDetailElement<ITreeNode> {
42

    
43
	private static final Logger logger = Logger
44
			.getLogger(TaxonNodeDetailElement.class);
45
	
46
	private ClassificationSelectionElement selection_classification;
47
	
48
	private TaxonomicTree classification;
49
	
50
	private TaxonNodeSelectionElement selection_parentTaxonNode;
51
	
52
	private ITreeNode parentTreeNode;
53
	
54
	private TaxonBaseSelectionElement selection_reuseExistingTaxon;
55
	
56
	private Taxon taxon;
57
	
58
	private TextWithLabelElement text_newTaxonName;
59
	
60
	private CheckboxElement checkbox_openInEditor;
61
	
62
	private boolean openInEditor;
63
	
64
	private boolean complete;
65
	
66
	/**
67
	 * <p>Constructor for TaxonNodeDetailElement.</p>
68
	 *
69
	 * @param formFactory a {@link eu.etaxonomy.taxeditor.forms.CdmFormFactory} object.
70
	 * @param formElement a {@link eu.etaxonomy.taxeditor.forms.ICdmFormElement} object.
71
	 */
72
	public TaxonNodeDetailElement(CdmFormFactory formFactory,
73
			ICdmFormElement formElement) {
74
		super(formFactory, formElement);
75
	}
76

    
77
	/* (non-Javadoc)
78
	 * @see eu.etaxonomy.taxeditor.section.AbstractCdmDetailElement#createControls(eu.etaxonomy.taxeditor.forms.ICdmFormElement, eu.etaxonomy.cdm.model.common.IAnnotatableEntity, int)
79
	 */
80
	/** {@inheritDoc} */
81
	@Override
82
	protected void createControls(ICdmFormElement formElement,
83
			ITreeNode entity, int style) {
84
		selection_classification = (ClassificationSelectionElement) formFactory.createSelectionElement(SelectionType.CLASSIFICATION, getConversationHolder(), formElement, "Classification", null, style);
85
		selection_parentTaxonNode = (TaxonNodeSelectionElement) formFactory.createSelectionElement(SelectionType.TAXON_NODE, getConversationHolder(), formElement, "Parent", null, style);
86
		selection_reuseExistingTaxon = (TaxonBaseSelectionElement) formFactory.createSelectionElement(SelectionType.TAXON_BASE, getConversationHolder(), formElement, "Reuse existing Taxon", null, style);
87
		
88
		text_newTaxonName = formFactory.createTextWithLabelElement(formElement, "New Taxon", "", style);
89

    
90
		checkbox_openInEditor = formFactory.createCheckbox(formElement, "Open in Editor", true, style);
91
		setOpenInEditor(true);
92
		setParentTreeNode(entity);
93
	}
94

    
95

    
96
	/* (non-Javadoc)
97
	 * @see eu.etaxonomy.taxeditor.section.AbstractCdmDetailElement#handleEvent(java.lang.Object)
98
	 */
99
	/** {@inheritDoc} */
100
	@Override
101
	public void handleEvent(Object eventSource) {
102
		if(eventSource == selection_classification){
103
			setClassification(selection_classification.getEntity());
104
		}
105
		else if(eventSource == selection_parentTaxonNode){
106
			setParentTreeNode(selection_parentTaxonNode.getEntity());
107
		}
108
		else if(eventSource == selection_reuseExistingTaxon){
109
			setTaxon((Taxon) selection_reuseExistingTaxon.getEntity());
110
		}
111
		else if(eventSource == text_newTaxonName){
112
			setTaxon(text_newTaxonName.getText());
113
		}
114
		else if(eventSource == checkbox_openInEditor){
115
			setOpenInEditor(checkbox_openInEditor.getSelection());
116
		}
117
		
118
		firePropertyChangeEvent(new CdmPropertyChangeEvent(this, null));
119
		
120
	}
121

    
122
	/**
123
	 * <p>Getter for the field <code>classification</code>.</p>
124
	 *
125
	 * @return the classification
126
	 */
127
	public TaxonomicTree getClassification() {
128
		return classification;
129
	}
130

    
131
	/**
132
	 * <p>isOpenInEditor</p>
133
	 *
134
	 * @return the openInEditor
135
	 */
136
	public boolean isOpenInEditor() {
137
		return openInEditor;
138
	}
139

    
140
	/**
141
	 * <p>Getter for the field <code>parentTreeNode</code>.</p>
142
	 *
143
	 * @return a {@link eu.etaxonomy.cdm.model.taxon.ITreeNode} object.
144
	 */
145
	public ITreeNode getParentTreeNode() {
146
		return parentTreeNode;
147
	}
148
	
149
	/**
150
	 * <p>Getter for the field <code>taxon</code>.</p>
151
	 *
152
	 * @return the taxon
153
	 */
154
	public Taxon getTaxon() {
155
		return taxon;
156
	}
157

    
158
	/**
159
	 * @param classification the classification to set
160
	 */
161
	private void setClassification(TaxonomicTree classification) {
162
		this.classification = classification;
163
		setParentTreeNode(classification);
164
	}
165

    
166
	/**
167
	 * @param parentTreeNode the parentTreeNode to set
168
	 */
169
	private void setParentTreeNode(ITreeNode parentTreeNode) {
170
		this.parentTreeNode = parentTreeNode;
171

    
172
		if(parentTreeNode instanceof TaxonomicTree){
173
			selection_parentTaxonNode.setEntity(null);
174
		}
175
		else if(parentTreeNode instanceof TaxonNode){
176
			classification = ((TaxonNode) parentTreeNode).getTaxonomicTree();
177
			selection_classification.setEntity(classification);
178
			selection_parentTaxonNode.setEntity((TaxonNode) parentTreeNode);
179
		}		
180
	}
181

    
182
	/**
183
	 * @param reuseExistingTaxon the reuseExistingTaxon to set
184
	 */
185
	private void setTaxon(Taxon taxon) {
186
		this.taxon = taxon;
187
	}
188
	
189
	private void setTaxon(String taxonNameString){
190
		TaxonNameBase taxonName = ParseHandler.quickParse(taxonNameString);
191
		ReferenceBase secundum = null;
192
		if(getParentTreeNode() != null){
193
			if(getParentElement() instanceof TaxonomicTree){
194
				secundum = ((TaxonomicTree) getParentTreeNode()).getReference();
195
			}
196
			else if(getParentTreeNode() instanceof TaxonNode){
197
				secundum = ((TaxonNode) getParentTreeNode()).getTaxon().getSec();
198
			}
199
		}
200
		taxon = Taxon.NewInstance(taxonName, secundum);
201
	}
202

    
203
	/**
204
	 * @param openInEditor the openInEditor to set
205
	 */
206
	private void setOpenInEditor(boolean openInEditor) {
207
		this.openInEditor = openInEditor;
208
	}
209

    
210
	/**
211
	 * <p>isComplete</p>
212
	 *
213
	 * @return the complete
214
	 */
215
	public boolean isComplete() {
216
		return complete;
217
	}
218

    
219
}
(4-4/6)