Merge branch 'release/5.18.0'
[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 java.util.UUID;
13
14 import org.eclipse.jface.util.PropertyChangeEvent;
15 import org.eclipse.swt.SWT;
16 import org.eclipse.swt.widgets.Event;
17 import org.eclipse.swt.widgets.Listener;
18
19 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
20 import eu.etaxonomy.cdm.api.service.dto.CreateTaxonDTO;
21 import eu.etaxonomy.cdm.common.CdmUtils;
22 import eu.etaxonomy.cdm.model.taxon.TaxonNode;
23 import eu.etaxonomy.taxeditor.l10n.Messages;
24 import eu.etaxonomy.taxeditor.newWizard.IWizardPageListener;
25 import eu.etaxonomy.taxeditor.newWizard.NewTaxonNodeWizard;
26 import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
27 import eu.etaxonomy.taxeditor.ui.element.AbstractCdmEntityWizardPage;
28 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
29 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
30
31 /**
32 * <p>
33 * TaxonNodeWizardPage class.
34 * </p>
35 *
36 * @author n.hoffmann
37 * @created Sep 15, 2009
38 */
39 public class TaxonNodeWizardPage extends AbstractCdmEntityWizardPage<TaxonNode> implements Listener{
40
41 private final IWizardPageListener wizardPageListener;
42 private final boolean isCreateNew;
43
44
45 /**
46 * <p>
47 * Constructor for TaxonNodeWizardPage.
48 * </p>
49 *
50 * @param formFactory
51 * a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory}
52 * object.
53 * @param conversation
54 * a {@link eu.etaxonomy.cdm.api.conversation.ConversationHolder}
55 * object.
56 * @param entity
57 * a {@link eu.etaxonomy.cdm.model.taxon.ITaxonTreeNode} object.
58 * @param closeOnEnterListener
59 */
60 public TaxonNodeWizardPage(CdmFormFactory formFactory,
61 ConversationHolder conversation, TaxonNode entity, IWizardPageListener closeOnEnterListener, boolean isCreateNew) {
62 super(formFactory, conversation, entity);
63 this.wizardPageListener = closeOnEnterListener;
64
65 if (isCreateNew){
66 setTitle(Messages.TaxonNodeWizardPage_new);
67 }else{
68 setTitle(Messages.TaxonNodeWizardPage_edit);
69 }
70 this.isCreateNew = isCreateNew;
71
72
73 }
74
75 @Override
76 public TaxonNodeDetailElement createElement(ICdmFormElement rootElement) {
77 TaxonNodeDetailElement detailElement = formFactory.createTaxonNodeDetailElement(rootElement, this.isCreateNew);
78
79 if (isCreateNew){
80 detailElement.setParentTreeNode(((NewTaxonNodeWizard)getWizard()).getParentEntity());
81 }else{
82 detailElement.setEntity(entity);
83 }
84 // detailElement.setPersistentBackground(Abstrac);;
85
86 formFactory.addPropertyChangeListener(this);
87 // if (isCreateNew){
88 // detailElement.getMainControl().addListener(SWT.KeyDown, this);
89 // }
90 return detailElement;
91 }
92
93 @Override
94 public void propertyChange(PropertyChangeEvent event) {
95 checkComplete();
96 }
97
98 @Override
99 protected void checkComplete() {
100 TaxonNodeDetailElement detailElement = (TaxonNodeDetailElement) getDetailElement();
101
102 if (detailElement.getClassification() == null) {
103 setMessage(Messages.TaxonNodeWizardPage_no_classification, WARNING);
104 }
105 else if(isCreateNew ){
106 if(CdmUtils.isBlank(detailElement.getTaxonName())){
107 setMessage(Messages.TaxonNodeWizardPage_no_taxon_name, ERROR);
108 } else{
109 setMessage(null);
110 setPageComplete(true);
111 return;
112 }
113 }
114 else if(!detailElement.isComplete()){
115 setMessage(Messages.TaxonNodeWizardPage_not_all_required_fields, ERROR);
116 }
117 else {
118 setMessage(null);
119 setPageComplete(true);
120 return;
121 }
122
123 setPageComplete(false);
124 }
125
126 public TaxonNode getParentTreeNode() {
127 return ((TaxonNodeDetailElement) getDetailElement()).getParentTreeNode();
128 }
129
130 public CreateTaxonDTO createTaxon() {
131
132 UUID nameUuid = null;
133 String taxonNameString = null;
134 if (((TaxonNodeDetailElement) getDetailElement()).getExistingName() != null){
135 nameUuid = ((TaxonNodeDetailElement) getDetailElement()).getExistingName().getUuid();
136 }else{
137 taxonNameString = ((TaxonNodeDetailElement) getDetailElement()).getTaxonName();
138 }
139
140 UUID secUuid = null;
141 if (((TaxonNodeDetailElement) getDetailElement()).getSecReference() != null){
142 secUuid = ((TaxonNodeDetailElement) getDetailElement()).getSecReference().getUuid();
143 }
144 boolean isPublish = ((TaxonNodeDetailElement) getDetailElement()).is_publish();
145 String secMicroReference = ((TaxonNodeDetailElement) getDetailElement()).getMicroReference();
146
147 CreateTaxonDTO createDto = new CreateTaxonDTO(nameUuid, secUuid,secMicroReference,false, null,isPublish,
148 taxonNameString, PreferencesUtil.getPreferredNomenclaturalCode(), null);
149
150 return createDto;
151 }
152
153 public TaxonNode getTaxonNode(){
154 return ((TaxonNodeDetailElement) getDetailElement()).getEntity();
155 }
156
157 @Override
158 public void dispose() {
159 formFactory.removePropertyChangeListener(this);
160 super.dispose();
161 }
162
163 @Override
164 public void handleEvent(Event event) {
165 TaxonNodeDetailElement detailElement = (TaxonNodeDetailElement) getDetailElement();
166 if(event.widget == detailElement.getMainControl()
167 && event.keyCode == SWT.CR && isPageComplete()){
168 wizardPageListener.close();
169 }
170 }
171 }