Project

General

Profile

Download (38.5 KB) Statistics
| Branch: | Tag: | Revision:
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.taxeditor.model.AbstractUtility;
52
import eu.etaxonomy.taxeditor.model.FeatureNodeContainer;
53
import eu.etaxonomy.taxeditor.model.IDerivedUnitFacadePart;
54
import eu.etaxonomy.taxeditor.model.MessagingUtils;
55
import eu.etaxonomy.taxeditor.model.PolytomousKeyRelationship;
56
import eu.etaxonomy.taxeditor.preference.IPreferenceKeys;
57
import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
58
import eu.etaxonomy.taxeditor.store.UsageTermCollection;
59
import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
60
import eu.etaxonomy.taxeditor.ui.element.RootElement;
61
import eu.etaxonomy.taxeditor.ui.section.agent.PersonDetailSection;
62
import eu.etaxonomy.taxeditor.ui.section.agent.TeamDetailSection;
63
import eu.etaxonomy.taxeditor.ui.section.agent.TeamOrPersonBaseDetailSection;
64
import eu.etaxonomy.taxeditor.ui.section.common.ReferencedEntityDetailSection;
65
import eu.etaxonomy.taxeditor.ui.section.description.DescriptionDetailSection;
66
import eu.etaxonomy.taxeditor.ui.section.description.DescriptionElementDetailSection;
67
import eu.etaxonomy.taxeditor.ui.section.description.DescriptionElementMediaSection;
68
import eu.etaxonomy.taxeditor.ui.section.description.DescriptionElementSourceSection;
69
import eu.etaxonomy.taxeditor.ui.section.description.DescriptionSourceSection;
70
import eu.etaxonomy.taxeditor.ui.section.description.MediaDetailsSection;
71
import eu.etaxonomy.taxeditor.ui.section.description.NaturalLanguageSection;
72
import eu.etaxonomy.taxeditor.ui.section.description.ScopeSection;
73
import eu.etaxonomy.taxeditor.ui.section.feature.FeatureDistributionDetailSection;
74
import eu.etaxonomy.taxeditor.ui.section.grantedAuthority.GrantedAuthorityDetailSection;
75
import eu.etaxonomy.taxeditor.ui.section.group.GroupDetailSection;
76
import eu.etaxonomy.taxeditor.ui.section.group.MemberDetailSection;
77
import eu.etaxonomy.taxeditor.ui.section.identifier.IdentifierDetailSection;
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.taxon.ParsingMessagesSection;
109
import eu.etaxonomy.taxeditor.ui.section.taxon.TaxonBaseDetailSection;
110
import eu.etaxonomy.taxeditor.ui.section.taxon.TaxonRelationshipDetailSection;
111
import eu.etaxonomy.taxeditor.ui.section.user.GroupsByUserDetailSection;
112
import eu.etaxonomy.taxeditor.ui.section.user.UserDetailSection;
113
import eu.etaxonomy.taxeditor.ui.section.userecords.UseRecordDetailSection;
114
import eu.etaxonomy.taxeditor.ui.section.vocabulary.TermVocabularyDetailSection;
115
import eu.etaxonomy.taxeditor.view.AbstractCdmDataViewer;
116
import eu.etaxonomy.taxeditor.view.AbstractCdmViewPart;
117

    
118
/**
119
 *
120
 * The DetailsViewer handles the content of the details view (
121
 * {@link DetailsViewPart}).<br>
122
 * Depending on the type of the selected element the section of the details view
123
 * are created.
124
 *
125
 * @author n.hoffmann
126
 * @created Feb 12, 2010
127
 * @version 1.0
128
 */
