4 package eu
.etaxonomy
.taxeditor
.wizard
;
6 import org
.eclipse
.jface
.viewers
.IStructuredSelection
;
7 import org
.eclipse
.jface
.viewers
.StructuredSelection
;
8 import org
.eclipse
.jface
.wizard
.Wizard
;
9 import org
.eclipse
.ui
.INewWizard
;
10 import org
.eclipse
.ui
.IWorkbench
;
12 import eu
.etaxonomy
.cdm
.api
.conversation
.ConversationHolder
;
13 import eu
.etaxonomy
.cdm
.api
.conversation
.IConversationEnabled
;
14 import eu
.etaxonomy
.cdm
.model
.common
.CdmBase
;
15 import eu
.etaxonomy
.cdm
.model
.taxon
.Classification
;
16 import eu
.etaxonomy
.cdm
.model
.taxon
.ITreeNode
;
17 import eu
.etaxonomy
.cdm
.model
.taxon
.TaxonNode
;
18 import eu
.etaxonomy
.cdm
.persistence
.hibernate
.CdmDataChangeMap
;
19 import eu
.etaxonomy
.taxeditor
.navigation
.NavigationUtil
;
20 import eu
.etaxonomy
.taxeditor
.navigation
.navigator
.TaxonNavigator
;
21 import eu
.etaxonomy
.taxeditor
.operations
.AbstractPostOperation
;
22 import eu
.etaxonomy
.taxeditor
.operations
.CreateTaxonNodeOperation
;
23 import eu
.etaxonomy
.taxeditor
.operations
.IPostOperationEnabled
;
24 import eu
.etaxonomy
.taxeditor
.store
.CdmStore
;
27 * <p>NewTaxonNodeWizard class.</p>
30 * @created Sep 15, 2009
33 public class NewTaxonNodeWizard
extends Wizard
implements INewWizard
, IPostOperationEnabled
, IConversationEnabled
{
35 private NewTaxonNodeWizardPage page
;
37 private IStructuredSelection selection
;
39 private TaxonNode generatedTaxonNode
;
41 private boolean openEmptyEditor
= false;
43 private ConversationHolder conversation
;
46 * <p>Constructor for NewTaxonNodeWizard.</p>
48 public NewTaxonNodeWizard() {
49 this.setWindowTitle("New Entity");
50 conversation
= CdmStore
.createConversation();
51 selection
= getNavigatorSelection();
55 * Retrieve the current selection from taxon navigator
59 private IStructuredSelection
getNavigatorSelection() {
60 StructuredSelection selection
= null;
61 TaxonNavigator navigator
= NavigationUtil
.getNavigator(false);
63 if(navigator
!= null){
64 selection
= (StructuredSelection
) navigator
.getCommonViewer().getSelection();
70 private ITreeNode
getSelectedTreeNode(){
71 if(selection
!= null){
72 Object selectedObject
= selection
.getFirstElement();
73 if(selectedObject
instanceof ITreeNode
){
74 ITreeNode treeNode
= (ITreeNode
) selectedObject
;
76 if(treeNode
instanceof Classification
){
77 return CdmStore
.getClassificationService().load(treeNode
.getUuid());
79 else if(treeNode
instanceof TaxonNode
){
80 return CdmStore
.getTaxonNodeService().load(treeNode
.getUuid());
90 public boolean performFinish() {
91 if(page
.getTaxon() == null || page
.getTaxon().getName().getFullTitleCache().length() == 0){
92 openEmptyEditor
= true;
94 AbstractPostOperation operation
= new CreateTaxonNodeOperation("Create Taxon",
95 NavigationUtil
.getUndoContext(), page
.getParentTreeNode(), page
.getTaxon(), this, this);
96 NavigationUtil
.executeOperation(operation
);
102 * @see org.eclipse.jface.wizard.Wizard#addPages()
106 public void addPages() {
109 page
= new NewTaxonNodeWizardPage(getConversationHolder(), getSelectedTreeNode());
115 public void init(IWorkbench workbench
, IStructuredSelection selection
) {
116 // workbench is not used at the moment
117 this.selection
= selection
;
121 * <p>openInEditor</p>
125 public boolean openInEditor(){
126 return page
.openInEditor();
134 public boolean openEmpty(){
135 return openInEditor() && openEmptyEditor
;
139 * <p>getTaxonNode</p>
141 * @return a {@link eu.etaxonomy.cdm.model.taxon.TaxonNode} object.
143 public TaxonNode
getTaxonNode(){
144 return generatedTaxonNode
;
150 * @return a {@link eu.etaxonomy.cdm.model.taxon.ITreeNode} object.
152 public ITreeNode
getParent(){
153 return page
.getParentTreeNode();
157 * @see eu.etaxonomy.taxeditor.operations.IPostOperationEnabled#postOperation(eu.etaxonomy.cdm.model.common.CdmBase)
160 public boolean postOperation(CdmBase objectAffectedByOperation
) {
161 generatedTaxonNode
= (TaxonNode
) objectAffectedByOperation
;
163 NavigationUtil
.selectInNavigator(generatedTaxonNode
, generatedTaxonNode
.getParent());
173 public boolean onComplete() {
178 * @see eu.etaxonomy.cdm.persistence.hibernate.ICdmPostDataChangeObserver#update(eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap)
182 public void update(CdmDataChangeMap changeEvents
) {}
185 * @see eu.etaxonomy.cdm.api.conversation.IConversationEnabled#getConversationHolder()
189 public ConversationHolder
getConversationHolder() {
194 // private static final Logger logger = Logger.getLogger(NewTaxonNodeWizard.class);
195 // private TaxonNodeWizardPage page;
198 // * @param configuration
200 // public NewTaxonNodeWizard() {
204 // * @see eu.etaxonomy.taxeditor.editor.newWizard.AbstractNewEntityWizard#performFinish()
207 // public boolean performFinish() {
208 // return super.performFinish();
212 // * @see org.eclipse.jface.wizard.Wizard#addPages()
215 // public void addPages() {
216 // page = new TaxonNodeWizardPage(formFactory, getConversationHolder(), (ITreeNode) selection.getFirstElement());
221 // * @see eu.etaxonomy.taxeditor.editor.newWizard.AbstractNewEntityWizard#getEntity()
224 // public ITreeNode getEntity() {
225 // return getDetailElement().getParentTreeNode();
229 // * @see eu.etaxonomy.taxeditor.editor.newWizard.AbstractNewEntityWizard#saveEntity()
232 // protected void saveEntity() {
233 // getEntity().addChildTaxon(getDetailElement().getTaxon(), getEntity().getReference(), getEntity().getMicroReference(), null);
237 // * @see eu.etaxonomy.taxeditor.editor.newWizard.AbstractNewEntityWizard#createNewEntity()
240 // protected TaxonNode createNewEntity() {
247 // public TaxonNodeDetailElement getDetailElement() {
248 // return (TaxonNodeDetailElement) page.getDetailElement();