Project

General

Profile

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

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

    
44
    private final IWizardPageListener wizardPageListener;
45
    private final boolean isCreateNew;
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, ITaxonTreeNode entity, IWizardPageListener closeOnEnterListener, boolean isCreateNew) {
64
		super(formFactory, conversation, entity);
65
		this.wizardPageListener = closeOnEnterListener;
66
		setTitle("Edit taxon node");
67
		this.isCreateNew = isCreateNew;
68

    
69
	}
70

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

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

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

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

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

    
125
		setPageComplete(false);
126
	}
127

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

    
140
	public Taxon createTaxon() {
141
		if (((TaxonNodeDetailElement) getDetailElement()).getTaxon() == null){
142
			String taxonName = ((TaxonNodeDetailElement) getDetailElement()).getTaxonName();
143
			Reference reference = ((TaxonNodeDetailElement) getDetailElement()).getReference();
144
			INonViralName parseReferencedName = ParseHandler.parseReferencedName(taxonName, null);
145
			Taxon taxon = Taxon.NewInstance(parseReferencedName, reference);
146
			CdmPreference defaultPublish = PreferencesUtil.getPreferenceFromDB(PreferencePredicate.DefaultBehaviourForPublishFlag);
147

    
148
			if (defaultPublish != null && defaultPublish.getValue().equals(Messages.PublishFlagPreference_set)){
149
			    taxon.setPublish(true);
150
			} else if (defaultPublish != null && defaultPublish.equals(Messages.PublishFlagPreference_do_not_set)){
151
			    taxon.setPublish(false);
152
			}else{
153
			    if((this.getParentTreeNode()).isInstanceOf(TaxonNode.class)){
154
			        taxon.setPublish(((TaxonNode)this.getParentTreeNode()).getTaxon().isPublish());
155
			    }else{
156
			        taxon.setPublish(true);
157
			    }
158
			}
159
			return taxon;
160
		} else{
161
			return ((TaxonNodeDetailElement) getDetailElement()).getTaxon();
162
		}
163
	}
164

    
165
	public TaxonNode getTaxonNode(){
166
	   return (TaxonNode) ((TaxonNodeDetailElement) getDetailElement()).getEntity();
167
	}
168

    
169
	/** {@inheritDoc} */
170
	@Override
171
	public void dispose() {
172
		formFactory.removePropertyChangeListener(this);
173
		super.dispose();
174
	}
175

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

    
185
}
(12-12/12)