Project

General

Profile

Download (11.1 KB) Statistics
| Branch: | Tag: | Revision:
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.GrantedAuthorityImpl;
23
import eu.etaxonomy.cdm.model.common.Group;
24
import eu.etaxonomy.cdm.model.common.ICdmBase;
25
import eu.etaxonomy.cdm.model.common.User;
26
import eu.etaxonomy.cdm.model.description.Feature;
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.media.Media;
32
import eu.etaxonomy.cdm.model.media.Rights;
33
import eu.etaxonomy.cdm.model.metadata.PreferencePredicate;
34
import eu.etaxonomy.cdm.model.molecular.Amplification;
35
import eu.etaxonomy.cdm.model.molecular.Primer;
36
import eu.etaxonomy.cdm.model.name.TaxonName;
37
import eu.etaxonomy.cdm.model.occurrence.Collection;
38
import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;
39
import eu.etaxonomy.cdm.model.occurrence.FieldUnit;
40
import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
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());
179
		            UUID[] uuidArray = new UUID[uuidList.size()];
180
		            uuidList.toArray(uuidArray);
181
		            return (T)NamedAreaSelectionDialog.select(shell, (NamedArea) currentSelection, null, uuidArray);
182
		        //}
183
		        //return (T) NamedAreaSelectionDialog.select(shell, //conversation,
184
		        //        (NamedArea) currentSelection, parentElement.getClass().getCanonicalName());
185
		    }
186
		}
187
		if(clazz.equals(Collection.class)){
188
			return (T) CollectionSelectionDialog.select(shell, //conversation,
189
			        (Collection) currentSelection);
190
		}
191
		if(clazz.equals(User.class) && parentElement instanceof MemberDetailElement){
192
		    MemberDetailSection section = (MemberDetailSection)((MemberDetailElement)parentElement).getParentElement();
193
			return (T) UserSelectionDialog.select(shell, //conversation,
194
			        (User) currentSelection, section.getEntity());
195
		}
196
		if(clazz.equals(GrantedAuthorityImpl.class)){
197
			return (T) GrantedAuthoritySelectionDialog.select(shell, //conversation,
198
			        (GrantedAuthorityImpl) currentSelection);
199
		}
200
		if (clazz.equals(Person.class)){
201
			return (T) PersonSelectionDialog.select(shell, //conversation,
202
			        (Person) currentSelection);
203
		}
204
		if(clazz.equals(Group.class) &&  parentElement instanceof GroupsByUserDetailElement){
205
		    GroupsByUserDetailSection section =(GroupsByUserDetailSection)((GroupsByUserDetailElement)parentElement).getParentElement();
206
			return (T) GroupSelectionDialog.select(shell, //conversation,
207
			        (Group) currentSelection, section.getEntity());
208
		}
209
		if(clazz.equals(Institution.class)){
210
			return (T) InstitutionSelectionDialog.select(shell, //conversation,
211
			        (Institution) currentSelection);
212
		}
213
		if(clazz.equals(Primer.class)){
214
		    return (T) PrimerSelectionDialog.select(shell, //conversation,
215
		            (Primer) currentSelection);
216
		}
217
		if(clazz.equals(Amplification.class)){
218
		    return (T) AmplificationSelectionDialog.select(shell, //conversation,
219
		            (Amplification) currentSelection);
220
		}
221
		if(clazz.equals(Media.class)){
222
		    return (T) MediaSelectionDialog.select(shell, //conversation,
223
		            (Media) currentSelection);
224
		}
225
		if(clazz.equals(Rights.class)){
226
            return (T) RightsSelectionDialog.select(shell, //conversation,
227
                    (Rights) currentSelection);
228
        }
229

    
230
		return null;
231
	}
232

    
233
	public static <T extends ICdmBase> T getSelectionFromExtDialog(Class<T> clazz, Shell shell, //ConversationHolder conversation,
234
	        ICdmFormElement parentElement){
235
	    return (T) ExtReferenceSelectionDialog.select(shell, //conversation,
236
	            null);
237
	}
238

    
239

    
240
}
(35-35/45)