Project

General

Profile

Download (5.02 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 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.common.CdmUtils;
19
import eu.etaxonomy.cdm.model.name.INonViralName;
20
import eu.etaxonomy.cdm.model.reference.Reference;
21
import eu.etaxonomy.cdm.model.taxon.ITaxonTreeNode;
22
import eu.etaxonomy.cdm.model.taxon.Taxon;
23
import eu.etaxonomy.cdm.model.taxon.TaxonNode;
24
import eu.etaxonomy.taxeditor.newWizard.IWizardPageListener;
25
import eu.etaxonomy.taxeditor.parser.ParseHandler;
26
import eu.etaxonomy.taxeditor.ui.element.AbstractCdmEntityWizardPage;
27
import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
28
import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
29

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

    
40
    private final IWizardPageListener wizardPageListener;
41
    private final boolean isCreateNew;
42

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

    
65
	}
66

    
67
	/** {@inheritDoc} */
68
	@Override
69
	public TaxonNodeDetailElement createElement(ICdmFormElement rootElement) {
70
	    TaxonNodeDetailElement detailElement = formFactory.createTaxonNodeDetailElement(rootElement, this.isCreateNew);
71
		detailElement.setEntity(entity);
72
		formFactory.addPropertyChangeListener(this);
73
		if (isCreateNew){
74
		    detailElement.getMainControl().addListener(SWT.KeyDown, this);
75
		}
76
		return detailElement;
77
	}
78

    
79
	/**
80
	 * <p>
81
	 * openInEditor
82
	 * </p>
83
	 *
84
	 * @return a boolean.
85
	 */
86
	public boolean openInEditor() {
87
		return ((TaxonNodeDetailElement) getDetailElement()).isOpenInEditor();
88
	}
89

    
90
	/** {@inheritDoc} */
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("No classification set.", WARNING);
102
		}
103
		else if(isCreateNew ){
104
		    if(CdmUtils.isBlank(detailElement.getTaxonName())){
105
		        setMessage("No taxon name set.", ERROR);
106
		    } else{
107
		        setMessage(null);
108
	            setPageComplete(true);
109
	            return;
110
		    }
111
		}
112
		else if(!detailElement.isComplete()){
113
		    setMessage("Not all required fields are filled.", ERROR);
114
		}
115
		else {
116
			setMessage(null);
117
			setPageComplete(true);
118
			return;
119
		}
120

    
121
		setPageComplete(false);
122
	}
123

    
124
	/**
125
	 * <p>
126
	 * Getter for the field <code>parentTreeNode</code>.
127
	 * </p>
128
	 *
129
	 * @return a {@link eu.etaxonomy.cdm.model.taxon.ITaxonTreeNode} object.
130
	 */
131
	public ITaxonTreeNode getParentTreeNode() {
132
		return ((TaxonNodeDetailElement) getDetailElement())
133
				.getParentTreeNode();
134
	}
135

    
136
	public Taxon createTaxon() {
137
		if (((TaxonNodeDetailElement) getDetailElement()).getTaxon() == null){
138
			String taxonName = ((TaxonNodeDetailElement) getDetailElement()).getTaxonName();
139
			Reference reference = ((TaxonNodeDetailElement) getDetailElement()).getReference();
140
			INonViralName parseReferencedName = ParseHandler.parseReferencedName(taxonName, null);
141

    
142
			Taxon taxon = Taxon.NewInstance(parseReferencedName, reference);
143
			taxon.setPublish( ((TaxonNodeDetailElement) getDetailElement()).is_publish());
144

    
145
			return taxon;
146
		} else{
147
			return ((TaxonNodeDetailElement) getDetailElement()).getTaxon();
148
		}
149
	}
150

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

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

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

    
171

    
172

    
173
}
(12-12/12)