Project

General

Profile

Download (9.9 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.taxeditor.event.EventUtility;
18
import eu.etaxonomy.taxeditor.event.WorkbenchEventConstants;
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 TaxonDetailSection getTaxonElement() {
59
        return taxonElement;
60
    }
61

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

    
67
	@Override
68
	protected void createControls(ICdmFormElement formElement,
69
			TaxonRelationship entity, int style) {
70
	    if ((entity.getType().isMisappliedNameOrInvalidDesignation()) ){
71

    
72
			taxon = entity.getFromTaxon();
73

    
74
            taxonElement = formFactory.createTaxonDetailSection(getConversationHolder(), formElement, null, style);
75
            taxonElement.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
76
            addControl(taxonElement);
77
            addElement(taxonElement);
78
            String label;
79
            if (entity.getType().isAnyMisappliedName()) {
80
                label = "Sensu";
81
            }else{
82
                label = "Sec.";
83
            }
84

    
85
            sensuReference = formFactory.createSelectionElement(Reference.class,//getConversationHolder(),
86
                 formElement, label,
87
                taxon.getSec(), EntitySelectionElement.ALL,
88
                style);
89

    
90
            text_sensu_microreference = formFactory.createTextWithLabelElement(
91
                    formElement, "Detail",
92
                    taxon.getSecMicroReference(),null,
93
                    SWT.WRAP);
94

    
95
            if (entity.getType().isAnyMisappliedName()) {
96
                label = "Misapplication Type";
97
            }else{
98
                label = "Relationship Type";
99
            }
100
            combo_misappliedRelationshipType = formFactory.createMisappliedRelationshipComboElement(formElement, label,
101
                        entity.getType(), style);
102

    
103
            if (entity.getType().isInvalidDesignation()){
104
                combo_misappliedRelationshipType.setEnabled(false);
105
            }else{
106
                combo_misappliedRelationshipType.setEnabled(true);
107
            }
108
            if (entity.getType().isAnyMisappliedName()) {
109
                label = "Misappl. Sec.";
110
            }else{
111
                label = "Err. Sec.";
112
            }
113
            secReference = formFactory.createSelectionElement(Reference.class,//getConversationHolder(),
114
                    formElement, label,
115
                    entity.getCitation(), EntitySelectionElement.ALL,
116
                    style);
117

    
118
            text_secundum_microreference = formFactory.createTextWithLabelElement(
119
                    formElement, "Detail",
120
                    entity.getCitationMicroReference(),null,
121
                    SWT.WRAP);
122
            if (entity.getType().isAnyMisappliedName()) {
123
                label = "Misapplication Doubtful";
124
            }else{
125
                label = "Relationship Doubtful";
126
            }
127
            checkBoxDoubtful = formFactory.createCheckbox(formElement, label, entity.isDoubtful(), style);
128
		}else if (entity.getType().isAnySynonym() ){
129
		    taxon = entity.getFromTaxon();
130

    
131
            taxonElement = formFactory.createTaxonDetailSection(getConversationHolder(), formElement, null, style);
132
            taxonElement.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
133
            addControl(taxonElement);
134
            addElement(taxonElement);
135

    
136

    
137

    
138

    
139
            secReference = formFactory.createSelectionElement(Reference.class,//getConversationHolder(),
140
                    formElement, "Syn. Sec.",
141
                    entity.getCitation(), EntitySelectionElement.ALL,
142
                    style);
143

    
144
            text_secundum_microreference = formFactory.createTextWithLabelElement(
145
                    formElement, "Detail",
146
                    entity.getCitationMicroReference(),null,
147
                    SWT.WRAP);
148
            sensuReference = formFactory.createSelectionElement(Reference.class,//getConversationHolder(),
149
                    formElement, "Sec",
150
                   taxon.getSec(), EntitySelectionElement.ALL,
151
                   style);
152

    
153
               text_sensu_microreference = formFactory.createTextWithLabelElement(
154
                       formElement, "Detail",
155
                       taxon.getSecMicroReference(),null,
156
                       SWT.WRAP);
157

    
158
            combo_misappliedRelationshipType = formFactory.createMisappliedRelationshipComboElement(formElement, "Synonym Type",
159
                    entity.getType(), style);
160

    
161
            combo_misappliedRelationshipType.setEnabled(true);
162
            checkBoxDoubtful = formFactory.createCheckbox(formElement, "Syn. Doubtful", entity.isDoubtful(), style);
163

    
164
        }else{
165
            combo_taxonRelationshipType = formFactory.createTermComboElement(
166
                    TaxonRelationshipTypeInverseContainer.class,
167
                    formElement, "Relationship Type",
168
                    getTaxonRelationshipTypeInverseContainer(), style);
169

    
170
            combo_taxonRelationshipType.setEnabled(false);
171
            selection_relatedTaxon = formFactory.createSelectionElement(
172
                    Taxon.class, //getConversationHolder(),
173
                    formElement, "Related Taxon", getRelatedTaxon(),
174
                    EntitySelectionElement.SELECTABLE, style);
175
            checkBoxDoubtful = formFactory.createCheckbox(formElement, "Relation Doubtful", entity.isDoubtful(), style);
176

    
177

    
178
		}
179

    
180
	}
181

    
182
	private Taxon getRelatedTaxon() {
183
		return TaxonRelationshipTypeInverseContainer.RelatedTaxon(getSourceTaxon(), getEntity());
184
	}
185

    
186
	private TaxonRelationshipTypeInverseContainer getTaxonRelationshipTypeInverseContainer(){
187
		return TaxonRelationshipTypeInverseContainer.CreateFromSource(getSourceTaxon(), getEntity());
188
	}
189

    
190
	private Taxon getSourceTaxon(){
191
		return EventUtility.getCurrentTaxon();
192
	}
193

    
194
	@Override
195
	public void handleEvent(Object eventSource) {
196
		if (getEntity().getType().isMisappliedNameOrInvalidDesignation() || getEntity().getType().isAnySynonym()){
197
			 if (eventSource == secReference) {
198
				getEntity().setCitation(secReference.getSelection());
199
			} else if (eventSource == text_secundum_microreference) {
200
				getEntity().setCitationMicroReference(text_secundum_microreference.getText());
201
			}  else if (eventSource == text_sensu_microreference) {
202
		        taxon.setSecMicroReference(text_sensu_microreference.getText());
203
			} else if (eventSource == sensuReference) {
204
				taxon.setSec(sensuReference.getSelection());
205
			} else if (eventSource == combo_taxonRelationshipType ) {
206
			    getEntity().setType(combo_taxonRelationshipType.getSelection().getType());
207
			} else if ( eventSource == combo_misappliedRelationshipType) {
208
                getEntity().setType(combo_misappliedRelationshipType.getSelection());
209
            }
210
		}else{
211
			if (eventSource == selection_relatedTaxon){
212
				boolean inverse = getTaxonRelationshipTypeInverseContainer().isInverse();
213
				Taxon relatedTaxon = selection_relatedTaxon.getEntity();
214
				if(inverse){
215
					getEntity().setFromTaxon(relatedTaxon);
216
				}else{
217
					getEntity().setToTaxon(relatedTaxon);
218
				}
219
			}
220
		}
221
		if(eventSource==checkBoxDoubtful){
222
            getEntity().setDoubtful(checkBoxDoubtful.getSelection());
223
        }
224
		firePropertyChangeEvent(new CdmPropertyChangeEvent(this, null));
225
		EventUtility.postEvent(WorkbenchEventConstants.REFRESH_NAME_EDITOR, getEntity().getToTaxon());
226
		taxonElement.updateTitle();
227
	}
228

    
229
	 @Override
230
	    protected void updateControlStates() {
231
	        super.updateControlStates();
232

    
233
	    }
234
	 @Override
235
	 protected void handleTitleCacheRelevantChange(PropertyChangeEvent event) {
236
		 if (getEntity().getType().isAnyMisappliedName() || getEntity().getType().isAnySynonym()){
237
			String title = taxon.generateTitle();
238
			taxon.setTitleCache(title);
239
			super.handleTitleCacheRelevantChange(event);
240
		 }
241
	 }
242

    
243
	@Override
244
	public void refresh(){
245
		 updateContent();
246

    
247
	 }
248

    
249
	@Override
250
	public void setEntity(TaxonRelationship entity) {
251
		super.setEntity(entity);
252
		if (taxonElement!=null) {
253
			taxonElement.setEntity(entity.getFromTaxon());
254
        }
255

    
256
	}
257

    
258

    
259

    
260
}
(8-8/10)