X-Git-Url: https://dev.e-taxonomy.eu/gitweb/taxeditor.git/blobdiff_plain/6504f35ca20f966244b91ca3039591debcb9be79..d1dfc43d23792910704566ffb08d031f7b16d55a:/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/classification/TaxonNodeWizardPage.java diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/classification/TaxonNodeWizardPage.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/classification/TaxonNodeWizardPage.java index df7fedf8e..dc90c3109 100644 --- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/classification/TaxonNodeWizardPage.java +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/classification/TaxonNodeWizardPage.java @@ -11,13 +11,20 @@ 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.ITreeNode; +import eu.etaxonomy.cdm.model.name.NonViralName; +import eu.etaxonomy.cdm.model.reference.Reference; +import eu.etaxonomy.cdm.model.taxon.ITaxonTreeNode; import eu.etaxonomy.cdm.model.taxon.Taxon; +import eu.etaxonomy.taxeditor.newWizard.IWizardPageListener; +import eu.etaxonomy.taxeditor.parser.ParseHandler; import eu.etaxonomy.taxeditor.ui.element.AbstractCdmEntityWizardPage; import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory; -import eu.etaxonomy.taxeditor.ui.section.campanula.compatibility.ICdmFormElement; +import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement; /** *

@@ -28,9 +35,12 @@ import eu.etaxonomy.taxeditor.ui.section.campanula.compatibility.ICdmFormElement * @created Sep 15, 2009 * @version 1.0 */ -public class TaxonNodeWizardPage extends AbstractCdmEntityWizardPage { +public class TaxonNodeWizardPage extends AbstractCdmEntityWizardPage implements Listener{ - /** + private final IWizardPageListener wizardPageListener; + private final boolean isCreateNew; + + /** *

* Constructor for TaxonNodeWizardPage. *

@@ -42,12 +52,16 @@ public class TaxonNodeWizardPage extends AbstractCdmEntityWizardPage * a {@link eu.etaxonomy.cdm.api.conversation.ConversationHolder} * object. * @param entity - * a {@link eu.etaxonomy.cdm.model.taxon.ITreeNode} object. + * a {@link eu.etaxonomy.cdm.model.taxon.ITaxonTreeNode} object. + * @param closeOnEnterListener */ public TaxonNodeWizardPage(CdmFormFactory formFactory, - ConversationHolder conversation, ITreeNode entity) { + ConversationHolder conversation, ITaxonTreeNode entity, IWizardPageListener closeOnEnterListener, boolean isCreateNew) { super(formFactory, conversation, entity); - setTitle("Create a new Taxon"); + this.wizardPageListener = closeOnEnterListener; + setTitle("Edit taxon node"); + this.isCreateNew = isCreateNew; + } /* @@ -60,10 +74,12 @@ public class TaxonNodeWizardPage extends AbstractCdmEntityWizardPage /** {@inheritDoc} */ @Override public TaxonNodeDetailElement createElement(ICdmFormElement rootElement) { - - TaxonNodeDetailElement detailElement = formFactory.createTaxonNodeDetailElement(rootElement); + TaxonNodeDetailElement detailElement = formFactory.createTaxonNodeDetailElement(rootElement, this.isCreateNew); detailElement.setEntity(entity); formFactory.addPropertyChangeListener(this); + if (isCreateNew){ + detailElement.getMainControl().addListener(SWT.KeyDown, this); + } return detailElement; } @@ -88,21 +104,29 @@ public class TaxonNodeWizardPage extends AbstractCdmEntityWizardPage /** {@inheritDoc} */ @Override public void propertyChange(PropertyChangeEvent event) { - if (event.getSource() == getDetailElement()) { - checkComplete(); - } + checkComplete(); } - /** - * - */ @Override protected void checkComplete() { TaxonNodeDetailElement detailElement = (TaxonNodeDetailElement) getDetailElement(); if (detailElement.getClassification() == null) { - setMessage("No classification", WARNING); - } else { + setMessage("No classification set.", WARNING); + } + else if(isCreateNew ){ + if(detailElement.getTaxonName().isEmpty()){ + setMessage("No taxon name set.", ERROR); + } else{ + setMessage(null); + setPageComplete(true); + return; + } + } + else if(!detailElement.isComplete()){ + setMessage("Not all required fields are filled.", ERROR); + } + else { setMessage(null); setPageComplete(true); return; @@ -116,15 +140,18 @@ public class TaxonNodeWizardPage extends AbstractCdmEntityWizardPage * Getter for the field parentTreeNode. *

* - * @return a {@link eu.etaxonomy.cdm.model.taxon.ITreeNode} object. + * @return a {@link eu.etaxonomy.cdm.model.taxon.ITaxonTreeNode} object. */ - public ITreeNode getParentTreeNode() { + public ITaxonTreeNode getParentTreeNode() { return ((TaxonNodeDetailElement) getDetailElement()) .getParentTreeNode(); } - public Taxon getTaxon() { - return ((TaxonNodeDetailElement) getDetailElement()).getTaxon(); + public Taxon createTaxon() { + String taxonName = ((TaxonNodeDetailElement) getDetailElement()).getTaxonName(); + Reference reference = ((TaxonNodeDetailElement) getDetailElement()).getReference(); + NonViralName parseReferencedName = ParseHandler.parseReferencedName(taxonName, null); + return Taxon.NewInstance(parseReferencedName, reference); } /* @@ -138,4 +165,14 @@ public class TaxonNodeWizardPage extends AbstractCdmEntityWizardPage formFactory.removePropertyChangeListener(this); super.dispose(); } + + @Override + public void handleEvent(Event event) { + TaxonNodeDetailElement detailElement = (TaxonNodeDetailElement) getDetailElement(); + if(event.widget == detailElement.getMainControl() + && event.keyCode == SWT.CR && isPageComplete()){ + wizardPageListener.close(); + } + } + }