Project

General

Profile

Download (5.14 KB) Statistics
| Branch: | Tag: | Revision:
1
// $Id$
2
/**
3
 * Copyright (C) 2007 EDIT
4
 * European Distributed Institute of Taxonomy
5
 * http://www.e-taxonomy.eu
6
 *
7
 * The contents of this file are subject to the Mozilla Public License Version 1.1
8
 * See LICENSE.TXT at the top of this package for the full license terms.
9
 */
10

    
11
package eu.etaxonomy.taxeditor.ui.section.classification;
12

    
13
import org.eclipse.jface.util.PropertyChangeEvent;
14
import org.eclipse.swt.SWT;
15
import org.eclipse.swt.widgets.Event;
16
import org.eclipse.swt.widgets.Listener;
17

    
18
import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
19
import eu.etaxonomy.cdm.model.name.NonViralName;
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.taxeditor.newWizard.IWizardPageListener;
24
import eu.etaxonomy.taxeditor.parser.ParseHandler;
25
import eu.etaxonomy.taxeditor.ui.element.AbstractCdmEntityWizardPage;
26
import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
27
import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
28

    
29
/**
30
 * <p>
31
 * TaxonNodeWizardPage class.
32
 * </p>
33
 *
34
 * @author n.hoffmann
35
 * @created Sep 15, 2009
36
 * @version 1.0
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
	/*
68
	 * (non-Javadoc)
69
	 *
70
	 * @see
71
	 * eu.etaxonomy.taxeditor.forms.AbstractCdmEntityWizardPage#createElement
72
	 * (eu.etaxonomy.taxeditor.forms.ICdmFormElement)
73
	 */
74
	/** {@inheritDoc} */
75
	@Override
76
	public TaxonNodeDetailElement createElement(ICdmFormElement rootElement) {
77
	    TaxonNodeDetailElement detailElement = formFactory.createTaxonNodeDetailElement(rootElement, this.isCreateNew);
78
		detailElement.setEntity(entity);
79
		formFactory.addPropertyChangeListener(this);
80
		if (isCreateNew){
81
		    detailElement.getMainControl().addListener(SWT.KeyDown, this);
82
		}
83
		return detailElement;
84
	}
85

    
86
	/**
87
	 * <p>
88
	 * openInEditor
89
	 * </p>
90
	 *
91
	 * @return a boolean.
92
	 */
93
	public boolean openInEditor() {
94
		return ((TaxonNodeDetailElement) getDetailElement()).isOpenInEditor();
95
	}
96

    
97
	/*
98
	 * (non-Javadoc)
99
	 *
100
	 * @see
101
	 * org.eclipse.jface.util.IPropertyChangeListener#propertyChange(org.eclipse
102
	 * .jface.util.PropertyChangeEvent)
103
	 */
104
	/** {@inheritDoc} */
105
	@Override
106
	public void propertyChange(PropertyChangeEvent event) {
107
		checkComplete();
108
	}
109

    
110
	@Override
111
	protected void checkComplete() {
112
		TaxonNodeDetailElement detailElement = (TaxonNodeDetailElement) getDetailElement();
113

    
114
		if (detailElement.getClassification() == null) {
115
			setMessage("No classification set.", WARNING);
116
		}
117
		else if(isCreateNew ){
118
		    if(detailElement.getTaxonName().isEmpty()){
119
		        setMessage("No taxon name set.", ERROR);
120
		    } else{
121
		        setMessage(null);
122
	            setPageComplete(true);
123
	            return;
124
		    }
125
		}
126
		else if(!detailElement.isComplete()){
127
		    setMessage("Not all required fields are filled.", ERROR);
128
		}
129
		else {
130
			setMessage(null);
131
			setPageComplete(true);
132
			return;
133
		}
134

    
135
		setPageComplete(false);
136
	}
137

    
138
	/**
139
	 * <p>
140
	 * Getter for the field <code>parentTreeNode</code>.
141
	 * </p>
142
	 *
143
	 * @return a {@link eu.etaxonomy.cdm.model.taxon.ITaxonTreeNode} object.
144
	 */
145
	public ITaxonTreeNode getParentTreeNode() {
146
		return ((TaxonNodeDetailElement) getDetailElement())
147
				.getParentTreeNode();
148
	}
149

    
150
	public Taxon createTaxon() {
151
		if (((TaxonNodeDetailElement) getDetailElement()).getTaxon() == null){
152
			String taxonName = ((TaxonNodeDetailElement) getDetailElement()).getTaxonName();
153
			Reference reference = ((TaxonNodeDetailElement) getDetailElement()).getReference();
154
			NonViralName parseReferencedName = ParseHandler.parseReferencedName(taxonName, null);
155
			return Taxon.NewInstance(parseReferencedName, reference);
156
		} else{
157
			return ((TaxonNodeDetailElement) getDetailElement()).getTaxon();
158
		}
159
	}
160

    
161
	/*
162
	 * (non-Javadoc)
163
	 *
164
	 * @see eu.etaxonomy.taxeditor.forms.AbstractCdmEntityWizardPage#dispose()
165
	 */
166
	/** {@inheritDoc} */
167
	@Override
168
	public void dispose() {
169
		formFactory.removePropertyChangeListener(this);
170
		super.dispose();
171
	}
172

    
173
    @Override
174
    public void handleEvent(Event event) {
175
        TaxonNodeDetailElement detailElement = (TaxonNodeDetailElement) getDetailElement();
176
        if(event.widget == detailElement.getMainControl()
177
                && event.keyCode == SWT.CR && isPageComplete()){
178
            wizardPageListener.close();
179
        }
180
    }
181

    
182
}
(12-12/12)