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