Merge branch 'release/5.9.0'
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / view / e4 / details / DetailsViewerE4.java
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.model.agent.Person;
29 import eu.etaxonomy.cdm.model.agent.Team;
30 import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase;
31 import eu.etaxonomy.cdm.model.common.Marker;
32 import eu.etaxonomy.cdm.model.description.CategoricalData;
33 import eu.etaxonomy.cdm.model.description.Character;
34 import eu.etaxonomy.cdm.model.description.DescriptionBase;
35 import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
36 import eu.etaxonomy.cdm.model.description.Distribution;
37 import eu.etaxonomy.cdm.model.description.PolytomousKeyNode;
38 import eu.etaxonomy.cdm.model.description.SpecimenDescription;
39 import eu.etaxonomy.cdm.model.description.TaxonDescription;
40 import eu.etaxonomy.cdm.model.media.Media;
41 import eu.etaxonomy.cdm.model.molecular.DnaSample;
42 import eu.etaxonomy.cdm.model.molecular.Sequence;
43 import eu.etaxonomy.cdm.model.molecular.SingleRead;
44 import eu.etaxonomy.cdm.model.name.TaxonName;
45 import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;
46 import eu.etaxonomy.cdm.model.occurrence.FieldUnit;
47 import eu.etaxonomy.cdm.model.occurrence.MediaSpecimen;
48 import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationType;
49 import eu.etaxonomy.cdm.model.permission.Group;
50 import eu.etaxonomy.cdm.model.permission.User;
51 import eu.etaxonomy.cdm.model.reference.Reference;
52 import eu.etaxonomy.cdm.model.taxon.TaxonBase;
53 import eu.etaxonomy.cdm.model.taxon.TaxonRelationship;
54 import eu.etaxonomy.cdm.model.term.DefinedTermBase;
55 import eu.etaxonomy.cdm.model.term.TermNode;
56 import eu.etaxonomy.cdm.model.term.TermTree;
57 import eu.etaxonomy.cdm.model.term.TermType;
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.CharacterNodeDetailSection;
87 import eu.etaxonomy.taxeditor.ui.section.feature.FeatureDistributionDetailSection;
88 import eu.etaxonomy.taxeditor.ui.section.feature.FeatureNodeDetailSection;
89 import eu.etaxonomy.taxeditor.ui.section.feature.FeatureTreeDetailSection;
90 import eu.etaxonomy.taxeditor.ui.section.grantedAuthority.GrantedAuthorityDetailSection;
91 import eu.etaxonomy.taxeditor.ui.section.group.GroupDetailSection;
92 import eu.etaxonomy.taxeditor.ui.section.group.MemberDetailSection;
93 import eu.etaxonomy.taxeditor.ui.section.key.PolytomousKeyDetailSection;
94 import eu.etaxonomy.taxeditor.ui.section.key.PolytomousKeyNodeDetailSection;
95 import eu.etaxonomy.taxeditor.ui.section.name.NameRelationshipDetailSection;
96 import eu.etaxonomy.taxeditor.ui.section.name.NomenclaturalStatusSection;
97 import eu.etaxonomy.taxeditor.ui.section.name.NonViralNameDetailSection;
98 import eu.etaxonomy.taxeditor.ui.section.name.ProtologueSection;
99 import eu.etaxonomy.taxeditor.ui.section.name.TypeDesignationSection;
100 import eu.etaxonomy.taxeditor.ui.section.occurrence.DerivedUnitBaseDetailSection;
101 import eu.etaxonomy.taxeditor.ui.section.occurrence.DerivedUnitGeneralDetailSection;
102 import eu.etaxonomy.taxeditor.ui.section.occurrence.DeterminationDetailSection;
103 import eu.etaxonomy.taxeditor.ui.section.occurrence.FieldUnitDetailSection;
104 import eu.etaxonomy.taxeditor.ui.section.occurrence.FieldUnitGeneralDetailSection;
105 import eu.etaxonomy.taxeditor.ui.section.occurrence.GatheringEventDetailSection;
106 import eu.etaxonomy.taxeditor.ui.section.occurrence.association.DerivedUnitTypeDesignationSection;
107 import eu.etaxonomy.taxeditor.ui.section.occurrence.association.TaxonAssociationDetailSection;
108 import eu.etaxonomy.taxeditor.ui.section.occurrence.dna.DnaQualityDetailSection;
109 import eu.etaxonomy.taxeditor.ui.section.occurrence.dna.DnaSampleGeneralDetailSection;
110 import eu.etaxonomy.taxeditor.ui.section.occurrence.dna.DnaSamplePreparationPreservationSection;
111 import eu.etaxonomy.taxeditor.ui.section.occurrence.dna.SampleDesignationDetailSection;
112 import eu.etaxonomy.taxeditor.ui.section.occurrence.dna.SequenceContigFileCollectionDetailSection;
113 import eu.etaxonomy.taxeditor.ui.section.occurrence.dna.SequenceGeneralDetailSection;
114 import eu.etaxonomy.taxeditor.ui.section.occurrence.dna.SequenceReferenceCollectionDetailSection;
115 import eu.etaxonomy.taxeditor.ui.section.occurrence.dna.SingleReadGeneralDetailSection;
116 import eu.etaxonomy.taxeditor.ui.section.occurrence.dna.SingleReadPherogramCollectionDetailSection;
117 import eu.etaxonomy.taxeditor.ui.section.occurrence.dna.TissueSampleGeneralDetailSection;
118 import eu.etaxonomy.taxeditor.ui.section.occurrence.media.MediaSpecimenGeneralDetailSection;
119 import eu.etaxonomy.taxeditor.ui.section.reference.NomenclaturalReferenceDetailSection;
120 import eu.etaxonomy.taxeditor.ui.section.reference.ReferenceDetailSection;
121 import eu.etaxonomy.taxeditor.ui.section.supplemental.RightsSection;
122 import eu.etaxonomy.taxeditor.ui.section.supplemental.identifier.DerivedUnitFacadeIdentifierSection;
123 import eu.etaxonomy.taxeditor.ui.section.taxon.ParsingMessagesSection;
124 import eu.etaxonomy.taxeditor.ui.section.taxon.TaxonBaseDetailSection;
125 import eu.etaxonomy.taxeditor.ui.section.taxon.TaxonRelationshipDetailSection;
126 import eu.etaxonomy.taxeditor.ui.section.user.GroupsByUserDetailSection;
127 import eu.etaxonomy.taxeditor.ui.section.user.UserDetailSection;
128 import eu.etaxonomy.taxeditor.ui.section.userecords.UseRecordDetailSection;
129 import eu.etaxonomy.taxeditor.ui.section.vocabulary.DefinedTermDetailSection;
130 import eu.etaxonomy.taxeditor.ui.section.vocabulary.TermMediaSection;
131 import eu.etaxonomy.taxeditor.ui.section.vocabulary.TermVocabularyDetailSection;
132 import eu.etaxonomy.taxeditor.view.e4.AbstractCdmDataViewerE4;
133
134 /**
135 *
136 * The DetailsViewer handles the content of the details view (
137 * {@link DetailsPartE4}).<br>
138 * Depending on the type of the selected element the section of the details view
139 * are created.
140 *
141 * @author pplitzner
142 * @date 18.07.2017
143 *
144 */
145 public class DetailsViewerE4 extends AbstractCdmDataViewerE4 {
146
147 private ISelection selection;
148 private boolean detailsEnabled = true;
149
150 public boolean isDetailsEnabled() {
151 return detailsEnabled;
152 }
153
154 public void setDetailsEnabled(boolean detailsEnabled) {
155 this.detailsEnabled = detailsEnabled;
156 }
157
158 public void setInput(Object input, Object activePart) {
159 if (activePart instanceof IDistributionEditor){
160 detailsEnabled = false;
161 }else{
162 detailsEnabled = true;
163 }
164 setInput(input);
165
166 }
167 // START HACK TO MAKE THE DERIVED UNIT FACADE WORK
168 // since we are getting implementations of DerivedUnitBase from the bulk
169 // editor
170 // and not derived unit facade objects,
171
172 @Override
173 public void setInput(Object input) {
174
175 if(input instanceof TreeNode){
176 input = ((TreeNode) input).getValue();
177 }
178 if(input instanceof GbifResponse){
179 input = ((GbifResponse) input).getDerivedUnitFacade();
180 }
181 if (input !=null && input.getClass().equals(DerivedUnit.class)) {
182 DerivedUnit derivedUnit = (DerivedUnit)input;
183 try {
184 input = DerivedUnitFacade.NewInstance(derivedUnit,
185 PreferencesUtil.getDerivedUnitConfigurator());
186 } catch (DerivedUnitFacadeNotSupportedException e) {
187 // 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
188 }
189 }
190 else if(input instanceof FieldUnit){
191 input = DerivedUnitFacade.NewInstance(SpecimenOrObservationType.FieldUnit, (FieldUnit) input);
192 }
193 super.setInput(input);
194 }
195
196 @Override
197 protected void markViewPartDirty() {
198 if (getInput() instanceof DerivedUnitFacade) {
199 if(part instanceof IDerivedUnitFacadePart){
200 part.changed(getInput());
201 }
202 else{
203 DerivedUnitFacade facade = (DerivedUnitFacade) getInput();
204 if(facade.innerDerivedUnit()!=null){
205 part.changed(facade.innerDerivedUnit());
206 }
207 else if(facade.innerFieldUnit()!=null){
208 part.changed(facade.innerFieldUnit());
209 }
210 }
211 }
212 else{
213 super.markViewPartDirty();
214 }
215 }
216
217 /** {@inheritDoc} */
218 @Override
219 protected void showParts() {
220 // FIXME (CM) : Need to clean out this code.
221 // Too much type checking to decide which detail view to display.
222 // Need to build in a mechanism where navigators / editors are 'aware'
223 // of the corresponding detail viewer.
224
225 Object input = getInput();
226 if (input == null){
227 return;
228 }
229 destroySections();
230 if (input instanceof TaxonBase) {
231 if(((TaxonBase) input).getName()==null){
232 createEmptySection(Messages.DetailsViewerE4_TAXON_HAS_NO_NAME, rootElement);
233 }
234 else{
235 createTaxonSections(rootElement);
236 }
237
238 } else if (input instanceof TaxonName) {
239 createNameSections(rootElement);
240
241 } else if (input instanceof Reference) {
242 createReferenceSections(rootElement);
243
244 } else if (input instanceof Team) {
245 createTeamDetailSection(rootElement);
246
247 } else if (input instanceof Person) {
248 createPersonDetailSection(rootElement);
249
250 } else if (input instanceof TeamOrPersonBase) {
251 createTeamOrPersonBaseDetailSection(rootElement);
252
253 } else if (input instanceof DescriptionBase) {
254 if(input instanceof SpecimenDescription){
255 //TODO: add more sections to DetailsView for SpecimenDescription
256 createSpecimenDescriptionSection(rootElement);
257 }
258 else{
259 Set<Marker> descriptionMarkers = ((DescriptionBase<?>) input).getMarkers();
260
261 Boolean isUseDescription = false;
262 for (Marker marker : descriptionMarkers) {
263 if (marker.getMarkerType()!= null && marker.getMarkerType().getUuid().equals(UsageTermCollection.uuidUseMarkerType)) {
264 isUseDescription = true;
265 }
266 }
267 if (((DescriptionBase<?>) input).isImageGallery()) {
268 createImageGallerySection(rootElement);
269
270 } else if (isUseDescription) {
271 createUseDescriptionSection(rootElement);
272 } else if (input instanceof TaxonDescription){
273 createTaxonDescriptionSection(rootElement);
274
275 } else{
276 createDescriptionSection(rootElement, false);
277 }
278 }
279 } else if (input instanceof DescriptionElementBase){
280 Set<Marker> descriptionMarkers = new HashSet<>();
281 if(((DescriptionElementBase) input).getInDescription()!=null) {
282 descriptionMarkers = ((DescriptionElementBase) input).getInDescription().getMarkers();
283 }
284
285 Boolean isUseDescription = false;
286 for (Marker marker : descriptionMarkers) {
287 if (marker.getMarkerType()!= null && marker.getMarkerType().getUuid().equals(UsageTermCollection.uuidUseMarkerType)) {
288 isUseDescription = true;
289 }
290 }
291
292 if (isUseDescription == true && input instanceof CategoricalData) {
293 createUseRecordSection(rootElement);
294 } else {
295 createDescriptionElementSection(rootElement);
296 }
297
298 } else if (input instanceof Media) {
299 createMediaElementSection(rootElement);
300
301 }
302 //FIXME hack to show more informative message to the user when
303 //DerivedUnit has more than one FieldUnit #4363
304 else if (input.getClass().equals(DerivedUnit.class)) {
305 DerivedUnit derivedUnit = (DerivedUnit)input;
306 try {
307 input = DerivedUnitFacade.NewInstance(derivedUnit,
308 PreferencesUtil.getDerivedUnitConfigurator());
309 } catch (DerivedUnitFacadeNotSupportedException e) {
310 createEmptySection(e.getMessage(), rootElement);
311 }
312 }
313 else if (input instanceof DerivedUnitFacade) {
314 if(((DerivedUnitFacade) input).getType()==SpecimenOrObservationType.FieldUnit){
315 if(((DerivedUnitFacade) input).innerFieldUnit()==null){
316 MessagingUtils.error(DetailsViewerE4.class, "FieldUnit of facade is null", null); //$NON-NLS-1$
317 }
318 else{
319 createFieldUnitSection(rootElement);
320 }
321 }
322 else if(((DerivedUnitFacade) input).getType()==SpecimenOrObservationType.PreservedSpecimen){
323 if(((DerivedUnitFacade) input).innerDerivedUnit()==null){
324 MessagingUtils.error(DetailsViewerE4.class, "DerivedUnit of facade is null", null); //$NON-NLS-1$
325 }
326 else{
327 createDerivedUnitBaseElementSection(rootElement);
328 }
329 }
330 else if(((DerivedUnitFacade) input).getType()==SpecimenOrObservationType.TissueSample){
331 //TissueSample should only be created by using it's own class
332 //in future using only one class with different SpecimenOrObservationTypes is desired
333 createTissueSampleSection(rootElement);
334 }
335 else{
336 createDerivedUnitBaseElementSection(rootElement);
337 }
338 } else if (input instanceof DnaSample){
339 DnaSample dnaSample = (DnaSample)input;
340 if(dnaSample.getRecordBasis()==SpecimenOrObservationType.TissueSample){
341 createTissueSampleSection(rootElement);
342 }
343 else if(dnaSample.getRecordBasis()==SpecimenOrObservationType.DnaSample){
344 createDnaSampleSection(rootElement);
345 }
346 } else if (input instanceof MediaSpecimen){
347 createMediaSpecimenSection(rootElement);
348 }
349 else if(input instanceof Sequence){
350 createSequenceSection(rootElement);
351 }
352 else if(input instanceof SingleRead){
353 createSingleReadSection(rootElement);
354 }
355 else if (input instanceof FeatureNodeContainer) {
356 createFeatureDistributionSection(rootElement);
357
358 } else if (input instanceof TermNode) {
359 TermType type= ((TermNode) input).getTermType();
360 if(type.equals(TermType.Character)){
361 createCharacterNodeSection(rootElement);
362 }
363 else if(type.equals(TermType.Feature)){
364 createFeatureNodeSection(rootElement);
365 }
366
367 } else if (input instanceof TermTree) {
368 createFeatureTreeSection(rootElement);
369
370 } else if (input instanceof Character) {
371 createCharacterSection(rootElement);
372
373 }else if ((input instanceof PolytomousKeyNode) || (input instanceof PolytomousKeyRelationship)) {
374 createPolytomousKeyNodeSection(rootElement);
375 } else if (input instanceof User) {
376 createUserSection(rootElement);
377 } else if (input instanceof Group) {
378 createGroupSection(rootElement);
379 } else if (input instanceof TaxonRelationship && ((TaxonRelationship)input).getType()!=null
380 && (((TaxonRelationship)input).getType().isAnyMisappliedName() || ((TaxonRelationship)input).getType().isAnySynonym() || ((TaxonRelationship)input).getType().isMisappliedNameOrInvalidDesignation())){
381 createMisappliedNameSection(rootElement);
382 }else if (input instanceof TaxonRelationship ) {
383 createTaxonRelationshipSection(rootElement);
384 } else if (input instanceof TermVocabulary) {
385 createTermVocabularySection(rootElement);
386 } else if (input instanceof DefinedTermBase) {
387 createDefinedTermSection(rootElement);
388
389 } else if (input instanceof SelectionChangedEvent ) {
390 IStructuredSelection sel =(IStructuredSelection) ((SelectionChangedEvent)input).getSelection();
391 if (sel.getFirstElement()instanceof Distribution){
392 createDescriptionElementSection(rootElement);
393 }
394
395 // createDescriptionElementSection(rootElement);
396
397 }else {
398 createEmptySection(null, rootElement);
399 }
400 layout();
401
402 }
403
404 private void createGroupSection(RootElement parent) {
405 GroupDetailSection groupDetailSection = formFactory.createGroupDetailSection(getConversationHolder(), parent, this, StoreUtil.getSectionStyle(GroupDetailSection.class, getInput().getClass().getCanonicalName()));
406 MemberDetailSection memberDetailSection = formFactory.createMemberDetailSection(getConversationHolder(), parent, StoreUtil.getSectionStyle(MemberDetailSection.class, getInput().getClass().getCanonicalName()));
407 GrantedAuthorityDetailSection grantedAuthorityDetailSection = formFactory.createGrantedAuthorityDetailSection(getConversationHolder(), parent,StoreUtil.getSectionStyle(GrantedAuthorityDetailSection.class, getInput().getClass().getCanonicalName()));
408
409 addPart(groupDetailSection);
410 addPart(memberDetailSection);
411 addPart(grantedAuthorityDetailSection);
412 }
413
414 /** {@inheritDoc} */
415 @Override
416 public ISelection getSelection() {
417 return selection;
418 }
419
420 /** {@inheritDoc} */
421 @Override
422 public void setSelection(ISelection selection, boolean reveal) {
423
424 this.selection = selection;
425
426 if(this.selection!=null){
427 SelectionChangedEvent selectionChangedEvent = new SelectionChangedEvent(this, selection);
428 fireSelectionChanged(selectionChangedEvent);
429 }
430
431 }
432
433 private void createTaxonSections(RootElement parent) {
434 NameDetailsConfigurator config = PreferencesUtil.getPreferredNameDetailsConfiguration();
435 ParsingMessagesSection parsingMessagesSection = formFactory.createParsingMessagesSection(getConversationHolder(), parent, this,
436 StoreUtil.getSectionStyle(ParsingMessagesSection.class, getInput().getClass().getCanonicalName(), true));
437 if (!config.isSimpleDetailsViewActivated()){
438 TaxonBaseDetailSection taxonBaseDetailSection = formFactory.createTaxonBaseDetailSection(getConversationHolder(), parent, this,
439 StoreUtil.getSectionStyle(TaxonBaseDetailSection.class, getInput().getClass().getCanonicalName(), true));
440 formFactory.createHorizontalSeparator(parent, SWT.BORDER);
441 addPart(taxonBaseDetailSection);
442 }else{
443 if (config.isTaxonSectionActivated()){
444 TaxonBaseDetailSection taxonBaseDetailSection = formFactory.createTaxonBaseDetailSection(getConversationHolder(), parent, this,
445 StoreUtil.getSectionStyle(TaxonBaseDetailSection.class, getInput().getClass().getCanonicalName(), true));
446 formFactory.createHorizontalSeparator(parent, SWT.BORDER);
447 addPart(taxonBaseDetailSection);
448 }
449 }
450 NonViralNameDetailSection nonViralNameSection = formFactory
451 .createNonViralNameDetailSection(getConversationHolder(), parent, this, true,
452 StoreUtil.getSectionStyle(NonViralNameDetailSection.class, getInput().getClass().getCanonicalName(), true));
453 formFactory.createHorizontalSeparator(parent, SWT.BORDER);
454 if (!config.isSimpleDetailsViewActivated() || (config.isSimpleDetailsViewActivated() && config.isNomenclaturalReferenceSectionActivated())){
455 NomenclaturalReferenceDetailSection referenceDetailSection = formFactory.createNomenclaturalReferenceDetailSection(getConversationHolder(), parent, this,
456 StoreUtil.getSectionStyle(NomenclaturalReferenceDetailSection.class, getInput().getClass().getCanonicalName(), true));
457 formFactory.createHorizontalSeparator(parent, SWT.BORDER);
458 addPart(referenceDetailSection);
459
460 }
461 if ( !config.isSimpleDetailsViewActivated() || (config.isSimpleDetailsViewActivated() && config.isNomenclaturalStatusSectionActivated())){
462 NomenclaturalStatusSection nomenclaturalStatusSection = formFactory.createNomenclaturalStatusSection(getConversationHolder(), parent,
463 StoreUtil.getSectionStyle(NomenclaturalStatusSection.class, getInput().getClass().getCanonicalName(), true));
464 formFactory.createHorizontalSeparator(parent, SWT.BORDER);
465 addPart(nomenclaturalStatusSection);
466 }
467
468 if ( !config.isSimpleDetailsViewActivated() || (config.isSimpleDetailsViewActivated() && config.isProtologueActivated())){
469 ProtologueSection protologSection = formFactory.createProtologueSection(getConversationHolder(), parent, StoreUtil.getSectionStyle(ProtologueSection.class, getInput().getClass().getCanonicalName()));
470 formFactory.createHorizontalSeparator(parent, SWT.BORDER);
471 addPart(protologSection);
472 }
473
474 if (!config.isSimpleDetailsViewActivated() || (config.isSimpleDetailsViewActivated() && config.isTypeDesignationSectionActivated())){
475 TypeDesignationSection typeDesignationSection = formFactory.createTypeDesignationSection(getConversationHolder(), parent, StoreUtil.getSectionStyle(TypeDesignationSection.class, getInput().getClass().getCanonicalName()));
476 formFactory.createHorizontalSeparator(parent, SWT.BORDER);
477 addPart(typeDesignationSection);
478 }
479
480 if (!config.isSimpleDetailsViewActivated() || (config.isSimpleDetailsViewActivated() &&config.isNameRelationsSectionActivated())){
481 NameRelationshipDetailSection nameRelationshipSection = formFactory.createNameRelationshipDetailSection(getConversationHolder(), parent, StoreUtil.getSectionStyle(NameRelationshipDetailSection.class, getInput().getClass().getCanonicalName()));
482 formFactory.createHorizontalSeparator(parent, SWT.BORDER);
483 addPart(nameRelationshipSection);
484 }
485
486
487 addPart(parsingMessagesSection);
488
489 addPart(nonViralNameSection);
490
491 }
492
493 private void createNameSections(RootElement parent) {
494 NonViralNameDetailSection nonViralNameSection = formFactory.createNonViralNameDetailSection(
495 getConversationHolder(), parent, this, false, StoreUtil.getSectionStyle(NonViralNameDetailSection.class, getInput().getClass().getCanonicalName(), true));
496
497 formFactory.createHorizontalSeparator(parent, SWT.BORDER);
498
499 NomenclaturalReferenceDetailSection referenceDetailSection = formFactory.createNomenclaturalReferenceDetailSection(getConversationHolder(), parent, this,
500 StoreUtil.getSectionStyle(NomenclaturalReferenceDetailSection.class, getInput().getClass().getCanonicalName(), true));
501 formFactory.createHorizontalSeparator(parent, SWT.BORDER);
502
503 NomenclaturalStatusSection nomenclaturalStatusSection = formFactory.createNomenclaturalStatusSection(getConversationHolder(), parent,
504 StoreUtil.getSectionStyle(NomenclaturalStatusSection.class, getInput().getClass().getCanonicalName(), true));
505 formFactory.createHorizontalSeparator(parent, SWT.BORDER);
506
507 addPart(nonViralNameSection);
508 addPart(nomenclaturalStatusSection);
509 addPart(referenceDetailSection);
510
511 ProtologueSection protologSection = formFactory.createProtologueSection(getConversationHolder(), parent, StoreUtil.getSectionStyle(ProtologueSection.class, getInput().getClass().getCanonicalName()));
512 formFactory.createHorizontalSeparator(parent, SWT.BORDER);
513
514 TypeDesignationSection typeDesignationSection = formFactory.createTypeDesignationSection(getConversationHolder(), parent, StoreUtil.getSectionStyle(TypeDesignationSection.class, getInput().getClass().getCanonicalName()));
515 formFactory.createHorizontalSeparator(parent, SWT.BORDER);
516
517 NameRelationshipDetailSection nameRelationshipSection = formFactory.createNameRelationshipDetailSection(getConversationHolder(), parent, StoreUtil.getSectionStyle(NameRelationshipDetailSection.class, getInput().getClass().getCanonicalName()));
518 formFactory.createHorizontalSeparator(parent, SWT.BORDER);
519 addPart(protologSection);
520 addPart(typeDesignationSection);
521 addPart(nameRelationshipSection);
522
523 }
524
525 private void createReferenceSections(RootElement parent) {
526 ReferenceDetailSection referenceDetailSection = formFactory.createReferenceDetailSection(getConversationHolder(), parent, this,
527 StoreUtil.getSectionStyle(ReferenceDetailSection.class, getInput().getClass().getCanonicalName(), true));
528
529 addPart(referenceDetailSection);
530 }
531
532 private void createTeamOrPersonBaseDetailSection(RootElement parent) {
533 TeamOrPersonBaseDetailSection teamOrPersonBaseDetailSection = formFactory.createTeamOrPersonBaseDetailSection(getConversationHolder(), parent, this, StoreUtil.getSectionStyle(TeamOrPersonBaseDetailSection.class, getInput().getClass().getCanonicalName(), true));
534
535 addPart(teamOrPersonBaseDetailSection);
536 }
537
538 private void createTeamDetailSection(RootElement parent) {
539 TeamDetailSection teamDetailSection = formFactory.createTeamDetailSection(getConversationHolder(), parent, StoreUtil.getSectionStyle(TeamDetailSection.class, getInput().getClass().getCanonicalName(), true));
540
541 addPart(teamDetailSection);
542 }
543
544 private void createPersonDetailSection(RootElement parent) {
545 PersonDetailSection personDetailSection = formFactory.createPersonDetailSection(getConversationHolder(), parent, StoreUtil.getSectionStyle(PersonDetailSection.class, getInput().getClass().getCanonicalName(), true));
546 addPart(personDetailSection);
547 }
548
549 private void createDescriptionElementSection(RootElement parent) {
550 DescriptionElementDetailSection descriptionElementDetailSection = formFactory.createDescriptionElementDetailSection(getConversationHolder(), parent, this, StoreUtil.getSectionStyle(DescriptionElementDetailSection.class, getInput().getClass().getCanonicalName(), true));
551 descriptionElementDetailSection.setEnabled(this.detailsEnabled);
552
553 // IntextReferenceSection intextReferenceSection = formFactory.createIntextReferenceSection(getConversationHolder(), parent, getSectionStyle(.class, getInput().getClass().getCanonicalName()));
554
555 formFactory.createHorizontalSeparator(parent, SWT.BORDER);
556
557 DescriptionElementSourceSection descriptionElementSourceSection = formFactory.createDescriptionElementSourceSection(getConversationHolder(), parent, StoreUtil.getSectionStyle(DescriptionElementSourceSection.class, getInput().getClass().getCanonicalName()));
558
559 formFactory.createHorizontalSeparator(parent, SWT.BORDER);
560
561 DescriptionElementMediaSection descriptionElementMediaSection = formFactory.createDescriptionElementMediaSection(getConversationHolder(), parent, StoreUtil.getSectionStyle(DescriptionElementMediaSection.class, getInput().getClass().getCanonicalName()));
562
563 formFactory.createHorizontalSeparator(parent, SWT.BORDER);
564
565 addPart(descriptionElementDetailSection);
566 addPart(descriptionElementSourceSection);
567 addPart(descriptionElementMediaSection);
568 }
569
570 private void createDescriptionSection(RootElement parent, boolean isTaxonDescription) {
571 DescriptionDetailSection descriptionDetailSection = formFactory.createDescriptionDetailSection(getConversationHolder(), parent, this, StoreUtil.getSectionStyle(DescriptionDetailSection.class, getInput().getClass().getCanonicalName(), true));
572 addPart(descriptionDetailSection);
573
574 formFactory.createHorizontalSeparator(parent, SWT.BORDER);
575
576 if(isTaxonDescription) {
577 NaturalLanguageSection naturalLanguageSection = formFactory.createNaturalLanguageSection(
578 getConversationHolder(), parent, this, StoreUtil.getSectionStyle(NaturalLanguageSection.class, getInput().getClass().getCanonicalName(), true));
579 formFactory.createHorizontalSeparator(parent, SWT.BORDER);
580 addPart(naturalLanguageSection);
581 }
582 DescriptionSourceSection descriptionSourceSection = formFactory.createDescriptionSourceSection(
583 getConversationHolder(), parent, StoreUtil.getSectionStyle(DescriptionSourceSection.class, getInput().getClass().getCanonicalName(), true));
584 addPart(descriptionSourceSection);
585
586 formFactory.createHorizontalSeparator(parent, SWT.BORDER);
587
588 if(isTaxonDescription) {
589 ScopeSection scopeSection = formFactory.createScopeSection(getConversationHolder(), parent, StoreUtil.getSectionStyle(ScopeSection.class, getInput().getClass().getCanonicalName()));
590 addPart(scopeSection);
591 }
592 }
593
594 private void createTaxonDescriptionSection(RootElement parent) {
595 createDescriptionSection(parent, true);
596 }
597
598 private void createSpecimenDescriptionSection(RootElement parent) {
599 createDescriptionSection(parent, false);
600 }
601
602 private void createUseDescriptionSection(RootElement parent) {
603 DescriptionDetailSection descriptionDetailSection = formFactory.createDescriptionDetailSection(getConversationHolder(), parent, this, StoreUtil.getSectionStyle(DescriptionDetailSection.class, getInput().getClass().getCanonicalName()));
604
605 formFactory.createHorizontalSeparator(parent, SWT.BORDER);
606
607 DescriptionSourceSection descriptionSourceSection = formFactory.createDescriptionSourceSection(getConversationHolder(), parent, StoreUtil.getSectionStyle(DescriptionSourceSection.class, getInput().getClass().getCanonicalName()));
608
609 formFactory.createHorizontalSeparator(parent, SWT.BORDER);
610
611 addPart(descriptionDetailSection);
612 addPart(descriptionSourceSection);
613
614 }
615
616 private void createImageGallerySection(RootElement parent) {
617 DescriptionDetailSection descriptionDetailSection = formFactory.createDescriptionDetailSection(getConversationHolder(), parent, this, StoreUtil.getSectionStyle(DescriptionDetailSection.class, getInput().getClass().getCanonicalName()));
618
619 addPart(descriptionDetailSection);
620 }
621
622 private void createMediaElementSection(RootElement parent) {
623 MediaDetailsSection mediaDetailSection = formFactory.createMediaDetailsSection(getConversationHolder(), parent, this, StoreUtil.getSectionStyle(MediaDetailsSection.class, getInput().getClass().getCanonicalName(), true));
624
625 addPart(mediaDetailSection);
626 }
627
628 private void createDerivedUnitBaseElementSection(RootElement parent) {
629 DerivedUnitGeneralDetailSection derivedUnitGeneralDetailSection = formFactory.createDerivedUnitGeneralDetailSection(getConversationHolder(), parent, this, StoreUtil.getSectionStyle(DerivedUnitGeneralDetailSection.class, getInput().getClass().getCanonicalName(), true));
630 //TODO for DerivateEditor do not use facade anymore to avoid this special case handling #4539
631 if(!(AbstractUtility.getActivePart() instanceof IDerivedUnitFacadePart)){
632 derivedUnitGeneralDetailSection.setShowOnlyDerivedUnitData(true);
633 }
634 addPart(derivedUnitGeneralDetailSection);
635
636 formFactory.createHorizontalSeparator(parent, SWT.BORDER);
637
638 DerivedUnitBaseDetailSection derivedUnitBaseDetailSection = formFactory.createDerivedUnitBaseDetailSection(getConversationHolder(), parent, this, StoreUtil.getSectionStyle(DerivedUnitBaseDetailSection.class, getInput().getClass().getCanonicalName(), true));
639 addPart(derivedUnitBaseDetailSection);
640
641 //for editors working with facades
642 if(AbstractUtility.getActivePart() instanceof IDerivedUnitFacadePart){
643 formFactory.createHorizontalSeparator(parent, SWT.BORDER);
644 GatheringEventDetailSection gatheringEventDetailSection = formFactory.createGatheringEventDetailSection(getConversationHolder(), parent, this, StoreUtil.getSectionStyle(GatheringEventDetailSection.class, getInput().getClass().getCanonicalName()));
645 addPart(gatheringEventDetailSection);
646
647 formFactory.createHorizontalSeparator(parent, SWT.BORDER);
648 FieldUnitDetailSection fieldUnitDetailSection = formFactory.createFieldUnitDetailSection(getConversationHolder(), parent, this, StoreUtil.getSectionStyle(FieldUnitDetailSection.class, getInput().getClass().getCanonicalName()));
649 addPart(fieldUnitDetailSection);
650 }
651 else{
652
653 if(PreferencesUtil.isShowTaxonAssociations()){
654 formFactory.createHorizontalSeparator(parent, SWT.BORDER);
655 TaxonAssociationDetailSection taxonAssociationDetailSection = formFactory.createTaxonAssociationDetailSection(getConversationHolder(), parent, this, StoreUtil.getSectionStyle(TaxonAssociationDetailSection.class, getInput().getClass().getCanonicalName(), true));
656 addPart(taxonAssociationDetailSection);
657 }
658 formFactory.createHorizontalSeparator(parent, SWT.BORDER);
659 DerivedUnitFacadeIdentifierSection identifierDetailSection = formFactory.createDerivedUnitFacadeIdentifierSection(getConversationHolder(), parent, StoreUtil.getSectionStyle(DerivedUnitFacadeIdentifierSection.class, getInput().getClass().getCanonicalName()));
660 addPart(identifierDetailSection);
661 }
662 if(!PreferencesUtil.isDeterminationOnlyForFieldUnits()){
663 formFactory.createHorizontalSeparator(parent, SWT.BORDER);
664 DeterminationDetailSection determinationDetailSection = formFactory.createDeterminationDetailSection(getConversationHolder(), parent, this, StoreUtil.getSectionStyle(DeterminationDetailSection.class, getInput().getClass().getCanonicalName()));
665 addPart(determinationDetailSection);
666 }
667
668 formFactory.createHorizontalSeparator(parent, SWT.BORDER);
669 DerivedUnitTypeDesignationSection derivedUnitTypeDesignationSection = formFactory.createDerivedUnitTypeDesignationSection(getConversationHolder(), parent, this, StoreUtil.getSectionStyle(DerivedUnitTypeDesignationSection.class, getInput().getClass().getCanonicalName()));
670 addPart(derivedUnitTypeDesignationSection);
671
672 }
673
674 private void createFieldUnitSection(RootElement parent) {
675 FieldUnitGeneralDetailSection fielUnitGeneralDetailSection = formFactory.createFieldUnitGeneralDetailSection(getConversationHolder(), parent, this, StoreUtil.getSectionStyle(FieldUnitGeneralDetailSection.class, getInput().getClass().getCanonicalName(), true));
676
677 formFactory.createHorizontalSeparator(parent, SWT.BORDER);
678
679 GatheringEventDetailSection gatheringEventDetailSection = formFactory.createGatheringEventDetailSection(getConversationHolder(), parent, this, StoreUtil.getSectionStyle(GatheringEventDetailSection.class, getInput().getClass().getCanonicalName()));
680
681 formFactory.createHorizontalSeparator(parent, SWT.BORDER);
682
683 FieldUnitDetailSection fieldUnitDetailSection = formFactory.createFieldUnitDetailSection(getConversationHolder(), parent, this, StoreUtil.getSectionStyle(FieldUnitDetailSection.class, getInput().getClass().getCanonicalName()));
684
685 addPart(fielUnitGeneralDetailSection);
686 addPart(gatheringEventDetailSection);
687 addPart(fieldUnitDetailSection);
688
689 if(PreferencesUtil.isDeterminationOnlyForFieldUnits()){
690 formFactory.createHorizontalSeparator(parent, SWT.BORDER);
691 DeterminationDetailSection determinationDetailSection = formFactory.createDeterminationDetailSection(getConversationHolder(), parent, this, StoreUtil.getSectionStyle(DeterminationDetailSection.class, getInput().getClass().getCanonicalName()));
692 addPart(determinationDetailSection);
693 }
694 }
695
696 private void createTissueSampleSection(RootElement parent) {
697 TissueSampleGeneralDetailSection section = formFactory.createTissueSampleGeneralDetailSection(getConversationHolder(), parent, this, StoreUtil.getSectionStyle(TissueSampleGeneralDetailSection.class, getInput().getClass().getCanonicalName(), true));
698
699 formFactory.createHorizontalSeparator(parent, SWT.BORDER);
700
701 SampleDesignationDetailSection sampleDesignationDetailSection = formFactory.createSampleDesignationDetailSection(getConversationHolder(), parent, this, StoreUtil.getSectionStyle(SampleDesignationDetailSection.class, getInput().getClass().getCanonicalName(), true));
702
703 addPart(section);
704 addPart(sampleDesignationDetailSection);
705 }
706
707 private void createDnaSampleSection(RootElement parent) {
708 DnaSampleGeneralDetailSection section = formFactory.createDnaSampleGeneralDetailSection(getConversationHolder(), parent, this, StoreUtil.getSectionStyle(DnaSampleGeneralDetailSection.class, getInput().getClass().getCanonicalName(), true));
709
710 formFactory.createHorizontalSeparator(parent, SWT.BORDER);
711
712 DnaSamplePreparationPreservationSection preparationPreservationSection = formFactory.createDnaSamplePreparationPreservationSection(getConversationHolder(), parent, this, StoreUtil.getSectionStyle(DnaSamplePreparationPreservationSection.class, getInput().getClass().getCanonicalName(), true));
713
714 formFactory.createHorizontalSeparator(parent, SWT.BORDER);
715
716 DnaQualityDetailSection qualitySection = formFactory.createDnaQualityDetailSection(getConversationHolder(), parent, this, StoreUtil.getSectionStyle(DnaQualityDetailSection.class, getInput().getClass().getCanonicalName(), true));
717
718 formFactory.createHorizontalSeparator(parent, SWT.BORDER);
719
720 SampleDesignationDetailSection sampleDesignationDetailSection = formFactory.createSampleDesignationDetailSection(getConversationHolder(), parent, this, StoreUtil.getSectionStyle(SampleDesignationDetailSection.class, getInput().getClass().getCanonicalName(), true));
721
722 addPart(section);
723 addPart(preparationPreservationSection);
724 addPart(qualitySection);
725 addPart(sampleDesignationDetailSection);
726 }
727
728 private void createSequenceSection(RootElement parent) {
729 SequenceGeneralDetailSection section = formFactory.createSequenceGeneralDetailSection(getConversationHolder(), parent, this, StoreUtil.getSectionStyle(SequenceGeneralDetailSection.class, getInput().getClass().getCanonicalName(), true));
730
731 formFactory.createHorizontalSeparator(parent, SWT.BORDER);
732
733 SequenceReferenceCollectionDetailSection referenceSection = formFactory.createSequenceReferenceCollectionDetailSection(getConversationHolder(), parent, StoreUtil.getSectionStyle(SequenceReferenceCollectionDetailSection.class, getInput().getClass().getCanonicalName(), true));
734
735 formFactory.createHorizontalSeparator(parent, SWT.BORDER);
736
737 SequenceContigFileCollectionDetailSection contigFileSection = formFactory.createSequenceContigFileCollectionDetailSection(getConversationHolder(), parent, StoreUtil.getSectionStyle(SequenceContigFileCollectionDetailSection.class, getInput().getClass().getCanonicalName(), true));
738
739
740 addPart(section);
741 addPart(referenceSection);
742 addPart(contigFileSection);
743 }
744
745 private void createSingleReadSection(RootElement parent) {
746 SingleReadGeneralDetailSection section = formFactory.createSingleReadGeneralDetailSection(getConversationHolder(), parent, this, StoreUtil.getSectionStyle(SingleReadGeneralDetailSection.class, getInput().getClass().getCanonicalName(), true));
747 addPart(section);
748
749 formFactory.createHorizontalSeparator(parent, SWT.BORDER);
750
751 SingleReadPherogramCollectionDetailSection pherogramSection = formFactory.createSingleReadPherogramCollectionDetailSection(getConversationHolder(), parent, StoreUtil.getSectionStyle(SingleReadPherogramCollectionDetailSection.class, getInput().getClass().getCanonicalName(), true));
752 addPart(pherogramSection);
753
754 }
755
756 private void createMediaSpecimenSection(RootElement parent) {
757 MediaSpecimenGeneralDetailSection generalSection = formFactory.createMediaSpecimenGeneralDetailSection(getConversationHolder(), parent, this, StoreUtil.getSectionStyle(MediaSpecimenGeneralDetailSection.class, getInput().getClass().getCanonicalName(), true));
758 addPart(generalSection);
759
760 formFactory.createHorizontalSeparator(parent, SWT.BORDER);
761
762 RightsSection rightsSection = formFactory.createRightsSection(getConversationHolder(), parent, StoreUtil.getSectionStyle(RightsSection.class, getInput().getClass().getCanonicalName()));
763 addPart(rightsSection);
764
765 }
766
767 private void createFeatureTreeSection(RootElement parent) {
768 FeatureTreeDetailSection section = formFactory.createFeatureTreeDetailSection(getConversationHolder(), parent, this, StoreUtil.getSectionStyle(FeatureTreeDetailSection.class, getInput().getClass().getCanonicalName(), true));
769
770 addPart(section);
771 }
772
773 private void createFeatureNodeSection(RootElement parent) {
774 FeatureNodeDetailSection featureDistributionSection = formFactory.createFeatureNodeDetailSection(getConversationHolder(), parent, this, StoreUtil.getSectionStyle(FeatureNodeDetailSection.class, getInput().getClass().getCanonicalName(), true));
775
776 addPart(featureDistributionSection);
777 }
778
779 private void createFeatureDistributionSection(RootElement parent) {
780 FeatureDistributionDetailSection featureDistributionSection = formFactory.createFeatureDistributionDetailSection(getConversationHolder(), parent, this, StoreUtil.getSectionStyle(FeatureDistributionDetailSection.class, getInput().getClass().getCanonicalName(), true));
781
782 addPart(featureDistributionSection);
783 }
784
785 private void createCharacterNodeSection(RootElement parent) {
786 CharacterNodeDetailSection featureDistributionSection = formFactory.createCharacterNodeDetailSection(getConversationHolder(), parent, this, StoreUtil.getSectionStyle(CharacterDetailSection.class, getInput().getClass().getCanonicalName(), true));
787 addPart(featureDistributionSection);
788 }
789
790 private void createCharacterSection(RootElement parent) {
791 CharacterDetailSection featureDistributionSection = formFactory.createCharacterDetailSection(getConversationHolder(), parent, this, StoreUtil.getSectionStyle(CharacterDetailSection.class, getInput().getClass().getCanonicalName(), true));
792 addPart(featureDistributionSection);
793 }
794
795 private void createPolytomousKeyNodeSection(RootElement parent) {
796 PolytomousKeyDetailSection polytomousKeyDetailSection = formFactory.createPolytomousKeyDetailSection(getConversationHolder(), parent, this, StoreUtil.getSectionStyle(PolytomousKeyDetailSection.class, getInput().getClass().getCanonicalName()));
797
798 formFactory.createHorizontalSeparator(parent, SWT.BORDER);
799
800 PolytomousKeyNodeDetailSection polytomousKeyNodeDetailSection = formFactory.createPolytomousKeyNodeDetailSection(getConversationHolder(), parent, this, StoreUtil.getSectionStyle(PolytomousKeyNodeDetailSection.class, getInput().getClass().getCanonicalName(), true));
801
802 addPart(polytomousKeyDetailSection);
803 addPart(polytomousKeyNodeDetailSection);
804
805 }
806
807 private void createUseRecordSection(RootElement parent) {
808 UseRecordDetailSection descriptionUseRecordSection = formFactory.createUseRecordDetailSection(getConversationHolder(), parent, this,StoreUtil.getSectionStyle(UseRecordDetailSection.class, getInput().getClass().getCanonicalName(), true));
809
810 formFactory.createHorizontalSeparator(parent, SWT.BORDER);
811
812 addPart(descriptionUseRecordSection);
813
814
815 }
816
817 private void createUserSection(RootElement parent) {
818 UserDetailSection userDetailSection = formFactory.createUserDetailSection(getConversationHolder(), parent, this, StoreUtil.getSectionStyle(UserDetailSection.class, getInput().getClass().getCanonicalName(), true));
819
820 GroupsByUserDetailSection groupByUserDetailSection = formFactory.createGroupsByUserDetailSection(getConversationHolder(), parent, StoreUtil.getSectionStyle(GroupsByUserDetailSection.class, getInput().getClass().getCanonicalName(), true));
821
822 addPart(userDetailSection);
823 addPart(groupByUserDetailSection);
824 }
825
826 private void createMisappliedNameSection(RootElement parent) {
827 TaxonRelationshipDetailSection taxonRelationshipDetailSection = formFactory.createTaxonRelationshipDetailSection(getConversationHolder(), parent, this,
828 StoreUtil.getSectionStyle(TaxonRelationshipDetailSection.class, getInput().getClass().getCanonicalName(), true));
829 addPart(taxonRelationshipDetailSection);
830
831 formFactory.createHorizontalSeparator(parent, SWT.BORDER);
832
833
834 NonViralNameDetailSection nonViralNameSection = formFactory
835 .createNonViralNameDetailSection(getConversationHolder(), parent, this, true,
836 StoreUtil.getSectionStyle(NonViralNameDetailSection.class, getInput().getClass().getCanonicalName(), true));
837 addPart(nonViralNameSection);
838
839 formFactory.createHorizontalSeparator(parent, SWT.BORDER);
840
841 NomenclaturalReferenceDetailSection referenceDetailSection = formFactory.createNomenclaturalReferenceDetailSection(getConversationHolder(), parent, this,
842 StoreUtil.getSectionStyle(NomenclaturalReferenceDetailSection.class, getInput().getClass().getCanonicalName(), true));
843 formFactory.createHorizontalSeparator(parent, SWT.BORDER);
844 addPart(referenceDetailSection);
845
846
847 NomenclaturalStatusSection nomenclaturalStatusSection = formFactory.createNomenclaturalStatusSection(getConversationHolder(), parent,
848 StoreUtil.getSectionStyle(NomenclaturalStatusSection.class, getInput().getClass().getCanonicalName(), true));
849 formFactory.createHorizontalSeparator(parent, SWT.BORDER);
850 addPart(nomenclaturalStatusSection);
851
852 ProtologueSection protologSection = formFactory.createProtologueSection(getConversationHolder(), parent, StoreUtil.getSectionStyle(ProtologueSection.class, getInput().getClass().getCanonicalName()));
853 formFactory.createHorizontalSeparator(parent, SWT.BORDER);
854 addPart(protologSection);
855
856 TypeDesignationSection typeDesignationSection = formFactory.createTypeDesignationSection(getConversationHolder(), parent, StoreUtil.getSectionStyle(TypeDesignationSection.class, getInput().getClass().getCanonicalName()));
857 formFactory.createHorizontalSeparator(parent, SWT.BORDER);
858 addPart(typeDesignationSection);
859
860 NameRelationshipDetailSection nameRelationshipSection = formFactory.createNameRelationshipDetailSection(getConversationHolder(), parent, StoreUtil.getSectionStyle(NameRelationshipDetailSection.class, getInput().getClass().getCanonicalName()));
861 formFactory.createHorizontalSeparator(parent, SWT.BORDER);
862 addPart(nameRelationshipSection);
863
864 }
865
866 private void createTaxonRelationshipSection(RootElement parent) {
867 TaxonRelationshipDetailSection taxonRelationshipDetailSection = formFactory.createTaxonRelationshipDetailSection(getConversationHolder(), parent, this, StoreUtil.getSectionStyle(TaxonRelationshipDetailSection.class, getInput().getClass().getCanonicalName(), true));
868
869 ReferencedEntityDetailSection referencedEntityBaseDetailSection = formFactory.createReferencedEntityDetailSection(getConversationHolder(), parent, this, StoreUtil.getSectionStyle(ReferencedEntityDetailSection.class, getInput().getClass().getCanonicalName(), true));
870 addPart(taxonRelationshipDetailSection);
871 addPart(referencedEntityBaseDetailSection);
872 }
873 private void createTermVocabularySection(RootElement parent) {
874 TermVocabularyDetailSection termVocabularyDetailSection = formFactory.createTermVocabularyDetailSection(getConversationHolder(), parent, this, StoreUtil.getSectionStyle(TermVocabularyDetailSection.class, getInput().getClass().getCanonicalName(), true));
875 addPart(termVocabularyDetailSection);
876 }
877
878 private void createDefinedTermSection(RootElement parent) {
879 DefinedTermDetailSection definedTermDetailSection = formFactory.createDefinedTermDetailSection(getInput().getClass(), getConversationHolder(), parent, this, StoreUtil.getSectionStyle(DefinedTermDetailSection.class, getInput().getClass().getCanonicalName(), true));
880 addPart(definedTermDetailSection);
881 TermMediaSection termMediaSection = formFactory.createTermMediaSection(getConversationHolder(), parent, StoreUtil.getSectionStyle(DefinedTermDetailSection.class, getInput().getClass().getCanonicalName(), true));
882 addPart(termMediaSection);
883 }
884
885 @Override
886 public void update(CdmDataChangeMap arg0) {
887
888 }
889 @Inject
890 @Optional
891 private void updateView(@UIEventTopic(WorkbenchEventConstants.REFRESH_DETAILS)boolean refresh){
892 if(refresh){
893 refresh();
894
895 }
896 }
897
898 }