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;
/**
* <p>
* @created Sep 15, 2009
* @version 1.0
*/
-public class TaxonNodeWizardPage extends AbstractCdmEntityWizardPage<ITreeNode> {
+public class TaxonNodeWizardPage extends AbstractCdmEntityWizardPage<ITaxonTreeNode> implements Listener{
- /**
+ private final IWizardPageListener wizardPageListener;
+ private final boolean isCreateNew;
+
+ /**
* <p>
* Constructor for TaxonNodeWizardPage.
* </p>
* 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;
+
}
/*
/** {@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;
}
/** {@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;
* Getter for the field <code>parentTreeNode</code>.
* </p>
*
- * @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);
}
/*
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();
+ }
+ }
+
}