- added wizard page listener to react on ENTER key #4853
authorPatric Plitzner <p.plitzner@bgbm.org>
Thu, 4 Jun 2015 10:57:39 +0000 (10:57 +0000)
committerPatric Plitzner <p.plitzner@bgbm.org>
Thu, 4 Jun 2015 10:57:39 +0000 (10:57 +0000)
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/handler/create/NewSpecimenHandler.java
eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/handler/NewTaxonNodeHandler.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/newWizard/NewTaxonNodeWizard.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/classification/TaxonNodeDetailElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/classification/TaxonNodeWizardPage.java

index 04747d1916de4ec825045dcac1de02cae91b1340..8ada87fff423fdf3941590273dc5cfac320ffa66 100644 (file)
@@ -1,23 +1,35 @@
 // $Id$
 /**
 * Copyright (C) 2007 EDIT
 // $Id$
 /**
 * Copyright (C) 2007 EDIT
-* European Distributed Institute of Taxonomy 
+* European Distributed Institute of Taxonomy
 * http://www.e-taxonomy.eu
 * http://www.e-taxonomy.eu
-* 
+*
 * The contents of this file are subject to the Mozilla Public License Version 1.1
 * See LICENSE.TXT at the top of this package for the full license terms.
 */
 
 package eu.etaxonomy.taxeditor.editor.handler.create;
 
 * The contents of this file are subject to the Mozilla Public License Version 1.1
 * See LICENSE.TXT at the top of this package for the full license terms.
 */
 
 package eu.etaxonomy.taxeditor.editor.handler.create;
 
+import java.util.Collections;
+
 import org.apache.log4j.Logger;
 import org.eclipse.core.commands.AbstractHandler;
 import org.eclipse.core.commands.ExecutionEvent;
 import org.eclipse.core.commands.ExecutionException;
 import org.apache.log4j.Logger;
 import org.eclipse.core.commands.AbstractHandler;
 import org.eclipse.core.commands.ExecutionEvent;
 import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.jface.wizard.WizardDialog;
-import org.eclipse.ui.handlers.HandlerUtil;
+import org.eclipse.ui.PartInitException;
 
 
-import eu.etaxonomy.taxeditor.newWizard.NewDerivedUnitBaseWizard;
+import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
+import eu.etaxonomy.cdm.api.facade.DerivedUnitFacadeCacheStrategy;
+import eu.etaxonomy.cdm.api.facade.DerivedUnitFacadeFieldUnitCacheStrategy;
+import eu.etaxonomy.cdm.api.service.IOccurrenceService;
+import eu.etaxonomy.cdm.model.occurrence.DerivationEvent;
+import eu.etaxonomy.cdm.model.occurrence.DerivationEventType;
+import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;
+import eu.etaxonomy.cdm.model.occurrence.FieldUnit;
+import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationType;
+import eu.etaxonomy.taxeditor.editor.EditorUtil;
+import eu.etaxonomy.taxeditor.editor.view.derivate.DerivateViewEditorInput;
+import eu.etaxonomy.taxeditor.store.CdmStore;
 
 /**
  * <p>NewSpecimenHandler class.</p>
 
 /**
  * <p>NewSpecimenHandler class.</p>
@@ -34,11 +46,29 @@ public class NewSpecimenHandler extends AbstractHandler {
         * @see org.eclipse.core.commands.IHandler#execute(org.eclipse.core.commands.ExecutionEvent)
         */
        /** {@inheritDoc} */
         * @see org.eclipse.core.commands.IHandler#execute(org.eclipse.core.commands.ExecutionEvent)
         */
        /** {@inheritDoc} */
