adaptions to changes in PreferencesUtil
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / ui / dialog / selection / SelectionDialogFactory.java
1 /**
2 * Copyright (C) 2009 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 package eu.etaxonomy.taxeditor.ui.dialog.selection;
10
11 import java.util.List;
12 import java.util.UUID;
13
14 import org.eclipse.swt.widgets.Shell;
15
16 import eu.etaxonomy.cdm.api.facade.DerivedUnitFacade;
17 import eu.etaxonomy.cdm.model.agent.AgentBase;
18 import eu.etaxonomy.cdm.model.agent.Institution;
19 import eu.etaxonomy.cdm.model.agent.Person;
20 import eu.etaxonomy.cdm.model.agent.Team;
21 import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase;
22 import eu.etaxonomy.cdm.model.common.ICdmBase;
23 import eu.etaxonomy.cdm.model.description.Feature;
24 import eu.etaxonomy.cdm.model.description.PolytomousKey;
25 import eu.etaxonomy.cdm.model.description.PolytomousKeyNode;
26 import eu.etaxonomy.cdm.model.location.Country;
27 import eu.etaxonomy.cdm.model.location.NamedArea;
28 import eu.etaxonomy.cdm.model.media.Media;
29 import eu.etaxonomy.cdm.model.media.Rights;
30 import eu.etaxonomy.cdm.model.metadata.PreferencePredicate;
31 import eu.etaxonomy.cdm.model.molecular.Amplification;
32 import eu.etaxonomy.cdm.model.molecular.Primer;
33 import eu.etaxonomy.cdm.model.name.TaxonName;
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.permission.GrantedAuthorityImpl;
39 import eu.etaxonomy.cdm.model.permission.Group;
40 import eu.etaxonomy.cdm.model.permission.User;
41 import eu.etaxonomy.cdm.model.reference.Reference;
42 import eu.etaxonomy.cdm.model.taxon.Classification;
43 import eu.etaxonomy.cdm.model.taxon.Synonym;
44 import eu.etaxonomy.cdm.model.taxon.Taxon;
45 import eu.etaxonomy.cdm.model.taxon.TaxonBase;
46 import eu.etaxonomy.cdm.model.taxon.TaxonNode;
47 import eu.etaxonomy.cdm.model.term.TermTree;
48 import eu.etaxonomy.taxeditor.model.MessagingUtils;
49 import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
50 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
51 import eu.etaxonomy.taxeditor.ui.element.IEntityElement;
52 import eu.etaxonomy.taxeditor.ui.section.agent.TeamMemberElement;
53 import eu.etaxonomy.taxeditor.ui.section.description.CommonNameSourceElement;
54 import eu.etaxonomy.taxeditor.ui.section.description.detail.CommonNameDetailElement;
55 import eu.etaxonomy.taxeditor.ui.section.group.MemberDetailElement;
56 import eu.etaxonomy.taxeditor.ui.section.group.MemberDetailSection;
57 import eu.etaxonomy.taxeditor.ui.section.name.AuthorshipDetailElement;
58 import eu.etaxonomy.taxeditor.ui.section.reference.NomenclaturalReferenceDetailElement;
59 import eu.etaxonomy.taxeditor.ui.section.reference.ReferenceDetailElement;
60 import eu.etaxonomy.taxeditor.ui.section.user.GroupsByUserDetailElement;
61 import eu.etaxonomy.taxeditor.ui.section.user.GroupsByUserDetailSection;
62
63 /**
64 * @author n.hoffmann
65 * @date Jan 25, 2012
66 *
67 */
68 public class SelectionDialogFactory {
69
70 public static <T extends ICdmBase> T getSelectionFromDialog(Class<T> clazz, Shell shell, //ConversationHolder conversation,
71 T currentSelection){
72 return getSelectionFromDialog(clazz, shell, //conversation,
73 currentSelection, null);
74 }
75
76 public static <T extends ICdmBase> T getSelectionFromDialog(Class<T> clazz, Shell shell, //ConversationHolder conversation,
77 T currentSelection, ICdmFormElement parentElement){
78
79 if(clazz.equals(Taxon.class)){
80 return (T) TaxonSelectionDialog.selectTaxon(shell, //conversation,
81 (Taxon) currentSelection);
82 }
83 if(clazz.equals(Synonym.class)){
84 return (T) TaxonBaseSelectionDialog.selectSynonym(shell );//,conversation);
85 }
86 if(clazz.equals(TaxonBase.class)){
87 return (T) TaxonBaseSelectionDialog.selectTaxonBase(shell);//, conversation);
88 }
89 if(clazz.equals(Classification.class)){
90 return (T) ClassificationSelectionDialog.select(shell, //conversation,
91 (Classification) currentSelection);
92 }
93 if(clazz.equals(TaxonNode.class)){
94 return (T) TaxonNodeSelectionDialog.select(shell, //conversation,
95 null, null, (TaxonNode) currentSelection, ((TaxonNode) currentSelection).getClassification().getUuid());
96 }
97 if(clazz.equals(Reference.class) && parentElement instanceof NomenclaturalReferenceDetailElement){
98 return (T) NomenclaturalReferenceSelectionDialog.select(shell, //conversation,
99 (Reference) currentSelection, ((NomenclaturalReferenceDetailElement)parentElement).getEntity().getCombinationAuthorship());
100 }
101 if(clazz.equals(Reference.class) && parentElement instanceof CommonNameSourceElement && PreferencesUtil.getFilterCommonNameReferences()){
102 return (T) CommonNameReferenceSelectionDialog.select(shell, //conversation,
103 (Reference) currentSelection);
104 }
105 if(clazz.equals(Reference.class)){
106 if (parentElement instanceof ReferenceDetailElement){
107 return (T) ReferenceSelectionDialog.select(shell, //conversation,
108 ((ReferenceDetailElement) parentElement).getEntity(), true);
109 }
110 return (T) ReferenceSelectionDialog.select(shell, //conversation,
111 (Reference) currentSelection);
112 }
113
114 if(clazz.equals(TaxonName.class)){
115 return (T) NameSelectionDialog.select(shell, //conversation,
116 (TaxonName) currentSelection);
117 }
118 if(clazz.equals(Team.class)){
119 return (T) TeamSelectionDialog.select(shell, //conversation,
120 (Team) currentSelection);
121 }
122 if(clazz.equals(TeamOrPersonBase.class) && parentElement instanceof AuthorshipDetailElement){
123 return (T) NomenclaturalAuthorSelectionDialog.select(shell, //conversation,
124 (TeamOrPersonBase) currentSelection, false);
125 }else if(clazz.equals(TeamOrPersonBase.class)){
126 //TODO: add TeamOrPersonBaseSelectionDialog (see ticket #4545)
127 return (T) TeamOrPersonBaseSelectionDialog.select(shell, //conversation,
128 (TeamOrPersonBase) currentSelection, false);
129 }
130 if(clazz.equals(Person.class) && parentElement instanceof TeamMemberElement){
131 return (T) NomenclaturalPersonAuthorSelectionDialog.select(shell, //conversation,
132 (TeamOrPersonBase) currentSelection, true);
133 }
134 if(clazz.equals(AgentBase.class)){
135 return (T) AgentSelectionDialog.select(shell, //conversation,
136 (AgentBase) currentSelection, false);
137 }
138 if(clazz.equals(Feature.class)){
139 return (T) FeatureSelectionDialog.select(shell, //conversation,
140 (Feature) currentSelection);
141 }
142 if(clazz.equals(TermTree.class)){
143 return (T) FeatureTreeSelectionDialog.select(shell, //conversation,
144 (TermTree) currentSelection);
145 }
146 if(clazz.equals(PolytomousKey.class)){
147 return (T) PolytomousKeySelectionDialog.select(shell, //conversation,
148 (PolytomousKey) currentSelection);
149 }
150 if(clazz.equals(PolytomousKeyNode.class)){
151 MessagingUtils.warningDialog("Not implemented yet", SelectionDialogFactory.class,
152 "This functionality is not implemented yet.");
153 return null;
154 }
155 if(clazz.equals(DerivedUnit.class)){
156 return (T) DerivedUnitSelectionDialog.select(shell, //conversation,
157 (DerivedUnit) currentSelection);
158 }
159 if(clazz.equals(FieldUnit.class)){
160 return (T) FieldUnitSelectionDialog.select(shell, //conversation,
161 (FieldUnit) currentSelection);
162 }
163 if(clazz.equals(SpecimenOrObservationBase.class)){
164 return (T) SpecimenOrObservationBaseSelectionDialog.select(shell, //conversation,
165 (SpecimenOrObservationBase) currentSelection);
166 }
167 if(clazz.equals(NamedArea.class)){
168 if(parentElement instanceof IEntityElement && ((IEntityElement) parentElement).getEntity() instanceof DerivedUnitFacade){
169 return (T) NamedAreaSelectionDialog.select(shell, //conversation,
170 (NamedArea) currentSelection, DerivedUnit.class.getCanonicalName(), Country.uuidCountryVocabulary);
171 }
172 else if(parentElement instanceof CommonNameDetailElement ){
173 return (T) CommonNameNamedAreaSelectionDialog.select(shell, //conversation,
174 (NamedArea) currentSelection, parentElement.getClass().getCanonicalName());
175 }
176 else{
177 //if (parentElement == null){
178 List<UUID> uuidList = PreferencesUtil.createUUIDListFromStringPref(PreferencePredicate.AvailableDistributionAreaVocabularies.getKey(), false);
179 UUID[] uuidArray = null;
180 if (uuidList != null){
181 uuidArray = new UUID[uuidList.size()];
182 uuidList.toArray(uuidArray);
183
184 }
185 return (T)NamedAreaSelectionDialog.select(shell, (NamedArea) currentSelection, null, uuidArray);
186
187
188
189 //}
190 //return (T) NamedAreaSelectionDialog.select(shell, //conversation,
191 // (NamedArea) currentSelection, parentElement.getClass().getCanonicalName());
192 }
193 }
194 if(clazz.equals(Collection.class)){
195 return (T) CollectionSelectionDialog.select(shell, //conversation,
196 (Collection) currentSelection);
197 }
198 if(clazz.equals(User.class) && parentElement instanceof MemberDetailElement){
199 MemberDetailSection section = (MemberDetailSection)((MemberDetailElement)parentElement).getParentElement();
200 return (T) UserSelectionDialog.select(shell, //conversation,
201 (User) currentSelection, section.getEntity());
202 }
203 if(clazz.equals(GrantedAuthorityImpl.class)){
204 return (T) GrantedAuthoritySelectionDialog.select(shell, //conversation,
205 (GrantedAuthorityImpl) currentSelection);
206 }
207 if (clazz.equals(Person.class)){
208 return (T) PersonSelectionDialog.select(shell, //conversation,
209 (Person) currentSelection);
210 }
211 if(clazz.equals(Group.class) && parentElement instanceof GroupsByUserDetailElement){
212 GroupsByUserDetailSection section =(GroupsByUserDetailSection)((GroupsByUserDetailElement)parentElement).getParentElement();
213 return (T) GroupSelectionDialog.select(shell, //conversation,
214 (Group) currentSelection, section.getEntity());
215 }
216 if(clazz.equals(Institution.class)){
217 return (T) InstitutionSelectionDialog.select(shell, //conversation,
218 (Institution) currentSelection);
219 }
220 if(clazz.equals(Primer.class)){
221 return (T) PrimerSelectionDialog.select(shell, //conversation,
222 (Primer) currentSelection);
223 }
224 if(clazz.equals(Amplification.class)){
225 return (T) AmplificationSelectionDialog.select(shell, //conversation,
226 (Amplification) currentSelection);
227 }
228 if(clazz.equals(Media.class)){
229 return (T) MediaSelectionDialog.select(shell, //conversation,
230 (Media) currentSelection);
231 }
232 if(clazz.equals(Rights.class)){
233 return (T) RightsSelectionDialog.select(shell, //conversation,
234 (Rights) currentSelection);
235 }
236
237 return null;
238 }
239
240 public static <T extends ICdmBase> T getSelectionFromExtDialog(Class<T> clazz, Shell shell, //ConversationHolder conversation,
241 ICdmFormElement parentElement){
242 return (T) ExtReferenceSelectionDialog.select(shell, //conversation,
243 null);
244 }
245
246
247 }