Project

General

Profile

Download (7.09 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.event.WorkbenchEventConstants;
20
import eu.etaxonomy.taxeditor.model.TaxonRelationshipTypeInverseContainer;
21
import eu.etaxonomy.taxeditor.ui.combo.MisappliedRelationshipComboElement;
22
import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
23
import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
24
import eu.etaxonomy.taxeditor.ui.element.CdmPropertyChangeEvent;
25
import eu.etaxonomy.taxeditor.ui.element.CheckboxElement;
26
import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
27
import eu.etaxonomy.taxeditor.ui.element.LayoutConstants;
28
import eu.etaxonomy.taxeditor.ui.element.TextWithLabelElement;
29
import eu.etaxonomy.taxeditor.ui.element.ToggleableTextElement;
30
import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
31
import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
32

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

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

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

    
50

    
51
	private TextWithLabelElement text_secundum_microreference;
52

    
53
	private TextWithLabelElement text_appendedPhrase;
54

    
55
	private Taxon taxon;
56

    
57
	private TaxonDetailSection taxonElement;
58

    
59
	public TaxonDetailSection getTaxonElement() {
60
        return taxonElement;
61
    }
62

    
63
    public TaxonRelationshipDetailElement(CdmFormFactory formFactory,
64
			ICdmFormElement formElement) {
65
		super(formFactory, formElement);
66
	}
67

    
68
	@Override
69
	protected void createControls(ICdmFormElement formElement,
70
			TaxonRelationship entity, int style) {
71
		if (!(entity.getType().equals(TaxonRelationshipType.MISAPPLIED_NAME_FOR()) || entity.getType().equals(TaxonRelationshipType.PRO_PARTE_MISAPPLIED_NAME_FOR())) ){
72
		    combo_taxonRelationshipType = formFactory.createTermComboElement(
73
                    TaxonRelationshipTypeInverseContainer.class,
74
                    formElement, "Relationship Type",
75
                    getTaxonRelationshipTypeInverseContainer(), style);
76

    
77
			combo_taxonRelationshipType.setEnabled(false);
78
			selection_relatedTaxon = formFactory.createSelectionElement(
79
					Taxon.class, //getConversationHolder(),
80
					formElement, "Related Taxon", getRelatedTaxon(),
81
					EntitySelectionElement.SELECTABLE, style);
82

    
83
		}else{
84
			taxon = entity.getFromTaxon();
85

    
86
			taxonElement = formFactory.createTaxonDetailSection(getConversationHolder(), formElement, null, style);
87
			taxonElement.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
88
			addControl(taxonElement);
89
			addElement(taxonElement);
90
			combo_misappliedRelationshipType = formFactory.createMisappliedRelationshipComboElement(formElement, "Relationship Type",
91
                    entity.getType(), style);
92

    
93
			combo_misappliedRelationshipType.setEnabled(true);
94

    
95
			sensuReference = formFactory.createSelectionElement(Reference.class,//getConversationHolder(),
96
				 formElement, "Sensu",
97
				taxon.getSec(), EntitySelectionElement.ALL,
98
				style);
99

    
100
			text_sensu_microreference = formFactory.createTextWithLabelElement(
101
					formElement, "Detail",
102
					taxon.getSecMicroReference(),null,
103
					SWT.WRAP);
104

    
105
			secReference = formFactory.createSelectionElement(Reference.class,//getConversationHolder(),
106
					formElement, "Misappl. Sec.",
107
					entity.getCitation(), EntitySelectionElement.ALL,
108
					style);
109

    
110
			text_secundum_microreference = formFactory.createTextWithLabelElement(
111
		            formElement, "Detail",
112
		            entity.getCitationMicroReference(),null,
113
		            SWT.WRAP);
114

    
115

    
116
		}
117
		checkBoxDoubtful = formFactory.createCheckbox(formElement, "Relation Doubtful", entity.isDoubtful(), style);
118
	}
119

    
120
	private Taxon getRelatedTaxon() {
121
		return TaxonRelationshipTypeInverseContainer.RelatedTaxon(getSourceTaxon(), getEntity());
122
	}
123

    
124
	private TaxonRelationshipTypeInverseContainer getTaxonRelationshipTypeInverseContainer(){
125
		return TaxonRelationshipTypeInverseContainer.CreateFromSource(getSourceTaxon(), getEntity());
126
	}
127

    
128
	private Taxon getSourceTaxon(){
129
		return EventUtility.getCurrentTaxon();
130
	}
131

    
132
	@Override
133
	public void handleEvent(Object eventSource) {
134
		if (getEntity().getType().isAnyMisappliedName()){
135
			 if (eventSource == secReference) {
136
				getEntity().setCitation(secReference.getSelection());
137
			} else if (eventSource == text_secundum_microreference) {
138
				getEntity().setCitationMicroReference(text_secundum_microreference.getText());
139
			}  else if (eventSource == text_sensu_microreference) {
140
		        taxon.setSecMicroReference(text_sensu_microreference.getText());
141
			} else if (eventSource == sensuReference) {
142
				taxon.setSec(sensuReference.getSelection());
143
			} else if (eventSource == combo_taxonRelationshipType ) {
144
			    getEntity().setType(combo_taxonRelationshipType.getSelection().getType());
145
			} else if ( eventSource == combo_misappliedRelationshipType) {
146
                getEntity().setType(combo_misappliedRelationshipType.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
			}
158
		}
159
		if(eventSource==checkBoxDoubtful){
160
            getEntity().setDoubtful(checkBoxDoubtful.getSelection());
161
        }
162
		firePropertyChangeEvent(new CdmPropertyChangeEvent(this, null));
163
		EventUtility.postEvent(WorkbenchEventConstants.REFRESH_NAME_EDITOR, getEntity().getToTaxon());
164
	}
165

    
166
	 @Override
167
	    protected void updateControlStates() {
168
	        super.updateControlStates();
169

    
170
	    }
171
	 @Override
172
	 protected void handleTitleCacheRelevantChange(PropertyChangeEvent event) {
173
		 if (getEntity().getType().equals(TaxonRelationshipType.MISAPPLIED_NAME_FOR())){
174
			String title = taxon.generateTitle();
175
			taxon.setTitleCache(title);
176
			super.handleTitleCacheRelevantChange(event);
177
		 }
178
	 }
179

    
180
	@Override
181
	public void refresh(){
182
		 updateContent();
183

    
184
	 }
185

    
186
	@Override
187
	public void setEntity(TaxonRelationship entity) {
188
		super.setEntity(entity);
189
		if (taxonElement!=null) {
190
			taxonElement.setEntity(entity.getFromTaxon());
191
        }
192

    
193
	}
194

    
195

    
196

    
197
}
(8-8/10)