-       public Object execute(ExecutionEvent event) throws ExecutionException {
-               NewDerivedUnitBaseWizard wizard = new NewDerivedUnitBaseWizard();
-               wizard.init(null, null);
-               WizardDialog dialog = new WizardDialog(HandlerUtil.getActiveShell(event), wizard);
-               dialog.open();
+       @Override
+    public Object execute(ExecutionEvent event) throws ExecutionException {
+           ConversationHolder conversation = CdmStore.createConversation();
+           conversation.bind();
+           FieldUnit fieldUnit = FieldUnit.NewInstance();
+           DerivedUnit derivedUnit = DerivedUnit.NewInstance(SpecimenOrObservationType.PreservedSpecimen);
+           DerivationEvent.NewSimpleInstance(fieldUnit, derivedUnit, DerivationEventType.GATHERING_IN_SITU());
+           fieldUnit.setCacheStrategy(new DerivedUnitFacadeFieldUnitCacheStrategy());
+           derivedUnit.setCacheStrategy(new DerivedUnitFacadeCacheStrategy());
+        CdmStore.getService(IOccurrenceService.class).save(fieldUnit);
+        CdmStore.getService(IOccurrenceService.class).save(derivedUnit);
+        conversation.commit();
+        DerivateViewEditorInput input = new DerivateViewEditorInput(Collections.singleton(fieldUnit.getUuid()));
+        try {
+            EditorUtil.open(input);
+        } catch (PartInitException e) {
+            // TODO Auto-generated catch block
+            e.printStackTrace();
+        }
+//             NewDerivedUnitBaseWizard wizard = new NewDerivedUnitBaseWizard();
+//             wizard.init(null, null);
+//             WizardDialog dialog = new WizardDialog(HandlerUtil.getActiveShell(event), wizard);
+//             dialog.open();
                return null;
        }
 }
                return null;
        }
 }
index dc5f39a1b923bcdbfc9aac28e3ff1acf70282a6d..4e928a0cec32e45ad20f2d44f52245b86e732d31 100644 (file)
@@ -2,9 +2,9 @@ package eu.etaxonomy.taxeditor.navigation.navigator.handler;
 // $Id$
 /**
 * Copyright (C) 2007 EDIT
 // $Id$
 /**
 * Copyright (C) 2007 EDIT
-* European Distributed Institute of Taxonomy 
+* European Distributed Institute of Taxonomy
 * http://www.e-taxonomy.eu
 * http://www.e-taxonomy.eu
-* 
+*
 * The contents of this file are subject to the Mozilla Public License Version 1.1
 * See LICENSE.TXT at the top of this package for the full license terms.
 */
 * The contents of this file are subject to the Mozilla Public License Version 1.1
 * See LICENSE.TXT at the top of this package for the full license terms.
 */
@@ -13,12 +13,12 @@ package eu.etaxonomy.taxeditor.navigation.navigator.handler;
 import org.eclipse.core.commands.AbstractHandler;
 import org.eclipse.core.commands.ExecutionEvent;
 import org.eclipse.core.commands.ExecutionException;
 import org.eclipse.core.commands.AbstractHandler;
 import org.eclipse.core.commands.ExecutionEvent;
 import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.core.commands.IHandler;
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.jface.wizard.WizardDialog;
 import org.eclipse.ui.handlers.HandlerUtil;
 
 import eu.etaxonomy.taxeditor.navigation.NavigationUtil;
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.jface.wizard.WizardDialog;
 import org.eclipse.ui.handlers.HandlerUtil;
 
 import eu.etaxonomy.taxeditor.navigation.NavigationUtil;
+import eu.etaxonomy.taxeditor.newWizard.IWizardPageListener;
 import eu.etaxonomy.taxeditor.newWizard.NewTaxonNodeWizard;
 
 /**
 import eu.etaxonomy.taxeditor.newWizard.NewTaxonNodeWizard;
 
 /**
@@ -28,25 +28,31 @@ import eu.etaxonomy.taxeditor.newWizard.NewTaxonNodeWizard;
  * @created Sep 15, 2009
  * @version 1.0
  */
  * @created Sep 15, 2009
  * @version 1.0
  */
-public class NewTaxonNodeHandler extends AbstractHandler implements IHandler {
+public class NewTaxonNodeHandler extends AbstractHandler {
 
 
-       /* (non-Javadoc)
-        * @see org.eclipse.core.commands.IHandler#execute(org.eclipse.core.commands.ExecutionEvent)
-        */
        /** {@inheritDoc} */
        /** {@inheritDoc} */
-       public Object execute(ExecutionEvent event) throws ExecutionException {
-               NewTaxonNodeWizard wizard = new NewTaxonNodeWizard();
+       @Override
+    public Object execute(ExecutionEvent event) throws ExecutionException {
+               final NewTaxonNodeWizard wizard = new NewTaxonNodeWizard();
                wizard.init(null, null);
                wizard.init(null, null);
-               WizardDialog dialog = new WizardDialog(HandlerUtil.getActiveShell(event), wizard);
+               final WizardDialog dialog = new WizardDialog(HandlerUtil.getActiveShell(event), wizard);
+               wizard.addWizardPageListener(new IWizardPageListener() {
+
+                   @Override
+                   public void close() {
+                       wizard.performFinish();
+                       dialog.close();
+                   }
+               });
                int status = dialog.open();
                int status = dialog.open();
-               
+
                if(status == IStatus.OK && wizard.openInEditor()){
                        if(wizard.openEmpty()){
                                NavigationUtil.openEmpty(wizard.getParentTreeNode().getUuid());
                        }else if(wizard.getTaxonNode() != null){
                                NavigationUtil.openEditor(wizard.getTaxonNode());
                        }
                if(status == IStatus.OK && wizard.openInEditor()){
                        if(wizard.openEmpty()){
                                NavigationUtil.openEmpty(wizard.getParentTreeNode().getUuid());
                        }else if(wizard.getTaxonNode() != null){
                                NavigationUtil.openEditor(wizard.getTaxonNode());
                        }
-               }       
+               }
                return null;
        }
 }
                return null;
        }
 }
