Project

General

Profile

Download (8.94 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 org.eclipse.swt.widgets.Shell;
12

    
13
import eu.etaxonomy.cdm.api.facade.DerivedUnitFacade;
14
import eu.etaxonomy.cdm.model.agent.AgentBase;
15
import eu.etaxonomy.cdm.model.agent.Institution;
16
import eu.etaxonomy.cdm.model.agent.Person;
17
import eu.etaxonomy.cdm.model.agent.Team;
18
import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase;
19
import eu.etaxonomy.cdm.model.common.GrantedAuthorityImpl;
20
import eu.etaxonomy.cdm.model.common.Group;
21
import eu.etaxonomy.cdm.model.common.ICdmBase;
22
import eu.etaxonomy.cdm.model.common.User;
23
import eu.etaxonomy.cdm.model.description.Feature;
24
import eu.etaxonomy.cdm.model.description.FeatureTree;
25
import eu.etaxonomy.cdm.model.description.PolytomousKey;
26
import eu.etaxonomy.cdm.model.description.PolytomousKeyNode;
27
import eu.etaxonomy.cdm.model.location.Country;
28
import eu.etaxonomy.cdm.model.location.NamedArea;
29
import eu.etaxonomy.cdm.model.media.Media;
30
import eu.etaxonomy.cdm.model.media.Rights;
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.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.name.AuthorshipDetailElement;
49
import eu.etaxonomy.taxeditor.ui.section.reference.NomenclaturalReferenceDetailElement;
50
import eu.etaxonomy.taxeditor.ui.section.reference.ReferenceDetailElement;
51

    
52
/**
53
 * @author n.hoffmann
54
 * @date Jan 25, 2012
55
 *
56
 */
57
public class SelectionDialogFactory {
58

    
59
    public static <T extends ICdmBase> T getSelectionFromDialog(Class<T> clazz, Shell shell, //ConversationHolder conversation,
60
            T currentSelection){
61
        return getSelectionFromDialog(clazz, shell, //conversation,
62
                currentSelection, null);
63
    }
64

    
65
	public static <T extends ICdmBase> T getSelectionFromDialog(Class<T> clazz, Shell shell, //ConversationHolder conversation,
66
	        T currentSelection, ICdmFormElement parentElement){
67

    
68
		if(clazz.equals(Taxon.class)){
69
			return (T) TaxonBaseSelectionDialog.selectTaxon(shell, //conversation,
70
			        (Taxon) currentSelection);
71
		}
72
		if(clazz.equals(Synonym.class)){
73
			return (T) TaxonBaseSelectionDialog.selectSynonym(shell );//,conversation);
74
		}
75
		if(clazz.equals(TaxonBase.class)){
76
			return (T) TaxonBaseSelectionDialog.selectTaxonBase(shell);//, conversation);
77
		}
78
		if(clazz.equals(Classification.class)){
79
			return (T) ClassificationSelectionDialog.select(shell, //conversation,
80
			        (Classification) currentSelection);
81
		}
82
		if(clazz.equals(TaxonNode.class)){
83
			return (T) TaxonNodeSelectionDialog.select(shell, //conversation,
84
			        null, null, (TaxonNode) currentSelection, ((TaxonNode) currentSelection).getClassification());
85
		}
86
		if(clazz.equals(Reference.class) && parentElement instanceof NomenclaturalReferenceDetailElement){
87
			return (T) NomenclaturalReferenceSelectionDialog.select(shell, //conversation,
88
			        (Reference) currentSelection, ((NomenclaturalReferenceDetailElement)parentElement).getEntity().getCombinationAuthorship());
89
		}
90
		if(clazz.equals(Reference.class)){
91
		    if (parentElement instanceof ReferenceDetailElement){
92
		        return (T) ReferenceSelectionDialog.select(shell, //conversation,
93
		                ((ReferenceDetailElement) parentElement).getEntity(), true);
94
		    }
95
			return (T) ReferenceSelectionDialog.select(shell, //conversation,
96
			        (Reference) currentSelection);
97
		}
98

    
99
		if(clazz.equals(TaxonName.class)){
100
			return (T) NameSelectionDialog.select(shell, //conversation,
101
			        (TaxonName) currentSelection);
102
		}
103
		if(clazz.equals(Team.class)){
104
			return (T) TeamSelectionDialog.select(shell, //conversation,
105
			        (Team) currentSelection);
106
		}
107
		if(clazz.equals(TeamOrPersonBase.class) && parentElement instanceof AuthorshipDetailElement){
108
            return (T) NomenclaturalAuthorSelectionDialog.select(shell, //conversation,
109
                    (AgentBase) currentSelection, false);
110
        }else if(clazz.equals(TeamOrPersonBase.class)){
111
		    //TODO: add TeamOrPersonBaseSelectionDialog (see ticket #4545)
112
		    return (T) AgentSelectionDialog.select(shell, //conversation,
113
		            (AgentBase) currentSelection, false);
114
		}
115
		if(clazz.equals(Person.class) && parentElement instanceof TeamMemberElement){
116
		    return (T) NomenclaturalPersonAuthorSelectionDialog.select(shell, //conversation,
117
		            (AgentBase) currentSelection, true);
118
        }
119
		if(clazz.equals(AgentBase.class)){
120
			return (T) AgentSelectionDialog.select(shell, //conversation,
121
			        (AgentBase) currentSelection, false);
122
		}
123
		if(clazz.equals(Feature.class)){
124
			return (T) FeatureSelectionDialog.select(shell, //conversation,
125
			        (Feature) currentSelection);
126
		}
127
		if(clazz.equals(FeatureTree.class)){
128
			return (T) FeatureTreeSelectionDialog.select(shell, //conversation,
129
			        (FeatureTree) currentSelection);
130
		}
131
		if(clazz.equals(PolytomousKey.class)){
132
			return (T) PolytomousKeySelectionDialog.select(shell, //conversation,
133
			        (PolytomousKey) currentSelection);
134
		}
135
		if(clazz.equals(PolytomousKeyNode.class)){
136
			MessagingUtils.warningDialog("Not implemented yet", SelectionDialogFactory.class,
137
					"This functionality is not implemented yet.");
138
			return null;
139
		}
140
		if(clazz.equals(DerivedUnit.class)){
141
		    return (T) DerivedUnitSelectionDialog.select(shell, //conversation,
142
		            (DerivedUnit) currentSelection);
143
		}
144
		if(clazz.equals(FieldUnit.class)){
145
		    return (T) FieldUnitSelectionDialog.select(shell, //conversation,
146
		            (FieldUnit) currentSelection);
147
		}
148
		if(clazz.equals(SpecimenOrObservationBase.class)){
149
		    return (T) SpecimenOrObservationBaseSelectionDialog.select(shell, //conversation,
150
		            (SpecimenOrObservationBase) currentSelection);
151
		}
152
		if(clazz.equals(NamedArea.class)){
153
		    if(parentElement instanceof IEntityElement && ((IEntityElement) parentElement).getEntity() instanceof DerivedUnitFacade){
154
		        return (T) NamedAreaSelectionDialog.select(shell, //conversation,
155
		                (NamedArea) currentSelection, DerivedUnit.class.getCanonicalName(), Country.uuidCountryVocabulary);
156
		    }
157
		    else{
158
		        return (T) NamedAreaSelectionDialog.select(shell, //conversation,
159
		                (NamedArea) currentSelection, parentElement.getClass().getCanonicalName());
160
		    }
161
		}
162
		if(clazz.equals(Collection.class)){
163
			return (T) CollectionSelectionDialog.select(shell, //conversation,
164
			        (Collection) currentSelection);
165
		}
166
		if(clazz.equals(User.class)){
167
			return (T) UserSelectionDialog.select(shell, //conversation,
168
			        (User) currentSelection);
169
		}
170
		if(clazz.equals(GrantedAuthorityImpl.class)){
171
			return (T) GrantedAuthoritySelectionDialog.select(shell, //conversation,
172
			        (GrantedAuthorityImpl) currentSelection);
173
		}
174
		if (clazz.equals(Person.class)){
175
			return (T) PersonSelectionDialog.select(shell, //conversation,
176
			        (Person) currentSelection);
177
		}
178
		if(clazz.equals(Group.class)){
179
			return (T) GroupSelectionDialog.select(shell, //conversation,
180
			        (Group) currentSelection);
181
		}
182
		if(clazz.equals(Institution.class)){
183
			return (T) InstitutionSelectionDialog.select(shell, //conversation,
184
			        (Institution) currentSelection);
185
		}
186
		if(clazz.equals(Primer.class)){
187
		    return (T) PrimerSelectionDialog.select(shell, //conversation,
188
		            (Primer) currentSelection);
189
		}
190
		if(clazz.equals(Amplification.class)){
191
		    return (T) AmplificationSelectionDialog.select(shell, //conversation,
192
		            (Amplification) currentSelection);
193
		}
194
		if(clazz.equals(Media.class)){
195
		    return (T) MediaSelectionDialog.select(shell, //conversation,
196
		            (Media) currentSelection);
197
		}
198
		if(clazz.equals(Rights.class)){
199
            return (T) RightsSelectionDialog.select(shell, //conversation,
200
                    (Rights) currentSelection);
201
        }
202

    
203
		return null;
204
	}
205

    
206
	public static <T extends ICdmBase> T getSelectionFromExtDialog(Class<T> clazz, Shell shell, //ConversationHolder conversation,
207
	        ICdmFormElement parentElement){
208
	    return (T) ExtReferenceSelectionDialog.select(shell, //conversation,
209
	            null);
210
	}
211

    
212

    
213
}
(32-32/39)