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
.api
.service
.IClassificationService
;
15 import eu
.etaxonomy
.cdm
.api
.service
.ITaxonNodeService
;
16 import eu
.etaxonomy
.cdm
.model
.common
.CdmBase
;
17 import eu
.etaxonomy
.cdm
.model
.taxon
.Classification
;
18 import eu
.etaxonomy
.cdm
.model
.taxon
.ITreeNode
;
19 import eu
.etaxonomy
.cdm
.model
.taxon
.TaxonNode
;
20 import eu
.etaxonomy
.cdm
.persistence
.hibernate
.CdmDataChangeMap
;
21 import eu
.etaxonomy
.taxeditor
.navigation
.NavigationUtil
;
22 import eu
.etaxonomy
.taxeditor
.navigation
.navigator
.TaxonNavigator
;
23 import eu
.etaxonomy
.taxeditor
.navigation
.operation
.CreateTaxonNode
;
24 import eu
.etaxonomy
.taxeditor
.operation
.AbstractPostOperation
;
25 import eu
.etaxonomy
.taxeditor
.operation
.IPostOperationEnabled
;
26 import eu
.etaxonomy
.taxeditor
.store
.CdmStore
;
29 * <p>NewTaxonNodeWizard class.</p>
32 * @created Sep 15, 2009
35 public class NewTaxonNodeWizard
extends Wizard
implements INewWizard
, IPostOperationEnabled
, IConversationEnabled
{
37 private NewTaxonNodeWizardPage page
;
39 private IStructuredSelection selection
;
41 private TaxonNode generatedTaxonNode
;
43 private boolean openEmptyEditor
= false;
45 private ConversationHolder conversation
;
48 * <p>Constructor for NewTaxonNodeWizard.</p>
50 public NewTaxonNodeWizard() {
51 this.setWindowTitle("New Entity");
52 conversation
= CdmStore
.createConversation();
53 selection
= getNavigatorSelection();
57 * Retrieve the current selection from taxon navigator
61 private IStructuredSelection
getNavigatorSelection() {
62 StructuredSelection selection
= null;
63 TaxonNavigator navigator
= NavigationUtil
.getNavigator(false);
65 if(navigator
!= null){
66 selection
= (StructuredSelection
) navigator
.getCommonViewer().getSelection();
72 private ITreeNode
getSelectedTreeNode(){
73 if(selection
!= null){
74 Object selectedObject
= selection
.getFirstElement();
75 if(selectedObject
instanceof ITreeNode
){
76 ITreeNode treeNode
= (ITreeNode
) selectedObject
;
78 if(treeNode
instanceof Classification
){
79 return CdmStore
.getService(IClassificationService
.class).load(treeNode
.getUuid());
81 else if(treeNode
instanceof TaxonNode
){
82 return CdmStore
.getService(ITaxonNodeService
.class).load(treeNode
.getUuid());
92 public boolean performFinish() {
93 if(page
.getTaxon() == null || page
.getTaxon().getName().getFullTitleCache().length() == 0){
94 openEmptyEditor
= true;
96 AbstractPostOperation operation
= new CreateTaxonNode("Create Taxon",
97 NavigationUtil
.getUndoContext(), page
.getParentTreeNode(), page
.getTaxon(), this, this);
98 NavigationUtil
.executeOperation(operation
);
104 * @see org.eclipse.jface.wizard.Wizard#addPages()
108 public void addPages() {
111 page
= new NewTaxonNodeWizardPage(getConversationHolder(), getSelectedTreeNode());
117 public void init(IWorkbench workbench
, IStructuredSelection selection
) {
118 // workbench is not used at the moment
119 this.selection
= selection
;
123 * <p>openInEditor</p>
127 public boolean openInEditor(){
128 return page
.openInEditor();
136 public boolean openEmpty(){
137 return openInEditor() && openEmptyEditor
;
141 * <p>getTaxonNode</p>
143 * @return a {@link eu.etaxonomy.cdm.model.taxon.TaxonNode} object.
145 public TaxonNode
getTaxonNode(){
146 return generatedTaxonNode
;
152 * @return a {@link eu.etaxonomy.cdm.model.taxon.ITreeNode} object.
154 public ITreeNode
getParent(){
155 return page
.getParentTreeNode();
159 * @see eu.etaxonomy.taxeditor.operations.IPostOperationEnabled#postOperation(eu.etaxonomy.cdm.model.common.CdmBase)
162 public boolean postOperation(CdmBase objectAffectedByOperation
) {
163 generatedTaxonNode
= (TaxonNode
) objectAffectedByOperation
;
165 NavigationUtil
.selectInNavigator(generatedTaxonNode
, generatedTaxonNode
.getParent());
175 public boolean onComplete() {
180 * @see eu.etaxonomy.cdm.persistence.hibernate.ICdmPostDataChangeObserver#update(eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap)
184 public void update(CdmDataChangeMap changeEvents
) {}
187 * @see eu.etaxonomy.cdm.api.conversation.IConversationEnabled#getConversationHolder()
191 public ConversationHolder
getConversationHolder() {