index 07f4c2126855ac80134eb20f2f8ad43ee6caed47..82550414bc3fae12207efa57711d0140b5bf86a0 100644 (file)
@@ -29,10 +29,11 @@ public class NewTaxonNodeWizard extends AbstractNewEntityWizard<ITaxonTreeNode>{
        private TaxonNodeWizardPage taxonNodePage;
        private boolean openEmptyEditor;
        private UUID generatedTaxonNodeUuid;
        private TaxonNodeWizardPage taxonNodePage;
        private boolean openEmptyEditor;
        private UUID generatedTaxonNodeUuid;
+    private IWizardPageListener wizardPageListener;
 
        @Override
        public void addPages() {
 
        @Override
        public void addPages() {
-               taxonNodePage = new TaxonNodeWizardPage(formFactory, getConversationHolder(), getEntity());
+               taxonNodePage = new TaxonNodeWizardPage(formFactory, getConversationHolder(), getEntity(), wizardPageListener);
                addPage(taxonNodePage);
        }
 
                addPage(taxonNodePage);
        }
 
@@ -111,4 +112,8 @@ public class NewTaxonNodeWizard extends AbstractNewEntityWizard<ITaxonTreeNode>{
                return "Taxon";
        }
 
                return "Taxon";
        }
 
+       public void addWizardPageListener(IWizardPageListener wizardPageListener){
+           this.wizardPageListener = wizardPageListener;
+       }
+
 }
\ No newline at end of file
 }
\ No newline at end of file
index fde5720fc440b504832d806d40e3b9fb38a158eb..c76a96279b295e40e4cf90c1fb2ba1a7cacac40c 100644 (file)
@@ -16,7 +16,6 @@ import org.eclipse.swt.widgets.Text;
 import eu.etaxonomy.cdm.common.CdmUtils;
 import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
 import eu.etaxonomy.cdm.model.name.NonViralName;
 import eu.etaxonomy.cdm.common.CdmUtils;
 import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
 import eu.etaxonomy.cdm.model.name.NonViralName;
-import eu.etaxonomy.cdm.model.name.Rank;
 import eu.etaxonomy.cdm.model.name.TaxonNameBase;
 import eu.etaxonomy.cdm.model.reference.Reference;
 import eu.etaxonomy.cdm.model.taxon.Classification;
 import eu.etaxonomy.cdm.model.name.TaxonNameBase;
 import eu.etaxonomy.cdm.model.reference.Reference;
 import eu.etaxonomy.cdm.model.taxon.Classification;
@@ -55,7 +54,7 @@ public class TaxonNodeDetailElement extends AbstractCdmDetailElement<ITaxonTreeN
 
        private Taxon taxon;
 
 
        private Taxon taxon;
 
-       private TextWithLabelElement text_newTaxonName;
+       private TextWithLabelElement textNewTaxonName;
 
        private CheckboxElement checkbox_openInEditor;
 
 
        private CheckboxElement checkbox_openInEditor;
 
@@ -82,14 +81,6 @@ public class TaxonNodeDetailElement extends AbstractCdmDetailElement<ITaxonTreeN
                super(formFactory, formElement);
        }
 
                super(formFactory, formElement);
        }
 
