Project

General

Profile

Download (4.75 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.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
 */
37
public class TaxonNodeWizardPage extends AbstractCdmEntityWizardPage<ITaxonTreeNode> implements Listener{
38

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

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

    
64
	}
65

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

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

    
89
	/** {@inheritDoc} */
90
	@Override
91
	public void propertyChange(PropertyChangeEvent event) {
92
		checkComplete();
93
	}
94

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

    
99
		if (detailElement.getClassification() == null) {
100
			setMessage("No classification set.", WARNING);
101
		}
102
		else if(isCreateNew ){
103
		    if(CdmUtils.isBlank(detailElement.getTaxonName())){
104
		        setMessage("No taxon name set.", ERROR);
105
		    } else{
106
		        setMessage(null);
107
	            setPageComplete(true);
108
	            return;
109
		    }
110
		}
111
		else if(!detailElement.isComplete()){
112
		    setMessage("Not all required fields are filled.", ERROR);
113
		}
114
		else {
115
			setMessage(null);
116
			setPageComplete(true);
117
			return;
118
		}
119

    
120
		setPageComplete(false);
121
	}
122

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

    
135
	public Taxon createTaxon() {
136
		if (((TaxonNodeDetailElement) getDetailElement()).getTaxon() == null){
137
			String taxonName = ((TaxonNodeDetailElement) getDetailElement()).getTaxonName();
138
			Reference reference = ((TaxonNodeDetailElement) getDetailElement()).getReference();
139
			INonViralName parseReferencedName = ParseHandler.parseReferencedName(taxonName, null);
140
			return Taxon.NewInstance(parseReferencedName, reference);
141
		} else{
142
			return ((TaxonNodeDetailElement) getDetailElement()).getTaxon();
143
		}
144
	}
145

    
146
	/** {@inheritDoc} */
147
	@Override
148
	public void dispose() {
149
		formFactory.removePropertyChangeListener(this);
150
		super.dispose();
151
	}
152

    
153
    @Override
154
    public void handleEvent(Event event) {
155
        TaxonNodeDetailElement detailElement = (TaxonNodeDetailElement) getDetailElement();
156
        if(event.widget == detailElement.getMainControl()
157
                && event.keyCode == SWT.CR && isPageComplete()){
158
            wizardPageListener.close();
159
        }
160
    }
161

    
162
}
(12-12/12)