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
.taxon
.ITaxonTreeNode
;
20 import eu
.etaxonomy
.cdm
.model
.taxon
.Taxon
;
21 import eu
.etaxonomy
.taxeditor
.newWizard
.IWizardPageListener
;
22 import eu
.etaxonomy
.taxeditor
.ui
.element
.AbstractCdmEntityWizardPage
;
23 import eu
.etaxonomy
.taxeditor
.ui
.element
.CdmFormFactory
;
24 import eu
.etaxonomy
.taxeditor
.ui
.element
.ICdmFormElement
;
28 * TaxonNodeWizardPage class.
32 * @created Sep 15, 2009
35 public class TaxonNodeWizardPage
extends AbstractCdmEntityWizardPage
<ITaxonTreeNode
> implements Listener
{
37 private final IWizardPageListener wizardPageListener
;
41 * Constructor for TaxonNodeWizardPage.
45 * a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory}
48 * a {@link eu.etaxonomy.cdm.api.conversation.ConversationHolder}
51 * a {@link eu.etaxonomy.cdm.model.taxon.ITaxonTreeNode} object.
52 * @param closeOnEnterListener
54 public TaxonNodeWizardPage(CdmFormFactory formFactory
,
55 ConversationHolder conversation
, ITaxonTreeNode entity
, IWizardPageListener closeOnEnterListener
) {
56 super(formFactory
, conversation
, entity
);
57 this.wizardPageListener
= closeOnEnterListener
;
58 setTitle("Create a new Taxon");
65 * eu.etaxonomy.taxeditor.forms.AbstractCdmEntityWizardPage#createElement
66 * (eu.etaxonomy.taxeditor.forms.ICdmFormElement)
70 public TaxonNodeDetailElement
createElement(ICdmFormElement rootElement
) {
71 TaxonNodeDetailElement detailElement
= formFactory
.createTaxonNodeDetailElement(rootElement
);
72 detailElement
.setEntity(entity
);
73 formFactory
.addPropertyChangeListener(this);
74 detailElement
.getTextNewTaxonName().getMainControl().addListener(SWT
.KeyDown
, this);
85 public boolean openInEditor() {
86 return ((TaxonNodeDetailElement
) getDetailElement()).isOpenInEditor();
93 * org.eclipse.jface.util.IPropertyChangeListener#propertyChange(org.eclipse
94 * .jface.util.PropertyChangeEvent)
98 public void propertyChange(PropertyChangeEvent event
) {
99 if (event
.getSource() == getDetailElement()) {
105 protected void checkComplete() {
106 TaxonNodeDetailElement detailElement
= (TaxonNodeDetailElement
) getDetailElement();
108 if (detailElement
.getClassification() == null) {
109 setMessage("No classification set.", WARNING
);
111 else if(detailElement
.getTextNewTaxonName().getText().isEmpty()){
112 setMessage("No taxon name set.", ERROR
);
114 else if(!detailElement
.isComplete()){
115 setMessage("Not all required fields are filled.", ERROR
);
119 setPageComplete(true);
123 setPageComplete(false);
128 * Getter for the field <code>parentTreeNode</code>.
131 * @return a {@link eu.etaxonomy.cdm.model.taxon.ITaxonTreeNode} object.
133 public ITaxonTreeNode
getParentTreeNode() {
134 return ((TaxonNodeDetailElement
) getDetailElement())
135 .getParentTreeNode();
138 public Taxon
getTaxon() {
139 return ((TaxonNodeDetailElement
) getDetailElement()).getTaxon();
145 * @see eu.etaxonomy.taxeditor.forms.AbstractCdmEntityWizardPage#dispose()
149 public void dispose() {
150 formFactory
.removePropertyChangeListener(this);
155 public void handleEvent(Event event
) {
156 TaxonNodeDetailElement detailElement
= (TaxonNodeDetailElement
) getDetailElement();
157 if(event
.widget
== detailElement
.getTextNewTaxonName().getMainControl()
158 && event
.keyCode
== SWT
.CR
&& isPageComplete()){
159 wizardPageListener
.close();