cleanup
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / ui / section / taxon / TaxonRelationshipDetailElement.java
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.SelectionArbitrator;
29 import eu.etaxonomy.taxeditor.ui.element.TextWithLabelElement;
30 import eu.etaxonomy.taxeditor.ui.element.ToggleableTextElement;
31 import eu.etaxonomy.taxeditor.ui.section.supplemental.AbstractSingleSourceElement;
32 import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
33
34 /**
35 * @author n.hoffmann
36 * @date Dec 1, 2011
37 *
38 */
39 public class TaxonRelationshipDetailElement extends AbstractSingleSourceElement<TaxonRelationship> {//TODO: use AbstractSingleSourcedElement
40
41 private TermComboElement<TaxonRelationshipTypeInverseContainer> combo_taxonRelationshipType;
42 private MisappliedRelationshipComboElement combo_misappliedRelationshipType;
43
44 private EntitySelectionElement<Taxon> selection_relatedTaxon;
45 private CheckboxElement checkBoxDoubtful;
46 protected ToggleableTextElement toggleable_cache;
47 // private EntitySelectionElement<Reference> secReference;
48 private EntitySelectionElement<Reference> sensuReference;
49 private TextWithLabelElement text_sensu_microreference;
50
51
52 // private TextWithLabelElement text_secundum_microreference;
53
54 private TextWithLabelElement text_appendedPhrase;
55
56 private CheckboxElement checkbox_published;
57
58 private Taxon taxon;
59
60 private TaxonDetailSection taxonElement;
61
62 public TaxonDetailSection getTaxonElement() {
63 return taxonElement;
64 }
65
66 public TaxonRelationshipDetailElement(CdmFormFactory formFactory,
67 ICdmFormElement formElement) {
68
69 super(formFactory, formElement);
70 }
71
72 @Override
73 public void createControls(ICdmFormElement formElement,
74 TaxonRelationship entity, int style) {
75 if ((entity.getType().isAnyMisappliedName()) ){
76
77 taxon = entity.getFromTaxon();
78
79 taxonElement = formFactory.createTaxonDetailSection(getConversationHolder(), formElement, null, StoreUtil.getSectionStyle(TaxonDetailSection.class, Taxon.class.getCanonicalName()));
80 taxonElement.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
81 addControl(taxonElement);
82 addElement(taxonElement);
83 String label;
84 if (entity.getType().isAnyMisappliedName()) {
85 label = "Sensu";
86 }else{
87 label = "Sec.";
88 }
89 text_appendedPhrase = formFactory.createTextWithLabelElement(
90 this, "Appended Phrase", taxon.getAppendedPhrase(),
91 SWT.WRAP);
92
93 checkbox_published = formFactory.createCheckbox(this,
94 "Published", taxon.isPublish(), style);
95 sensuReference = formFactory.createSelectionElement(Reference.class,//getConversationHolder(),
96 formElement, label,
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 if (entity.getType().isAnyMisappliedName()) {
106 label = "Misapplication Type";
107 }else{
108 label = "Relationship Type";
109 }
110 combo_misappliedRelationshipType = formFactory.createMisappliedRelationshipComboElement(formElement, label,
111 entity.getType(), style);
112
113 combo_misappliedRelationshipType.setEnabled(true);
114
115
116 if (entity.getType().isAnyMisappliedName()) {
117 label = "Misappl. Sec.";
118 }else{
119 label = "Err. Sec.";
120 }
121
122 /*TODO: use super.createControls(); to create single source element
123 secReference = formFactory.createSelectionElement(Reference.class,//getConversationHolder(),
124 formElement, label,
125 entity.getCitation(), EntitySelectionElement.ALL,
126 style);
127
128 text_secundum_microreference = formFactory.createTextWithLabelElement(
129 formElement, "Detail",
130 entity.getCitationMicroReference(),null,
131 SWT.WRAP);
132 */
133 super.createControls(formElement, entity, style);
134 setSourceLabel(label);
135
136 if (entity.getType().isAnyMisappliedName()) {
137 label = "Misapplication Doubtful";
138 }else{
139 label = "Relationship Doubtful";
140 }
141 checkBoxDoubtful = formFactory.createCheckbox(formElement, label, entity.isDoubtful(), style);
142 }else if (entity.getType().isAnySynonym() ){
143 taxon = entity.getFromTaxon();
144
145 taxonElement = formFactory.createTaxonDetailSection(getConversationHolder(), formElement, null, StoreUtil.getSectionStyle(TaxonDetailSection.class, Taxon.class.getCanonicalName()));
146 taxonElement.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
147 addControl(taxonElement);
148 addElement(taxonElement);
149
150
151 text_appendedPhrase = formFactory.createTextWithLabelElement(
152 this, "Appended Phrase", taxon.getAppendedPhrase(),
153 SWT.WRAP);
154
155 checkbox_published = formFactory.createCheckbox(this,
156 "Published", taxon.isPublish(), style);
157 /*
158 * secReference = formFactory.createSelectionElement(Reference.class,//getConversationHolder(),
159
160 formElement, "Syn. Sec.",
161 entity.getCitation(), EntitySelectionElement.ALL,
162 style);
163
164 text_secundum_microreference = formFactory.createTextWithLabelElement(
165 formElement, "Detail",
166 entity.getCitationMicroReference(),null,
167 SWT.WRAP);
168 */
169
170 super.createControls(formElement, entity, style);
171 setSourceLabel("Syn. Sec.");
172 sensuReference = formFactory.createSelectionElement(Reference.class,//getConversationHolder(),
173 formElement, "Sec",
174 taxon.getSec(), EntitySelectionElement.ALL,
175 style);
176
177 text_sensu_microreference = formFactory.createTextWithLabelElement(
178 formElement, "Detail",
179 taxon.getSecMicroReference(),null,
180 SWT.WRAP);
181
182 combo_misappliedRelationshipType = formFactory.createMisappliedRelationshipComboElement(formElement, "Synonym Type",
183 entity.getType(), style);
184
185 combo_misappliedRelationshipType.setEnabled(true);
186 checkBoxDoubtful = formFactory.createCheckbox(formElement, "Syn. Doubtful", entity.isDoubtful(), style);
187
188 }else{
189 combo_taxonRelationshipType = formFactory.createTermComboElement(
190 TaxonRelationshipTypeInverseContainer.class,
191 formElement, "Relationship Type",
192 getTaxonRelationshipTypeInverseContainer(), style);
193
194 combo_taxonRelationshipType.setEnabled(false);
195 selection_relatedTaxon = formFactory.createSelectionElement(
196 Taxon.class, //getConversationHolder(),
197 formElement, "Related Taxon", getRelatedTaxon(),
198 EntitySelectionElement.SELECTABLE, style);
199 checkBoxDoubtful = formFactory.createCheckbox(formElement, "Relation Doubtful", entity.isDoubtful(), style);
200
201
202 }
203
204 }
205
206 private Taxon getRelatedTaxon() {
207 return TaxonRelationshipTypeInverseContainer.RelatedTaxon(getSourceTaxon(), getEntity());
208 }
209
210 private TaxonRelationshipTypeInverseContainer getTaxonRelationshipTypeInverseContainer(){
211 return TaxonRelationshipTypeInverseContainer.CreateFromSource(getSourceTaxon(), getEntity());
212 }
213
214 private Taxon getSourceTaxon(){
215 return EventUtility.getCurrentTaxon();
216 }
217
218 @Override
219 public void handleEvent(Object eventSource) {
220 if (getEntity().getType().isAnyMisappliedName() || getEntity().getType().isAnySynonym()){
221 /* if (eventSource == secReference) {
222 getEntity().setCitation(secReference.getSelection());
223 } else if (eventSource == text_secundum_microreference) {
224 getEntity().setCitationMicroReference(text_secundum_microreference.getText());
225 } else
226 */
227 if (eventSource == text_sensu_microreference) {
228 taxon.setSecMicroReference(text_sensu_microreference.getText());
229 } else if (eventSource == sensuReference) {
230 taxon.setSec(sensuReference.getSelection());
231 } else if (eventSource == combo_taxonRelationshipType ) {
232 getEntity().setType(combo_taxonRelationshipType.getSelection().getType());
233 } else if ( eventSource == combo_misappliedRelationshipType) {
234 getEntity().setType(combo_misappliedRelationshipType.getSelection());
235 } else if (eventSource == text_appendedPhrase) {
236 taxon.setAppendedPhrase(text_appendedPhrase.getText());
237 } else if (eventSource == checkbox_published) {
238 taxon.setPublish(checkbox_published.getSelection());
239 }
240 }else{
241 if (eventSource == selection_relatedTaxon){
242 boolean inverse = getTaxonRelationshipTypeInverseContainer().isInverse();
243 Taxon relatedTaxon = selection_relatedTaxon.getEntity();
244 if(inverse){
245 getEntity().setFromTaxon(relatedTaxon);
246 }else{
247 getEntity().setToTaxon(relatedTaxon);
248 }
249 }
250 }
251 if(eventSource==checkBoxDoubtful){
252 getEntity().setDoubtful(checkBoxDoubtful.getSelection());
253 }
254 firePropertyChangeEvent(new CdmPropertyChangeEvent(this, null));
255 EventUtility.postEvent(WorkbenchEventConstants.REFRESH_NAME_EDITOR, getEntity().getToTaxon());
256 taxonElement.updateTitle();
257 }
258
259 @Override
260 protected void updateControlStates() {
261 super.updateControlStates();
262
263 }
264 @Override
265 protected void handleTitleCacheRelevantChange(PropertyChangeEvent event) {
266 if (getEntity().getType().isAnyMisappliedName() || getEntity().getType().isAnySynonym()){
267 String title = taxon.generateTitle();
268 taxon.setTitleCache(title);
269 super.handleTitleCacheRelevantChange(event);
270 }
271 }
272
273 @Override
274 public void refresh(){
275 updateContent();
276
277 }
278
279 @Override
280 public void setEntity(TaxonRelationship entity) {
281 super.setEntity(entity);
282 if (taxonElement!=null) {
283 taxonElement.setEntity(entity.getFromTaxon());
284 }
285
286 }
287
288 @Override
289 public SelectionArbitrator getSelectionArbitrator() {
290 // TODO Auto-generated method stub
291 return null;
292 }
293
294
295
296 }