3 * Copyright (C) 2007 EDIT
4 * European Distributed Institute of Taxonomy
5 * http://www.e-taxonomy.eu
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.
11 package eu
.etaxonomy
.taxeditor
.forms
.selection
;
13 import org
.eclipse
.core
.runtime
.IStatus
;
14 import org
.eclipse
.jface
.wizard
.IWizardPage
;
15 import org
.eclipse
.jface
.wizard
.Wizard
;
16 import org
.eclipse
.jface
.wizard
.WizardDialog
;
17 import org
.eclipse
.swt
.events
.SelectionEvent
;
18 import org
.eclipse
.swt
.events
.SelectionListener
;
20 import eu
.etaxonomy
.cdm
.api
.facade
.DerivedUnitFacade
;
21 import eu
.etaxonomy
.cdm
.api
.facade
.DerivedUnitFacadeNotSupportedException
;
22 import eu
.etaxonomy
.cdm
.hibernate
.HibernateProxyHelper
;
23 import eu
.etaxonomy
.cdm
.model
.agent
.Institution
;
24 import eu
.etaxonomy
.cdm
.model
.agent
.Person
;
25 import eu
.etaxonomy
.cdm
.model
.agent
.Team
;
26 import eu
.etaxonomy
.cdm
.model
.common
.IdentifiableEntity
;
27 import eu
.etaxonomy
.cdm
.model
.name
.NonViralName
;
28 import eu
.etaxonomy
.cdm
.model
.occurrence
.Collection
;
29 import eu
.etaxonomy
.cdm
.model
.occurrence
.DerivedUnitBase
;
30 import eu
.etaxonomy
.cdm
.model
.reference
.Reference
;
31 import eu
.etaxonomy
.taxeditor
.editor
.EditorUtil
;
32 import eu
.etaxonomy
.taxeditor
.forms
.CdmFormFactory
;
33 import eu
.etaxonomy
.taxeditor
.preference
.PreferencesUtil
;
34 import eu
.etaxonomy
.taxeditor
.section
.agent
.InstitutionWizardPage
;
35 import eu
.etaxonomy
.taxeditor
.section
.agent
.PersonWizardPage
;
36 import eu
.etaxonomy
.taxeditor
.section
.agent
.TeamWizardPage
;
37 import eu
.etaxonomy
.taxeditor
.section
.name
.NonViralNameWizardPage
;
38 import eu
.etaxonomy
.taxeditor
.section
.occurrence
.CollectionWizardPage
;
39 import eu
.etaxonomy
.taxeditor
.section
.occurrence
.DerivedUnitBaseWizardPage
;
40 import eu
.etaxonomy
.taxeditor
.section
.occurrence
.FieldObservationWizardPage
;
41 import eu
.etaxonomy
.taxeditor
.section
.occurrence
.GatheringEventWizardPage
;
42 import eu
.etaxonomy
.taxeditor
.section
.occurrence
.GeneralWizardPage
;
43 import eu
.etaxonomy
.taxeditor
.section
.reference
.ReferenceWizardPage
;
46 * <p>EditFromSelectionWizard class.</p>
49 * @created Jun 1, 2010
52 public class EditFromSelectionWizard
extends Wizard
implements SelectionListener
{
54 private AbstractSelectionElement selectionElement
;
57 * <p>Constructor for EditFromSelectionWizard.</p>
59 * @param selectionElement a {@link eu.etaxonomy.taxeditor.forms.selection.AbstractSelectionElement} object.
61 public EditFromSelectionWizard(AbstractSelectionElement selectionElement
){
62 this.selectionElement
= selectionElement
;
63 this.setWindowTitle("Edit Entity");
68 public void addPages() {
70 CdmFormFactory formFactory
= selectionElement
.getFormFactory();
71 IdentifiableEntity entity
= (IdentifiableEntity
) HibernateProxyHelper
.deproxy(selectionElement
.getEntity());
73 if(entity
instanceof Reference
){
74 addPage(new ReferenceWizardPage(formFactory
, selectionElement
.getConversationHolder(), (Reference
) entity
));
76 else if(entity
instanceof Team
){
77 addPage(new TeamWizardPage(formFactory
, selectionElement
.getConversationHolder(), (Team
) entity
));
79 else if(entity
instanceof Person
){
80 addPage(new PersonWizardPage(formFactory
, selectionElement
.getConversationHolder(), (Person
) entity
));
82 else if(entity
instanceof NonViralName
){
83 addPage(new NonViralNameWizardPage(formFactory
, selectionElement
.getConversationHolder(), (NonViralName
) entity
));
85 else if (entity
instanceof DerivedUnitBase
){
88 // addPage(new DerivedUnitFacadeWizardPage(formFactory, selectionElement.getConversationHolder(), (DerivedUnitBase) entity));
90 DerivedUnitFacade facade
;
92 facade
= DerivedUnitFacade
.NewInstance((DerivedUnitBase
) entity
, PreferencesUtil
.getDerivedUnitConfigurator());
93 } catch (DerivedUnitFacadeNotSupportedException e
) {
94 // we should never get here
95 throw new IllegalStateException();
98 addPage(new GeneralWizardPage(formFactory
, selectionElement
.getConversationHolder(), facade
));
99 addPage(new GatheringEventWizardPage(formFactory
, selectionElement
.getConversationHolder(), facade
));
100 addPage(new FieldObservationWizardPage(formFactory
, selectionElement
.getConversationHolder(), facade
));
101 addPage(new DerivedUnitBaseWizardPage(formFactory
, selectionElement
.getConversationHolder(), facade
));
103 else if(entity
instanceof Collection
){
104 addPage(new CollectionWizardPage(formFactory
, selectionElement
.getConversationHolder(), (Collection
) entity
));
106 else if(entity
instanceof Institution
){
107 addPage(new InstitutionWizardPage(formFactory
, selectionElement
.getConversationHolder(), (Institution
) entity
));
110 EditorUtil
.warningDialog("Missing interface", this, "No detail element for current selection");
116 * @see org.eclipse.jface.wizard.Wizard#performFinish()
120 public boolean performFinish() {
121 for(IWizardPage page
: getPages()){
128 public void widgetSelected(SelectionEvent e
) {
129 WizardDialog dialog
= new WizardDialog(selectionElement
.getShell(), this);
130 if(dialog
.open() == IStatus
.OK
){
131 selectionElement
.updateFromWizard();
136 public void widgetDefaultSelected(SelectionEvent e
) {}