Project

General

Profile

Download (6.86 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 org.eclipse.jface.util.PropertyChangeEvent;
12
import org.eclipse.swt.SWT;
13

    
14
import eu.etaxonomy.cdm.model.reference.Reference;
15
import eu.etaxonomy.cdm.model.taxon.Taxon;
16
import eu.etaxonomy.cdm.model.taxon.TaxonRelationship;
17
import eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType;
18
import eu.etaxonomy.taxeditor.event.EventUtility;
19
import eu.etaxonomy.taxeditor.model.TaxonRelationshipTypeInverseContainer;
20
import eu.etaxonomy.taxeditor.ui.combo.MisappliedRelationshipComboElement;
21
import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
22
import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
23
import eu.etaxonomy.taxeditor.ui.element.CdmPropertyChangeEvent;
24
import eu.etaxonomy.taxeditor.ui.element.CheckboxElement;
25
import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
26
import eu.etaxonomy.taxeditor.ui.element.LayoutConstants;
27
import eu.etaxonomy.taxeditor.ui.element.TextWithLabelElement;
28
import eu.etaxonomy.taxeditor.ui.element.ToggleableTextElement;
29
import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
30
import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
31

    
32
/**
33
 * @author n.hoffmann
34
 * @date Dec 1, 2011
35
 *
36
 */
37
public class TaxonRelationshipDetailElement extends AbstractCdmDetailElement<TaxonRelationship> {
38

    
39
	private TermComboElement<TaxonRelationshipTypeInverseContainer> combo_taxonRelationshipType;
40
	private MisappliedRelationshipComboElement combo_misappliedRelationshipType;
41

    
42
	private EntitySelectionElement<Taxon> selection_relatedTaxon;
43
	private CheckboxElement checkBoxDoubtful;
44
	protected ToggleableTextElement toggleable_cache;
45
	private  EntitySelectionElement<Reference> secReference;
46
	private  EntitySelectionElement<Reference> sensuReference;
47
	private TextWithLabelElement text_sensu_microreference;
48

    
49

    
50
	private TextWithLabelElement text_secundum_microreference;
51

    
52
	private TextWithLabelElement text_appendedPhrase;
53

    
54
	private Taxon taxon;
55

    
56
	private TaxonDetailSection taxonElement;
57

    
58
	public TaxonRelationshipDetailElement(CdmFormFactory formFactory,
59
			ICdmFormElement formElement) {
60
		super(formFactory, formElement);
61
	}
62

    
63
	@Override
64
	protected void createControls(ICdmFormElement formElement,
65
			TaxonRelationship entity, int style) {
66
		if (!(entity.getType().equals(TaxonRelationshipType.MISAPPLIED_NAME_FOR()) || entity.getType().equals(TaxonRelationshipType.PRO_PARTE_MISAPPLIED_NAME_FOR())) ){
67
		    combo_taxonRelationshipType = formFactory.createTermComboElement(
68
                    TaxonRelationshipTypeInverseContainer.class,
69
                    formElement, "Relationship Type",
70
                    getTaxonRelationshipTypeInverseContainer(), style);
71

    
72
			combo_taxonRelationshipType.setEnabled(false);
73
			selection_relatedTaxon = formFactory.createSelectionElement(
74
					Taxon.class, //getConversationHolder(),
75
					formElement, "Related Taxon", getRelatedTaxon(),
76
					EntitySelectionElement.SELECTABLE, style);
77
			checkBoxDoubtful = formFactory.createCheckbox(formElement, "Relation is doubtful", entity.isDoubtful(), style);
78
		}else{
79
			taxon = entity.getFromTaxon();
80

    
81
			taxonElement = formFactory.createTaxonDetailSection(getConversationHolder(), formElement, null, style);
82
			taxonElement.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
83
			addControl(taxonElement);
84
			addElement(taxonElement);
85
			combo_misappliedRelationshipType = formFactory.createMisappliedRelationshipComboElement(formElement, "Relationship Type",
86
                    entity.getType(), style);
87

    
88
			combo_misappliedRelationshipType.setEnabled(true);
89

    
90
			sensuReference = formFactory.createSelectionElement(Reference.class,//getConversationHolder(),
91
				 formElement, "Sensu",
92
				taxon.getSec(), EntitySelectionElement.ALL,
93
				style);
94

    
95
			text_sensu_microreference = formFactory.createTextWithLabelElement(
96
					formElement, "Detail",
97
					taxon.getSecMicroReference(),null,
98
					SWT.WRAP);
99

    
100
			secReference = formFactory.createSelectionElement(Reference.class,//getConversationHolder(),
101
					formElement, "Misappl. Sec.",
102
					entity.getCitation(), EntitySelectionElement.ALL,
103
					style);
104

    
105
			text_secundum_microreference = formFactory.createTextWithLabelElement(
106
		            formElement, "Detail",
107
		            entity.getCitationMicroReference(),null,
108
		            SWT.WRAP);
109
		}
110
	}
111

    
112
	private Taxon getRelatedTaxon() {
113
		return TaxonRelationshipTypeInverseContainer.RelatedTaxon(getSourceTaxon(), getEntity());
114
	}
115

    
116
	private TaxonRelationshipTypeInverseContainer getTaxonRelationshipTypeInverseContainer(){
117
		return TaxonRelationshipTypeInverseContainer.CreateFromSource(getSourceTaxon(), getEntity());
118
	}
119

    
120
	private Taxon getSourceTaxon(){
121
		return EventUtility.getCurrentTaxon();
122
	}
123

    
124
	@Override
125
	public void handleEvent(Object eventSource) {
126
		if (getEntity().getType().isMisappliedNameOrInvalidDesignation()){
127
			 if (eventSource == secReference) {
128
				getEntity().setCitation(secReference.getSelection());
129
			} else if (eventSource == text_secundum_microreference) {
130
				getEntity().setCitationMicroReference(text_secundum_microreference.getText());
131
			}  else if (eventSource == text_sensu_microreference) {
132
		        taxon.setSecMicroReference(text_sensu_microreference.getText());
133
			} else if (eventSource == sensuReference) {
134
				taxon.setSec(sensuReference.getSelection());
135
			} else if (eventSource == combo_taxonRelationshipType ) {
136
			    getEntity().setType(combo_taxonRelationshipType.getSelection().getType());
137
			} else if ( eventSource == combo_misappliedRelationshipType) {
138
                getEntity().setType(combo_misappliedRelationshipType.getSelection());
139
            }
140
		}else{
141
			if (eventSource == selection_relatedTaxon){
142
				boolean inverse = getTaxonRelationshipTypeInverseContainer().isInverse();
143
				Taxon relatedTaxon = selection_relatedTaxon.getEntity();
144
				if(inverse){
145
					getEntity().setFromTaxon(relatedTaxon);
146
				}else{
147
					getEntity().setToTaxon(relatedTaxon);
148
				}
149
			}else if(eventSource==checkBoxDoubtful){
150
			    getEntity().setDoubtful(checkBoxDoubtful.getSelection());
151
			}
152
		}
153
		firePropertyChangeEvent(new CdmPropertyChangeEvent(this, null));
154
	}
155

    
156
	 @Override
157
	    protected void updateControlStates() {
158
	        super.updateControlStates();
159

    
160
	    }
161
	 @Override
162
	 protected void handleTitleCacheRelevantChange(PropertyChangeEvent event) {
163
		 if (getEntity().getType().equals(TaxonRelationshipType.MISAPPLIED_NAME_FOR())){
164
			String title = taxon.generateTitle();
165
			taxon.setTitleCache(title);
166
			super.handleTitleCacheRelevantChange(event);
167
		 }
168
	 }
169

    
170
	@Override
171
	public void refresh(){
172
		 updateContent();
173

    
174
	 }
175

    
176
	@Override
177
	public void setEntity(TaxonRelationship entity) {
178
		super.setEntity(entity);
179
		if (taxonElement!=null) {
180
			taxonElement.setEntity(entity.getFromTaxon());
181
        }
182

    
183
	}
184

    
185
}
(8-8/10)