-       /*
-        * (non-Javadoc)
-        *
-        * @see
-        * eu.etaxonomy.taxeditor.section.AbstractCdmDetailElement#createControls
-        * (eu.etaxonomy.taxeditor.forms.ICdmFormElement,
-        * eu.etaxonomy.cdm.model.common.IAnnotatableEntity, int)
-        */
        /** {@inheritDoc} */
        @Override
        protected void createControls(ICdmFormElement formElement,
        /** {@inheritDoc} */
        @Override
        protected void createControls(ICdmFormElement formElement,
@@ -113,9 +104,9 @@ public class TaxonNodeDetailElement extends AbstractCdmDetailElement<ITaxonTreeN
                                                "Reuse existing name", null,
                                                EntitySelectionElement.DELETABLE, style);
 
                                                "Reuse existing name", null,
                                                EntitySelectionElement.DELETABLE, style);
 
-               text_newTaxonName = formFactory.createTextWithLabelElement(formElement,
+               textNewTaxonName = formFactory.createTextWithLabelElement(formElement,
                                "New Taxon", "", style);
                                "New Taxon", "", style);
-               text_newTaxonName.setFocus();
+               textNewTaxonName.setFocus();
                preFillParentTaxonName();
 
                checkbox_openInEditor = formFactory.createCheckbox(formElement,
                preFillParentTaxonName();
 
                checkbox_openInEditor = formFactory.createCheckbox(formElement,
@@ -140,10 +131,10 @@ public class TaxonNodeDetailElement extends AbstractCdmDetailElement<ITaxonTreeN
                             taxonName = CdmUtils.concat(" ", name.getGenusOrUninomial(),name.getSpecificEpithet());
                         }
                         if (StringUtils.isNotBlank(taxonName)){
                             taxonName = CdmUtils.concat(" ", name.getGenusOrUninomial(),name.getSpecificEpithet());
                         }
                         if (StringUtils.isNotBlank(taxonName)){
-                               text_newTaxonName.setText(taxonName + " ");
-                               if(text_newTaxonName.getMainControl() instanceof Text){
-                                       Text text = (Text)text_newTaxonName.getMainControl();
-                                       text.setSelection(text_newTaxonName.getText().length());
+                               textNewTaxonName.setText(taxonName + " ");
+                               if(textNewTaxonName.getMainControl() instanceof Text){
+                                       Text text = (Text)textNewTaxonName.getMainControl();
+                                       text.setSelection(textNewTaxonName.getText().length());
                                }
                         }
                     }
                                }
                         }
                     }
@@ -152,13 +143,6 @@ public class TaxonNodeDetailElement extends AbstractCdmDetailElement<ITaxonTreeN
         }
     }
 
         }
     }
 
-    /*
-        * (non-Javadoc)
-        *
-        * @see
-        * eu.etaxonomy.taxeditor.section.AbstractCdmDetailElement#handleEvent(java
-        * .lang.Object)
-        */
        /** {@inheritDoc} */
        @Override
        public void handleEvent(Object eventSource) {
        /** {@inheritDoc} */
        @Override
        public void handleEvent(Object eventSource) {
@@ -169,21 +153,22 @@ public class TaxonNodeDetailElement extends AbstractCdmDetailElement<ITaxonTreeN
                } else if (eventSource == selection_reuseExistingTaxon) {
                        boolean enabled = selection_reuseExistingTaxon.getEntity() == null;
                        selection_reuseExistingName.setEnabled(enabled);
                } else if (eventSource == selection_reuseExistingTaxon) {
                        boolean enabled = selection_reuseExistingTaxon.getEntity() == null;
                        selection_reuseExistingName.setEnabled(enabled);
-                       text_newTaxonName.setEnabled(enabled);
+                       textNewTaxonName.setEnabled(enabled);
 
                        setTaxon(selection_reuseExistingTaxon.getEntity());
                } else if (eventSource == selection_reuseExistingName) {
                        boolean enabled = selection_reuseExistingName.getEntity() == null;
                        selection_reuseExistingTaxon.setEnabled(enabled);
 
                        setTaxon(selection_reuseExistingTaxon.getEntity());
                } else if (eventSource == selection_reuseExistingName) {
                        boolean enabled = selection_reuseExistingName.getEntity() == null;
                        selection_reuseExistingTaxon.setEnabled(enabled);
-                       text_newTaxonName.setEnabled(enabled);
+                       textNewTaxonName.setEnabled(enabled);
 
                        setTaxon(selection_reuseExistingName.getEntity());
 
                        setTaxon(selection_reuseExistingName.getEntity());
-               } else if (eventSource == text_newTaxonName) {
-                       boolean enabled = CdmUtils.isEmpty(text_newTaxonName.getText());
+               } else if (eventSource == textNewTaxonName) {
+                       boolean enabled = CdmUtils.isEmpty(textNewTaxonName.getText());
                        selection_reuseExistingTaxon.setEnabled(enabled);
                        selection_reuseExistingName.setEnabled(enabled);
 
                        selection_reuseExistingTaxon.setEnabled(enabled);
                        selection_reuseExistingName.setEnabled(enabled);
 
-                       setTaxon(text_newTaxonName.getText());
+                       setTaxon(textNewTaxonName.getText());
+                       complete = !textNewTaxonName.getText().isEmpty();
                } else if (eventSource == checkbox_openInEditor) {
                        setOpenInEditor(checkbox_openInEditor.getSelection());
                }
                } else if (eventSource == checkbox_openInEditor) {
                        setOpenInEditor(checkbox_openInEditor.getSelection());
                }
