// $Id$
/**
* Copyright (C) 2007 EDIT
-* European Distributed Institute of Taxonomy
+* European Distributed Institute of Taxonomy
* 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;
+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.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>
* @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;
}
}
// $Id$
/**
* Copyright (C) 2007 EDIT
-* European Distributed Institute of Taxonomy
+* European Distributed Institute of Taxonomy
* 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.
*/
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 eu.etaxonomy.taxeditor.newWizard.IWizardPageListener;
import eu.etaxonomy.taxeditor.newWizard.NewTaxonNodeWizard;
/**
* @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} */
- 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);
- 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();
-
+
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;
}
}
private TaxonNodeWizardPage taxonNodePage;
private boolean openEmptyEditor;
private UUID generatedTaxonNodeUuid;
+ private IWizardPageListener wizardPageListener;
@Override
public void addPages() {
- taxonNodePage = new TaxonNodeWizardPage(formFactory, getConversationHolder(), getEntity());
+ taxonNodePage = new TaxonNodeWizardPage(formFactory, getConversationHolder(), getEntity(), wizardPageListener);
addPage(taxonNodePage);
}
return "Taxon";
}
+ public void addWizardPageListener(IWizardPageListener wizardPageListener){
+ this.wizardPageListener = wizardPageListener;
+ }
+
}
\ No newline at end of file
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;
private Taxon taxon;
- private TextWithLabelElement text_newTaxonName;
+ private TextWithLabelElement textNewTaxonName;
private CheckboxElement checkbox_openInEditor;
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,
"Reuse existing name", null,
EntitySelectionElement.DELETABLE, style);
- text_newTaxonName = formFactory.createTextWithLabelElement(formElement,
+ textNewTaxonName = formFactory.createTextWithLabelElement(formElement,
"New Taxon", "", style);
- text_newTaxonName.setFocus();
+ textNewTaxonName.setFocus();
preFillParentTaxonName();
checkbox_openInEditor = formFactory.createCheckbox(formElement,
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());
}
}
}
}
}
- /*
- * (non-Javadoc)
- *
- * @see
- * eu.etaxonomy.taxeditor.section.AbstractCdmDetailElement#handleEvent(java
- * .lang.Object)
- */
/** {@inheritDoc} */
@Override
public void handleEvent(Object eventSource) {
} 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);
- text_newTaxonName.setEnabled(enabled);
+ textNewTaxonName.setEnabled(enabled);
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);
- setTaxon(text_newTaxonName.getText());
+ setTaxon(textNewTaxonName.getText());
+ complete = !textNewTaxonName.getText().isEmpty();
} else if (eventSource == checkbox_openInEditor) {
setOpenInEditor(checkbox_openInEditor.getSelection());
}
return classification;
}
- /**
- * <p>
- * isOpenInEditor
- * </p>
- *
- * @return the openInEditor
- */
public boolean isOpenInEditor() {
return openInEditor;
}
return taxon;
}
- /**
- * @param classification
- * the classification to set
- */
private void setClassification(Classification classification) {
this.classification = classification;
setParentTreeNode(classification);
}
- /**
- * @param parentTreeNode
- * the parentTreeNode to set
- */
private void setParentTreeNode(ITaxonTreeNode parentTreeNode) {
this.parentTreeNode = parentTreeNode;
}
}
- /**
- * @param reuseExistingTaxon
- * the reuseExistingTaxon to set
- */
private void setTaxon(Taxon taxon) {
this.taxon = taxon;
}
taxon = Taxon.NewInstance(taxonName, secundum);
}
- /**
- * @param openInEditor
- * the openInEditor to set
- */
private void setOpenInEditor(boolean openInEditor) {
this.openInEditor = openInEditor;
}
- /**
- * <p>
- * isComplete
- * </p>
- *
- * @return the complete
- */
+ public TextWithLabelElement getTextNewTaxonName() {
+ return textNewTaxonName;
+ }
+
public boolean isComplete() {
return complete;
}
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.taxeditor.newWizard.IWizardPageListener;
import eu.etaxonomy.taxeditor.ui.element.AbstractCdmEntityWizardPage;
import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
* @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>
* object.
* @param entity
* a {@link eu.etaxonomy.cdm.model.taxon.ITaxonTreeNode} object.
+ * @param closeOnEnterListener
*/
public TaxonNodeWizardPage(CdmFormFactory formFactory,
- ConversationHolder conversation, ITaxonTreeNode entity) {
+ ConversationHolder conversation, ITaxonTreeNode entity, IWizardPageListener closeOnEnterListener) {
super(formFactory, conversation, entity);
+ this.wizardPageListener = closeOnEnterListener;
setTitle("Create a new Taxon");
}
/** {@inheritDoc} */
@Override
public TaxonNodeDetailElement createElement(ICdmFormElement rootElement) {
-
- TaxonNodeDetailElement detailElement = formFactory.createTaxonNodeDetailElement(rootElement);
+ TaxonNodeDetailElement detailElement = formFactory.createTaxonNodeDetailElement(rootElement);
detailElement.setEntity(entity);
formFactory.addPropertyChangeListener(this);
+ detailElement.getTextNewTaxonName().getMainControl().addListener(SWT.KeyDown, this);
return detailElement;
}
}
}
- /**
- *
- */
@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;
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();
+ }
+ }
+
}