3 * Copyright (C) 2007 EDIT
4 * European Distributed Institute of Taxonomy
5 * http://www.e-taxonomy.eu
7 * The contents of this file are subject to the Mozilla Public License Version 1.1
8 * See LICENSE.TXT at the top of this package for the full license terms.
11 package eu
.etaxonomy
.taxeditor
.ui
.section
.classification
;
13 import org
.eclipse
.jface
.util
.PropertyChangeEvent
;
14 import org
.eclipse
.swt
.SWT
;
15 import org
.eclipse
.swt
.widgets
.Event
;
16 import org
.eclipse
.swt
.widgets
.Listener
;
18 import eu
.etaxonomy
.cdm
.api
.conversation
.ConversationHolder
;
19 import eu
.etaxonomy
.cdm
.model
.name
.NonViralName
;
20 import eu
.etaxonomy
.cdm
.model
.reference
.Reference
;
21 import eu
.etaxonomy
.cdm
.model
.taxon
.ITaxonTreeNode
;
22 import eu
.etaxonomy
.cdm
.model
.taxon
.Taxon
;
23 import eu
.etaxonomy
.taxeditor
.newWizard
.IWizardPageListener
;
24 import eu
.etaxonomy
.taxeditor
.parser
.ParseHandler
;
25 import eu
.etaxonomy
.taxeditor
.ui
.element
.AbstractCdmEntityWizardPage
;
26 import eu
.etaxonomy
.taxeditor
.ui
.element
.CdmFormFactory
;
27 import eu
.etaxonomy
.taxeditor
.ui
.element
.ICdmFormElement
;
31 * TaxonNodeWizardPage class.
35 * @created Sep 15, 2009
38 public class TaxonNodeWizardPage
extends AbstractCdmEntityWizardPage
<ITaxonTreeNode
> implements Listener
{
40 private final IWizardPageListener wizardPageListener
;
41 private final boolean isCreateNew
;
45 * Constructor for TaxonNodeWizardPage.
49 * a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory}
52 * a {@link eu.etaxonomy.cdm.api.conversation.ConversationHolder}
55 * a {@link eu.etaxonomy.cdm.model.taxon.ITaxonTreeNode} object.
56 * @param closeOnEnterListener
58 public TaxonNodeWizardPage(CdmFormFactory formFactory
,
59 ConversationHolder conversation
, ITaxonTreeNode entity
, IWizardPageListener closeOnEnterListener
, boolean isCreateNew
) {
60 super(formFactory
, conversation
, entity
);
61 this.wizardPageListener
= closeOnEnterListener
;
62 setTitle("Edit taxon node");
63 this.isCreateNew
= isCreateNew
;
71 * eu.etaxonomy.taxeditor.forms.AbstractCdmEntityWizardPage#createElement
72 * (eu.etaxonomy.taxeditor.forms.ICdmFormElement)
76 public TaxonNodeDetailElement
createElement(ICdmFormElement rootElement
) {
77 TaxonNodeDetailElement detailElement
= formFactory
.createTaxonNodeDetailElement(rootElement
, this.isCreateNew
);
78 detailElement
.setEntity(entity
);
79 formFactory
.addPropertyChangeListener(this);
81 detailElement
.getMainControl().addListener(SWT
.KeyDown
, this);
93 public boolean openInEditor() {
94 return ((TaxonNodeDetailElement
) getDetailElement()).isOpenInEditor();
101 * org.eclipse.jface.util.IPropertyChangeListener#propertyChange(org.eclipse
102 * .jface.util.PropertyChangeEvent)
106 public void propertyChange(PropertyChangeEvent event
) {
111 protected void checkComplete() {
112 TaxonNodeDetailElement detailElement
= (TaxonNodeDetailElement
) getDetailElement();
114 if (detailElement
.getClassification() == null) {
115 setMessage("No classification set.", WARNING
);
117 else if(isCreateNew
){
118 if(detailElement
.getTaxonName().isEmpty()){
119 setMessage("No taxon name set.", ERROR
);
122 setPageComplete(true);
126 else if(!detailElement
.isComplete()){
127 setMessage("Not all required fields are filled.", ERROR
);
131 setPageComplete(true);
135 setPageComplete(false);
140 * Getter for the field <code>parentTreeNode</code>.
143 * @return a {@link eu.etaxonomy.cdm.model.taxon.ITaxonTreeNode} object.
145 public ITaxonTreeNode
getParentTreeNode() {
146 return ((TaxonNodeDetailElement
) getDetailElement())
147 .getParentTreeNode();
150 public Taxon
createTaxon() {
151 if (((TaxonNodeDetailElement
) getDetailElement()).getTaxon() == null){
152 String taxonName
= ((TaxonNodeDetailElement
) getDetailElement()).getTaxonName();
153 Reference reference
= ((TaxonNodeDetailElement
) getDetailElement()).getReference();
154 NonViralName parseReferencedName
= ParseHandler
.parseReferencedName(taxonName
, null);
155 return Taxon
.NewInstance(parseReferencedName
, reference
);
157 return ((TaxonNodeDetailElement
) getDetailElement()).getTaxon();
164 * @see eu.etaxonomy.taxeditor.forms.AbstractCdmEntityWizardPage#dispose()
168 public void dispose() {
169 formFactory
.removePropertyChangeListener(this);
174 public void handleEvent(Event event
) {
175 TaxonNodeDetailElement detailElement
= (TaxonNodeDetailElement
) getDetailElement();
176 if(event
.widget
== detailElement
.getMainControl()
177 && event
.keyCode
== SWT
.CR
&& isPageComplete()){
178 wizardPageListener
.close();