@@ -200,13 +185,6 @@ public class TaxonNodeDetailElement extends AbstractCdmDetailElement<ITaxonTreeN
                return classification;
        }
 
                return classification;
        }
 
-       /**
-        * <p>
-        * isOpenInEditor
-        * </p>
-        *
-        * @return the openInEditor
-        */
        public boolean isOpenInEditor() {
                return openInEditor;
        }
        public boolean isOpenInEditor() {
                return openInEditor;
        }
@@ -233,19 +211,11 @@ public class TaxonNodeDetailElement extends AbstractCdmDetailElement<ITaxonTreeN
                return taxon;
        }
 
                return taxon;
        }
 
-       /**
-        * @param classification
-        *            the classification to set
-        */
        private void setClassification(Classification classification) {
                this.classification = classification;
                setParentTreeNode(classification);
        }
 
        private void setClassification(Classification classification) {
                this.classification = classification;
                setParentTreeNode(classification);
        }
 
-       /**
-        * @param parentTreeNode
-        *            the parentTreeNode to set
-        */
        private void setParentTreeNode(ITaxonTreeNode parentTreeNode) {
                this.parentTreeNode = parentTreeNode;
 
        private void setParentTreeNode(ITaxonTreeNode parentTreeNode) {
                this.parentTreeNode = parentTreeNode;
 
@@ -265,10 +235,6 @@ public class TaxonNodeDetailElement extends AbstractCdmDetailElement<ITaxonTreeN
                }
        }
 
                }
        }
 
-       /**
-        * @param reuseExistingTaxon
-        *            the reuseExistingTaxon to set
-        */
        private void setTaxon(Taxon taxon) {
                this.taxon = taxon;
        }
        private void setTaxon(Taxon taxon) {
                this.taxon = taxon;
        }
@@ -293,21 +259,14 @@ public class TaxonNodeDetailElement extends AbstractCdmDetailElement<ITaxonTreeN
                taxon = Taxon.NewInstance(taxonName, secundum);
        }
 
                taxon = Taxon.NewInstance(taxonName, secundum);
        }
 
-       /**
-        * @param openInEditor
-        *            the openInEditor to set
-        */
        private void setOpenInEditor(boolean openInEditor) {
                this.openInEditor = openInEditor;
        }
 
        private void setOpenInEditor(boolean openInEditor) {
                this.openInEditor = openInEditor;
        }
 
-       /**
-        * <p>
-        * isComplete
-        * </p>
-        *
-        * @return the complete
-        */
+       public TextWithLabelElement getTextNewTaxonName() {
+        return textNewTaxonName;
+    }
+
        public boolean isComplete() {
                return complete;
        }
        public boolean isComplete() {
                return complete;
        }
index d78900f3b618bace776f2221ebfbb1d5407a24c1..df24d7c6c3fb97633b1c61a574f927b3f9709100 100644 (file)
 package eu.etaxonomy.taxeditor.ui.section.classification;
 
 import org.eclipse.jface.util.PropertyChangeEvent;
 package eu.etaxonomy.taxeditor.ui.section.classification;
 
 import org.eclipse.jface.util.PropertyChangeEvent;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Listener;
 
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.model.taxon.ITaxonTreeNode;
 import eu.etaxonomy.cdm.model.taxon.Taxon;
 
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.model.taxon.ITaxonTreeNode;
 import eu.etaxonomy.cdm.model.taxon.Taxon;
+import eu.etaxonomy.taxeditor.newWizard.IWizardPageListener;
 import eu.etaxonomy.taxeditor.ui.element.AbstractCdmEntityWizardPage;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.AbstractCdmEntityWizardPage;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
