adding a taxon bulk editor and changes because the delete methods does not throw...
[taxeditor.git] / eu.etaxonomy.taxeditor.bulkeditor / src / main / java / eu / etaxonomy / taxeditor / bulkeditor / input / BulkEditorInputType.java
1 package eu.etaxonomy.taxeditor.bulkeditor.input;
2
3 import java.util.HashMap;
4 import java.util.Map;
5
6 import org.eclipse.jface.action.IContributionItem;
7 import org.eclipse.swt.SWT;
8 import org.eclipse.ui.IEditorInput;
9 import org.eclipse.ui.PlatformUI;
10 import org.eclipse.ui.menus.CommandContributionItem;
11 import org.eclipse.ui.menus.CommandContributionItemParameter;
12
13 import eu.etaxonomy.cdm.model.agent.AgentBase;
14 import eu.etaxonomy.cdm.model.common.Group;
15 import eu.etaxonomy.cdm.model.common.User;
16 import eu.etaxonomy.cdm.model.name.NameRelationship;
17 import eu.etaxonomy.cdm.model.name.TaxonNameBase;
18 import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
19 import eu.etaxonomy.cdm.model.reference.Reference;
20 import eu.etaxonomy.cdm.model.taxon.Taxon;
21 import eu.etaxonomy.taxeditor.bulkeditor.IBulkEditorConstants;
22
23 public enum BulkEditorInputType {
24 AGENT("Authors and Author Teams", AgentEditorInput.ID),
25 REFERENCE("Reference", ReferenceEditorInput.ID),
26 NAME("Name", NameEditorInput.ID),
27 NAME_RELATIONSHIP("Name Relationship", NameRelationshipEditorInput.ID),
28 OCCURRENCE("Specimens and Observations", OccurrenceEditorInput.ID),
29 USER("User", UserEditorInput.ID),
30 GROUP("Group", GroupEditorInput.ID),
31 TAXON("Taxon", TaxonEditorInput.ID);
32
33 public String id;
34 public String label;
35
36 BulkEditorInputType(String label, String id) {
37 this.id = id;
38 this.label = label;
39 }
40
41 public IContributionItem createContributionItem(){
42 return createContributionItem(label, id);
43 }
44
45 /**
46 * @param key
47 * @param object
48 * @return
49 */
50 private IContributionItem createContributionItem(String label,
51 String inputType) {
52 CommandContributionItemParameter parameter = new CommandContributionItemParameter(
53 PlatformUI.getWorkbench().getActiveWorkbenchWindow(), null,
54 IBulkEditorConstants.DYNAMIC_OPEN_MENU_ID, SWT.NONE);
55
56 parameter.label = label;
57
58 Map parameters = new HashMap();
59 parameters.put(IBulkEditorConstants.INPUT_TYPE_PARAMETER_ID, inputType);
60 parameter.parameters = parameters;
61
62 return new CommandContributionItem(parameter);
63 }
64
65 public static BulkEditorInputType getById(String id) {
66
67 for (BulkEditorInputType type : values()) {
68 if (id.equals(type.id)) {
69 return type;
70 }
71 }
72
73 return null;
74 }
75
76 public static BulkEditorInputType getByType(Class clazz) {
77 if (Reference.class.isAssignableFrom(clazz)) {
78 return REFERENCE;
79 } else if (TaxonNameBase.class.isAssignableFrom(clazz)) {
80 return NAME;
81 } else if (AgentBase.class.isAssignableFrom(clazz)) {
82 return AGENT;
83 } else if (SpecimenOrObservationBase.class.isAssignableFrom(clazz)) {
84 return OCCURRENCE;
85 } else if (NameRelationship.class.isAssignableFrom(clazz)) {
86 return NAME_RELATIONSHIP;
87 } else if (Group.class.isAssignableFrom(clazz)) {
88 return GROUP;
89 } else if (User.class.isAssignableFrom(clazz)) {
90 return USER;
91 } else if (Taxon.class.isAssignableFrom(clazz)){
92 return TAXON;
93 }
94 return null;
95 }
96
97 public static BulkEditorInputType getByInput(IEditorInput input) {
98 if (input instanceof ReferenceEditorInput) {
99 return REFERENCE;
100 } else if (input instanceof NameEditorInput) {
101 return NAME;
102 } else if (input instanceof AgentEditorInput) {
103 return AGENT;
104 } else if (input instanceof OccurrenceEditorInput) {
105 return OCCURRENCE;
106 } else if (input instanceof NameRelationshipEditorInput) {
107 return NAME_RELATIONSHIP;
108 } else if (input instanceof UserEditorInput) {
109 return USER;
110 } else if (input instanceof GroupEditorInput) {
111 return GROUP;
112 } else if (input instanceof TaxonEditorInput){
113 return TAXON;
114 }
115 return null;
116 }
117
118 public static AbstractBulkEditorInput getInput(
119 BulkEditorInputType inputType) {
120 switch (inputType) {
121 case REFERENCE:
122 return new ReferenceEditorInput();
123 case NAME:
124 return new NameEditorInput();
125 case AGENT:
126 return new AgentEditorInput();
127 case OCCURRENCE:
128 return new OccurrenceEditorInput();
129 case NAME_RELATIONSHIP:
130 return new NameRelationshipEditorInput();
131 case USER:
132 return new UserEditorInput();
133 case GROUP:
134 return new GroupEditorInput();
135 case TAXON:
136 return new TaxonEditorInput();
137 default:
138 throw new IllegalStateException(
139 "No input class for the given input type defined.");
140 }
141 }
142 }