3 * Copyright (C) 2009 EDIT
4 * European Distributed Institute of Taxonomy
5 * http://www.e-taxonomy.eu
7 * The contents of this file are subject to the Mozilla Public License Version 1.1
8 * See LICENSE.TXT at the top of this package for the full license terms.
10 package eu
.etaxonomy
.taxeditor
.ui
.dialog
.selection
;
12 import org
.eclipse
.swt
.widgets
.Shell
;
14 import eu
.etaxonomy
.cdm
.api
.conversation
.ConversationHolder
;
15 import eu
.etaxonomy
.cdm
.api
.facade
.DerivedUnitFacade
;
16 import eu
.etaxonomy
.cdm
.model
.agent
.AgentBase
;
17 import eu
.etaxonomy
.cdm
.model
.agent
.Institution
;
18 import eu
.etaxonomy
.cdm
.model
.agent
.Person
;
19 import eu
.etaxonomy
.cdm
.model
.agent
.Team
;
20 import eu
.etaxonomy
.cdm
.model
.agent
.TeamOrPersonBase
;
21 import eu
.etaxonomy
.cdm
.model
.common
.GrantedAuthorityImpl
;
22 import eu
.etaxonomy
.cdm
.model
.common
.Group
;
23 import eu
.etaxonomy
.cdm
.model
.common
.ICdmBase
;
24 import eu
.etaxonomy
.cdm
.model
.common
.User
;
25 import eu
.etaxonomy
.cdm
.model
.description
.Feature
;
26 import eu
.etaxonomy
.cdm
.model
.description
.FeatureTree
;
27 import eu
.etaxonomy
.cdm
.model
.description
.PolytomousKey
;
28 import eu
.etaxonomy
.cdm
.model
.description
.PolytomousKeyNode
;
29 import eu
.etaxonomy
.cdm
.model
.location
.Country
;
30 import eu
.etaxonomy
.cdm
.model
.location
.NamedArea
;
31 import eu
.etaxonomy
.cdm
.model
.molecular
.Amplification
;
32 import eu
.etaxonomy
.cdm
.model
.molecular
.Primer
;
33 import eu
.etaxonomy
.cdm
.model
.name
.TaxonNameBase
;
34 import eu
.etaxonomy
.cdm
.model
.occurrence
.Collection
;
35 import eu
.etaxonomy
.cdm
.model
.occurrence
.DerivedUnit
;
36 import eu
.etaxonomy
.cdm
.model
.occurrence
.FieldUnit
;
37 import eu
.etaxonomy
.cdm
.model
.occurrence
.SpecimenOrObservationBase
;
38 import eu
.etaxonomy
.cdm
.model
.reference
.Reference
;
39 import eu
.etaxonomy
.cdm
.model
.taxon
.Classification
;
40 import eu
.etaxonomy
.cdm
.model
.taxon
.Synonym
;
41 import eu
.etaxonomy
.cdm
.model
.taxon
.Taxon
;
42 import eu
.etaxonomy
.cdm
.model
.taxon
.TaxonBase
;
43 import eu
.etaxonomy
.cdm
.model
.taxon
.TaxonNode
;
44 import eu
.etaxonomy
.taxeditor
.model
.MessagingUtils
;
45 import eu
.etaxonomy
.taxeditor
.ui
.element
.ICdmFormElement
;
46 import eu
.etaxonomy
.taxeditor
.ui
.element
.IEntityElement
;
47 import eu
.etaxonomy
.taxeditor
.ui
.section
.agent
.TeamMemberElement
;
48 import eu
.etaxonomy
.taxeditor
.ui
.section
.description
.detail
.DistributionDetailElement
;
49 import eu
.etaxonomy
.taxeditor
.ui
.section
.name
.AuthorshipDetailElement
;
50 import eu
.etaxonomy
.taxeditor
.ui
.section
.reference
.NomenclaturalReferenceDetailElement
;
57 public class SelectionDialogFactory
{
59 public static <T
extends ICdmBase
> T
getSelectionFromDialog(Class
<T
> clazz
, Shell shell
, ConversationHolder conversation
, T currentSelection
){
60 return getSelectionFromDialog(clazz
, shell
, conversation
, currentSelection
, null);
63 public static <T
extends ICdmBase
> T
getSelectionFromDialog(Class
<T
> clazz
, Shell shell
, ConversationHolder conversation
, T currentSelection
, ICdmFormElement parentElement
){
65 if(clazz
.equals(Taxon
.class)){
66 return (T
) TaxonBaseSelectionDialog
.selectTaxon(shell
, conversation
, (Taxon
) currentSelection
);
68 if(clazz
.equals(Synonym
.class)){
69 return (T
) TaxonBaseSelectionDialog
.selectSynonym(shell
, conversation
);
71 if(clazz
.equals(TaxonBase
.class)){
72 return (T
) TaxonBaseSelectionDialog
.selectTaxonBase(shell
, conversation
);
74 if(clazz
.equals(Classification
.class)){
75 return (T
) ClassificationSelectionDialog
.select(shell
, conversation
, (Classification
) currentSelection
);
77 if(clazz
.equals(TaxonNode
.class)){
78 return (T
) TaxonNodeSelectionDialog
.select(shell
, conversation
, null, null, (TaxonNode
) currentSelection
, ((TaxonNode
) currentSelection
).getClassification());
80 if(clazz
.equals(Reference
.class) && parentElement
instanceof NomenclaturalReferenceDetailElement
){
81 return (T
) NomenclaturalReferenceSelectionDialog
.select(shell
, conversation
, (Reference
) currentSelection
);
83 if(clazz
.equals(Reference
.class)){
84 return (T
) ReferenceSelectionDialog
.select(shell
, conversation
, (Reference
) currentSelection
);
87 if(clazz
.equals(TaxonNameBase
.class)){
88 return (T
) NameSelectionDialog
.select(shell
, conversation
, (TaxonNameBase
) currentSelection
);
90 if(clazz
.equals(Team
.class)){
91 return (T
) TeamSelectionDialog
.select(shell
, conversation
, (Team
) currentSelection
);
93 if(clazz
.equals(TeamOrPersonBase
.class) && parentElement
instanceof AuthorshipDetailElement
){
94 return (T
) NomenclaturalAuthorSelectionDialog
.select(shell
, conversation
, (AgentBase
) currentSelection
, false);
95 }else if(clazz
.equals(TeamOrPersonBase
.class)){
96 //TODO: add TeamOrPersonBaseSelectionDialog (see ticket #4545)
97 return (T
) AgentSelectionDialog
.select(shell
, conversation
, (AgentBase
) currentSelection
, false);
99 if(clazz
.equals(Person
.class) && parentElement
instanceof TeamMemberElement
){
100 return (T
) NomenclaturalPersonAuthorSelectionDialog
.select(shell
, conversation
, (AgentBase
) currentSelection
, true);
102 if(clazz
.equals(AgentBase
.class)){
103 return (T
) AgentSelectionDialog
.select(shell
, conversation
, (AgentBase
) currentSelection
, false);
105 if(clazz
.equals(Feature
.class)){
106 return (T
) FeatureSelectionDialog
.select(shell
, conversation
, (Feature
) currentSelection
);
108 if(clazz
.equals(FeatureTree
.class)){
109 return (T
) FeatureTreeSelectionDialog
.select(shell
, conversation
, (FeatureTree
) currentSelection
);
111 if(clazz
.equals(PolytomousKey
.class)){
112 return (T
) PolytomousKeySelectionDialog
.select(shell
, conversation
, (PolytomousKey
) currentSelection
);
114 if(clazz
.equals(PolytomousKeyNode
.class)){
115 MessagingUtils
.warningDialog("Not implemented yet", SelectionDialogFactory
.class,
116 "This functionality is not implemented yet.");
119 if(clazz
.equals(DerivedUnit
.class)){
120 return (T
) DerivedUnitSelectionDialog
.select(shell
, conversation
, (DerivedUnit
) currentSelection
);
122 if(clazz
.equals(FieldUnit
.class)){
123 return (T
) FieldUnitSelectionDialog
.select(shell
, conversation
, (FieldUnit
) currentSelection
);
125 if(clazz
.equals(SpecimenOrObservationBase
.class)){
126 return (T
) SpecimenOrObservationBaseSelectionDialog
.select(shell
, conversation
, (SpecimenOrObservationBase
) currentSelection
);
128 if(clazz
.equals(NamedArea
.class)){
129 if(parentElement
instanceof DistributionDetailElement
){
130 // return (T) NamedAreaSelectionForDistributionDialog.select(shell, conversation, (NamedArea) currentSelection, CdmStore.getTermManager().getPreferredVocabulary(TermType.NamedArea));
131 return (T
) NamedAreaSelectionDialog
.select(shell
, conversation
, (NamedArea
) currentSelection
, Country
.uuidCountryVocabulary
);
132 }else if(parentElement
instanceof IEntityElement
&& ((IEntityElement
) parentElement
).getEntity() instanceof DerivedUnitFacade
){
133 return (T
) NamedAreaSelectionDialog
.select(shell
, conversation
, (NamedArea
) currentSelection
, Country
.uuidCountryVocabulary
);
136 return (T
) NamedAreaSelectionDialog
.select(shell
, conversation
, (NamedArea
) currentSelection
);
139 if(clazz
.equals(Collection
.class)){
140 return (T
) CollectionSelectionDialog
.select(shell
, conversation
, (Collection
) currentSelection
);
142 if(clazz
.equals(User
.class)){
143 return (T
) UserSelectionDialog
.select(shell
, conversation
, (User
) currentSelection
);
145 if(clazz
.equals(GrantedAuthorityImpl
.class)){
146 return (T
) GrantedAuthoritySelectionDialog
.select(shell
, conversation
, (GrantedAuthorityImpl
) currentSelection
);
148 if (clazz
.equals(Person
.class)){
149 return (T
) PersonSelectionDialog
.select(shell
, conversation
, (Person
) currentSelection
);
151 if(clazz
.equals(Group
.class)){
152 return (T
) GroupSelectionDialog
.select(shell
, conversation
, (Group
) currentSelection
);
154 if(clazz
.equals(Institution
.class)){
155 return (T
) InstitutionSelectionDialog
.select(shell
, conversation
, (Institution
) currentSelection
);
157 if(clazz
.equals(Primer
.class)){
158 return (T
) PrimerSelectionDialog
.select(shell
, conversation
, (Primer
) currentSelection
);
160 if(clazz
.equals(Amplification
.class)){
161 return (T
) AmplificationSelectionDialog
.select(shell
, conversation
, (Amplification
) currentSelection
);