Project

General

Profile

Download (5.15 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.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
		if (isCreateNew){
79
		    detailElement.setParentTreeNode(((NewTaxonNodeWizard)getWizard()).getParentEntity());
80
		}else{
81
		    detailElement.setEntity(entity);
82
		}
83

    
84
		formFactory.addPropertyChangeListener(this);
85
//		if (isCreateNew){
86
//		    detailElement.getMainControl().addListener(SWT.KeyDown, this);
87
//		}
88
		return detailElement;
89
	}
90

    
91
	@Override
92
	public void propertyChange(PropertyChangeEvent event) {
93
		checkComplete();
94
	}
95

    
96
	@Override
97
	protected void checkComplete() {
98
		TaxonNodeDetailElement detailElement = (TaxonNodeDetailElement) getDetailElement();
99

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

    
121
		setPageComplete(false);
122
	}
123

    
124
	public TaxonNode getParentTreeNode() {
125
		return ((TaxonNodeDetailElement) getDetailElement()).getParentTreeNode();
126
	}
127

    
128
	public CreateTaxonDTO createTaxon() {
129

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

    
138
	    UUID secUuid = null;
139
	    if (((TaxonNodeDetailElement) getDetailElement()).getSecReference() != null){
140
	        secUuid = ((TaxonNodeDetailElement) getDetailElement()).getSecReference().getUuid();
141
	    }
142
	    boolean isPublish = ((TaxonNodeDetailElement) getDetailElement()).is_publish();
143

    
144

    
145
	    CreateTaxonDTO createDto = new CreateTaxonDTO(nameUuid, secUuid,null,false, null,isPublish,
146
	            taxonNameString, PreferencesUtil.getPreferredNomenclaturalCode(), null);
147

    
148
        return createDto;
149
	}
150

    
151
	public TaxonNode getTaxonNode(){
152
	   return ((TaxonNodeDetailElement) getDetailElement()).getEntity();
153
	}
154

    
155
	@Override
156
	public void dispose() {
157
		formFactory.removePropertyChangeListener(this);
158
		super.dispose();
159
	}
160

    
161
    @Override
162
    public void handleEvent(Event event) {
163
        TaxonNodeDetailElement detailElement = (TaxonNodeDetailElement) getDetailElement();
164
        if(event.widget == detailElement.getMainControl()
165
                && event.keyCode == SWT.CR && isPageComplete()){
166
            wizardPageListener.close();
167
        }
168
    }
169
}
(12-12/12)