ref #6190 removing svn property place holder in first line of code - java files
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / ui / section / classification / TaxonNodeWizardPage.java
1 /**
2 * Copyright (C) 2007 EDIT
3 * European Distributed Institute of Taxonomy
4 * http://www.e-taxonomy.eu
5 *
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.
8 */
9
10 package eu.etaxonomy.taxeditor.ui.section.classification;
11
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;
16
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;
27
28 /**
29 * <p>
30 * TaxonNodeWizardPage class.
31 * </p>
32 *
33 * @author n.hoffmann
34 * @created Sep 15, 2009
35 * @version 1.0
36 */
37 public class TaxonNodeWizardPage extends AbstractCdmEntityWizardPage<ITaxonTreeNode> implements Listener{
38
39 private final IWizardPageListener wizardPageListener;
40 private final boolean isCreateNew;
41
42 /**
43 * <p>
44 * Constructor for TaxonNodeWizardPage.
45 * </p>
46 *
47 * @param formFactory
48 * a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory}
49 * object.
50 * @param conversation
51 * a {@link eu.etaxonomy.cdm.api.conversation.ConversationHolder}
52 * object.
53 * @param entity
54 * a {@link eu.etaxonomy.cdm.model.taxon.ITaxonTreeNode} object.
55 * @param closeOnEnterListener
56 */
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;
63
64 }
65
66 /*
67 * (non-Javadoc)
68 *
69 * @see
70 * eu.etaxonomy.taxeditor.forms.AbstractCdmEntityWizardPage#createElement
71 * (eu.etaxonomy.taxeditor.forms.ICdmFormElement)
72 */
73 /** {@inheritDoc} */
74 @Override
75 public TaxonNodeDetailElement createElement(ICdmFormElement rootElement) {
76 TaxonNodeDetailElement detailElement = formFactory.createTaxonNodeDetailElement(rootElement, this.isCreateNew);
77 detailElement.setEntity(entity);
78 formFactory.addPropertyChangeListener(this);
79 if (isCreateNew){
80 detailElement.getMainControl().addListener(SWT.KeyDown, this);
81 }
82 return detailElement;
83 }
84
85 /**
86 * <p>
87 * openInEditor
88 * </p>
89 *
90 * @return a boolean.
91 */
92 public boolean openInEditor() {
93 return ((TaxonNodeDetailElement) getDetailElement()).isOpenInEditor();
94 }
95
96 /*
97 * (non-Javadoc)
98 *
99 * @see
100 * org.eclipse.jface.util.IPropertyChangeListener#propertyChange(org.eclipse
101 * .jface.util.PropertyChangeEvent)
102 */
103 /** {@inheritDoc} */
104 @Override
105 public void propertyChange(PropertyChangeEvent event) {
106 checkComplete();
107 }
108
109 @Override
110 protected void checkComplete() {
111 TaxonNodeDetailElement detailElement = (TaxonNodeDetailElement) getDetailElement();
112
113 if (detailElement.getClassification() == null) {
114 setMessage("No classification set.", WARNING);
115 }
116 else if(isCreateNew ){
117 if(detailElement.getTaxonName().isEmpty()){
118 setMessage("No taxon name set.", ERROR);
119 } else{
120 setMessage(null);
121 setPageComplete(true);
122 return;
123 }
124 }
125 else if(!detailElement.isComplete()){
126 setMessage("Not all required fields are filled.", ERROR);
127 }
128 else {
129 setMessage(null);
130 setPageComplete(true);
131 return;
132 }
133
134 setPageComplete(false);
135 }
136
137 /**
138 * <p>
139 * Getter for the field <code>parentTreeNode</code>.
140 * </p>
141 *
142 * @return a {@link eu.etaxonomy.cdm.model.taxon.ITaxonTreeNode} object.
143 */
144 public ITaxonTreeNode getParentTreeNode() {
145 return ((TaxonNodeDetailElement) getDetailElement())
146 .getParentTreeNode();
147 }
148
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);
155 } else{
156 return ((TaxonNodeDetailElement) getDetailElement()).getTaxon();
157 }
158 }
159
160 /*
161 * (non-Javadoc)
162 *
163 * @see eu.etaxonomy.taxeditor.forms.AbstractCdmEntityWizardPage#dispose()
164 */
165 /** {@inheritDoc} */
166 @Override
167 public void dispose() {
168 formFactory.removePropertyChangeListener(this);
169 super.dispose();
170 }
171
172 @Override
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();
178 }
179 }
180
181 }