129
public class DetailsViewer extends AbstractCdmDataViewer {
130

    
131
    private ISelection selection;
132

    
133
    public DetailsViewer(Composite parent, AbstractCdmViewPart viewPart) {
134
        super(parent, viewPart);
135
    }
136

    
137
    // START HACK TO MAKE THE DERIVED UNIT FACADE WORK
138
    // since we are getting implementations of DerivedUnitBase from the bulk
139
    // editor
140
    // and not derived unit facade objects,
141

    
142
    @Override
143
    public void setInput(Object input) {
144
        if(input instanceof TreeNode){
145
            input = ((TreeNode) input).getValue();
146
        }
147
        if(input instanceof GbifResponse){
148
            input = ((GbifResponse) input).getDerivedUnitFacade();
149
        }
150
        if (input.getClass().equals(DerivedUnit.class)) {
151
            DerivedUnit derivedUnit = (DerivedUnit)input;
152
            try {
153
                input = DerivedUnitFacade.NewInstance(derivedUnit,
154
                        PreferencesUtil.getDerivedUnitConfigurator());
155
            } catch (DerivedUnitFacadeNotSupportedException e) {
156
//                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
157
            }
158
        }
159
        else if(input instanceof FieldUnit){
160
            input = DerivedUnitFacade.NewInstance(SpecimenOrObservationType.FieldUnit, (FieldUnit) input);
161
        }
162
        super.setInput(input);
163
    }
164

    
165
    @Override
166
    protected void markViewPartDirty() {
167
        if (getInput() instanceof DerivedUnitFacade) {
168
            DerivedUnitFacade facade = (DerivedUnitFacade) getInput();
169
            if(facade.innerDerivedUnit()!=null){
170
                getViewPart().changed(facade.innerDerivedUnit());
171
            }
172
            else if(facade.innerFieldUnit()!=null){
173
                getViewPart().changed(facade.innerFieldUnit());
174
            }
175
        }
176
        else{
177
            super.markViewPartDirty();
178
        }
179
    }
180

    
181
    // END HACK TO MAKE THE DERIVED UNIT FACADE WORK
182

    
183

    
184
    /** {@inheritDoc} */
185
    @Override
186
    protected void showParts() {
187
        // FIXME (CM) : Need to clean out this code.
188
        // Too much type checking to decide which detail view to display.
189
        // Need to build in a mechanism where navigators / editors are 'aware'
190
        // of the corresponding detail viewer.
191
        Object input = getInput();
192

    
193
        destroySections();
194
        if (input instanceof TaxonBase) {
195
            if(((TaxonBase) input).getName()==null){
196
                createEmptySection(rootElement);
197
            }
198
            else{
199
                createTaxonSections(rootElement);
200
            }
201

    
202
        } else if (input instanceof NonViralName) {
203
            createNameSections(rootElement);
204

    
205
        } else if (input instanceof Reference) {
206
            createReferenceSections(rootElement);
207

    
208
        } else if (input instanceof Team) {
209
            createTeamDetailSection(rootElement);
210

    
211
        } else if (input instanceof Person) {
212
            createPersonDetailSection(rootElement);
213

    
214
        } else if (input instanceof TeamOrPersonBase) {
215
            createTeamOrPersonBaseDetailSection(rootElement);
216

    
217
        } else if (input instanceof DescriptionBase) {
218
            if(input instanceof SpecimenDescription){
219
                //TODO: add more sections to DetailsView for SpecimenDescription
220
                createSpecimenDescriptionSection(rootElement);
221
            }
222
            else{
223
                Set<Marker> descriptionMarkers = ((DescriptionBase<?>) input).getMarkers();
224

    
225
                Boolean isUseDescription = false;
226
                for (Marker marker : descriptionMarkers) {
227
                    if (marker.getMarkerType()!= null && marker.getMarkerType().getUuid().equals(UsageTermCollection.uuidUseMarkerType)) {
228
                        isUseDescription = true;
229
                    }
230
                }
231
                if (((DescriptionBase<?>) input).isImageGallery()) {
232
                    createImageGallerySection(rootElement);
233

    
234
                } else if (isUseDescription) {
235
                    createUseDescriptionSection(rootElement);
236
                } else {
237
                    createDescriptionSection(rootElement);
238

    
239
                }
240
            }
241
        } else if (input instanceof DescriptionElementBase) {
242
            Set<Marker> descriptionMarkers = ((DescriptionElementBase) input).getInDescription().getMarkers();
243

    
244
            Boolean isUseDescription = false;
245
            for (Marker marker : descriptionMarkers) {
246
                if (marker.getMarkerType()!= null && marker.getMarkerType().getUuid().equals(UsageTermCollection.uuidUseMarkerType)) {
247
                    isUseDescription = true;
248
                }
249
            }
250

    
251
            if (isUseDescription == true && input instanceof CategoricalData) {
252
                createUseRecordSection(rootElement);
253
            } else {
254
                createDescriptionElementSection(rootElement);
255
            }
256

    
257
        } else if (input instanceof Media) {
258
            createMediaElementSection(rootElement);
259

    
260
        } else if (input instanceof DerivedUnitFacade) {
261
            if(((DerivedUnitFacade) input).getType()==SpecimenOrObservationType.FieldUnit){
262
                if(((DerivedUnitFacade) input).innerFieldUnit()==null){
263
                    MessagingUtils.error(DetailsViewer.class, "FieldUnit of facade is null", null);
264
                }
265
                else{
266
                    createFieldUnitSection(rootElement);
267
                }
268
            }
269
            else if(((DerivedUnitFacade) input).getType()==SpecimenOrObservationType.PreservedSpecimen){
270
                if(((DerivedUnitFacade) input).innerDerivedUnit()==null){
271
                    MessagingUtils.error(DetailsViewer.class, "DerivedUnit of facade is null", null);
272
                }
273
                else{
274
                    createDerivedUnitBaseElementSection(rootElement);
275
                }
276
            }
277
            else if(((DerivedUnitFacade) input).getType()==SpecimenOrObservationType.TissueSample){
278
                //TissueSample should only be created by using it's own class
279
                //in future using only one class with different SpecimenOrObservationTypes is desired
280
//                createTissueSampleSection(rootElement);
281
            }
282
            else{
283
                createDerivedUnitBaseElementSection(rootElement);
284
            }
285
        } else if (input instanceof DnaSample){
286
            DnaSample dnaSample = (DnaSample)input;
287
            if(dnaSample.getRecordBasis()==SpecimenOrObservationType.TissueSample){
288
                createTissueSampleSection(rootElement);
289
            }
290
            else if(dnaSample.getRecordBasis()==SpecimenOrObservationType.DnaSample){
291
                createDnaSampleSection(rootElement);
292
            }
293
        } else if (input instanceof MediaSpecimen){
294
            createMediaSpecimenSection(rootElement);
295
        }
296
        else if(input instanceof Sequence){
297
            createSequenceSection(rootElement);
298
        }
299
        else if(input instanceof SingleRead){
300
            createSingleReadSection(rootElement);
301
        }
302
        else if (input instanceof FeatureNodeContainer) {
303
            createFeatureDistributionSection(rootElement);
304

    
305
        }else if ((input instanceof PolytomousKeyNode) || (input instanceof PolytomousKeyRelationship)) {
306
            createPolytomousKeyNodeSection(rootElement);
307
        } else if (input instanceof User) {
308
            createUserSection(rootElement);
309
        } else if (input instanceof Group) {
310
            createGroupSection(rootElement);
311
        } else if (input instanceof TaxonRelationship) {
312
            createTaxonRelationshipSection(rootElement);
313
        } else if (input instanceof TermVocabulary) {
314
            createTermVocabularySection(rootElement);
315
        } else if (input instanceof DefinedTermBase) {
316
            createDefinedTermSection(rootElement);
317
        }
318
        else {
319
            createEmptySection(rootElement);
320
        }
321
        layout();
322
    }
323

    
324

    
325
    private void createEmptySection(RootElement parent) {
326
        destroySections();
327

    
328
        EmptySection emptySection = formFactory.createEmptySection(formFactory, parent, SWT.NONE);
329

    
330
        addPart(emptySection);
331
    }
332

    
333
    private void createGroupSection(RootElement parent) {
334
        destroySections();
335

    
336
        GroupDetailSection groupDetailSection = formFactory.createGroupDetailSection(getConversationHolder(), parent, this, ExpandableComposite.TWISTIE| ExpandableComposite.EXPANDED);
337
        MemberDetailSection memberDetailSection = formFactory.createMemberDetailSection(getConversationHolder(), parent, ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
338
        GrantedAuthorityDetailSection grantedAuthorityDetailSection = formFactory.createGrantedAuthorityDetailSection(getConversationHolder(), parent,ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
339

    
340
        addPart(groupDetailSection);
341
        addPart(memberDetailSection);
342
        addPart(grantedAuthorityDetailSection);
343
    }
344

    
345
    /** {@inheritDoc} */
346
    @Override
347
    public ISelection getSelection() {
348
        return selection;
349
    }
350

    
351
    /** {@inheritDoc} */
352
    @Override
353
    public void setSelection(ISelection selection, boolean reveal) {
354
        this.selection = selection;
355
        if(this.selection!=null){
356
            SelectionChangedEvent selectionChangedEvent = new SelectionChangedEvent(this, selection);
357
            fireSelectionChanged(selectionChangedEvent);
358
        }
359
    }
360

    
361
    private void createTaxonSections(RootElement parent) {
362
        destroySections();
363

    
364
        ParsingMessagesSection parsingMessagesSection = formFactory.createParsingMessagesSection(getConversationHolder(), parent, this,
365
                ExpandableComposite.EXPANDED | ExpandableComposite.EXPANDED);
366

    
367
        TaxonBaseDetailSection taxonBaseDetailSection = formFactory.createTaxonBaseDetailSection(getConversationHolder(), parent, this,
368
        		ExpandableComposite.TWISTIE	| ExpandableComposite.EXPANDED);
369
        formFactory.createHorizontalSeparator(parent, SWT.BORDER);
370

    
371
        NonViralNameDetailSection nonViralNameSection = formFactory
372
                .createNonViralNameDetailSection(getConversationHolder(), parent, this, true,
373
                        ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
374
        formFactory.createHorizontalSeparator(parent, SWT.BORDER);
375

    
376
        NomenclaturalReferenceDetailSection referenceDetailSection = formFactory.createNomenclaturalReferenceDetailSection(getConversationHolder(), parent, this,
377
        		ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
378
        formFactory.createHorizontalSeparator(parent, SWT.BORDER);
379

    
380
        NomenclaturalStatusSection nomenclaturalStatusSection = formFactory.createNomenclaturalStatusSection(getConversationHolder(), parent,
381
        		ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
382
        formFactory.createHorizontalSeparator(parent, SWT.BORDER);
383

    
384
        //TODO RL
385
        if(!PreferencesUtil.getPreferenceStore().getBoolean(IPreferenceKeys.IS_RL)){
386
	        ProtologueSection protologSection = formFactory.createProtologueSection(getConversationHolder(), parent, ExpandableComposite.TWISTIE);
387
	        formFactory.createHorizontalSeparator(parent, SWT.BORDER);
388

    
389
	        TypeDesignationSection typeDesignationSection = formFactory.createTypeDesignationSection(getConversationHolder(), parent, ExpandableComposite.TWISTIE);
390
	        formFactory.createHorizontalSeparator(parent, SWT.BORDER);
391

    
392
	        NameRelationshipDetailSection nameRelationshipSection = formFactory.createNameRelationshipDetailSection(getConversationHolder(), parent, ExpandableComposite.TWISTIE);
393
	        formFactory.createHorizontalSeparator(parent, SWT.BORDER);
394

    
395
			addPart(protologSection);
396
			addPart(typeDesignationSection);
397
			addPart(nameRelationshipSection);
398
        }
399

    
400
        addPart(parsingMessagesSection);
401
        addPart(taxonBaseDetailSection);
402
        addPart(nonViralNameSection);
403
        addPart(nomenclaturalStatusSection);
404
        addPart(referenceDetailSection);
405
    }
406

    
407
    private void createNameSections(RootElement parent) {
408
        destroySections();
409
        NonViralNameDetailSection nonViralNameSection = formFactory.createNonViralNameDetailSection(
410
                getConversationHolder(), parent, this, false, ExpandableComposite.TWISTIE
411
                        | ExpandableComposite.EXPANDED);
412
        formFactory.createHorizontalSeparator(parent, SWT.BORDER);
413

    
414
        NomenclaturalReferenceDetailSection referenceDetailSection = formFactory.createNomenclaturalReferenceDetailSection(getConversationHolder(), parent, this,
415
        		ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
416
        formFactory.createHorizontalSeparator(parent, SWT.BORDER);
417

    
418
        NomenclaturalStatusSection nomenclaturalStatusSection = formFactory.createNomenclaturalStatusSection(getConversationHolder(), parent,
419
        		ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
420
        formFactory.createHorizontalSeparator(parent, SWT.BORDER);
421

    
422
        addPart(nonViralNameSection);
423
        addPart(nomenclaturalStatusSection);
424
        addPart(referenceDetailSection);
425
//TODO RL
426
        if(!PreferencesUtil.getPreferenceStore().getBoolean(IPreferenceKeys.IS_RL)){
427
			ProtologueSection protologSection = formFactory.createProtologueSection(getConversationHolder(), parent, ExpandableComposite.TWISTIE);
428
	        formFactory.createHorizontalSeparator(parent, SWT.BORDER);
429

    
430
	        TypeDesignationSection typeDesignationSection = formFactory.createTypeDesignationSection(getConversationHolder(), parent, ExpandableComposite.TWISTIE);
431
	        formFactory.createHorizontalSeparator(parent, SWT.BORDER);
432

    
433
	        NameRelationshipDetailSection nameRelationshipSection = formFactory.createNameRelationshipDetailSection(getConversationHolder(), parent, ExpandableComposite.TWISTIE);
434
	        formFactory.createHorizontalSeparator(parent, SWT.BORDER);
435
	        addPart(protologSection);
436
	        addPart(typeDesignationSection);
437
	        addPart(nameRelationshipSection);
438
        }
439
    }
440

    
441
    private void createReferenceSections(RootElement parent) {
442
        destroySections();
443

    
444
        ReferenceDetailSection referenceDetailSection = formFactory.createReferenceDetailSection(getConversationHolder(), parent, this,
445
        		ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
446

    
447
        addPart(referenceDetailSection);
448
    }
449

    
450
    private void createTeamOrPersonBaseDetailSection(RootElement parent) {
451
        destroySections();
452
        TeamOrPersonBaseDetailSection teamOrPersonBaseDetailSection = formFactory.createTeamOrPersonBaseDetailSection(getConversationHolder(), parent, this, ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
453

    
454
        addPart(teamOrPersonBaseDetailSection);
455
    }
456

    
457
    private void createTeamDetailSection(RootElement parent) {
458
        destroySections();
459
        TeamDetailSection teamDetailSection = formFactory.createTeamDetailSection(getConversationHolder(), parent, ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
460

    
461
        addPart(teamDetailSection);
462
    }
463

    
464
    private void createPersonDetailSection(RootElement parent) {
465
        destroySections();
466
        PersonDetailSection personDetailSection = formFactory.createPersonDetailSection(getConversationHolder(), parent, ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
467
        addPart(personDetailSection);
468
    }
469

    
470
    private void createDescriptionElementSection(RootElement parent) {
471
        destroySections();
472

    
473
        DescriptionElementDetailSection descriptionElementDetailSection = formFactory.createDescriptionElementDetailSection(getConversationHolder(), parent, this, ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
474

    
475
        formFactory.createHorizontalSeparator(parent, SWT.BORDER);
476

    
477
        DescriptionElementSourceSection descriptionElementSourceSection = formFactory.createDescriptionElementSourceSection(getConversationHolder(), parent, ExpandableComposite.TWISTIE);
478

    
479
        formFactory.createHorizontalSeparator(parent, SWT.BORDER);
480

    
481
        DescriptionElementMediaSection descriptionElementMediaSection = formFactory.createDescriptionElementMediaSection(getConversationHolder(), parent, ExpandableComposite.TWISTIE);
482

    
483
        formFactory.createHorizontalSeparator(parent, SWT.BORDER);
484

    
485
        addPart(descriptionElementDetailSection);
486
        addPart(descriptionElementSourceSection);
487
        addPart(descriptionElementMediaSection);
488
    }
489

    
490
    private void createDescriptionSection(RootElement parent) {
491
        destroySections();
492
        DescriptionDetailSection descriptionDetailSection = formFactory.createDescriptionDetailSection(getConversationHolder(), parent, this, ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
493

    
494
        formFactory.createHorizontalSeparator(parent, SWT.BORDER);
495

    
496
        NaturalLanguageSection naturalLanguageSection = formFactory.createNaturalLanguageSection(getConversationHolder(), parent, this, ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
497

    
498
        formFactory.createHorizontalSeparator(parent, SWT.BORDER);
499

    
500
//        DescribedSpecimenSection describedSpecimenSection = formFactory.createDescribedSpecimenSection(getConversationHolder(), parent, ExpandableComposite.TWISTIE);
501
//
502
//        formFactory.createHorizontalSeparator(parent, SWT.BORDER);
503

    
504
        //		DescriptionSourceSection descriptionSourceSection = (DescriptionSourceSection) formFactory
505
        //				.createEntityDetailSection(EntityDetailType.DESCRIPTIONSOURCE,
506
        //						getConversationHolder(), parent, Section.TWISTIE);
507
        //
508
        //		formFactory.createHorizontalSeparator(parent, SWT.BORDER);
509

    
510
        ScopeSection scopeSection = formFactory.createScopeSection(getConversationHolder(), parent, ExpandableComposite.TWISTIE);
511

    
512
        formFactory.createHorizontalSeparator(parent, SWT.BORDER);
513

    
514
        addPart(descriptionDetailSection);
515
        addPart(naturalLanguageSection);
516
//        addPart(describedSpecimenSection);
517
        //		addPart(descriptionSourceSection);
518
        addPart(scopeSection);
519
    }
520

    
521
    private void createSpecimenDescriptionSection(RootElement parent) {
522
        destroySections();
523
        DescriptionDetailSection descriptionDetailSection = formFactory.createDescriptionDetailSection(getConversationHolder(), parent, this, ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
524
        addPart(descriptionDetailSection);
525
    }
526

    
527
    private void createUseDescriptionSection(RootElement parent) {
528
        destroySections();
529
        DescriptionDetailSection descriptionDetailSection = formFactory.createDescriptionDetailSection(getConversationHolder(), parent, this, ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
530

    
531
        formFactory.createHorizontalSeparator(parent, SWT.BORDER);
532

    
533
        DescriptionSourceSection descriptionSourceSection = formFactory.createDescriptionSourceSection(getConversationHolder(), parent, ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
534

    
535
        formFactory.createHorizontalSeparator(parent, SWT.BORDER);
536

    
537
        addPart(descriptionDetailSection);
538
        addPart(descriptionSourceSection);
539

    
540
    }
541

    
542
    private void createImageGallerySection(RootElement parent) {
543
        destroySections();
544
        DescriptionDetailSection descriptionDetailSection = formFactory.createDescriptionDetailSection(getConversationHolder(), parent, this, ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
545

    
546
        addPart(descriptionDetailSection);
547
    }
548

    
549
    private void createMediaElementSection(RootElement parent) {
550
        destroySections();
551

    
552
        MediaDetailsSection mediaDetailSection = formFactory.createMediaDetailsSection(getConversationHolder(), parent, this, ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
553

    
554
        addPart(mediaDetailSection);
555
    }
556

    
557
    private void createDerivedUnitBaseElementSection(RootElement parent) {
558
        destroySections();
559

    
560
        DerivedUnitGeneralDetailSection derivedUnitGeneralDetailSection = formFactory.createDerivedUnitGeneralDetailSection(getConversationHolder(), parent, this, ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
561
        //TODO for DerivateEditor do not use facade anymore to avoid this special case handling #4539
562
        if(!(AbstractUtility.getActivePart() instanceof IDerivedUnitFacadePart)){
563
            derivedUnitGeneralDetailSection.setShowOnlyDerivedUnitData(true);
564
        }
565
        addPart(derivedUnitGeneralDetailSection);
566

    
567
        formFactory.createHorizontalSeparator(parent, SWT.BORDER);
568

    
569
        DerivedUnitBaseDetailSection derivedUnitBaseDetailSection = formFactory.createDerivedUnitBaseDetailSection(getConversationHolder(), parent, this, ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
570
        addPart(derivedUnitBaseDetailSection);
571

    
572
        //for editors working with facades
573
        if(AbstractUtility.getActivePart() instanceof IDerivedUnitFacadePart){
574
            formFactory.createHorizontalSeparator(parent, SWT.BORDER);
575
            GatheringEventDetailSection gatheringEventDetailSection = formFactory.createGatheringEventDetailSection(getConversationHolder(), parent, this, ExpandableComposite.TWISTIE);
576
            addPart(gatheringEventDetailSection);
577

    
578
            formFactory.createHorizontalSeparator(parent, SWT.BORDER);
579
            FieldUnitDetailSection fieldUnitDetailSection = formFactory.createFieldUnitDetailSection(getConversationHolder(), parent, this, ExpandableComposite.TWISTIE);
580
            addPart(fieldUnitDetailSection);
581
        }
582
        else{
583

    
584
            if(PreferencesUtil.getPreferenceStore().getBoolean(IPreferenceKeys.SHOW_TAXON_ASSOCIATIONS)){
585
                formFactory.createHorizontalSeparator(parent, SWT.BORDER);
586
                TaxonAssociationDetailSection taxonAssociationDetailSection = formFactory.createTaxonAssociationDetailSection(getConversationHolder(), parent, this, ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
587
                addPart(taxonAssociationDetailSection);
588
            }
589
            formFactory.createHorizontalSeparator(parent, SWT.BORDER);
590
            IdentifierDetailSection identifierDetailSection = formFactory.createIdentifierDetailSection(getConversationHolder(), parent, ExpandableComposite.TWISTIE);
591
            addPart(identifierDetailSection);
592
        }
593
        if(!PreferencesUtil.getPreferenceStore().getBoolean(IPreferenceKeys.DETERMINATION_ONLY_FOR_FIELD_UNITS)){
594
            formFactory.createHorizontalSeparator(parent, SWT.BORDER);
595
            DeterminationDetailSection determinationDetailSection = formFactory.createDeterminationDetailSection(getConversationHolder(), parent, this, ExpandableComposite.TWISTIE);
596
            addPart(determinationDetailSection);
597
        }
598

    
599
        formFactory.createHorizontalSeparator(parent, SWT.BORDER);
600
        DerivedUnitTypeDesignationSection derivedUnitTypeDesignationSection = formFactory.createDerivedUnitTypeDesignationSection(getConversationHolder(), parent, this, ExpandableComposite.TWISTIE);
601
        addPart(derivedUnitTypeDesignationSection);
602

    
603
    }
604

    
605
    private void createFieldUnitSection(RootElement parent) {
606
        destroySections();
607

    
608
        FieldUnitGeneralDetailSection fielUnitGeneralDetailSection = formFactory.createFieldUnitGeneralDetailSection(getConversationHolder(), parent, this, ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
609

    
610
        formFactory.createHorizontalSeparator(parent, SWT.BORDER);
611

    
612
        GatheringEventDetailSection gatheringEventDetailSection = formFactory.createGatheringEventDetailSection(getConversationHolder(), parent, this, ExpandableComposite.TWISTIE);
613

    
614
        formFactory.createHorizontalSeparator(parent, SWT.BORDER);
615

    
616
        FieldUnitDetailSection fieldUnitDetailSection = formFactory.createFieldUnitDetailSection(getConversationHolder(), parent, this, ExpandableComposite.TWISTIE);
617

    
618
        addPart(fielUnitGeneralDetailSection);
619
        addPart(gatheringEventDetailSection);
620
        addPart(fieldUnitDetailSection);
621

    
622
        if(PreferencesUtil.getPreferenceStore().getBoolean(IPreferenceKeys.DETERMINATION_ONLY_FOR_FIELD_UNITS)){
623
            formFactory.createHorizontalSeparator(parent, SWT.BORDER);
624
            DeterminationDetailSection determinationDetailSection = formFactory.createDeterminationDetailSection(getConversationHolder(), parent, this, ExpandableComposite.TWISTIE);
625
            addPart(determinationDetailSection);
626
        }
627
    }
628

    
629
    private void createTissueSampleSection(RootElement parent) {
630
        destroySections();
631

    
632
        TissueSampleGeneralDetailSection section = formFactory.createTissueSampleGeneralDetailSection(getConversationHolder(), parent, this, ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
633

    
634
        formFactory.createHorizontalSeparator(parent, SWT.BORDER);
635

    
636
        SampleDesignationDetailSection sampleDesignationDetailSection = formFactory.createSampleDesignationDetailSection(getConversationHolder(), parent, this, ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
637

    
638
        addPart(section);
639
        addPart(sampleDesignationDetailSection);
640
    }
641

    
642
    private void createDnaSampleSection(RootElement parent) {
643
        destroySections();
644

    
645
        DnaSampleGeneralDetailSection section = formFactory.createDnaSampleGeneralDetailSection(getConversationHolder(), parent, this, ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
646

    
647
        formFactory.createHorizontalSeparator(parent, SWT.BORDER);
648

    
649
        DnaSamplePreparationPreservationSection preparationPreservationSection = formFactory.createDnaSamplePreparationPreservationSection(getConversationHolder(), parent, this, ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
650

    
651
        formFactory.createHorizontalSeparator(parent, SWT.BORDER);
652

    
653
        DnaQualityDetailSection qualitySection = formFactory.createDnaQualityDetailSection(getConversationHolder(), parent, this, ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
654

    
655
        formFactory.createHorizontalSeparator(parent, SWT.BORDER);
656

    
657
        SampleDesignationDetailSection sampleDesignationDetailSection = formFactory.createSampleDesignationDetailSection(getConversationHolder(), parent, this, ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
658

    
659
        addPart(section);
660
        addPart(preparationPreservationSection);
661
        addPart(qualitySection);
662
        addPart(sampleDesignationDetailSection);
663
    }
664

    
665
    private void createSequenceSection(RootElement parent) {
666
        destroySections();
667

    
668
        SequenceGeneralDetailSection section = formFactory.createSequenceGeneralDetailSection(getConversationHolder(), parent, this, ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
669

    
670
        formFactory.createHorizontalSeparator(parent, SWT.BORDER);
671

    
672
        SequenceReferenceCollectionDetailSection referenceSection = formFactory.createSequenceReferenceCollectionDetailSection(getConversationHolder(), parent, ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
673

    
674
        formFactory.createHorizontalSeparator(parent, SWT.BORDER);
675

    
676
        SequenceContigFileCollectionDetailSection contigFileSection = formFactory.createSequenceContigFileCollectionDetailSection(getConversationHolder(), parent, ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
677

    
678

    
679
        addPart(section);
680
        addPart(referenceSection);
681
        addPart(contigFileSection);
682
    }
683

    
684
    private void createSingleReadSection(RootElement parent) {
685
        destroySections();
686

    
687
        SingleReadGeneralDetailSection section = formFactory.createSingleReadGeneralDetailSection(getConversationHolder(), parent, this, ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
688
        addPart(section);
689

    
690
        formFactory.createHorizontalSeparator(parent, SWT.BORDER);
691

    
692
        SingleReadPherogramCollectionDetailSection pherogramSection = formFactory.createSingleReadPherogramCollectionDetailSection(getConversationHolder(), parent, ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
693
        addPart(pherogramSection);
694

    
695
    }
696

    
697
    private void createMediaSpecimenSection(RootElement parent) {
698
        destroySections();
699

    
700
        MediaSpecimenGeneralDetailSection generalSection = formFactory.createMediaSpecimenGeneralDetailSection(getConversationHolder(), parent, this, ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
701
        addPart(generalSection);
702

    
703
        formFactory.createHorizontalSeparator(parent, SWT.BORDER);
704

    
705
        RightsSection rightsSection = formFactory.createRightsSection(getConversationHolder(), parent, ExpandableComposite.TWISTIE);
706
        addPart(rightsSection);
707

    
708
    }
709

    
710
    private void createFeatureDistributionSection(RootElement parent) {
711
        destroySections();
712

    
713
        FeatureDistributionDetailSection featureDistributionSection = formFactory.createFeatureDistributionDetailSection(getConversationHolder(), parent, this, ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
714

    
715
        addPart(featureDistributionSection);
716
    }
717

    
718
    private void createPolytomousKeyNodeSection(RootElement parent) {
719
        destroySections();
720

    
721
        PolytomousKeyDetailSection polytomousKeyDetailSection = formFactory.createPolytomousKeyDetailSection(getConversationHolder(), parent, this, ExpandableComposite.TWISTIE);
722

    
723
        formFactory.createHorizontalSeparator(parent, SWT.BORDER);
724

    
725
        PolytomousKeyNodeDetailSection polytomousKeyNodeDetailSection = formFactory.createPolytomousKeyNodeDetailSection(getConversationHolder(), parent, this, ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
726

    
727
        addPart(polytomousKeyDetailSection);
728
        addPart(polytomousKeyNodeDetailSection);
729

    
730
    }
731

    
732
    private void createUseRecordSection(RootElement parent) {
733
        destroySections();
734

    
735
        UseRecordDetailSection descriptionUseRecordSection = formFactory.createUseRecordDetailSection(getConversationHolder(), parent, this,ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
736

    
737
        formFactory.createHorizontalSeparator(parent, SWT.BORDER);
738

    
739
        addPart(descriptionUseRecordSection);
740

    
741

    
742
    }
743

    
744
    private void createUserSection(RootElement parent) {
745
        destroySections();
746

    
747
        UserDetailSection userDetailSection = formFactory.createUserDetailSection(getConversationHolder(), parent, this, ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
748

    
749
        GroupsByUserDetailSection groupByUserDetailSection = formFactory.createGroupsByUserDetailSection(getConversationHolder(), parent, ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
750

    
751
        addPart(userDetailSection);
752
        addPart(groupByUserDetailSection);
753
    }
754

    
755
    private void createTaxonRelationshipSection(RootElement parent) {
756
        destroySections();
757

    
758
        TaxonRelationshipDetailSection taxonRelationshipDetailSection = formFactory.createTaxonRelationshipDetailSection(getConversationHolder(), parent, this, ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
759

    
760
        ReferencedEntityDetailSection referencedEntityBaseDetailSection = formFactory.createReferencedEntityDetailSection(getConversationHolder(), parent, this, ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
761
        addPart(taxonRelationshipDetailSection);
762
        addPart(referencedEntityBaseDetailSection);
763
    }
764

    
765
    private void createTermVocabularySection(RootElement parent) {
766
        destroySections();
767

    
768
        TermVocabularyDetailSection termVocabularyDetailSection = formFactory.createTermVocabularyDetailSection(getConversationHolder(), parent, this, ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
769
        addPart(termVocabularyDetailSection);
770
    }
771

    
772
    private void createDefinedTermSection(RootElement parent) {
773
        destroySections();
774

    
775
        AbstractFormSection<?> definedTermDetailSection = formFactory.createDefinedTermDetailSection(getInput().getClass(), getConversationHolder(), parent, this, ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
776
        addPart(definedTermDetailSection);
777
    }
778

    
779
}
(3-3/3)