Project

General

Profile

Download (5.98 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.parser.ParseHandler;
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
    private ParseHandler parseHandler;
45

    
46

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

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

    
74

    
75
	}
76

    
77
	@Override
78
	public TaxonNodeDetailElement createElement(ICdmFormElement rootElement) {
79
	    TaxonNodeDetailElement detailElement = formFactory.createTaxonNodeDetailElement(rootElement, this.isCreateNew);
80
		if (isCreateNew){
81
		    detailElement.setParentTreeNode(((NewTaxonNodeWizard)getWizard()).getParentEntity());
82
		}else{
83
		    detailElement.setEntity(entity);
84
		}
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

    
146

    
147
	    CreateTaxonDTO createDto = new CreateTaxonDTO(nameUuid, secUuid,null,false, null,isPublish, taxonNameString);
148
//	    Taxon taxon;
149
//	    String taxonName = ((TaxonNodeDetailElement) getDetailElement()).getTaxonName();
150
//	    Reference reference = ((TaxonNodeDetailElement) getDetailElement()).getReference();
151
//	    if (parseHandler == null){
152
//            parseHandler = ParseHandler.NewInstance(null);
153
//        }
154
//        final INonViralName parseReferencedName = parseHandler.parseAndResolveDuplicates(taxonName);
155
//		if (((TaxonNodeDetailElement) getDetailElement()).getTaxon() == null){
156
//		    taxon = Taxon.NewInstance(parseReferencedName, reference);
157
//
158
//		} else{
159
//		    taxon = ((TaxonNodeDetailElement) getDetailElement()).getTaxon();
160
//		    if (taxon.getName().getId() == 0){
161
//		        taxon.setName((TaxonName) parseReferencedName);
162
//		    }
163
//		    taxon.setSec(reference);
164
//
165
//		}
166
//		taxon.setPublish( ((TaxonNodeDetailElement) getDetailElement()).is_publish());
167

    
168
        return createDto;
169
	}
170

    
171
	public TaxonNode getTaxonNode(){
172
	   return ((TaxonNodeDetailElement) getDetailElement()).getEntity();
173
	}
174

    
175
	@Override
176
	public void dispose() {
177
		formFactory.removePropertyChangeListener(this);
178
		super.dispose();
179
	}
180

    
181
    @Override
182
    public void handleEvent(Event event) {
183
        TaxonNodeDetailElement detailElement = (TaxonNodeDetailElement) getDetailElement();
184
        if(event.widget == detailElement.getMainControl()
185
                && event.keyCode == SWT.CR && isPageComplete()){
186
            wizardPageListener.close();
187
        }
188
    }
189
}
(12-12/12)