Project

General

Profile

Download (6.58 KB) Statistics
| Branch: | Tag: | Revision:
1
/**
2
* Copyright (C) 2009 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
package eu.etaxonomy.taxeditor.ui.section.taxon;
10

    
11
import java.util.Arrays;
12

    
13
import org.eclipse.jface.util.PropertyChangeEvent;
14
import org.eclipse.swt.SWT;
15
import org.eclipse.ui.IEditorInput;
16
import org.eclipse.ui.forms.widgets.ExpandableComposite;
17

    
18
import eu.etaxonomy.cdm.model.name.TaxonName;
19
import eu.etaxonomy.cdm.model.reference.Reference;
20
import eu.etaxonomy.cdm.model.taxon.Synonym;
21
import eu.etaxonomy.cdm.model.taxon.SynonymType;
22
import eu.etaxonomy.cdm.model.taxon.Taxon;
23
import eu.etaxonomy.cdm.model.taxon.TaxonRelationship;
24
import eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType;
25
import eu.etaxonomy.taxeditor.model.TaxonRelationshipTypeInverseContainer;
26
import eu.etaxonomy.taxeditor.store.StoreUtil;
27
import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
28
import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
29
import eu.etaxonomy.taxeditor.ui.element.CdmPropertyChangeEvent;
30
import eu.etaxonomy.taxeditor.ui.element.CheckboxElement;
31
import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
32
import eu.etaxonomy.taxeditor.ui.element.ISelectableElement;
33
import eu.etaxonomy.taxeditor.ui.element.LayoutConstants;
34
import eu.etaxonomy.taxeditor.ui.element.SelectionArbitrator;
35
import eu.etaxonomy.taxeditor.ui.element.TextWithLabelElement;
36
import eu.etaxonomy.taxeditor.ui.element.ToggleableTextElement;
37
import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
38
import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
39

    
40
/**
41
 * @author n.hoffmann
42
 * @date Dec 1, 2011
43
 *
44
 */
