minor changes for name details view configuration
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / view / detail / DetailsViewer.java
1
2 // $Id$
3 /**
4 * Copyright (C) 2011 EDIT
5 * European Distributed Institute of Taxonomy
6 * http://www.e-taxonomy.eu
7 *
8 * The contents of this file are subject to the Mozilla Public License Version 1.1
9 * See LICENSE.TXT at the top of this package for the full license terms.
10 */
11
12 package eu.etaxonomy.taxeditor.view.detail;
13
14 import java.util.Set;
15
16 import org.eclipse.jface.viewers.ISelection;
17 import org.eclipse.jface.viewers.SelectionChangedEvent;
18 import org.eclipse.jface.viewers.TreeNode;
19 import org.eclipse.swt.SWT;
20 import org.eclipse.swt.widgets.Composite;
21 import org.eclipse.ui.forms.widgets.ExpandableComposite;
22
23 import eu.etaxonomy.cdm.api.facade.DerivedUnitFacade;
24 import eu.etaxonomy.cdm.api.facade.DerivedUnitFacadeNotSupportedException;
25 import eu.etaxonomy.cdm.ext.occurrence.gbif.GbifResponse;
26 import eu.etaxonomy.cdm.model.agent.Person;
27 import eu.etaxonomy.cdm.model.agent.Team;
28 import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase;
29 import eu.etaxonomy.cdm.model.common.DefinedTermBase;
30 import eu.etaxonomy.cdm.model.common.Group;
31 import eu.etaxonomy.cdm.model.common.Marker;
32 import eu.etaxonomy.cdm.model.common.TermVocabulary;
33 import eu.etaxonomy.cdm.model.common.User;
34 import eu.etaxonomy.cdm.model.description.CategoricalData;
35 import eu.etaxonomy.cdm.model.description.DescriptionBase;
36 import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
37 import eu.etaxonomy.cdm.model.description.PolytomousKeyNode;
38 import eu.etaxonomy.cdm.model.description.SpecimenDescription;
39 import eu.etaxonomy.cdm.model.media.Media;
40 import eu.etaxonomy.cdm.model.molecular.DnaSample;
41 import eu.etaxonomy.cdm.model.molecular.Sequence;
42 import eu.etaxonomy.cdm.model.molecular.SingleRead;
43 import eu.etaxonomy.cdm.model.name.NonViralName;
44 import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;
45 import eu.etaxonomy.cdm.model.occurrence.FieldUnit;
46 import eu.etaxonomy.cdm.model.occurrence.MediaSpecimen;
47 import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationType;
48 import eu.etaxonomy.cdm.model.reference.Reference;
49 import eu.etaxonomy.cdm.model.taxon.TaxonBase;
50 import eu.etaxonomy.cdm.model.taxon.TaxonRelationship;
51 import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap;
52 import eu.etaxonomy.taxeditor.model.AbstractUtility;
53 import eu.etaxonomy.taxeditor.model.FeatureNodeContainer;
54 import eu.etaxonomy.taxeditor.model.IDerivedUnitFacadePart;
55 import eu.etaxonomy.taxeditor.model.MessagingUtils;
56 import eu.etaxonomy.taxeditor.model.PolytomousKeyRelationship;
57 import eu.etaxonomy.taxeditor.preference.IPreferenceKeys;
58 import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
59 import eu.etaxonomy.taxeditor.store.UsageTermCollection;
60 import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
61 import eu.etaxonomy.taxeditor.ui.element.RootElement;
62 import eu.etaxonomy.taxeditor.ui.section.agent.PersonDetailSection;
63 import eu.etaxonomy.taxeditor.ui.section.agent.TeamDetailSection;
64 import eu.etaxonomy.taxeditor.ui.section.agent.TeamOrPersonBaseDetailSection;
65 import eu.etaxonomy.taxeditor.ui.section.common.ReferencedEntityDetailSection;
66 import eu.etaxonomy.taxeditor.ui.section.description.DescriptionDetailSection;
67 import eu.etaxonomy.taxeditor.ui.section.description.DescriptionElementDetailSection;
68 import eu.etaxonomy.taxeditor.ui.section.description.DescriptionElementMediaSection;
69 import eu.etaxonomy.taxeditor.ui.section.description.DescriptionElementSourceSection;
70 import eu.etaxonomy.taxeditor.ui.section.description.DescriptionSourceSection;
71 import eu.etaxonomy.taxeditor.ui.section.description.MediaDetailsSection;
72 import eu.etaxonomy.taxeditor.ui.section.description.NaturalLanguageSection;
73 import eu.etaxonomy.taxeditor.ui.section.description.ScopeSection;
74 import eu.etaxonomy.taxeditor.ui.section.feature.FeatureDistributionDetailSection;
75 import eu.etaxonomy.taxeditor.ui.section.grantedAuthority.GrantedAuthorityDetailSection;
76 import eu.etaxonomy.taxeditor.ui.section.group.GroupDetailSection;
77 import eu.etaxonomy.taxeditor.ui.section.group.MemberDetailSection;
78 import eu.etaxonomy.taxeditor.ui.section.key.PolytomousKeyDetailSection;
79 import eu.etaxonomy.taxeditor.ui.section.key.PolytomousKeyNodeDetailSection;
80 import eu.etaxonomy.taxeditor.ui.section.name.NameRelationshipDetailSection;
81 import eu.etaxonomy.taxeditor.ui.section.name.NomenclaturalStatusSection;
82 import eu.etaxonomy.taxeditor.ui.section.name.NonViralNameDetailSection;
83 import eu.etaxonomy.taxeditor.ui.section.name.ProtologueSection;
84 import eu.etaxonomy.taxeditor.ui.section.name.TypeDesignationSection;
85 import eu.etaxonomy.taxeditor.ui.section.occurrence.DerivedUnitBaseDetailSection;
86 import eu.etaxonomy.taxeditor.ui.section.occurrence.DerivedUnitGeneralDetailSection;
87 import eu.etaxonomy.taxeditor.ui.section.occurrence.DeterminationDetailSection;
88 import eu.etaxonomy.taxeditor.ui.section.occurrence.EmptySection;
89 import eu.etaxonomy.taxeditor.ui.section.occurrence.FieldUnitDetailSection;
90 import eu.etaxonomy.taxeditor.ui.section.occurrence.FieldUnitGeneralDetailSection;
91 import eu.etaxonomy.taxeditor.ui.section.occurrence.GatheringEventDetailSection;
92 import eu.etaxonomy.taxeditor.ui.section.occurrence.association.DerivedUnitTypeDesignationSection;
93 import eu.etaxonomy.taxeditor.ui.section.occurrence.association.TaxonAssociationDetailSection;
94 import eu.etaxonomy.taxeditor.ui.section.occurrence.dna.DnaQualityDetailSection;
95 import eu.etaxonomy.taxeditor.ui.section.occurrence.dna.DnaSampleGeneralDetailSection;
96 import eu.etaxonomy.taxeditor.ui.section.occurrence.dna.DnaSamplePreparationPreservationSection;
97 import eu.etaxonomy.taxeditor.ui.section.occurrence.dna.SampleDesignationDetailSection;
98 import eu.etaxonomy.taxeditor.ui.section.occurrence.dna.SequenceContigFileCollectionDetailSection;
99 import eu.etaxonomy.taxeditor.ui.section.occurrence.dna.SequenceGeneralDetailSection;
100 import eu.etaxonomy.taxeditor.ui.section.occurrence.dna.SequenceReferenceCollectionDetailSection;
101 import eu.etaxonomy.taxeditor.ui.section.occurrence.dna.SingleReadGeneralDetailSection;
102 import eu.etaxonomy.taxeditor.ui.section.occurrence.dna.SingleReadPherogramCollectionDetailSection;
103 import eu.etaxonomy.taxeditor.ui.section.occurrence.dna.TissueSampleGeneralDetailSection;
104 import eu.etaxonomy.taxeditor.ui.section.occurrence.media.MediaSpecimenGeneralDetailSection;
105 import eu.etaxonomy.taxeditor.ui.section.reference.NomenclaturalReferenceDetailSection;
106 import eu.etaxonomy.taxeditor.ui.section.reference.ReferenceDetailSection;
107 import eu.etaxonomy.taxeditor.ui.section.supplemental.RightsSection;
108 import eu.etaxonomy.taxeditor.ui.section.supplemental.identifier.DerivedUnitFacadeIdentifierSection;
109 import eu.etaxonomy.taxeditor.ui.section.taxon.ParsingMessagesSection;
110 import eu.etaxonomy.taxeditor.ui.section.taxon.TaxonBaseDetailSection;
111 import eu.etaxonomy.taxeditor.ui.section.taxon.TaxonRelationshipDetailSection;
112 import eu.etaxonomy.taxeditor.ui.section.user.GroupsByUserDetailSection;
113 import eu.etaxonomy.taxeditor.ui.section.user.UserDetailSection;
114 import eu.etaxonomy.taxeditor.ui.section.userecords.UseRecordDetailSection;
115 import eu.etaxonomy.taxeditor.ui.section.vocabulary.TermVocabularyDetailSection;
116 import eu.etaxonomy.taxeditor.view.AbstractCdmDataViewer;
117 import eu.etaxonomy.taxeditor.view.AbstractCdmViewPart;
118
119 /**
120 *
121 * The DetailsViewer handles the content of the details view (
122 * {@link DetailsViewPart}).<br>
123 * Depending on the type of the selected element the section of the details view
124 * are created.
125 *
126 * @author n.hoffmann
127 * @created Feb 12, 2010
128 * @version 1.0
129 */
130 public class DetailsViewer extends AbstractCdmDataViewer {
131
132 private ISelection selection;
133
134 public DetailsViewer(Composite parent, AbstractCdmViewPart viewPart) {
135 super(parent, viewPart);
136 }
137
138 // START HACK TO MAKE THE DERIVED UNIT FACADE WORK
139 // since we are getting implementations of DerivedUnitBase from the bulk
140 // editor
141 // and not derived unit facade objects,
142
143 @Override
144 public void setInput(Object input) {
145 if(input instanceof TreeNode){
146 input = ((TreeNode) input).getValue();
147 }
148 if(input instanceof GbifResponse){
149 input = ((GbifResponse) input).getDerivedUnitFacade();
150 }
151 if (input.getClass().equals(DerivedUnit.class)) {
152 DerivedUnit derivedUnit = (DerivedUnit)input;
153 try {
154 input = DerivedUnitFacade.NewInstance(derivedUnit,
155 PreferencesUtil.getDerivedUnitConfigurator());
156 } catch (DerivedUnitFacadeNotSupportedException e) {
157 // MessagingUtils.error(getClass(), e); //nothing should happen, later on the Details View will show an according information that it is not possible to open this data
158 }
159 }
160 else if(input instanceof FieldUnit){
161 input = DerivedUnitFacade.NewInstance(SpecimenOrObservationType.FieldUnit, (FieldUnit) input);
162 }
163 super.setInput(input);
164 }
165
166 @Override
167 protected void markViewPartDirty() {
168 if (getInput() instanceof DerivedUnitFacade) {
169 DerivedUnitFacade facade = (DerivedUnitFacade) getInput();
170 if(facade.innerDerivedUnit()!=null){
171 getViewPart().changed(facade.innerDerivedUnit());
172 }
173 else if(facade.innerFieldUnit()!=null){
174 getViewPart().changed(facade.innerFieldUnit());
175 }
176 }
177 else{
178 super.markViewPartDirty();
179 }
180 }
181
182 // END HACK TO MAKE THE DERIVED UNIT FACADE WORK
183
184
185 /** {@inheritDoc} */
186 @Override
187 protected void showParts() {
188 // FIXME (CM) : Need to clean out this code.
189 // Too much type checking to decide which detail view to display.
190 // Need to build in a mechanism where navigators / editors are 'aware'
191 // of the corresponding detail viewer.
192 Object input = getInput();
193
194 destroySections();
195 if (input instanceof TaxonBase) {
196 if(((TaxonBase) input).getName()==null){
197 createEmptySection(rootElement);
198 }
199 else{
200 createTaxonSections(rootElement);
201 }
202
203 } else if (input instanceof NonViralName) {
204 createNameSections(rootElement);
205
206 } else if (input instanceof Reference) {
207 createReferenceSections(rootElement);
208
209 } else if (input instanceof Team) {
210 createTeamDetailSection(rootElement);
211
212 } else if (input instanceof Person) {
213 createPersonDetailSection(rootElement);
214
215 } else if (input instanceof TeamOrPersonBase) {
216 createTeamOrPersonBaseDetailSection(rootElement);
217
218 } else if (input instanceof DescriptionBase) {
219 if(input instanceof SpecimenDescription){
220 //TODO: add more sections to DetailsView for SpecimenDescription
221 createSpecimenDescriptionSection(rootElement);
222 }
223 else{
224 Set<Marker> descriptionMarkers = ((DescriptionBase<?>) input).getMarkers();
225
226 Boolean isUseDescription = false;
227 for (Marker marker : descriptionMarkers) {
228 if (marker.getMarkerType()!= null && marker.getMarkerType().getUuid().equals(UsageTermCollection.uuidUseMarkerType)) {
229 isUseDescription = true;
230 }
231 }
232 if (((DescriptionBase<?>) input).isImageGallery()) {
233 createImageGallerySection(rootElement);
234
235 } else if (isUseDescription) {
236 createUseDescriptionSection(rootElement);
237 } else {
238 createDescriptionSection(rootElement);
239
240 }
241 }
242 } else if (input instanceof DescriptionElementBase) {
243 Set<Marker> descriptionMarkers = ((DescriptionElementBase) input).getInDescription().getMarkers();
244
245 Boolean isUseDescription = false;
246 for (Marker marker : descriptionMarkers) {
247 if (marker.getMarkerType()!= null && marker.getMarkerType().getUuid().equals(UsageTermCollection.uuidUseMarkerType)) {
248 isUseDescription = true;
249 }
250 }
251
252 if (isUseDescription == true && input instanceof CategoricalData) {
253 createUseRecordSection(rootElement);
254 } else {
255 createDescriptionElementSection(rootElement);
256 }
257
258 } else if (input instanceof Media) {
259 createMediaElementSection(rootElement);
260
261 } else if (input instanceof DerivedUnitFacade) {
262 if(((DerivedUnitFacade) input).getType()==SpecimenOrObservationType.FieldUnit){
263 if(((DerivedUnitFacade) input).innerFieldUnit()==null){
264 MessagingUtils.error(DetailsViewer.class, "FieldUnit of facade is null", null);
265 }
266 else{
267 createFieldUnitSection(rootElement);
268 }
269 }
270 else if(((DerivedUnitFacade) input).getType()==SpecimenOrObservationType.PreservedSpecimen){
271 if(((DerivedUnitFacade) input).innerDerivedUnit()==null){
272 MessagingUtils.error(DetailsViewer.class, "DerivedUnit of facade is null", null);
273 }
274 else{
275 createDerivedUnitBaseElementSection(rootElement);
276 }
277 }
278 else if(((DerivedUnitFacade) input).getType()==SpecimenOrObservationType.TissueSample){
279 //TissueSample should only be created by using it's own class
280 //in future using only one class with different SpecimenOrObservationTypes is desired
281 // createTissueSampleSection(rootElement);
282 }
283 else{
284 createDerivedUnitBaseElementSection(rootElement);
285 }
286 } else if (input instanceof DnaSample){
287 DnaSample dnaSample = (DnaSample)input;
288 if(dnaSample.getRecordBasis()==SpecimenOrObservationType.TissueSample){
289 createTissueSampleSection(rootElement);
290 }
291 else if(dnaSample.getRecordBasis()==SpecimenOrObservationType.DnaSample){
292 createDnaSampleSection(rootElement);
293 }
294 } else if (input instanceof MediaSpecimen){
295 createMediaSpecimenSection(rootElement);
296 }
297 else if(input instanceof Sequence){
298 createSequenceSection(rootElement);
299 }
300 else if(input instanceof SingleRead){
301 createSingleReadSection(rootElement);
302 }
303 else if (input instanceof FeatureNodeContainer) {
304 createFeatureDistributionSection(rootElement);
305
306 }else if ((input instanceof PolytomousKeyNode) || (input instanceof PolytomousKeyRelationship)) {
307 createPolytomousKeyNodeSection(rootElement);
308 } else if (input instanceof User) {
309 createUserSection(rootElement);
310 } else if (input instanceof Group) {
311 createGroupSection(rootElement);
312 } else if (input instanceof TaxonRelationship) {
313 createTaxonRelationshipSection(rootElement);
314 } else if (input instanceof TermVocabulary) {
315 createTermVocabularySection(rootElement);
316 } else if (input instanceof DefinedTermBase) {
317 createDefinedTermSection(rootElement);
318 }
319 else {
320 createEmptySection(rootElement);
321 }
322 layout();
323 }
324
325
326 private void createEmptySection(RootElement parent) {
327 destroySections();
328
329 EmptySection emptySection = formFactory.createEmptySection(formFactory, parent, SWT.NONE);
330
331 addPart(emptySection);
332 }
333
334 private void createGroupSection(RootElement parent) {
335 destroySections();
336
337 GroupDetailSection groupDetailSection = formFactory.createGroupDetailSection(getConversationHolder(), parent, this, ExpandableComposite.TWISTIE| ExpandableComposite.EXPANDED);
338 MemberDetailSection memberDetailSection = formFactory.createMemberDetailSection(getConversationHolder(), parent, ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
339 GrantedAuthorityDetailSection grantedAuthorityDetailSection = formFactory.createGrantedAuthorityDetailSection(getConversationHolder(), parent,ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
340
341 addPart(groupDetailSection);
342 addPart(memberDetailSection);
343 addPart(grantedAuthorityDetailSection);
344 }
345
346 /** {@inheritDoc} */
347 @Override
348 public ISelection getSelection() {
349 return selection;
350 }
351
352 /** {@inheritDoc} */
353 @Override
354 public void setSelection(ISelection selection, boolean reveal) {
355 this.selection = selection;
356 if(this.selection!=null){
357 SelectionChangedEvent selectionChangedEvent = new SelectionChangedEvent(this, selection);
358 fireSelectionChanged(selectionChangedEvent);
359 }
360 }
361
362 private void createTaxonSections(RootElement parent) {
363 destroySections();
364
365 ParsingMessagesSection parsingMessagesSection = formFactory.createParsingMessagesSection(getConversationHolder(), parent, this,
366 ExpandableComposite.EXPANDED | ExpandableComposite.EXPANDED);
367 if (!PreferencesUtil.getPreferenceStore().getBoolean(IPreferenceKeys.SHOW_SIMPLE_NAME_DETAILS_SECTION)){
368 TaxonBaseDetailSection taxonBaseDetailSection = formFactory.createTaxonBaseDetailSection(getConversationHolder(), parent, this,
369 ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
370 formFactory.createHorizontalSeparator(parent, SWT.BORDER);
371 addPart(taxonBaseDetailSection);
372 }else{
373 if (PreferencesUtil.getPreferenceStore().getBoolean(IPreferenceKeys.SHOW_SIMPLE_NAME_DETAILS_TAXON)){
374 TaxonBaseDetailSection taxonBaseDetailSection = formFactory.createTaxonBaseDetailSection(getConversationHolder(), parent, this,
375 ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
376 formFactory.createHorizontalSeparator(parent, SWT.BORDER);
377
378 addPart(taxonBaseDetailSection);
379 }
380 }
381 NonViralNameDetailSection nonViralNameSection = formFactory
382 .createNonViralNameDetailSection(getConversationHolder(), parent, this, true,
383 ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
384 formFactory.createHorizontalSeparator(parent, SWT.BORDER);
385 if (!PreferencesUtil.getPreferenceStore().getBoolean(IPreferenceKeys.SHOW_SIMPLE_NAME_DETAILS_SECTION) || (PreferencesUtil.getPreferenceStore().getBoolean(IPreferenceKeys.SHOW_SIMPLE_NAME_DETAILS_SECTION) && PreferencesUtil.getPreferenceStore().getBoolean(IPreferenceKeys.SHOW_NAME_DETAILS_SECTION_NOMENCLATURAL_REFERENCE))){
386 NomenclaturalReferenceDetailSection referenceDetailSection = formFactory.createNomenclaturalReferenceDetailSection(getConversationHolder(), parent, this,
387 ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
388 formFactory.createHorizontalSeparator(parent, SWT.BORDER);
389 addPart(referenceDetailSection);
390
391 }
392 if ( !PreferencesUtil.getPreferenceStore().getBoolean(IPreferenceKeys.SHOW_SIMPLE_NAME_DETAILS_SECTION) || (PreferencesUtil.getPreferenceStore().getBoolean(IPreferenceKeys.SHOW_SIMPLE_NAME_DETAILS_SECTION) && PreferencesUtil.getPreferenceStore().getBoolean(IPreferenceKeys.SHOW_NAME_DETAILS_SECTION_NOMENCLATURAL_STATUS))){
393 NomenclaturalStatusSection nomenclaturalStatusSection = formFactory.createNomenclaturalStatusSection(getConversationHolder(), parent,
394 ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
395 formFactory.createHorizontalSeparator(parent, SWT.BORDER);
396 addPart(nomenclaturalStatusSection);
397 }
398 if(!PreferencesUtil.getPreferenceStore().getBoolean(IPreferenceKeys.IS_RL) ){
399 if (!PreferencesUtil.getPreferenceStore().getBoolean(IPreferenceKeys.SHOW_SIMPLE_NAME_DETAILS_SECTION) || (PreferencesUtil.getPreferenceStore().getBoolean(IPreferenceKeys.SHOW_SIMPLE_NAME_DETAILS_SECTION) && PreferencesUtil.getPreferenceStore().getBoolean(IPreferenceKeys.SHOW_NAME_DETAILS_SECTION_PROTOLOGUE))){
400 ProtologueSection protologSection = formFactory.createProtologueSection(getConversationHolder(), parent, ExpandableComposite.TWISTIE);
401 formFactory.createHorizontalSeparator(parent, SWT.BORDER);
402 addPart(protologSection);
403 }
404
405 if (!PreferencesUtil.getPreferenceStore().getBoolean(IPreferenceKeys.SHOW_SIMPLE_NAME_DETAILS_SECTION) || (PreferencesUtil.getPreferenceStore().getBoolean(IPreferenceKeys.SHOW_SIMPLE_NAME_DETAILS_SECTION) && PreferencesUtil.getPreferenceStore().getBoolean(IPreferenceKeys.SHOW_NAME_DETAILS_SECTION_TYPE_DESIGNATION))){
406 TypeDesignationSection typeDesignationSection = formFactory.createTypeDesignationSection(getConversationHolder(), parent, ExpandableComposite.TWISTIE);
407 formFactory.createHorizontalSeparator(parent, SWT.BORDER);
408 addPart(typeDesignationSection);
409 }
410
411 if (!PreferencesUtil.getPreferenceStore().getBoolean(IPreferenceKeys.SHOW_SIMPLE_NAME_DETAILS_SECTION) || (PreferencesUtil.getPreferenceStore().getBoolean(IPreferenceKeys.SHOW_SIMPLE_NAME_DETAILS_SECTION) && PreferencesUtil.getPreferenceStore().getBoolean(IPreferenceKeys.SHOW_NAME_DETAILS_SECTION_NAME_RELATIONSHIP))){
412 NameRelationshipDetailSection nameRelationshipSection = formFactory.createNameRelationshipDetailSection(getConversationHolder(), parent, ExpandableComposite.TWISTIE);
413 formFactory.createHorizontalSeparator(parent, SWT.BORDER);
414 addPart(nameRelationshipSection);
415 }
416 }
417
418 addPart(parsingMessagesSection);
419
420 addPart(nonViralNameSection);
421
422 }
423
424 private void createNameSections(RootElement parent) {
425 destroySections();
426 NonViralNameDetailSection nonViralNameSection = formFactory.createNonViralNameDetailSection(
427 getConversationHolder(), parent, this, false, ExpandableComposite.TWISTIE
428 | ExpandableComposite.EXPANDED);
429 formFactory.createHorizontalSeparator(parent, SWT.BORDER);
430
431 NomenclaturalReferenceDetailSection referenceDetailSection = formFactory.createNomenclaturalReferenceDetailSection(getConversationHolder(), parent, this,
432 ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
433 formFactory.createHorizontalSeparator(parent, SWT.BORDER);
434
435 NomenclaturalStatusSection nomenclaturalStatusSection = formFactory.createNomenclaturalStatusSection(getConversationHolder(), parent,
436 ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
437 formFactory.createHorizontalSeparator(parent, SWT.BORDER);
438
439 addPart(nonViralNameSection);
440 addPart(nomenclaturalStatusSection);
441 addPart(referenceDetailSection);
442 //TODO RL
443 if(!PreferencesUtil.getPreferenceStore().getBoolean(IPreferenceKeys.IS_RL)){
444 ProtologueSection protologSection = formFactory.createProtologueSection(getConversationHolder(), parent, ExpandableComposite.TWISTIE);
445 formFactory.createHorizontalSeparator(parent, SWT.BORDER);
446
447 TypeDesignationSection typeDesignationSection = formFactory.createTypeDesignationSection(getConversationHolder(), parent, ExpandableComposite.TWISTIE);
448 formFactory.createHorizontalSeparator(parent, SWT.BORDER);
449
450 NameRelationshipDetailSection nameRelationshipSection = formFactory.createNameRelationshipDetailSection(getConversationHolder(), parent, ExpandableComposite.TWISTIE);
451 formFactory.createHorizontalSeparator(parent, SWT.BORDER);
452 addPart(protologSection);
453 addPart(typeDesignationSection);
454 addPart(nameRelationshipSection);
455 }
456 }
457
458 private void createReferenceSections(RootElement parent) {
459 destroySections();
460
461 ReferenceDetailSection referenceDetailSection = formFactory.createReferenceDetailSection(getConversationHolder(), parent, this,
462 ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
463
464 addPart(referenceDetailSection);
465 }
466
467 private void createTeamOrPersonBaseDetailSection(RootElement parent) {
468 destroySections();
469 TeamOrPersonBaseDetailSection teamOrPersonBaseDetailSection = formFactory.createTeamOrPersonBaseDetailSection(getConversationHolder(), parent, this, ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
470
471 addPart(teamOrPersonBaseDetailSection);
472 }
473
474 private void createTeamDetailSection(RootElement parent) {
475 destroySections();
476 TeamDetailSection teamDetailSection = formFactory.createTeamDetailSection(getConversationHolder(), parent, ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
477
478 addPart(teamDetailSection);
479 }
480
481 private void createPersonDetailSection(RootElement parent) {
482 destroySections();
483 PersonDetailSection personDetailSection = formFactory.createPersonDetailSection(getConversationHolder(), parent, ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
484 addPart(personDetailSection);
485 }
486
487 private void createDescriptionElementSection(RootElement parent) {
488 destroySections();
489
490 DescriptionElementDetailSection descriptionElementDetailSection = formFactory.createDescriptionElementDetailSection(getConversationHolder(), parent, this, ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
491
492 formFactory.createHorizontalSeparator(parent, SWT.BORDER);
493
494 DescriptionElementSourceSection descriptionElementSourceSection = formFactory.createDescriptionElementSourceSection(getConversationHolder(), parent, ExpandableComposite.TWISTIE);
495
496 formFactory.createHorizontalSeparator(parent, SWT.BORDER);
497
498 DescriptionElementMediaSection descriptionElementMediaSection = formFactory.createDescriptionElementMediaSection(getConversationHolder(), parent, ExpandableComposite.TWISTIE);
499
500 formFactory.createHorizontalSeparator(parent, SWT.BORDER);
501
502 addPart(descriptionElementDetailSection);
503 addPart(descriptionElementSourceSection);
504 addPart(descriptionElementMediaSection);
505 }
506
507 private void createDescriptionSection(RootElement parent) {
508 destroySections();
509 DescriptionDetailSection descriptionDetailSection = formFactory.createDescriptionDetailSection(getConversationHolder(), parent, this, ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
510
511 formFactory.createHorizontalSeparator(parent, SWT.BORDER);
512
513 NaturalLanguageSection naturalLanguageSection = formFactory.createNaturalLanguageSection(getConversationHolder(), parent, this, ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
514
515 formFactory.createHorizontalSeparator(parent, SWT.BORDER);
516
517 // DescribedSpecimenSection describedSpecimenSection = formFactory.createDescribedSpecimenSection(getConversationHolder(), parent, ExpandableComposite.TWISTIE);
518 //
519 // formFactory.createHorizontalSeparator(parent, SWT.BORDER);
520
521 // DescriptionSourceSection descriptionSourceSection = (DescriptionSourceSection) formFactory
522 // .createEntityDetailSection(EntityDetailType.DESCRIPTIONSOURCE,
523 // getConversationHolder(), parent, Section.TWISTIE);
524 //
525 // formFactory.createHorizontalSeparator(parent, SWT.BORDER);
526
527 ScopeSection scopeSection = formFactory.createScopeSection(getConversationHolder(), parent, ExpandableComposite.TWISTIE);
528
529 formFactory.createHorizontalSeparator(parent, SWT.BORDER);
530
531 addPart(descriptionDetailSection);
532 addPart(naturalLanguageSection);
533 // addPart(describedSpecimenSection);
534 // addPart(descriptionSourceSection);
535 addPart(scopeSection);
536 }
537
538 private void createSpecimenDescriptionSection(RootElement parent) {
539 destroySections();
540 DescriptionDetailSection descriptionDetailSection = formFactory.createDescriptionDetailSection(getConversationHolder(), parent, this, ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
541 addPart(descriptionDetailSection);
542 }
543
544 private void createUseDescriptionSection(RootElement parent) {
545 destroySections();
546 DescriptionDetailSection descriptionDetailSection = formFactory.createDescriptionDetailSection(getConversationHolder(), parent, this, ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
547
548 formFactory.createHorizontalSeparator(parent, SWT.BORDER);
549
550 DescriptionSourceSection descriptionSourceSection = formFactory.createDescriptionSourceSection(getConversationHolder(), parent, ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
551
552 formFactory.createHorizontalSeparator(parent, SWT.BORDER);
553
554 addPart(descriptionDetailSection);
555 addPart(descriptionSourceSection);
556
557 }
558
559 private void createImageGallerySection(RootElement parent) {
560 destroySections();
561 DescriptionDetailSection descriptionDetailSection = formFactory.createDescriptionDetailSection(getConversationHolder(), parent, this, ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
562
563 addPart(descriptionDetailSection);
564 }
565
566 private void createMediaElementSection(RootElement parent) {
567 destroySections();
568
569 MediaDetailsSection mediaDetailSection = formFactory.createMediaDetailsSection(getConversationHolder(), parent, this, ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
570
571 addPart(mediaDetailSection);
572 }
573
574 private void createDerivedUnitBaseElementSection(RootElement parent) {
575 destroySections();
576
577 DerivedUnitGeneralDetailSection derivedUnitGeneralDetailSection = formFactory.createDerivedUnitGeneralDetailSection(getConversationHolder(), parent, this, ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
578 //TODO for DerivateEditor do not use facade anymore to avoid this special case handling #4539
579 if(!(AbstractUtility.getActivePart() instanceof IDerivedUnitFacadePart)){
580 derivedUnitGeneralDetailSection.setShowOnlyDerivedUnitData(true);
581 }
582 addPart(derivedUnitGeneralDetailSection);
583
584 formFactory.createHorizontalSeparator(parent, SWT.BORDER);
585
586 DerivedUnitBaseDetailSection derivedUnitBaseDetailSection = formFactory.createDerivedUnitBaseDetailSection(getConversationHolder(), parent, this, ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
587 addPart(derivedUnitBaseDetailSection);
588
589 //for editors working with facades
590 if(AbstractUtility.getActivePart() instanceof IDerivedUnitFacadePart){
591 formFactory.createHorizontalSeparator(parent, SWT.BORDER);
592 GatheringEventDetailSection gatheringEventDetailSection = formFactory.createGatheringEventDetailSection(getConversationHolder(), parent, this, ExpandableComposite.TWISTIE);
593 addPart(gatheringEventDetailSection);
594
595 formFactory.createHorizontalSeparator(parent, SWT.BORDER);
596 FieldUnitDetailSection fieldUnitDetailSection = formFactory.createFieldUnitDetailSection(getConversationHolder(), parent, this, ExpandableComposite.TWISTIE);
597 addPart(fieldUnitDetailSection);
598 }
599 else{
600
601 if(PreferencesUtil.getPreferenceStore().getBoolean(IPreferenceKeys.SHOW_TAXON_ASSOCIATIONS)){
602 formFactory.createHorizontalSeparator(parent, SWT.BORDER);
603 TaxonAssociationDetailSection taxonAssociationDetailSection = formFactory.createTaxonAssociationDetailSection(getConversationHolder(), parent, this, ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
604 addPart(taxonAssociationDetailSection);
605 }
606 formFactory.createHorizontalSeparator(parent, SWT.BORDER);
607 DerivedUnitFacadeIdentifierSection identifierDetailSection = formFactory.createDerivedUnitFacadeIdentifierSection(getConversationHolder(), parent, ExpandableComposite.TWISTIE);
608 addPart(identifierDetailSection);
609 }
610 if(!PreferencesUtil.getPreferenceStore().getBoolean(IPreferenceKeys.DETERMINATION_ONLY_FOR_FIELD_UNITS)){
611 formFactory.createHorizontalSeparator(parent, SWT.BORDER);
612 DeterminationDetailSection determinationDetailSection = formFactory.createDeterminationDetailSection(getConversationHolder(), parent, this, ExpandableComposite.TWISTIE);
613 addPart(determinationDetailSection);
614 }
615
616 formFactory.createHorizontalSeparator(parent, SWT.BORDER);
617 DerivedUnitTypeDesignationSection derivedUnitTypeDesignationSection = formFactory.createDerivedUnitTypeDesignationSection(getConversationHolder(), parent, this, ExpandableComposite.TWISTIE);
618 addPart(derivedUnitTypeDesignationSection);
619
620 }
621
622 private void createFieldUnitSection(RootElement parent) {
623 destroySections();
624
625 FieldUnitGeneralDetailSection fielUnitGeneralDetailSection = formFactory.createFieldUnitGeneralDetailSection(getConversationHolder(), parent, this, ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
626
627 formFactory.createHorizontalSeparator(parent, SWT.BORDER);
628
629 GatheringEventDetailSection gatheringEventDetailSection = formFactory.createGatheringEventDetailSection(getConversationHolder(), parent, this, ExpandableComposite.TWISTIE);
630
631 formFactory.createHorizontalSeparator(parent, SWT.BORDER);
632
633 FieldUnitDetailSection fieldUnitDetailSection = formFactory.createFieldUnitDetailSection(getConversationHolder(), parent, this, ExpandableComposite.TWISTIE);
634
635 addPart(fielUnitGeneralDetailSection);
636 addPart(gatheringEventDetailSection);
637 addPart(fieldUnitDetailSection);
638
639 if(PreferencesUtil.getPreferenceStore().getBoolean(IPreferenceKeys.DETERMINATION_ONLY_FOR_FIELD_UNITS)){
640 formFactory.createHorizontalSeparator(parent, SWT.BORDER);
641 DeterminationDetailSection determinationDetailSection = formFactory.createDeterminationDetailSection(getConversationHolder(), parent, this, ExpandableComposite.TWISTIE);
642 addPart(determinationDetailSection);
643 }
644 }
645
646 private void createTissueSampleSection(RootElement parent) {
647 destroySections();
648
649 TissueSampleGeneralDetailSection section = formFactory.createTissueSampleGeneralDetailSection(getConversationHolder(), parent, this, ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
650
651 formFactory.createHorizontalSeparator(parent, SWT.BORDER);
652
653 SampleDesignationDetailSection sampleDesignationDetailSection = formFactory.createSampleDesignationDetailSection(getConversationHolder(), parent, this, ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
654
655 addPart(section);
656 addPart(sampleDesignationDetailSection);
657 }
658
659 private void createDnaSampleSection(RootElement parent) {
660 destroySections();
661
662 DnaSampleGeneralDetailSection section = formFactory.createDnaSampleGeneralDetailSection(getConversationHolder(), parent, this, ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
663
664 formFactory.createHorizontalSeparator(parent, SWT.BORDER);
665
666 DnaSamplePreparationPreservationSection preparationPreservationSection = formFactory.createDnaSamplePreparationPreservationSection(getConversationHolder(), parent, this, ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
667
668 formFactory.createHorizontalSeparator(parent, SWT.BORDER);
669
670 DnaQualityDetailSection qualitySection = formFactory.createDnaQualityDetailSection(getConversationHolder(), parent, this, ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
671
672 formFactory.createHorizontalSeparator(parent, SWT.BORDER);
673
674 SampleDesignationDetailSection sampleDesignationDetailSection = formFactory.createSampleDesignationDetailSection(getConversationHolder(), parent, this, ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
675
676 addPart(section);
677 addPart(preparationPreservationSection);
678 addPart(qualitySection);
679 addPart(sampleDesignationDetailSection);
680 }
681
682 private void createSequenceSection(RootElement parent) {
683 destroySections();
684
685 SequenceGeneralDetailSection section = formFactory.createSequenceGeneralDetailSection(getConversationHolder(), parent, this, ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
686
687 formFactory.createHorizontalSeparator(parent, SWT.BORDER);
688
689 SequenceReferenceCollectionDetailSection referenceSection = formFactory.createSequenceReferenceCollectionDetailSection(getConversationHolder(), parent, ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
690
691 formFactory.createHorizontalSeparator(parent, SWT.BORDER);
692
693 SequenceContigFileCollectionDetailSection contigFileSection = formFactory.createSequenceContigFileCollectionDetailSection(getConversationHolder(), parent, ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
694
695
696 addPart(section);
697 addPart(referenceSection);
698 addPart(contigFileSection);
699 }
700
701 private void createSingleReadSection(RootElement parent) {
702 destroySections();
703
704 SingleReadGeneralDetailSection section = formFactory.createSingleReadGeneralDetailSection(getConversationHolder(), parent, this, ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
705 addPart(section);
706
707 formFactory.createHorizontalSeparator(parent, SWT.BORDER);
708
709 SingleReadPherogramCollectionDetailSection pherogramSection = formFactory.createSingleReadPherogramCollectionDetailSection(getConversationHolder(), parent, ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
710 addPart(pherogramSection);
711
712 }
713
714 private void createMediaSpecimenSection(RootElement parent) {
715 destroySections();
716
717 MediaSpecimenGeneralDetailSection generalSection = formFactory.createMediaSpecimenGeneralDetailSection(getConversationHolder(), parent, this, ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
718 addPart(generalSection);
719
720 formFactory.createHorizontalSeparator(parent, SWT.BORDER);
721
722 RightsSection rightsSection = formFactory.createRightsSection(getConversationHolder(), parent, ExpandableComposite.TWISTIE);
723 addPart(rightsSection);
724
725 }
726
727 private void createFeatureDistributionSection(RootElement parent) {
728 destroySections();
729
730 FeatureDistributionDetailSection featureDistributionSection = formFactory.createFeatureDistributionDetailSection(getConversationHolder(), parent, this, ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
731
732 addPart(featureDistributionSection);
733 }
734
735 private void createPolytomousKeyNodeSection(RootElement parent) {
736 destroySections();
737
738 PolytomousKeyDetailSection polytomousKeyDetailSection = formFactory.createPolytomousKeyDetailSection(getConversationHolder(), parent, this, ExpandableComposite.TWISTIE);
739
740 formFactory.createHorizontalSeparator(parent, SWT.BORDER);
741
742 PolytomousKeyNodeDetailSection polytomousKeyNodeDetailSection = formFactory.createPolytomousKeyNodeDetailSection(getConversationHolder(), parent, this, ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
743
744 addPart(polytomousKeyDetailSection);
745 addPart(polytomousKeyNodeDetailSection);
746
747 }
748
749 private void createUseRecordSection(RootElement parent) {
750 destroySections();
751
752 UseRecordDetailSection descriptionUseRecordSection = formFactory.createUseRecordDetailSection(getConversationHolder(), parent, this,ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
753
754 formFactory.createHorizontalSeparator(parent, SWT.BORDER);
755
756 addPart(descriptionUseRecordSection);
757
758
759 }
760
761 private void createUserSection(RootElement parent) {
762 destroySections();
763
764 UserDetailSection userDetailSection = formFactory.createUserDetailSection(getConversationHolder(), parent, this, ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
765
766 GroupsByUserDetailSection groupByUserDetailSection = formFactory.createGroupsByUserDetailSection(getConversationHolder(), parent, ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
767
768 addPart(userDetailSection);
769 addPart(groupByUserDetailSection);
770 }
771
772 private void createTaxonRelationshipSection(RootElement parent) {
773 destroySections();
774
775 TaxonRelationshipDetailSection taxonRelationshipDetailSection = formFactory.createTaxonRelationshipDetailSection(getConversationHolder(), parent, this, ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
776
777 ReferencedEntityDetailSection referencedEntityBaseDetailSection = formFactory.createReferencedEntityDetailSection(getConversationHolder(), parent, this, ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
778 addPart(taxonRelationshipDetailSection);
779 addPart(referencedEntityBaseDetailSection);
780 }
781
782 private void createTermVocabularySection(RootElement parent) {
783 destroySections();
784
785 TermVocabularyDetailSection termVocabularyDetailSection = formFactory.createTermVocabularyDetailSection(getConversationHolder(), parent, this, ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
786 addPart(termVocabularyDetailSection);
787 }
788
789 private void createDefinedTermSection(RootElement parent) {
790 destroySections();
791
792 AbstractFormSection<?> definedTermDetailSection = formFactory.createDefinedTermDetailSection(getInput().getClass(), getConversationHolder(), parent, this, ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
793 addPart(definedTermDetailSection);
794 }
795
796 @Override
797 public void update(CdmDataChangeMap arg0) {
798
799 }
800
801 }