2 * Copyright (C) 2007 EDIT
3 * European Distributed Institute of Taxonomy
4 * http://www.e-taxonomy.eu
6 * The contents of this file are subject to the Mozilla Public License Version 1.1
7 * See LICENSE.TXT at the top of this package for the full license terms.
10 package eu
.etaxonomy
.taxeditor
.ui
.section
.classification
;
12 import org
.eclipse
.jface
.util
.PropertyChangeEvent
;
13 import org
.eclipse
.swt
.SWT
;
14 import org
.eclipse
.swt
.widgets
.Event
;
15 import org
.eclipse
.swt
.widgets
.Listener
;
17 import eu
.etaxonomy
.cdm
.api
.conversation
.ConversationHolder
;
18 import eu
.etaxonomy
.cdm
.model
.name
.NonViralName
;
19 import eu
.etaxonomy
.cdm
.model
.reference
.Reference
;
20 import eu
.etaxonomy
.cdm
.model
.taxon
.ITaxonTreeNode
;
21 import eu
.etaxonomy
.cdm
.model
.taxon
.Taxon
;
22 import eu
.etaxonomy
.taxeditor
.newWizard
.IWizardPageListener
;
23 import eu
.etaxonomy
.taxeditor
.parser
.ParseHandler
;
24 import eu
.etaxonomy
.taxeditor
.ui
.element
.AbstractCdmEntityWizardPage
;
25 import eu
.etaxonomy
.taxeditor
.ui
.element
.CdmFormFactory
;
26 import eu
.etaxonomy
.taxeditor
.ui
.element
.ICdmFormElement
;
30 * TaxonNodeWizardPage class.
34 * @created Sep 15, 2009
37 public class TaxonNodeWizardPage
extends AbstractCdmEntityWizardPage
<ITaxonTreeNode
> implements Listener
{
39 private final IWizardPageListener wizardPageListener
;
40 private final boolean isCreateNew
;
44 * Constructor for TaxonNodeWizardPage.
48 * a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory}
51 * a {@link eu.etaxonomy.cdm.api.conversation.ConversationHolder}
54 * a {@link eu.etaxonomy.cdm.model.taxon.ITaxonTreeNode} object.
55 * @param closeOnEnterListener
57 public TaxonNodeWizardPage(CdmFormFactory formFactory
,
58 ConversationHolder conversation
, ITaxonTreeNode entity
, IWizardPageListener closeOnEnterListener
, boolean isCreateNew
) {
59 super(formFactory
, conversation
, entity
);
60 this.wizardPageListener
= closeOnEnterListener
;
61 setTitle("Edit taxon node");
62 this.isCreateNew
= isCreateNew
;
70 * eu.etaxonomy.taxeditor.forms.AbstractCdmEntityWizardPage#createElement
71 * (eu.etaxonomy.taxeditor.forms.ICdmFormElement)
75 public TaxonNodeDetailElement
createElement(ICdmFormElement rootElement
) {
76 TaxonNodeDetailElement detailElement
= formFactory
.createTaxonNodeDetailElement(rootElement
, this.isCreateNew
);
77 detailElement
.setEntity(entity
);
78 formFactory
.addPropertyChangeListener(this);
80 detailElement
.getMainControl().addListener(SWT
.KeyDown
, this);
92 public boolean openInEditor() {
93 return ((TaxonNodeDetailElement
) getDetailElement()).isOpenInEditor();
100 * org.eclipse.jface.util.IPropertyChangeListener#propertyChange(org.eclipse
101 * .jface.util.PropertyChangeEvent)
105 public void propertyChange(PropertyChangeEvent event
) {
110 protected void checkComplete() {
111 TaxonNodeDetailElement detailElement
= (TaxonNodeDetailElement
) getDetailElement();
113 if (detailElement
.getClassification() == null) {
114 setMessage("No classification set.", WARNING
);
116 else if(isCreateNew
){
117 if(detailElement
.getTaxonName().isEmpty()){
118 setMessage("No taxon name set.", ERROR
);
121 setPageComplete(true);
125 else if(!detailElement
.isComplete()){
126 setMessage("Not all required fields are filled.", ERROR
);
130 setPageComplete(true);
134 setPageComplete(false);
139 * Getter for the field <code>parentTreeNode</code>.
142 * @return a {@link eu.etaxonomy.cdm.model.taxon.ITaxonTreeNode} object.
144 public ITaxonTreeNode
getParentTreeNode() {
145 return ((TaxonNodeDetailElement
) getDetailElement())
146 .getParentTreeNode();
149 public Taxon
createTaxon() {
150 if (((TaxonNodeDetailElement
) getDetailElement()).getTaxon() == null){
151 String taxonName
= ((TaxonNodeDetailElement
) getDetailElement()).getTaxonName();
152 Reference reference
= ((TaxonNodeDetailElement
) getDetailElement()).getReference();
153 NonViralName parseReferencedName
= ParseHandler
.parseReferencedName(taxonName
, null);
154 return Taxon
.NewInstance(parseReferencedName
, reference
);
156 return ((TaxonNodeDetailElement
) getDetailElement()).getTaxon();
163 * @see eu.etaxonomy.taxeditor.forms.AbstractCdmEntityWizardPage#dispose()
167 public void dispose() {
168 formFactory
.removePropertyChangeListener(this);
173 public void handleEvent(Event event
) {
174 TaxonNodeDetailElement detailElement
= (TaxonNodeDetailElement
) getDetailElement();
175 if(event
.widget
== detailElement
.getMainControl()
176 && event
.keyCode
== SWT
.CR
&& isPageComplete()){
177 wizardPageListener
.close();