Project

General

Profile

Download (5.56 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.metadata.PreferencePredicate;
20
import eu.etaxonomy.cdm.model.name.INonViralName;
21
import eu.etaxonomy.cdm.model.reference.Reference;
22
import eu.etaxonomy.cdm.model.taxon.ITaxonTreeNode;
23
import eu.etaxonomy.cdm.model.taxon.Taxon;
24
import eu.etaxonomy.cdm.model.taxon.TaxonNode;
25
import eu.etaxonomy.taxeditor.l10n.Messages;
26
import eu.etaxonomy.taxeditor.newWizard.IWizardPageListener;
27
import eu.etaxonomy.taxeditor.parser.ParseHandler;
28
import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
29
import eu.etaxonomy.taxeditor.ui.element.AbstractCdmEntityWizardPage;
30
import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
31
import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
32

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

    
43
    private final IWizardPageListener wizardPageListener;
44
    private final boolean isCreateNew;
45

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

    
68
	}
69

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

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

    
93
	/** {@inheritDoc} */
94
	@Override
95
	public void propertyChange(PropertyChangeEvent event) {
96
		checkComplete();
97
	}
98

    
99
	@Override
100
	protected void checkComplete() {
101
		TaxonNodeDetailElement detailElement = (TaxonNodeDetailElement) getDetailElement();
102

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

    
124
		setPageComplete(false);
125
	}
126

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

    
139
	public Taxon createTaxon() {
140
		if (((TaxonNodeDetailElement) getDetailElement()).getTaxon() == null){
141
			String taxonName = ((TaxonNodeDetailElement) getDetailElement()).getTaxonName();
142
			Reference reference = ((TaxonNodeDetailElement) getDetailElement()).getReference();
143
			INonViralName parseReferencedName = ParseHandler.parseReferencedName(taxonName, null);
144
			Taxon taxon = Taxon.NewInstance(parseReferencedName, reference);
145
			if (PreferencesUtil.getPreferenceFromDB(PreferencePredicate.DefaultBehaviourForPublishFlag).getValue().equals(Messages.PublishFlagPreference_set)){
146
			    taxon.setPublish(true);
147
			} else if (PreferencesUtil.getPreferenceFromDB(PreferencePredicate.DefaultBehaviourForPublishFlag).getValue().equals(Messages.PublishFlagPreference_do_not_set)){
148
			    taxon.setPublish(false);
149
			}else{
150
			    taxon.setPublish(((TaxonNode)this.getParentTreeNode()).getTaxon().isPublish());
151
			}
152
			return taxon;
153
		} else{
154
			return ((TaxonNodeDetailElement) getDetailElement()).getTaxon();
155
		}
156
	}
157

    
158
	public TaxonNode getTaxonNode(){
159
	   return (TaxonNode) ((TaxonNodeDetailElement) getDetailElement()).getEntity();
160
	}
161

    
162
	/** {@inheritDoc} */
163
	@Override
164
	public void dispose() {
165
		formFactory.removePropertyChangeListener(this);
166
		super.dispose();
167
	}
168

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

    
178
}
(12-12/12)