45
public class TaxonRelationshipDetailElement extends AbstractCdmDetailElement<TaxonRelationship> {
46

    
47
	private TermComboElement<TaxonRelationshipTypeInverseContainer> combo_taxonRelationshipType;
48
	
49
	private EntitySelectionElement<Taxon> selection_relatedTaxon;
50
	private CheckboxElement checkBoxDoubtful;
51
	protected ToggleableTextElement toggleable_cache;
52
	private  EntitySelectionElement<Reference> secReference;
53
	private  EntitySelectionElement<Reference> sensuReference;
54
	private TextWithLabelElement text_sensu_microreference;
55
	
56

    
57
	private TextWithLabelElement text_secundum_microreference;
58

    
59
	private TextWithLabelElement text_appendedPhrase;
60
	private TaxonDetailSection taxonElement;
61
	
62

    
63

    
64
	private Taxon taxon; 
65

    
66
	public TaxonRelationshipDetailElement(CdmFormFactory formFactory,
67
			ICdmFormElement formElement) {
68
		super(formFactory, formElement);
69
		
70
		
71
	}
72

    
73
	@Override
74
	protected void createControls(ICdmFormElement formElement,
75
			TaxonRelationship entity, int style) {
76
		if (!entity.getType().equals(TaxonRelationshipType.MISAPPLIED_NAME_FOR())){
77
			combo_taxonRelationshipType = formFactory.createTermComboElement(
78
					TaxonRelationshipTypeInverseContainer.class, 
79
					formElement, "Relationship Type", 
80
					getTaxonRelationshipTypeInverseContainer(), style);
81
			combo_taxonRelationshipType.setEnabled(false);
82
			selection_relatedTaxon = formFactory.createSelectionElement(
83
					Taxon.class, getConversationHolder(), 
84
					formElement, "Related Taxon", getRelatedTaxon(), 
85
					EntitySelectionElement.SELECTABLE, style);
86
			checkBoxDoubtful = formFactory.createCheckbox(formElement, "Relation is doubtful", entity.isDoubtful(), style);
87
		}else{
88
			taxon = entity.getFromTaxon();
89
			taxonElement = formFactory.createTaxonDetailSection(getConversationHolder(), formElement, null, style);
90
			taxonElement.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
91
			addControl(taxonElement);
92
			addElement(taxonElement);
93
			
94
			sensuReference = formFactory.createSelectionElement(Reference.class,
95
				getConversationHolder(), formElement, "Sensu",
96
				taxon.getSec(), EntitySelectionElement.ALL,
97
				style);
98
	
99
			text_sensu_microreference = formFactory.createTextWithLabelElement(
100
					formElement, "Detail",
101
					taxon.getSecMicroReference(),null,
102
					SWT.WRAP);
103
	
104
			
105
		
106
		
107
			
108
				
109
			secReference = formFactory.createSelectionElement(Reference.class,
110
					getConversationHolder(), formElement, "Misappl. Sec.",
111
					entity.getCitation(), EntitySelectionElement.ALL,
112
					style);
113
		
114
			text_secundum_microreference = formFactory.createTextWithLabelElement(
115
		            formElement, "Detail",
116
		            entity.getCitationMicroReference(),null,
117
		            SWT.WRAP);
118
			
119
		}
120
		
121
	}
122
	
123
	private Taxon getRelatedTaxon() {
124
		return TaxonRelationshipTypeInverseContainer.RelatedTaxon(getSourceTaxon(), getEntity());
125
	}
126

    
127
	private TaxonRelationshipTypeInverseContainer getTaxonRelationshipTypeInverseContainer(){
128
		return TaxonRelationshipTypeInverseContainer.CreateFromSource(getSourceTaxon(), getEntity());
129
	}
130
	
131
	private Taxon getSourceTaxon(){
132
		IEditorInput editorInput = StoreUtil.getActiveEditorInput();
133
		return (Taxon) editorInput.getAdapter(Taxon.class);
134
	}
135

    
136
	@Override
137
	public void handleEvent(Object eventSource) {
138
		if (getEntity().getType().equals(TaxonRelationshipType.MISAPPLIED_NAME_FOR())){
139
			 if (eventSource == secReference) {
140
				getEntity().setCitation(secReference.getSelection());
141
			} else if (eventSource == text_secundum_microreference) {
142
				getEntity().setCitationMicroReference(text_secundum_microreference.getText());
143
			}  else if (eventSource == text_sensu_microreference) {
144
		        taxon.setSecMicroReference(text_sensu_microreference.getText());
145
			}else if (eventSource == sensuReference) {
146
				taxon.setSec(sensuReference.getSelection());
147
			}
148
		}else{
149
			if (eventSource == selection_relatedTaxon){
150
				boolean inverse = getTaxonRelationshipTypeInverseContainer().isInverse();
151
				Taxon relatedTaxon = selection_relatedTaxon.getEntity();
152
				if(inverse){
153
					getEntity().setFromTaxon(relatedTaxon);
154
				}else{
155
					getEntity().setToTaxon(relatedTaxon);
156
				}
157
			}else if(eventSource==checkBoxDoubtful){
158
			    getEntity().setDoubtful(checkBoxDoubtful.getSelection());
159
			}
160
		}	
161
		firePropertyChangeEvent(new CdmPropertyChangeEvent(this, null));
162
	}
163
	
164
	
165
	 
166
	 
167
	 @Override
168
	    protected void updateControlStates() {
169
	        super.updateControlStates();
170
	       
171
	    }
172
	 @Override
173
	 protected void handleTitleCacheRelevantChange(PropertyChangeEvent event) {
174
		 if (getEntity().getType().equals(TaxonRelationshipType.MISAPPLIED_NAME_FOR())){
175
			String title = taxon.generateTitle();
176
			taxon.setTitleCache(title);
177
			super.handleTitleCacheRelevantChange(event);
178
		 }
179
	 }
180
	 
181
	@Override
182
	public void refresh(){
183
		 updateContent();
184
		
185
	 }
186

    
187
	@Override
188
	public void setEntity(TaxonRelationship entity) {
189
		super.setEntity(entity);
190
		if (taxonElement!=null) {
191
			taxonElement.setEntity(entity.getFromTaxon());
192
        }
193
	
194
	}
195
	
196
}
(8-8/10)