- removed Amplification as a TreeNode from the DerivateView
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / ui / selection / EditFromSelectionWizard.java
1 // $Id$
2 /**
3 * Copyright (C) 2007 EDIT
4 * European Distributed Institute of Taxonomy
5 * http://www.e-taxonomy.eu
6 *
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.
9 */
10
11 package eu.etaxonomy.taxeditor.ui.selection;
12
13 import org.eclipse.core.runtime.IStatus;
14 import org.eclipse.jface.wizard.Wizard;
15 import org.eclipse.jface.wizard.WizardDialog;
16 import org.eclipse.swt.events.SelectionEvent;
17 import org.eclipse.swt.events.SelectionListener;
18
19 import eu.etaxonomy.cdm.api.facade.DerivedUnitFacade;
20 import eu.etaxonomy.cdm.api.facade.DerivedUnitFacadeNotSupportedException;
21 import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
22 import eu.etaxonomy.cdm.model.agent.Institution;
23 import eu.etaxonomy.cdm.model.agent.Person;
24 import eu.etaxonomy.cdm.model.agent.Team;
25 import eu.etaxonomy.cdm.model.common.ICdmBase;
26 import eu.etaxonomy.cdm.model.common.User;
27 import eu.etaxonomy.cdm.model.molecular.Amplification;
28 import eu.etaxonomy.cdm.model.molecular.Primer;
29 import eu.etaxonomy.cdm.model.name.NonViralName;
30 import eu.etaxonomy.cdm.model.occurrence.Collection;
31 import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;
32 import eu.etaxonomy.cdm.model.reference.Reference;
33 import eu.etaxonomy.taxeditor.model.AbstractUtility;
34 import eu.etaxonomy.taxeditor.model.TextHelper;
35 import eu.etaxonomy.taxeditor.newWizard.AmplificationCloningWizardPage;
36 import eu.etaxonomy.taxeditor.newWizard.AmplificationGeneralWizardPage;
37 import eu.etaxonomy.taxeditor.newWizard.AmplificationPrimerWizardPage;
38 import eu.etaxonomy.taxeditor.newWizard.PrimerWizardPage;
39 import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
40 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
41 import eu.etaxonomy.taxeditor.ui.section.agent.InstitutionWizardPage;
42 import eu.etaxonomy.taxeditor.ui.section.agent.PersonWizardPage;
43 import eu.etaxonomy.taxeditor.ui.section.agent.TeamWizardPage;
44 import eu.etaxonomy.taxeditor.ui.section.name.NonViralNameWizardPage;
45 import eu.etaxonomy.taxeditor.ui.section.occurrence.CollectionWizardPage;
46 import eu.etaxonomy.taxeditor.ui.section.occurrence.DerivedUnitBaseWizardPage;
47 import eu.etaxonomy.taxeditor.ui.section.occurrence.DerivedUnitGeneralWizardPage;
48 import eu.etaxonomy.taxeditor.ui.section.occurrence.FieldUnitWizardPage;
49 import eu.etaxonomy.taxeditor.ui.section.occurrence.GatheringEventWizardPage;
50 import eu.etaxonomy.taxeditor.ui.section.reference.ReferenceWizardPage;
51 import eu.etaxonomy.taxeditor.ui.section.user.UserDetailWizardPage;
52
53 /**
54 * <p>
55 * EditFromSelectionWizard class.
56 * </p>
57 *
58 * @author n.hoffmann
59 * @created Jun 1, 2010
60 * @version 1.0
61 */
62 public class EditFromSelectionWizard extends Wizard implements
63 SelectionListener {
64
65 private final EntitySelectionElement selectionElement;
66
67 /**
68 * <p>
69 * Constructor for EditFromSelectionWizard.
70 * </p>
71 *
72 * @param selectionElement
73 * a
74 * {@link eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement}
75 * object.
76 */
77 public EditFromSelectionWizard(EntitySelectionElement selectionElement) {
78 this.selectionElement = selectionElement;
79 this.setWindowTitle(String.format("Edit %s", TextHelper.deproxyClassName(selectionElement.getEntity().getClass())));
80 }
81
82 /** {@inheritDoc} */
83 @Override
84 public void addPages() {
85
86 CdmFormFactory formFactory = selectionElement.getFormFactory();
87 ICdmBase entity = (ICdmBase) HibernateProxyHelper
88 .deproxy(selectionElement.getEntity());
89
90 if (entity instanceof Reference) {
91 addPage(new ReferenceWizardPage(formFactory,
92 selectionElement.getConversationHolder(),
93 (Reference) entity));
94 } else if (entity instanceof Team) {
95 addPage(new TeamWizardPage(formFactory,
96 selectionElement.getConversationHolder(), (Team) entity));
97 } else if (entity instanceof Person) {
98 addPage(new PersonWizardPage(formFactory,
99 selectionElement.getConversationHolder(), (Person) entity));
100 } else if (entity instanceof NonViralName) {
101 addPage(new NonViralNameWizardPage(formFactory,
102 selectionElement.getConversationHolder(),
103 (NonViralName) entity));
104 } else if (entity instanceof DerivedUnit) {
105
106 DerivedUnitFacade facade;
107 try {
108 facade = DerivedUnitFacade.NewInstance(
109 (DerivedUnit) entity,
110 PreferencesUtil.getDerivedUnitConfigurator());
111 } catch (DerivedUnitFacadeNotSupportedException e) {
112 // we should never get here
113 throw new IllegalStateException();
114 }
115
116 addPage(new DerivedUnitGeneralWizardPage(formFactory,
117 selectionElement.getConversationHolder(), facade));
118 addPage(new GatheringEventWizardPage(formFactory,
119 selectionElement.getConversationHolder(), facade));
120 addPage(new FieldUnitWizardPage(formFactory,
121 selectionElement.getConversationHolder(), facade));
122 addPage(new DerivedUnitBaseWizardPage(formFactory,
123 selectionElement.getConversationHolder(), facade));
124 } else if (entity instanceof Collection) {
125 addPage(new CollectionWizardPage(formFactory,
126 selectionElement.getConversationHolder(),
127 (Collection) entity));
128 } else if (entity instanceof Institution) {
129 addPage(new InstitutionWizardPage(formFactory,
130 selectionElement.getConversationHolder(),
131 (Institution) entity));
132 } else if (entity instanceof User) {
133 addPage(new UserDetailWizardPage(formFactory,
134 selectionElement.getConversationHolder(),
135 (User) entity));
136 } else if (entity instanceof Primer) {
137 addPage(new PrimerWizardPage(formFactory,
138 selectionElement.getConversationHolder(),
139 (Primer) entity));
140 } else if (entity instanceof Amplification) {
141 addPage(new AmplificationGeneralWizardPage(formFactory,
142 selectionElement.getConversationHolder(),
143 (Amplification) entity));
144 addPage(new AmplificationPrimerWizardPage(formFactory,
145 selectionElement.getConversationHolder(),
146 (Amplification) entity));
147 addPage(new AmplificationCloningWizardPage(formFactory,
148 selectionElement.getConversationHolder(),
149 (Amplification) entity));
150 // addPage(new AmplificationGelPhotoWizardPage(formFactory,
151 // selectionElement.getConversationHolder(),
152 // (Amplification) entity));
153 } else {
154 AbstractUtility.warningDialog("Missing interface", this,
155 "No detail element for current selection");
156 }
157
158 }
159
160 /*
161 * (non-Javadoc)
162 *
163 * @see org.eclipse.jface.wizard.Wizard#performFinish()
164 */
165 /** {@inheritDoc} */
166 @Override
167 public boolean performFinish() {
168 return true;
169 }
170
171 /** {@inheritDoc} */
172 @Override
173 public void widgetSelected(SelectionEvent e) {
174 WizardDialog dialog = new WizardDialog(selectionElement.getShell(),
175 this);
176 if (dialog.open() == IStatus.OK) {
177 selectionElement.updateFromWizard();
178 }
179 }
180
181 /** {@inheritDoc} */
182 @Override
183 public void widgetDefaultSelected(SelectionEvent e) {
184 }
185 }