Bugfixes merged into trunk
[taxeditor.git] / taxeditor-navigation / src / main / java / eu / etaxonomy / taxeditor / wizard / NewTaxonNodeWizard.java
1 /**
2 *
3 */
4 package eu.etaxonomy.taxeditor.wizard;
5
6 import org.apache.log4j.Logger;
7 import org.eclipse.jface.viewers.IStructuredSelection;
8 import org.eclipse.jface.viewers.StructuredSelection;
9 import org.eclipse.jface.wizard.Wizard;
10 import org.eclipse.ui.INewWizard;
11 import org.eclipse.ui.IWorkbench;
12
13 import eu.etaxonomy.cdm.model.common.CdmBase;
14 import eu.etaxonomy.cdm.model.taxon.ITreeNode;
15 import eu.etaxonomy.cdm.model.taxon.TaxonNode;
16 import eu.etaxonomy.taxeditor.navigation.NavigationUtil;
17 import eu.etaxonomy.taxeditor.navigation.navigator.TaxonNavigator;
18 import eu.etaxonomy.taxeditor.operations.AbstractPostOperation;
19 import eu.etaxonomy.taxeditor.operations.CreateTaxonNodeOperation;
20 import eu.etaxonomy.taxeditor.operations.IPostOperationEnabled;
21
22 /**
23 *
24 * @author n.hoffmann
25 * @created Sep 15, 2009
26 * @version 1.0
27 */
28 public class NewTaxonNodeWizard extends Wizard implements INewWizard, IPostOperationEnabled {
29 private static final Logger logger = Logger.getLogger(NewTaxonNodeWizard.class);
30
31 private NewTaxonNodeWizardPage page;
32
33 private IStructuredSelection selection;
34
35 private TaxonNode generatedTaxonNode;
36
37 private boolean openEmptyEditor = false;
38
39 public NewTaxonNodeWizard() {
40 this.setWindowTitle("New Taxon");
41 selection = getNavigatorSelection();
42 }
43
44 /**
45 * Retrieve the current selection from taxon navigator
46 *
47 * @return
48 */
49 private IStructuredSelection getNavigatorSelection() {
50 StructuredSelection selection = null;
51 TaxonNavigator navigator = NavigationUtil.getNavigator(false);
52
53 if(navigator != null){
54 selection = (StructuredSelection) navigator.getCommonViewer().getSelection();
55 }
56
57 return selection;
58 }
59
60
61
62 @Override
63 public boolean performFinish() {
64 TaxonNavigator taxonNavigator;
65 taxonNavigator = (TaxonNavigator) NavigationUtil.showView(TaxonNavigator.ID);
66
67 if(page.getTaxonName() == null || page.getTaxonName().getFullTitleCache().length() == 0){
68 openEmptyEditor = true;
69 }else{
70 AbstractPostOperation operation = new CreateTaxonNodeOperation("Create Taxon",
71 NavigationUtil.getUndoContext(), page.getParentNode(), page.getTaxonName(), this, taxonNavigator);
72 NavigationUtil.executeOperation(operation);
73
74 // NavigationUtil.getNavigator().getCommonViewer().refresh();
75 }
76 return true;
77 }
78
79 /* (non-Javadoc)
80 * @see org.eclipse.jface.wizard.Wizard#addPages()
81 */
82 @Override
83 public void addPages() {
84 super.addPages();
85
86 page = new NewTaxonNodeWizardPage(selection);
87
88 addPage(page);
89 }
90
91 public void init(IWorkbench workbench, IStructuredSelection selection) {
92 // workbench is not used at the moment
93 this.selection = selection;
94 }
95
96 public boolean openInEditor(){
97 return page.openInEditor();
98 }
99
100 public boolean openEmpty(){
101 return openInEditor() && openEmptyEditor;
102 }
103
104 public TaxonNode getTaxonNode(){
105 return generatedTaxonNode;
106 }
107
108 public ITreeNode getParent(){
109 return page.getParentNode();
110 }
111
112 /* (non-Javadoc)
113 * @see eu.etaxonomy.taxeditor.operations.IPostOperationEnabled#postOperation(eu.etaxonomy.cdm.model.common.CdmBase)
114 */
115 public boolean postOperation(CdmBase objectAffectedByOperation) {
116 generatedTaxonNode = (TaxonNode) objectAffectedByOperation;
117
118 NavigationUtil.selectInNavigator(generatedTaxonNode, generatedTaxonNode.getParent());
119
120 return true;
121 }
122
123 public boolean onComplete() {
124 // TODO Auto-generated method stub
125 return false;
126 }
127 }