Project

General

Profile

Download (10.1 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.store.StoreUtil;
21
import eu.etaxonomy.taxeditor.ui.combo.MisappliedRelationshipComboElement;
22
import eu.etaxonomy.taxeditor.ui.combo.term.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().isMisappliedNameOrInvalidDesignation()) ){
72

    
73
			taxon = entity.getFromTaxon();
74

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

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

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

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

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

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

    
132
            taxonElement = formFactory.createTaxonDetailSection(getConversationHolder(), formElement, null, StoreUtil.getSectionStyle(TaxonDetailSection.class, Taxon.class.getCanonicalName()));
133
            taxonElement.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
134
            addControl(taxonElement);
135
            addElement(taxonElement);
136

    
137

    
138

    
139

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

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

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

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

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

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

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

    
178

    
179
		}
180

    
181
	}
182

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

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

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

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

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

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

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

    
248
	 }
249

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

    
257
	}
258

    
259

    
260

    
261
}
(8-8/10)