Project

General

Profile

Download (49.9 KB) Statistics
| Branch: | Tag: | Revision:
1
/**
2
 * Copyright (C) 2011 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

    
10
package eu.etaxonomy.taxeditor.view.e4.details;
11

    
12
import java.util.HashSet;
13
import java.util.Set;
14

    
15
import javax.inject.Inject;
16

    
17
import org.eclipse.e4.core.di.annotations.Optional;
18
import org.eclipse.e4.ui.di.UIEventTopic;
19
import org.eclipse.jface.viewers.ISelection;
20
import org.eclipse.jface.viewers.IStructuredSelection;
21
import org.eclipse.jface.viewers.SelectionChangedEvent;
22
import org.eclipse.jface.viewers.TreeNode;
23
import org.eclipse.swt.SWT;
24

    
25
import eu.etaxonomy.cdm.api.facade.DerivedUnitFacade;
26
import eu.etaxonomy.cdm.api.facade.DerivedUnitFacadeNotSupportedException;
27
import eu.etaxonomy.cdm.ext.occurrence.gbif.GbifResponse;
28
import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
29
import eu.etaxonomy.cdm.model.agent.Person;
30
import eu.etaxonomy.cdm.model.agent.Team;
31
import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase;
32
import eu.etaxonomy.cdm.model.common.Group;
33
import eu.etaxonomy.cdm.model.common.Marker;
34
import eu.etaxonomy.cdm.model.common.User;
35
import eu.etaxonomy.cdm.model.description.CategoricalData;
36
import eu.etaxonomy.cdm.model.description.Character;
37
import eu.etaxonomy.cdm.model.description.DescriptionBase;
38
import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
39
import eu.etaxonomy.cdm.model.description.Distribution;
40
import eu.etaxonomy.cdm.model.description.PolytomousKeyNode;
41
import eu.etaxonomy.cdm.model.description.SpecimenDescription;
42
import eu.etaxonomy.cdm.model.description.TaxonDescription;
43
import eu.etaxonomy.cdm.model.media.Media;
44
import eu.etaxonomy.cdm.model.molecular.DnaSample;
45
import eu.etaxonomy.cdm.model.molecular.Sequence;
46
import eu.etaxonomy.cdm.model.molecular.SingleRead;
47
import eu.etaxonomy.cdm.model.name.TaxonName;
48
import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;
49
import eu.etaxonomy.cdm.model.occurrence.FieldUnit;
50
import eu.etaxonomy.cdm.model.occurrence.MediaSpecimen;
51
import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationType;
52
import eu.etaxonomy.cdm.model.reference.Reference;
53
import eu.etaxonomy.cdm.model.taxon.TaxonBase;
54
import eu.etaxonomy.cdm.model.taxon.TaxonRelationship;
55
import eu.etaxonomy.cdm.model.term.DefinedTermBase;
56
import eu.etaxonomy.cdm.model.term.FeatureNode;
57
import eu.etaxonomy.cdm.model.term.FeatureTree;
58
import eu.etaxonomy.cdm.model.term.TermVocabulary;
59
import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap;
60
import eu.etaxonomy.taxeditor.editor.IDistributionEditor;
61
import eu.etaxonomy.taxeditor.event.WorkbenchEventConstants;
62
import eu.etaxonomy.taxeditor.l10n.Messages;
63
import eu.etaxonomy.taxeditor.model.AbstractUtility;
64
import eu.etaxonomy.taxeditor.model.FeatureNodeContainer;
65
import eu.etaxonomy.taxeditor.model.IDerivedUnitFacadePart;
66
import eu.etaxonomy.taxeditor.model.MessagingUtils;
67
import eu.etaxonomy.taxeditor.model.PolytomousKeyRelationship;
68
import eu.etaxonomy.taxeditor.preference.NameDetailsConfigurator;
69
import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
70
import eu.etaxonomy.taxeditor.store.StoreUtil;
71
import eu.etaxonomy.taxeditor.store.UsageTermCollection;
72
import eu.etaxonomy.taxeditor.ui.element.RootElement;
73
import eu.etaxonomy.taxeditor.ui.section.agent.PersonDetailSection;
74
import eu.etaxonomy.taxeditor.ui.section.agent.TeamDetailSection;
75
import eu.etaxonomy.taxeditor.ui.section.agent.TeamOrPersonBaseDetailSection;
76
import eu.etaxonomy.taxeditor.ui.section.common.ReferencedEntityDetailSection;
77
import eu.etaxonomy.taxeditor.ui.section.description.DescriptionDetailSection;
78
import eu.etaxonomy.taxeditor.ui.section.description.DescriptionElementDetailSection;
79
import eu.etaxonomy.taxeditor.ui.section.description.DescriptionElementMediaSection;
80
import eu.etaxonomy.taxeditor.ui.section.description.DescriptionElementSourceSection;
81
import eu.etaxonomy.taxeditor.ui.section.description.DescriptionSourceSection;
82
import eu.etaxonomy.taxeditor.ui.section.description.MediaDetailsSection;
83
import eu.etaxonomy.taxeditor.ui.section.description.NaturalLanguageSection;
84
import eu.etaxonomy.taxeditor.ui.section.description.ScopeSection;
85
import eu.etaxonomy.taxeditor.ui.section.feature.CharacterDetailSection;
86
import eu.etaxonomy.taxeditor.ui.section.feature.FeatureDistributionDetailSection;
87
import eu.etaxonomy.taxeditor.ui.section.feature.FeatureNodeDetailSection;
88
import eu.etaxonomy.taxeditor.ui.section.feature.FeatureTreeDetailSection;
89
import eu.etaxonomy.taxeditor.ui.section.grantedAuthority.GrantedAuthorityDetailSection;
90
import eu.etaxonomy.taxeditor.ui.section.group.GroupDetailSection;
91
import eu.etaxonomy.taxeditor.ui.section.group.MemberDetailSection;
92
import eu.etaxonomy.taxeditor.ui.section.key.PolytomousKeyDetailSection;
93
import eu.etaxonomy.taxeditor.ui.section.key.PolytomousKeyNodeDetailSection;
94
import eu.etaxonomy.taxeditor.ui.section.name.NameRelationshipDetailSection;
95
import eu.etaxonomy.taxeditor.ui.section.name.NomenclaturalStatusSection;
96
import eu.etaxonomy.taxeditor.ui.section.name.NonViralNameDetailSection;
97
import eu.etaxonomy.taxeditor.ui.section.name.ProtologueSection;
98
import eu.etaxonomy.taxeditor.ui.section.name.TypeDesignationSection;
99
import eu.etaxonomy.taxeditor.ui.section.occurrence.DerivedUnitBaseDetailSection;
100
import eu.etaxonomy.taxeditor.ui.section.occurrence.DerivedUnitGeneralDetailSection;
101
import eu.etaxonomy.taxeditor.ui.section.occurrence.DeterminationDetailSection;
102
import eu.etaxonomy.taxeditor.ui.section.occurrence.FieldUnitDetailSection;
103
import eu.etaxonomy.taxeditor.ui.section.occurrence.FieldUnitGeneralDetailSection;
104
import eu.etaxonomy.taxeditor.ui.section.occurrence.GatheringEventDetailSection;
105
import eu.etaxonomy.taxeditor.ui.section.occurrence.association.DerivedUnitTypeDesignationSection;
106
import eu.etaxonomy.taxeditor.ui.section.occurrence.association.TaxonAssociationDetailSection;
107
import eu.etaxonomy.taxeditor.ui.section.occurrence.dna.DnaQualityDetailSection;
108
import eu.etaxonomy.taxeditor.ui.section.occurrence.dna.DnaSampleGeneralDetailSection;
109
import eu.etaxonomy.taxeditor.ui.section.occurrence.dna.DnaSamplePreparationPreservationSection;
110
import eu.etaxonomy.taxeditor.ui.section.occurrence.dna.SampleDesignationDetailSection;
111
import eu.etaxonomy.taxeditor.ui.section.occurrence.dna.SequenceContigFileCollectionDetailSection;
112
import eu.etaxonomy.taxeditor.ui.section.occurrence.dna.SequenceGeneralDetailSection;
113
import eu.etaxonomy.taxeditor.ui.section.occurrence.dna.SequenceReferenceCollectionDetailSection;
114
import eu.etaxonomy.taxeditor.ui.section.occurrence.dna.SingleReadGeneralDetailSection;
115
import eu.etaxonomy.taxeditor.ui.section.occurrence.dna.SingleReadPherogramCollectionDetailSection;
116
import eu.etaxonomy.taxeditor.ui.section.occurrence.dna.TissueSampleGeneralDetailSection;
117
import eu.etaxonomy.taxeditor.ui.section.occurrence.media.MediaSpecimenGeneralDetailSection;
118
import eu.etaxonomy.taxeditor.ui.section.reference.NomenclaturalReferenceDetailSection;
119
import eu.etaxonomy.taxeditor.ui.section.reference.ReferenceDetailSection;
120
import eu.etaxonomy.taxeditor.ui.section.supplemental.RightsSection;
121
import eu.etaxonomy.taxeditor.ui.section.supplemental.identifier.DerivedUnitFacadeIdentifierSection;
122
import eu.etaxonomy.taxeditor.ui.section.taxon.ParsingMessagesSection;
123
import eu.etaxonomy.taxeditor.ui.section.taxon.TaxonBaseDetailSection;
124
import eu.etaxonomy.taxeditor.ui.section.taxon.TaxonRelationshipDetailSection;
125
import eu.etaxonomy.taxeditor.ui.section.user.GroupsByUserDetailSection;
126
import eu.etaxonomy.taxeditor.ui.section.user.UserDetailSection;
127
import eu.etaxonomy.taxeditor.ui.section.userecords.UseRecordDetailSection;
128
import eu.etaxonomy.taxeditor.ui.section.vocabulary.DefinedTermDetailSection;
129
import eu.etaxonomy.taxeditor.ui.section.vocabulary.TermMediaSection;
130
import eu.etaxonomy.taxeditor.ui.section.vocabulary.TermVocabularyDetailSection;
131
import eu.etaxonomy.taxeditor.view.e4.AbstractCdmDataViewerE4;
132

    
133
/**
134
 *
135
 * The DetailsViewer handles the content of the details view (
136
 * {@link DetailsPartE4}).<br>
137
 * Depending on the type of the selected element the section of the details view
138
 * are created.
139
 *
140
 * @author pplitzner
141
 * @date 18.07.2017
142
 *
143
 */
