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();
+ }
+ }
+
}