@@ -28,9 +32,11 @@ import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
  * @created Sep 15, 2009
  * @version 1.0
  */
  * @created Sep 15, 2009
  * @version 1.0
  */
-public class TaxonNodeWizardPage extends AbstractCdmEntityWizardPage<ITaxonTreeNode> {
+public class TaxonNodeWizardPage extends AbstractCdmEntityWizardPage<ITaxonTreeNode> implements Listener{
 
 
-       /**
+    private final IWizardPageListener wizardPageListener;
+
+    /**
         * <p>
         * Constructor for TaxonNodeWizardPage.
         * </p>
         * <p>
         * Constructor for TaxonNodeWizardPage.
         * </p>
@@ -43,10 +49,12 @@ public class TaxonNodeWizardPage extends AbstractCdmEntityWizardPage<ITaxonTreeN
         *            object.
         * @param entity
         *            a {@link eu.etaxonomy.cdm.model.taxon.ITaxonTreeNode} object.
         *            object.
         * @param entity
         *            a {@link eu.etaxonomy.cdm.model.taxon.ITaxonTreeNode} object.
+     * @param closeOnEnterListener
         */
        public TaxonNodeWizardPage(CdmFormFactory formFactory,
         */
        public TaxonNodeWizardPage(CdmFormFactory formFactory,
-                       ConversationHolder conversation, ITaxonTreeNode entity) {
+                       ConversationHolder conversation, ITaxonTreeNode entity, IWizardPageListener closeOnEnterListener) {
                super(formFactory, conversation, entity);
                super(formFactory, conversation, entity);
+               this.wizardPageListener = closeOnEnterListener;
                setTitle("Create a new Taxon");
        }
 
                setTitle("Create a new Taxon");
        }
 
@@ -60,10 +68,10 @@ public class TaxonNodeWizardPage extends AbstractCdmEntityWizardPage<ITaxonTreeN
        /** {@inheritDoc} */
        @Override
        public TaxonNodeDetailElement createElement(ICdmFormElement rootElement) {
        /** {@inheritDoc} */
        @Override
        public TaxonNodeDetailElement createElement(ICdmFormElement rootElement) {
-
-        TaxonNodeDetailElement detailElement = formFactory.createTaxonNodeDetailElement(rootElement);
+           TaxonNodeDetailElement detailElement = formFactory.createTaxonNodeDetailElement(rootElement);
                detailElement.setEntity(entity);
                formFactory.addPropertyChangeListener(this);
                detailElement.setEntity(entity);
                formFactory.addPropertyChangeListener(this);
+               detailElement.getTextNewTaxonName().getMainControl().addListener(SWT.KeyDown, this);
                return detailElement;
        }
 
                return detailElement;
        }
 
@@ -93,16 +101,20 @@ public class TaxonNodeWizardPage extends AbstractCdmEntityWizardPage<ITaxonTreeN
                }
        }
 
                }
        }
 
-       /**
-        *
-        */
        @Override
        protected void checkComplete() {
                TaxonNodeDetailElement detailElement = (TaxonNodeDetailElement) getDetailElement();
 
                if (detailElement.getClassification() == null) {
        @Override
        protected void checkComplete() {
                TaxonNodeDetailElement detailElement = (TaxonNodeDetailElement) getDetailElement();
 
                if (detailElement.getClassification() == null) {
-                       setMessage("No classification", WARNING);
-               } else {
+                       setMessage("No classification set.", WARNING);
+               }
+               else if(detailElement.getTextNewTaxonName().getText().isEmpty()){
+                   setMessage("No taxon name set.", ERROR);
+               }
+               else if(!detailElement.isComplete()){
+                   setMessage("Not all required fields are filled.", ERROR);
+               }
+               else {
                        setMessage(null);
                        setPageComplete(true);
                        return;
                        setMessage(null);
                        setPageComplete(true);
                        return;
@@ -138,4 +150,14 @@ public class TaxonNodeWizardPage extends AbstractCdmEntityWizardPage<ITaxonTreeN
                formFactory.removePropertyChangeListener(this);
                super.dispose();
        }
                formFactory.removePropertyChangeListener(this);
                super.dispose();
        }
+
+    @Override
+    public void handleEvent(Event event) {
+        TaxonNodeDetailElement detailElement = (TaxonNodeDetailElement) getDetailElement();
+        if(event.widget == detailElement.getTextNewTaxonName().getMainControl()
+                && event.keyCode == SWT.CR && isPageComplete()){
+            wizardPageListener.close();
+        }
+    }
+
 }
 }