144
public class DetailsViewerE4 extends AbstractCdmDataViewerE4 {
145

    
146
    private ISelection selection;
147
    private boolean detailsEnabled = true;
148

    
149
    public boolean isDetailsEnabled() {
150
		return detailsEnabled;
151
	}
152

    
153
	public void setDetailsEnabled(boolean detailsEnabled) {
154
		this.detailsEnabled = detailsEnabled;
155
	}
156

    
157
	public void setInput(Object input, Object activePart) {
158
        if (activePart instanceof IDistributionEditor){
159
            detailsEnabled = false;
160
        }else{
161
            detailsEnabled = true;
162
        }
163
        setInput(input);
164

    
165
    }
166
    // START HACK TO MAKE THE DERIVED UNIT FACADE WORK
167
    // since we are getting implementations of DerivedUnitBase from the bulk
168
    // editor
169
    // and not derived unit facade objects,
170

    
171
    @Override
172
    public void setInput(Object input) {
173

    
174
        if(input instanceof TreeNode){
175
            input = ((TreeNode) input).getValue();
176
        }
177
        if(input instanceof GbifResponse){
178
            input = ((GbifResponse) input).getDerivedUnitFacade();
179
        }
180
        if(input instanceof FeatureNode
181
                && HibernateProxyHelper.isInstanceOf(((FeatureNode) input).getTerm(), Character.class)){
182
            input = HibernateProxyHelper.deproxy(((FeatureNode) input).getTerm(), Character.class);
183
        }
184
        if (input !=null && input.getClass().equals(DerivedUnit.class)) {
185
            DerivedUnit derivedUnit = (DerivedUnit)input;
186
            try {
187
                input = DerivedUnitFacade.NewInstance(derivedUnit,
188
                        PreferencesUtil.getDerivedUnitConfigurator());
189
            } catch (DerivedUnitFacadeNotSupportedException e) {
190
                //                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
191
            }
192
        }
193
        else if(input instanceof FieldUnit){
194
            input = DerivedUnitFacade.NewInstance(SpecimenOrObservationType.FieldUnit, (FieldUnit) input);
195
        }
196
        super.setInput(input);
197
    }
198

    
199
    @Override
200
    protected void markViewPartDirty() {
201
        if (getInput() instanceof DerivedUnitFacade) {
202
            if(part instanceof IDerivedUnitFacadePart){
203
                part.changed(getInput());
204
            }
205
            else{
206
                DerivedUnitFacade facade = (DerivedUnitFacade) getInput();
207
                if(facade.innerDerivedUnit()!=null){
208
                    part.changed(facade.innerDerivedUnit());
209
                }
210
                else if(facade.innerFieldUnit()!=null){
211
                    part.changed(facade.innerFieldUnit());
212
                }
213
            }
214
        }
215
        else{
216
            super.markViewPartDirty();
217
        }
218
    }
219

    
220
    /** {@inheritDoc} */
221
    @Override
222
    protected void showParts() {
223
        // FIXME (CM) : Need to clean out this code.
224
        // Too much type checking to decide which detail view to display.
225
        // Need to build in a mechanism where navigators / editors are 'aware'
226
        // of the corresponding detail viewer.
227

    
228
        Object input = getInput();
229
        if (input == null){
230
            return;
231
        }
232
        destroySections();
233
        if (input instanceof TaxonBase) {
234
            if(((TaxonBase) input).getName()==null){
235
                createEmptySection(Messages.DetailsViewerE4_TAXON_HAS_NO_NAME, rootElement);
236
            }
237
            else{
238
                createTaxonSections(rootElement);
239
            }
240

    
241
        } else if (input instanceof TaxonName) {
242
            createNameSections(rootElement);
243

    
244
        } else if (input instanceof Reference) {
245
            createReferenceSections(rootElement);
246

    
247
        } else if (input instanceof Team) {
248
            createTeamDetailSection(rootElement);
249

    
250
        } else if (input instanceof Person) {
251
            createPersonDetailSection(rootElement);
252

    
253
        } else if (input instanceof TeamOrPersonBase) {
254
            createTeamOrPersonBaseDetailSection(rootElement);
255

    
256
        } else if (input instanceof DescriptionBase) {
257
            if(input instanceof SpecimenDescription){
258
                //TODO: add more sections to DetailsView for SpecimenDescription
259
                createSpecimenDescriptionSection(rootElement);
260
            }
261
            else{
262
                Set<Marker> descriptionMarkers = ((DescriptionBase<?>) input).getMarkers();
263

    
264
                Boolean isUseDescription = false;
265
                for (Marker marker : descriptionMarkers) {
266
                    if (marker.getMarkerType()!= null && marker.getMarkerType().getUuid().equals(UsageTermCollection.uuidUseMarkerType)) {
267
                        isUseDescription = true;
268
                    }
269
                }
270
                if (((DescriptionBase<?>) input).isImageGallery()) {
271
                    createImageGallerySection(rootElement);
272

    
273
                } else if (isUseDescription) {
274
                    createUseDescriptionSection(rootElement);
275
                } else if (input instanceof TaxonDescription){
276
                    createTaxonDescriptionSection(rootElement);
277

    
278
                } else{
279
                    createDescriptionSection(rootElement, false);
280
                }
281
            }
282
        } else if (input instanceof DescriptionElementBase){
283
            Set<Marker> descriptionMarkers = new HashSet<>();
284
            if(((DescriptionElementBase) input).getInDescription()!=null) {
285
                descriptionMarkers = ((DescriptionElementBase) input).getInDescription().getMarkers();
286
            }
287

    
288
            Boolean isUseDescription = false;
289
            for (Marker marker : descriptionMarkers) {
290
                if (marker.getMarkerType()!= null && marker.getMarkerType().getUuid().equals(UsageTermCollection.uuidUseMarkerType)) {
291
                    isUseDescription = true;
292
                }
293
            }
294

    
295
            if (isUseDescription == true && input instanceof CategoricalData) {
296
                createUseRecordSection(rootElement);
297
            } else {
298
                createDescriptionElementSection(rootElement);
299
            }
300

    
301
        } else if (input instanceof Media) {
302
            createMediaElementSection(rootElement);
303

    
304
        }
305
        //FIXME hack to show more informative message to the user when
306
        //DerivedUnit has more than one FieldUnit #4363
307
        else if (input.getClass().equals(DerivedUnit.class)) {
308
            DerivedUnit derivedUnit = (DerivedUnit)input;
309
            try {
310
                input = DerivedUnitFacade.NewInstance(derivedUnit,
311
                        PreferencesUtil.getDerivedUnitConfigurator());
312
            } catch (DerivedUnitFacadeNotSupportedException e) {
313
                createEmptySection(e.getMessage(), rootElement);
314
            }
315
        }
316
        else if (input instanceof DerivedUnitFacade) {
317
            if(((DerivedUnitFacade) input).getType()==SpecimenOrObservationType.FieldUnit){
318
                if(((DerivedUnitFacade) input).innerFieldUnit()==null){
319
                    MessagingUtils.error(DetailsViewerE4.class, "FieldUnit of facade is null", null); //$NON-NLS-1$
320
                }
321
                else{
322
                    createFieldUnitSection(rootElement);
323
                }
324
            }
325
            else if(((DerivedUnitFacade) input).getType()==SpecimenOrObservationType.PreservedSpecimen){
326
                if(((DerivedUnitFacade) input).innerDerivedUnit()==null){
327
                    MessagingUtils.error(DetailsViewerE4.class, "DerivedUnit of facade is null", null); //$NON-NLS-1$
328
                }
329
                else{
330
                    createDerivedUnitBaseElementSection(rootElement);
331
                }
332
            }
333
            else if(((DerivedUnitFacade) input).getType()==SpecimenOrObservationType.TissueSample){
334
                //TissueSample should only be created by using it's own class
335
                //in future using only one class with different SpecimenOrObservationTypes is desired
336
                createTissueSampleSection(rootElement);
337
            }
338
            else{
339
                createDerivedUnitBaseElementSection(rootElement);
340
            }
341
        } else if (input instanceof DnaSample){
342
            DnaSample dnaSample = (DnaSample)input;
343
            if(dnaSample.getRecordBasis()==SpecimenOrObservationType.TissueSample){
344
                createTissueSampleSection(rootElement);
345
            }
346
            else if(dnaSample.getRecordBasis()==SpecimenOrObservationType.DnaSample){
347
                createDnaSampleSection(rootElement);
348
            }
349
        } else if (input instanceof MediaSpecimen){
350
            createMediaSpecimenSection(rootElement);
351
        }
352
        else if(input instanceof Sequence){
353
            createSequenceSection(rootElement);
354
        }
355
        else if(input instanceof SingleRead){
356
            createSingleReadSection(rootElement);
357
        }
358
        else if (input instanceof FeatureNodeContainer) {
359
            createFeatureDistributionSection(rootElement);
360

    
361
        } else if (input instanceof FeatureNode) {
362
            createFeatureNodeSection(rootElement);
363

    
364
        } else if (input instanceof FeatureTree) {
365
            createFeatureTreeSection(rootElement);
366

    
367
        } else if (input instanceof Character) {
368
            createCharacterSection(rootElement);
369

    
370
        }else if ((input instanceof PolytomousKeyNode) || (input instanceof PolytomousKeyRelationship)) {
371
            createPolytomousKeyNodeSection(rootElement);
372
        } else if (input instanceof User) {
373
            createUserSection(rootElement);
374
        } else if (input instanceof Group) {
375
            createGroupSection(rootElement);
376
        } else if (input instanceof TaxonRelationship && ((TaxonRelationship)input).getType()!=null
377
                && (((TaxonRelationship)input).getType().isAnyMisappliedName() || ((TaxonRelationship)input).getType().isAnySynonym() || ((TaxonRelationship)input).getType().isMisappliedNameOrInvalidDesignation())){
378
            createMisappliedNameSection(rootElement);
379
        }else if (input instanceof TaxonRelationship ) {
380
            createTaxonRelationshipSection(rootElement);
381
        } else if (input instanceof TermVocabulary) {
382
            createTermVocabularySection(rootElement);
383
        } else if (input instanceof DefinedTermBase) {
384
            createDefinedTermSection(rootElement);
385

    
386
        } else if (input instanceof SelectionChangedEvent ) {
387
            IStructuredSelection sel =(IStructuredSelection) ((SelectionChangedEvent)input).getSelection();
388
            if (sel.getFirstElement()instanceof Distribution){
389
                createDescriptionElementSection(rootElement);
390
            }
391

    
392
//            createDescriptionElementSection(rootElement);
393

    
394
        }else {
395
            createEmptySection(null, rootElement);
396
        }
397
        layout();
398

    
399
    }
400

    
401
    private void createGroupSection(RootElement parent) {
402
        GroupDetailSection groupDetailSection = formFactory.createGroupDetailSection(getConversationHolder(), parent, this, StoreUtil.getSectionStyle(GroupDetailSection.class, getInput().getClass().getCanonicalName()));
403
        MemberDetailSection memberDetailSection = formFactory.createMemberDetailSection(getConversationHolder(), parent, StoreUtil.getSectionStyle(MemberDetailSection.class, getInput().getClass().getCanonicalName()));
404
        GrantedAuthorityDetailSection grantedAuthorityDetailSection = formFactory.createGrantedAuthorityDetailSection(getConversationHolder(), parent,StoreUtil.getSectionStyle(GrantedAuthorityDetailSection.class, getInput().getClass().getCanonicalName()));
405

    
406
        addPart(groupDetailSection);
407
        addPart(memberDetailSection);
408
        addPart(grantedAuthorityDetailSection);
409
    }
410

    
411
    /** {@inheritDoc} */
412
    @Override
413
    public ISelection getSelection() {
414
        return selection;
415
    }
416

    
417
    /** {@inheritDoc} */
418
    @Override
419
    public void setSelection(ISelection selection, boolean reveal) {
420

    
421
        this.selection = selection;
422

    
423
        if(this.selection!=null){
424
            SelectionChangedEvent selectionChangedEvent = new SelectionChangedEvent(this, selection);
425
            fireSelectionChanged(selectionChangedEvent);
426
        }
427

    
428
    }
429

    
430
    private void createTaxonSections(RootElement parent) {
431
        NameDetailsConfigurator config = PreferencesUtil.getPreferredNameDetailsConfiguration();
432
        ParsingMessagesSection parsingMessagesSection = formFactory.createParsingMessagesSection(getConversationHolder(), parent, this,
433
                StoreUtil.getSectionStyle(ParsingMessagesSection.class, getInput().getClass().getCanonicalName(), true));
434
        if (!config.isSimpleDetailsViewActivated()){
435
            TaxonBaseDetailSection taxonBaseDetailSection = formFactory.createTaxonBaseDetailSection(getConversationHolder(), parent, this,
436
                    StoreUtil.getSectionStyle(TaxonBaseDetailSection.class, getInput().getClass().getCanonicalName(), true));
437
            formFactory.createHorizontalSeparator(parent, SWT.BORDER);
438
            addPart(taxonBaseDetailSection);
439
        }else{
440
            if (config.isTaxonSectionActivated()){
441
                TaxonBaseDetailSection taxonBaseDetailSection = formFactory.createTaxonBaseDetailSection(getConversationHolder(), parent, this,
442
                        StoreUtil.getSectionStyle(TaxonBaseDetailSection.class, getInput().getClass().getCanonicalName(), true));
443
                formFactory.createHorizontalSeparator(parent, SWT.BORDER);
444
                addPart(taxonBaseDetailSection);
445
            }
446
        }
447
        NonViralNameDetailSection nonViralNameSection = formFactory
448
                .createNonViralNameDetailSection(getConversationHolder(), parent, this, true,
449
                        StoreUtil.getSectionStyle(NonViralNameDetailSection.class, getInput().getClass().getCanonicalName(), true));
450
        formFactory.createHorizontalSeparator(parent, SWT.BORDER);
451
        if (!config.isSimpleDetailsViewActivated() || (config.isSimpleDetailsViewActivated() && config.isNomenclaturalReferenceSectionActivated())){
452
            NomenclaturalReferenceDetailSection referenceDetailSection = formFactory.createNomenclaturalReferenceDetailSection(getConversationHolder(), parent, this,
453
                    StoreUtil.getSectionStyle(NomenclaturalReferenceDetailSection.class, getInput().getClass().getCanonicalName(), true));
454
            formFactory.createHorizontalSeparator(parent, SWT.BORDER);
455
            addPart(referenceDetailSection);
456

    
457
        }
458
        if ( !config.isSimpleDetailsViewActivated() || (config.isSimpleDetailsViewActivated() && config.isNomenclaturalStatusSectionActivated())){
459
            NomenclaturalStatusSection nomenclaturalStatusSection = formFactory.createNomenclaturalStatusSection(getConversationHolder(), parent,
460
                    StoreUtil.getSectionStyle(NomenclaturalStatusSection.class, getInput().getClass().getCanonicalName(), true));
461
            formFactory.createHorizontalSeparator(parent, SWT.BORDER);
462
            addPart(nomenclaturalStatusSection);
463
        }
464

    
465
        if ( !config.isSimpleDetailsViewActivated() || (config.isSimpleDetailsViewActivated() && config.isProtologueActivated())){
466
            ProtologueSection protologSection = formFactory.createProtologueSection(getConversationHolder(), parent, StoreUtil.getSectionStyle(ProtologueSection.class, getInput().getClass().getCanonicalName()));
467
            formFactory.createHorizontalSeparator(parent, SWT.BORDER);
468
            addPart(protologSection);
469
        }
470

    
471
        if (!config.isSimpleDetailsViewActivated() || (config.isSimpleDetailsViewActivated() && config.isTypeDesignationSectionActivated())){
472
            TypeDesignationSection typeDesignationSection = formFactory.createTypeDesignationSection(getConversationHolder(), parent, StoreUtil.getSectionStyle(TypeDesignationSection.class, getInput().getClass().getCanonicalName()));
473
            formFactory.createHorizontalSeparator(parent, SWT.BORDER);
474
            addPart(typeDesignationSection);
475
        }
476

    
477
        if (!config.isSimpleDetailsViewActivated() || (config.isSimpleDetailsViewActivated() &&config.isNameRelationsSectionActivated())){
478
            NameRelationshipDetailSection nameRelationshipSection = formFactory.createNameRelationshipDetailSection(getConversationHolder(), parent, StoreUtil.getSectionStyle(NameRelationshipDetailSection.class, getInput().getClass().getCanonicalName()));
479
            formFactory.createHorizontalSeparator(parent, SWT.BORDER);
480
            addPart(nameRelationshipSection);
481
        }
482

    
483

    
484
        addPart(parsingMessagesSection);
485

    
486
        addPart(nonViralNameSection);
487

    
488
    }
489

    
490
    private void createNameSections(RootElement parent) {
491
        NonViralNameDetailSection nonViralNameSection = formFactory.createNonViralNameDetailSection(
492
                getConversationHolder(), parent, this, false, StoreUtil.getSectionStyle(NonViralNameDetailSection.class, getInput().getClass().getCanonicalName(), true));
493

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

    
496
        NomenclaturalReferenceDetailSection referenceDetailSection = formFactory.createNomenclaturalReferenceDetailSection(getConversationHolder(), parent, this,
497
                StoreUtil.getSectionStyle(NomenclaturalReferenceDetailSection.class, getInput().getClass().getCanonicalName(), true));
498
        formFactory.createHorizontalSeparator(parent, SWT.BORDER);
499

    
500
        NomenclaturalStatusSection nomenclaturalStatusSection = formFactory.createNomenclaturalStatusSection(getConversationHolder(), parent,
501
                StoreUtil.getSectionStyle(NomenclaturalStatusSection.class, getInput().getClass().getCanonicalName(), true));
502
        formFactory.createHorizontalSeparator(parent, SWT.BORDER);
503

    
504
        addPart(nonViralNameSection);
505
        addPart(nomenclaturalStatusSection);
506
        addPart(referenceDetailSection);
507

    
508
        ProtologueSection protologSection = formFactory.createProtologueSection(getConversationHolder(), parent, StoreUtil.getSectionStyle(ProtologueSection.class, getInput().getClass().getCanonicalName()));
509
        formFactory.createHorizontalSeparator(parent, SWT.BORDER);
510

    
511
        TypeDesignationSection typeDesignationSection = formFactory.createTypeDesignationSection(getConversationHolder(), parent, StoreUtil.getSectionStyle(TypeDesignationSection.class, getInput().getClass().getCanonicalName()));
512
        formFactory.createHorizontalSeparator(parent, SWT.BORDER);
513

    
514
        NameRelationshipDetailSection nameRelationshipSection = formFactory.createNameRelationshipDetailSection(getConversationHolder(), parent, StoreUtil.getSectionStyle(NameRelationshipDetailSection.class, getInput().getClass().getCanonicalName()));
515
        formFactory.createHorizontalSeparator(parent, SWT.BORDER);
516
        addPart(protologSection);
517
        addPart(typeDesignationSection);
518
        addPart(nameRelationshipSection);
519

    
520
    }
521

    
522
    private void createReferenceSections(RootElement parent) {
523
        ReferenceDetailSection referenceDetailSection = formFactory.createReferenceDetailSection(getConversationHolder(), parent, this,
524
                StoreUtil.getSectionStyle(ReferenceDetailSection.class, getInput().getClass().getCanonicalName(), true));
525

    
526
        addPart(referenceDetailSection);
527
    }
528

    
529
    private void createTeamOrPersonBaseDetailSection(RootElement parent) {
530
        TeamOrPersonBaseDetailSection teamOrPersonBaseDetailSection = formFactory.createTeamOrPersonBaseDetailSection(getConversationHolder(), parent, this, StoreUtil.getSectionStyle(TeamOrPersonBaseDetailSection.class, getInput().getClass().getCanonicalName(), true));
531

    
532
        addPart(teamOrPersonBaseDetailSection);
533
    }
534

    
535
    private void createTeamDetailSection(RootElement parent) {
536
        TeamDetailSection teamDetailSection = formFactory.createTeamDetailSection(getConversationHolder(), parent, StoreUtil.getSectionStyle(TeamDetailSection.class, getInput().getClass().getCanonicalName(), true));
537

    
538
        addPart(teamDetailSection);
539
    }
540

    
541
    private void createPersonDetailSection(RootElement parent) {
542
        PersonDetailSection personDetailSection = formFactory.createPersonDetailSection(getConversationHolder(), parent, StoreUtil.getSectionStyle(PersonDetailSection.class, getInput().getClass().getCanonicalName(), true));
543
        addPart(personDetailSection);
544
    }
545

    
546
    private void createDescriptionElementSection(RootElement parent) {
547
        DescriptionElementDetailSection descriptionElementDetailSection = formFactory.createDescriptionElementDetailSection(getConversationHolder(), parent, this, StoreUtil.getSectionStyle(DescriptionElementDetailSection.class, getInput().getClass().getCanonicalName(), true));
548
        descriptionElementDetailSection.setEnabled(this.detailsEnabled);
549

    
550
        //  IntextReferenceSection intextReferenceSection = formFactory.createIntextReferenceSection(getConversationHolder(), parent,  getSectionStyle(.class, getInput().getClass().getCanonicalName()));
551

    
552
        formFactory.createHorizontalSeparator(parent, SWT.BORDER);
553

    
554
        DescriptionElementSourceSection descriptionElementSourceSection = formFactory.createDescriptionElementSourceSection(getConversationHolder(), parent, StoreUtil.getSectionStyle(DescriptionElementSourceSection.class, getInput().getClass().getCanonicalName()));
555

    
556
        formFactory.createHorizontalSeparator(parent, SWT.BORDER);
557

    
558
        DescriptionElementMediaSection descriptionElementMediaSection = formFactory.createDescriptionElementMediaSection(getConversationHolder(), parent, StoreUtil.getSectionStyle(DescriptionElementMediaSection.class, getInput().getClass().getCanonicalName()));
559

    
560
        formFactory.createHorizontalSeparator(parent, SWT.BORDER);
561

    
562
        addPart(descriptionElementDetailSection);
563
        addPart(descriptionElementSourceSection);
564
        addPart(descriptionElementMediaSection);
565
    }
566

    
567
    private void createDescriptionSection(RootElement parent, boolean isTaxonDescription) {
568
        DescriptionDetailSection descriptionDetailSection = formFactory.createDescriptionDetailSection(getConversationHolder(), parent, this, StoreUtil.getSectionStyle(DescriptionDetailSection.class, getInput().getClass().getCanonicalName(), true));
569
        addPart(descriptionDetailSection);
570

    
571
        formFactory.createHorizontalSeparator(parent, SWT.BORDER);
572

    
573
        if(isTaxonDescription) {
574
            NaturalLanguageSection naturalLanguageSection = formFactory.createNaturalLanguageSection(
575
                    getConversationHolder(), parent, this, StoreUtil.getSectionStyle(NaturalLanguageSection.class, getInput().getClass().getCanonicalName(), true));
576
            formFactory.createHorizontalSeparator(parent, SWT.BORDER);
577
            addPart(naturalLanguageSection);
578
        }
579
        DescriptionSourceSection descriptionSourceSection = formFactory.createDescriptionSourceSection(
580
                getConversationHolder(), parent, StoreUtil.getSectionStyle(DescriptionSourceSection.class, getInput().getClass().getCanonicalName(), true));
581
        addPart(descriptionSourceSection);
582

    
583
        formFactory.createHorizontalSeparator(parent, SWT.BORDER);
584

    
585
        if(isTaxonDescription) {
586
            ScopeSection scopeSection = formFactory.createScopeSection(getConversationHolder(), parent, StoreUtil.getSectionStyle(ScopeSection.class, getInput().getClass().getCanonicalName()));
587
            addPart(scopeSection);
588
        }
589
    }
590

    
591
    private void createTaxonDescriptionSection(RootElement parent) {
592
        createDescriptionSection(parent, true);
593
    }
594

    
595
    private void createSpecimenDescriptionSection(RootElement parent) {
596
        createDescriptionSection(parent, false);
597
    }
598

    
599
    private void createUseDescriptionSection(RootElement parent) {
600
        DescriptionDetailSection descriptionDetailSection = formFactory.createDescriptionDetailSection(getConversationHolder(), parent, this, StoreUtil.getSectionStyle(DescriptionDetailSection.class, getInput().getClass().getCanonicalName()));
601

    
602
        formFactory.createHorizontalSeparator(parent, SWT.BORDER);
603

    
604
        DescriptionSourceSection descriptionSourceSection = formFactory.createDescriptionSourceSection(getConversationHolder(), parent, StoreUtil.getSectionStyle(DescriptionSourceSection.class, getInput().getClass().getCanonicalName()));
605

    
606
        formFactory.createHorizontalSeparator(parent, SWT.BORDER);
607

    
608
        addPart(descriptionDetailSection);
609
        addPart(descriptionSourceSection);
610

    
611
    }
612

    
613
    private void createImageGallerySection(RootElement parent) {
614
        DescriptionDetailSection descriptionDetailSection = formFactory.createDescriptionDetailSection(getConversationHolder(), parent, this, StoreUtil.getSectionStyle(DescriptionDetailSection.class, getInput().getClass().getCanonicalName()));
615

    
616
        addPart(descriptionDetailSection);
617
    }
618

    
619
    private void createMediaElementSection(RootElement parent) {
620
        MediaDetailsSection mediaDetailSection = formFactory.createMediaDetailsSection(getConversationHolder(), parent, this, StoreUtil.getSectionStyle(MediaDetailsSection.class, getInput().getClass().getCanonicalName(), true));
621

    
622
        addPart(mediaDetailSection);
623
    }
624

    
625
    private void createDerivedUnitBaseElementSection(RootElement parent) {
626
        DerivedUnitGeneralDetailSection derivedUnitGeneralDetailSection = formFactory.createDerivedUnitGeneralDetailSection(getConversationHolder(), parent, this, StoreUtil.getSectionStyle(DerivedUnitGeneralDetailSection.class, getInput().getClass().getCanonicalName(), true));
627
        //TODO for DerivateEditor do not use facade anymore to avoid this special case handling #4539
628
        if(!(AbstractUtility.getActivePart() instanceof IDerivedUnitFacadePart)){
629
            derivedUnitGeneralDetailSection.setShowOnlyDerivedUnitData(true);
630
        }
631
        addPart(derivedUnitGeneralDetailSection);
632

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

    
635
        DerivedUnitBaseDetailSection derivedUnitBaseDetailSection = formFactory.createDerivedUnitBaseDetailSection(getConversationHolder(), parent, this, StoreUtil.getSectionStyle(DerivedUnitBaseDetailSection.class, getInput().getClass().getCanonicalName(), true));
636
        addPart(derivedUnitBaseDetailSection);
637

    
638
        //for editors working with facades
639
        if(AbstractUtility.getActivePart() instanceof IDerivedUnitFacadePart){
640
            formFactory.createHorizontalSeparator(parent, SWT.BORDER);
641
            GatheringEventDetailSection gatheringEventDetailSection = formFactory.createGatheringEventDetailSection(getConversationHolder(), parent, this, StoreUtil.getSectionStyle(GatheringEventDetailSection.class, getInput().getClass().getCanonicalName()));
642
            addPart(gatheringEventDetailSection);
643

    
644
            formFactory.createHorizontalSeparator(parent, SWT.BORDER);
645
            FieldUnitDetailSection fieldUnitDetailSection = formFactory.createFieldUnitDetailSection(getConversationHolder(), parent, this, StoreUtil.getSectionStyle(FieldUnitDetailSection.class, getInput().getClass().getCanonicalName()));
646
            addPart(fieldUnitDetailSection);
647
        }
648
        else{
649

    
650
            if(PreferencesUtil.isShowTaxonAssociations()){
651
                formFactory.createHorizontalSeparator(parent, SWT.BORDER);
652
                TaxonAssociationDetailSection taxonAssociationDetailSection = formFactory.createTaxonAssociationDetailSection(getConversationHolder(), parent, this, StoreUtil.getSectionStyle(TaxonAssociationDetailSection.class, getInput().getClass().getCanonicalName(), true));
653
                addPart(taxonAssociationDetailSection);
654
            }
655
            formFactory.createHorizontalSeparator(parent, SWT.BORDER);
656
            DerivedUnitFacadeIdentifierSection identifierDetailSection = formFactory.createDerivedUnitFacadeIdentifierSection(getConversationHolder(), parent, StoreUtil.getSectionStyle(DerivedUnitFacadeIdentifierSection.class, getInput().getClass().getCanonicalName()));
657
            addPart(identifierDetailSection);
658
        }
659
        if(!PreferencesUtil.isDeterminationOnlyForFieldUnits()){
660
            formFactory.createHorizontalSeparator(parent, SWT.BORDER);
661
            DeterminationDetailSection determinationDetailSection = formFactory.createDeterminationDetailSection(getConversationHolder(), parent, this, StoreUtil.getSectionStyle(DeterminationDetailSection.class, getInput().getClass().getCanonicalName()));
662
            addPart(determinationDetailSection);
663
        }
664

    
665
        formFactory.createHorizontalSeparator(parent, SWT.BORDER);
666
        DerivedUnitTypeDesignationSection derivedUnitTypeDesignationSection = formFactory.createDerivedUnitTypeDesignationSection(getConversationHolder(), parent, this, StoreUtil.getSectionStyle(DerivedUnitTypeDesignationSection.class, getInput().getClass().getCanonicalName()));
667
        addPart(derivedUnitTypeDesignationSection);
668

    
669
    }
670

    
671
    private void createFieldUnitSection(RootElement parent) {
672
        FieldUnitGeneralDetailSection fielUnitGeneralDetailSection = formFactory.createFieldUnitGeneralDetailSection(getConversationHolder(), parent, this, StoreUtil.getSectionStyle(FieldUnitGeneralDetailSection.class, getInput().getClass().getCanonicalName(), true));
673

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

    
676
        GatheringEventDetailSection gatheringEventDetailSection = formFactory.createGatheringEventDetailSection(getConversationHolder(), parent, this, StoreUtil.getSectionStyle(GatheringEventDetailSection.class, getInput().getClass().getCanonicalName()));
677

    
678
        formFactory.createHorizontalSeparator(parent, SWT.BORDER);
679

    
680
        FieldUnitDetailSection fieldUnitDetailSection = formFactory.createFieldUnitDetailSection(getConversationHolder(), parent, this, StoreUtil.getSectionStyle(FieldUnitDetailSection.class, getInput().getClass().getCanonicalName()));
681

    
682
        addPart(fielUnitGeneralDetailSection);
683
        addPart(gatheringEventDetailSection);
684
        addPart(fieldUnitDetailSection);
685

    
686
        if(PreferencesUtil.isDeterminationOnlyForFieldUnits()){
687
            formFactory.createHorizontalSeparator(parent, SWT.BORDER);
688
            DeterminationDetailSection determinationDetailSection = formFactory.createDeterminationDetailSection(getConversationHolder(), parent, this, StoreUtil.getSectionStyle(DeterminationDetailSection.class, getInput().getClass().getCanonicalName()));
689
            addPart(determinationDetailSection);
690
        }
691
    }
692

    
693
    private void createTissueSampleSection(RootElement parent) {
694
        TissueSampleGeneralDetailSection section = formFactory.createTissueSampleGeneralDetailSection(getConversationHolder(), parent, this, StoreUtil.getSectionStyle(TissueSampleGeneralDetailSection.class, getInput().getClass().getCanonicalName(), true));
695

    
696
        formFactory.createHorizontalSeparator(parent, SWT.BORDER);
697

    
698
        SampleDesignationDetailSection sampleDesignationDetailSection = formFactory.createSampleDesignationDetailSection(getConversationHolder(), parent, this, StoreUtil.getSectionStyle(SampleDesignationDetailSection.class, getInput().getClass().getCanonicalName(), true));
699

    
700
        addPart(section);
701
        addPart(sampleDesignationDetailSection);
702
    }
703

    
704
    private void createDnaSampleSection(RootElement parent) {
705
        DnaSampleGeneralDetailSection section = formFactory.createDnaSampleGeneralDetailSection(getConversationHolder(), parent, this, StoreUtil.getSectionStyle(DnaSampleGeneralDetailSection.class, getInput().getClass().getCanonicalName(), true));
706

    
707
        formFactory.createHorizontalSeparator(parent, SWT.BORDER);
708

    
709
        DnaSamplePreparationPreservationSection preparationPreservationSection = formFactory.createDnaSamplePreparationPreservationSection(getConversationHolder(), parent, this, StoreUtil.getSectionStyle(DnaSamplePreparationPreservationSection.class, getInput().getClass().getCanonicalName(), true));
710

    
711
        formFactory.createHorizontalSeparator(parent, SWT.BORDER);
712

    
713
        DnaQualityDetailSection qualitySection = formFactory.createDnaQualityDetailSection(getConversationHolder(), parent, this, StoreUtil.getSectionStyle(DnaQualityDetailSection.class, getInput().getClass().getCanonicalName(), true));
714

    
715
        formFactory.createHorizontalSeparator(parent, SWT.BORDER);
716

    
717
        SampleDesignationDetailSection sampleDesignationDetailSection = formFactory.createSampleDesignationDetailSection(getConversationHolder(), parent, this, StoreUtil.getSectionStyle(SampleDesignationDetailSection.class, getInput().getClass().getCanonicalName(), true));
718

    
719
        addPart(section);
720
        addPart(preparationPreservationSection);
721
        addPart(qualitySection);
722
        addPart(sampleDesignationDetailSection);
723
    }
724

    
725
    private void createSequenceSection(RootElement parent) {
726
        SequenceGeneralDetailSection section = formFactory.createSequenceGeneralDetailSection(getConversationHolder(), parent, this, StoreUtil.getSectionStyle(SequenceGeneralDetailSection.class, getInput().getClass().getCanonicalName(), true));
727

    
728
        formFactory.createHorizontalSeparator(parent, SWT.BORDER);
729

    
730
        SequenceReferenceCollectionDetailSection referenceSection = formFactory.createSequenceReferenceCollectionDetailSection(getConversationHolder(), parent, StoreUtil.getSectionStyle(SequenceReferenceCollectionDetailSection.class, getInput().getClass().getCanonicalName(), true));
731

    
732
        formFactory.createHorizontalSeparator(parent, SWT.BORDER);
733

    
734
        SequenceContigFileCollectionDetailSection contigFileSection = formFactory.createSequenceContigFileCollectionDetailSection(getConversationHolder(), parent, StoreUtil.getSectionStyle(SequenceContigFileCollectionDetailSection.class, getInput().getClass().getCanonicalName(), true));
735

    
736

    
737
        addPart(section);
738
        addPart(referenceSection);
739
        addPart(contigFileSection);
740
    }
741

    
742
    private void createSingleReadSection(RootElement parent) {
743
        SingleReadGeneralDetailSection section = formFactory.createSingleReadGeneralDetailSection(getConversationHolder(), parent, this, StoreUtil.getSectionStyle(SingleReadGeneralDetailSection.class, getInput().getClass().getCanonicalName(), true));
744
        addPart(section);
745

    
746
        formFactory.createHorizontalSeparator(parent, SWT.BORDER);
747

    
748
        SingleReadPherogramCollectionDetailSection pherogramSection = formFactory.createSingleReadPherogramCollectionDetailSection(getConversationHolder(), parent, StoreUtil.getSectionStyle(SingleReadPherogramCollectionDetailSection.class, getInput().getClass().getCanonicalName(), true));
749
        addPart(pherogramSection);
750

    
751
    }
752

    
753
    private void createMediaSpecimenSection(RootElement parent) {
754
        MediaSpecimenGeneralDetailSection generalSection = formFactory.createMediaSpecimenGeneralDetailSection(getConversationHolder(), parent, this, StoreUtil.getSectionStyle(MediaSpecimenGeneralDetailSection.class, getInput().getClass().getCanonicalName(), true));
755
        addPart(generalSection);
756

    
757
        formFactory.createHorizontalSeparator(parent, SWT.BORDER);
758

    
759
        RightsSection rightsSection = formFactory.createRightsSection(getConversationHolder(), parent, StoreUtil.getSectionStyle(RightsSection.class, getInput().getClass().getCanonicalName()));
760
        addPart(rightsSection);
761

    
762
    }
763

    
764
    private void createFeatureTreeSection(RootElement parent) {
765
        FeatureTreeDetailSection section = formFactory.createFeatureTreeDetailSection(getConversationHolder(), parent, this, StoreUtil.getSectionStyle(FeatureTreeDetailSection.class, getInput().getClass().getCanonicalName(), true));
766

    
767
        addPart(section);
768
    }
769

    
770
    private void createFeatureNodeSection(RootElement parent) {
771
        FeatureNodeDetailSection featureDistributionSection = formFactory.createFeatureNodeDetailSection(getConversationHolder(), parent, this, StoreUtil.getSectionStyle(FeatureNodeDetailSection.class, getInput().getClass().getCanonicalName(), true));
772

    
773
        addPart(featureDistributionSection);
774
    }
775

    
776
    private void createFeatureDistributionSection(RootElement parent) {
777
        FeatureDistributionDetailSection featureDistributionSection = formFactory.createFeatureDistributionDetailSection(getConversationHolder(), parent, this, StoreUtil.getSectionStyle(FeatureDistributionDetailSection.class, getInput().getClass().getCanonicalName(), true));
778

    
779
        addPart(featureDistributionSection);
780
    }
781

    
782
    private void createCharacterSection(RootElement parent) {
783
        CharacterDetailSection featureDistributionSection = formFactory.createCharacterDetailSection(getConversationHolder(), parent, this, StoreUtil.getSectionStyle(CharacterDetailSection.class, getInput().getClass().getCanonicalName(), true));
784

    
785
        addPart(featureDistributionSection);
786
    }
787

    
788
    private void createPolytomousKeyNodeSection(RootElement parent) {
789
        PolytomousKeyDetailSection polytomousKeyDetailSection = formFactory.createPolytomousKeyDetailSection(getConversationHolder(), parent, this, StoreUtil.getSectionStyle(PolytomousKeyDetailSection.class, getInput().getClass().getCanonicalName()));
790

    
791
        formFactory.createHorizontalSeparator(parent, SWT.BORDER);
792

    
793
        PolytomousKeyNodeDetailSection polytomousKeyNodeDetailSection = formFactory.createPolytomousKeyNodeDetailSection(getConversationHolder(), parent, this, StoreUtil.getSectionStyle(PolytomousKeyNodeDetailSection.class, getInput().getClass().getCanonicalName(), true));
794

    
795
        addPart(polytomousKeyDetailSection);
796
        addPart(polytomousKeyNodeDetailSection);
797

    
798
    }
799

    
800
    private void createUseRecordSection(RootElement parent) {
801
        UseRecordDetailSection descriptionUseRecordSection = formFactory.createUseRecordDetailSection(getConversationHolder(), parent, this,StoreUtil.getSectionStyle(UseRecordDetailSection.class, getInput().getClass().getCanonicalName(), true));
802

    
803
        formFactory.createHorizontalSeparator(parent, SWT.BORDER);
804

    
805
        addPart(descriptionUseRecordSection);
806

    
807

    
808
    }
809

    
810
    private void createUserSection(RootElement parent) {
811
        UserDetailSection userDetailSection = formFactory.createUserDetailSection(getConversationHolder(), parent, this, StoreUtil.getSectionStyle(UserDetailSection.class, getInput().getClass().getCanonicalName(), true));
812

    
813
        GroupsByUserDetailSection groupByUserDetailSection = formFactory.createGroupsByUserDetailSection(getConversationHolder(), parent, StoreUtil.getSectionStyle(GroupsByUserDetailSection.class, getInput().getClass().getCanonicalName(), true));
814

    
815
        addPart(userDetailSection);
816
        addPart(groupByUserDetailSection);
817
    }
818

    
819
    private void createMisappliedNameSection(RootElement parent) {
820
        TaxonRelationshipDetailSection taxonRelationshipDetailSection = formFactory.createTaxonRelationshipDetailSection(getConversationHolder(), parent, this,
821
                StoreUtil.getSectionStyle(TaxonRelationshipDetailSection.class, getInput().getClass().getCanonicalName(), true));
822
        addPart(taxonRelationshipDetailSection);
823

    
824
        formFactory.createHorizontalSeparator(parent, SWT.BORDER);
825

    
826

    
827
        NonViralNameDetailSection nonViralNameSection = formFactory
828
                .createNonViralNameDetailSection(getConversationHolder(), parent, this, true,
829
                        StoreUtil.getSectionStyle(NonViralNameDetailSection.class, getInput().getClass().getCanonicalName(), true));
830
        addPart(nonViralNameSection);
831

    
832
        formFactory.createHorizontalSeparator(parent, SWT.BORDER);
833

    
834
        NomenclaturalReferenceDetailSection referenceDetailSection = formFactory.createNomenclaturalReferenceDetailSection(getConversationHolder(), parent, this,
835
                StoreUtil.getSectionStyle(NomenclaturalReferenceDetailSection.class, getInput().getClass().getCanonicalName(), true));
836
        formFactory.createHorizontalSeparator(parent, SWT.BORDER);
837
        addPart(referenceDetailSection);
838

    
839

    
840
        NomenclaturalStatusSection nomenclaturalStatusSection = formFactory.createNomenclaturalStatusSection(getConversationHolder(), parent,
841
            		StoreUtil.getSectionStyle(NomenclaturalStatusSection.class, getInput().getClass().getCanonicalName(), true));
842
        formFactory.createHorizontalSeparator(parent, SWT.BORDER);
843
        addPart(nomenclaturalStatusSection);
844

    
845
		ProtologueSection protologSection = formFactory.createProtologueSection(getConversationHolder(), parent, StoreUtil.getSectionStyle(ProtologueSection.class, getInput().getClass().getCanonicalName()));
846
		formFactory.createHorizontalSeparator(parent, SWT.BORDER);
847
		addPart(protologSection);
848

    
849
		TypeDesignationSection typeDesignationSection = formFactory.createTypeDesignationSection(getConversationHolder(), parent, StoreUtil.getSectionStyle(TypeDesignationSection.class, getInput().getClass().getCanonicalName()));
850
		formFactory.createHorizontalSeparator(parent, SWT.BORDER);
851
		addPart(typeDesignationSection);
852

    
853
		NameRelationshipDetailSection nameRelationshipSection = formFactory.createNameRelationshipDetailSection(getConversationHolder(), parent, StoreUtil.getSectionStyle(NameRelationshipDetailSection.class, getInput().getClass().getCanonicalName()));
854
		formFactory.createHorizontalSeparator(parent, SWT.BORDER);
855
		addPart(nameRelationshipSection);
856

    
857
    }
858

    
859
    private void createTaxonRelationshipSection(RootElement parent) {
860
        TaxonRelationshipDetailSection taxonRelationshipDetailSection = formFactory.createTaxonRelationshipDetailSection(getConversationHolder(), parent, this, StoreUtil.getSectionStyle(TaxonRelationshipDetailSection.class, getInput().getClass().getCanonicalName(), true));
861

    
862
        ReferencedEntityDetailSection referencedEntityBaseDetailSection = formFactory.createReferencedEntityDetailSection(getConversationHolder(), parent, this, StoreUtil.getSectionStyle(ReferencedEntityDetailSection.class, getInput().getClass().getCanonicalName(), true));
863
        addPart(taxonRelationshipDetailSection);
864
        addPart(referencedEntityBaseDetailSection);
865
    }
866
    private void createTermVocabularySection(RootElement parent) {
867
        TermVocabularyDetailSection termVocabularyDetailSection = formFactory.createTermVocabularyDetailSection(getConversationHolder(), parent, this, StoreUtil.getSectionStyle(TermVocabularyDetailSection.class, getInput().getClass().getCanonicalName(), true));
868
        addPart(termVocabularyDetailSection);
869
    }
870

    
871
    private void createDefinedTermSection(RootElement parent) {
872
        DefinedTermDetailSection definedTermDetailSection = formFactory.createDefinedTermDetailSection(getInput().getClass(), getConversationHolder(), parent, this, StoreUtil.getSectionStyle(DefinedTermDetailSection.class, getInput().getClass().getCanonicalName(), true));
873
        addPart(definedTermDetailSection);
874
        TermMediaSection termMediaSection = formFactory.createTermMediaSection(getConversationHolder(), parent, StoreUtil.getSectionStyle(DefinedTermDetailSection.class, getInput().getClass().getCanonicalName(), true));
875
        addPart(termMediaSection);
876
    }
877

    
878
    @Override
879
    public void update(CdmDataChangeMap arg0) {
880

    
881
    }
882
    @Inject
883
    @Optional
884
    private void updateView(@UIEventTopic(WorkbenchEventConstants.REFRESH_DETAILS)boolean refresh){
885
        if(refresh){
886
            refresh();
887

    
888
        }
889
    }
890

    
891
}
(2-2/2)