Project

General

Profile

Download (5.48 KB) Statistics
| Branch: | Tag: | Revision:
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.Taxon;
23
import eu.etaxonomy.cdm.model.taxon.TaxonNode;
24
import eu.etaxonomy.taxeditor.l10n.Messages;
25
import eu.etaxonomy.taxeditor.newWizard.IWizardPageListener;
26
import eu.etaxonomy.taxeditor.newWizard.NewTaxonNodeWizard;
27
import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
28
import eu.etaxonomy.taxeditor.ui.element.AbstractCdmEntityWizardPage;
29
import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
30
import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
31

    
32
/**
33
 * <p>
34
 * TaxonNodeWizardPage class.
35
 * </p>
36
 *
37
 * @author n.hoffmann
38
 * @created Sep 15, 2009
39
 */
40
public class TaxonNodeWizardPage extends AbstractCdmEntityWizardPage<TaxonNode> implements Listener{
41

    
42
    private final IWizardPageListener wizardPageListener;
43
    private final boolean isCreateNew;
44

    
45

    
46
    /**
47
	 * <p>
48
	 * Constructor for TaxonNodeWizardPage.
49
	 * </p>
50
	 *
51
	 * @param formFactory
52
	 *            a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory}
53
	 *            object.
54
	 * @param conversation
55
	 *            a {@link eu.etaxonomy.cdm.api.conversation.ConversationHolder}
56
	 *            object.
57
	 * @param entity
58
	 *            a {@link eu.etaxonomy.cdm.model.taxon.ITaxonTreeNode} object.
59
     * @param closeOnEnterListener
60
	 */
61
	public TaxonNodeWizardPage(CdmFormFactory formFactory,
62
			ConversationHolder conversation, TaxonNode entity, IWizardPageListener closeOnEnterListener, boolean isCreateNew) {
63
		super(formFactory, conversation, entity);
64
		this.wizardPageListener = closeOnEnterListener;
65

    
66
		if (isCreateNew){
67
		    setTitle(Messages.TaxonNodeWizardPage_new);
68
		}else{
69
		    setTitle(Messages.TaxonNodeWizardPage_edit);
70
		}
71
		this.isCreateNew = isCreateNew;
72

    
73

    
74
	}
75

    
76
	@Override
77
	public TaxonNodeDetailElement createElement(ICdmFormElement rootElement) {
78
	    TaxonNodeDetailElement detailElement = formFactory.createTaxonNodeDetailElement(rootElement, this.isCreateNew);
79

    
80
	    if (isCreateNew){
81
		    detailElement.setParentTreeNode(((NewTaxonNodeWizard)getWizard()).getParentEntity());
82
		}else{
83
		    detailElement.setEntity(entity);
84
		}
85
//	    detailElement.setPersistentBackground(Abstrac);;
86

    
87
		formFactory.addPropertyChangeListener(this);
88
//		if (isCreateNew){
89
//		    detailElement.getMainControl().addListener(SWT.KeyDown, this);
90
//		}
91
		return detailElement;
92
	}
93

    
94
	@Override
95
	public void propertyChange(PropertyChangeEvent event) {
96
		checkComplete();
97
	}
98

    
99
	@Override
100
	protected void checkComplete() {
101
		TaxonNodeDetailElement detailElement = (TaxonNodeDetailElement) getDetailElement();
102

    
103
		if (detailElement.getClassification() == null) {
104
			setMessage(Messages.TaxonNodeWizardPage_no_classification, WARNING);
105
		}
106
		else if(isCreateNew ){
107
		    if(CdmUtils.isBlank(detailElement.getTaxonName())){
108
		        setMessage(Messages.TaxonNodeWizardPage_no_taxon_name, ERROR);
109
		    } else{
110
		        setMessage(null);
111
	            setPageComplete(true);
112
	            return;
113
		    }
114
		}
115
		else if(!detailElement.isComplete()){
116
		    setMessage(Messages.TaxonNodeWizardPage_not_all_required_fields, ERROR);
117
		}
118
		else {
119
			setMessage(null);
120
			setPageComplete(true);
121
			return;
122
		}
123

    
124
		setPageComplete(false);
125
	}
126

    
127
	public TaxonNode getParentTreeNode() {
128
		return ((TaxonNodeDetailElement) getDetailElement()).getParentTreeNode();
129
	}
130

    
131
	public CreateTaxonDTO createTaxon() {
132

    
133
	    UUID nameUuid = null;
134
	    String taxonNameString = null;
135
	    if (((TaxonNodeDetailElement) getDetailElement()).getExistingName() != null){
136
	        nameUuid = ((TaxonNodeDetailElement) getDetailElement()).getExistingName().getUuid();
137
	    }else{
138
	        taxonNameString = ((TaxonNodeDetailElement) getDetailElement()).getTaxonName();
139
	    }
140

    
141
	    UUID secUuid = null;
142
	    if (((TaxonNodeDetailElement) getDetailElement()).getSecReference() != null){
143
	        secUuid = ((TaxonNodeDetailElement) getDetailElement()).getSecReference().getUuid();
144
	    }
145
	    boolean isPublish = ((TaxonNodeDetailElement) getDetailElement()).is_publish();
146
	    String secMicroReference = ((TaxonNodeDetailElement) getDetailElement()).getMicroReference();
147

    
148
	    CreateTaxonDTO createDto = new CreateTaxonDTO(nameUuid, secUuid,secMicroReference,false, null,isPublish,
149
	            taxonNameString, PreferencesUtil.getPreferredNomenclaturalCode(), null);
150

    
151
        return createDto;
152
	}
153

    
154
	public TaxonNode getTaxonNode(){
155
	   return ((TaxonNodeDetailElement) getDetailElement()).getEntity();
156
	}
157

    
158
	public Taxon getExistingTaxon(){
159
	       return ((TaxonNodeDetailElement) getDetailElement()).getTaxon();
160
	    }
161

    
162
	@Override
163
	public void dispose() {
164
		formFactory.removePropertyChangeListener(this);
165
		super.dispose();
166
	}
167

    
168
    @Override
169
    public void handleEvent(Event event) {
170
        TaxonNodeDetailElement detailElement = (TaxonNodeDetailElement) getDetailElement();
171
        if(event.widget == detailElement.getMainControl()
172
                && event.keyCode == SWT.CR && isPageComplete()){
173
            wizardPageListener.close();
174
        }
175
    }
176
}
(12-12/12)