Project

General

Profile

Download (7.12 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.taxon;
12

    
13
import java.util.Arrays;
14

    
15
import org.eclipse.jface.util.PropertyChangeEvent;
16
import org.eclipse.swt.SWT;
17
import org.eclipse.ui.forms.widgets.ExpandableComposite;
18

    
19
import eu.etaxonomy.cdm.model.reference.Reference;
20
import eu.etaxonomy.cdm.model.taxon.Synonym;
21
import eu.etaxonomy.cdm.model.taxon.Taxon;
22
import eu.etaxonomy.cdm.model.taxon.TaxonBase;
23
import eu.etaxonomy.cdm.persistence.hibernate.permission.Role;
24
import eu.etaxonomy.taxeditor.preference.IPreferenceKeys;
25
import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
26
import eu.etaxonomy.taxeditor.store.CdmStore;
27
import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
28
import eu.etaxonomy.taxeditor.ui.element.CheckboxElement;
29
import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
30
import eu.etaxonomy.taxeditor.ui.element.LayoutConstants;
31
import eu.etaxonomy.taxeditor.ui.element.TextWithLabelElement;
32
import eu.etaxonomy.taxeditor.ui.section.AbstractIdentifiableEntityDetailElement;
33
import eu.etaxonomy.taxeditor.ui.section.name.SynonymRelationshipDetailSection;
34
import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
35

    
36
/**
37
 * <p>
38
 * TaxonBaseDetailElement class.
39
 * </p>
40
 *
41
 * @author n.hoffmann
42
 * @created Feb 26, 2010
43
 * @version 1.0
44
 */
45
public class TaxonBaseDetailElement extends AbstractIdentifiableEntityDetailElement<TaxonBase> {
46

    
47
	private CheckboxElement checkbox_doubtful;
48

    
49
	private CheckboxElement checkbox_useNameCache;
50

    
51
	private EntitySelectionElement<Reference> selection_secundum;
52

    
53
	private TextWithLabelElement text_secundum_microreference;
54

    
55
	private TextWithLabelElement text_appendedPhrase;
56

    
57
	private CheckboxElement checkbox_excluded;
58

    
59
	private CheckboxElement checkbox_unplaced;
60

    
61
	private CheckboxElement checkbox_published;
62

    
63
	private SynonymRelationshipDetailSection sectionSynonymRelationship;
64

    
65
	/**
66
	 * <p>
67
	 * Constructor for TaxonBaseDetailElement.
68
	 * </p>
69
	 *
70
	 * @param cdmFormFactory
71
	 *        a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory} object.
72
	 * @param formElement
73
	 *        a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement} object.
74
	 * @param style
75
	 *            a int.
76
	 */
77
	public TaxonBaseDetailElement(CdmFormFactory cdmFormFactory,
78
			ICdmFormElement formElement, int style) {
79
		super(cdmFormFactory, formElement);
80
	}
81

    
82
	/** {@inheritDoc} */
83
	@Override
84
	protected void createControls(ICdmFormElement formElement, TaxonBase entity, int style) {
85
			toggleable_cache = formFactory.createToggleableTextField(formElement,
86
					"Title Cache", entity.getTitleCache(),
87
					entity.isProtectedTitleCache(), style);
88

    
89
		//TODO RL
90
		boolean rl=true;
91
		if(PreferencesUtil.getPreferenceStore().getBoolean(IPreferenceKeys.IS_RL)){
92
			toggleable_cache.setVisible(false);
93
		}
94
		if (!PreferencesUtil.getPreferenceStore().getBoolean(IPreferenceKeys.IS_RL)){
95
			text_appendedPhrase = formFactory.createTextWithLabelElement(
96
					formElement, "Appended Phrase", entity.getAppendedPhrase(),
97
					SWT.NULL);
98
		}
99

    
100
		selection_secundum = formFactory.createSelectionElement(Reference.class,
101
				getConversationHolder(), formElement, "Secundum",
102
				entity.getSec(), EntitySelectionElement.ALL,
103
				style);
104

    
105
		text_secundum_microreference = formFactory.createTextWithLabelElement(
106
                formElement, "Micro Reference",
107
               entity.getSecMicroReference(),null,
108
                SWT.NULL);
109

    
110
		// TODO RL
111
		if (!PreferencesUtil.getPreferenceStore().getBoolean(IPreferenceKeys.IS_RL)) {
112
			checkbox_useNameCache = formFactory.createCheckbox(formElement,
113
					"Exclude Authorship", entity.isUseNameCache(), style);
114

    
115
			if (entity instanceof Taxon) {
116
				checkbox_excluded = formFactory.createCheckbox(formElement,
117
						"Taxon is excluded", ((Taxon) entity).isExcluded(), style);
118
				checkbox_unplaced = formFactory.createCheckbox(formElement,
119
						"Taxon is unplaced", ((Taxon) entity).isUnplaced(), style);
120
			}
121

    
122
			checkbox_doubtful = formFactory.createCheckbox(formElement,
123
					entity.getClass().getSimpleName() + " is doubtful", entity.isDoubtful(), style);
124
		}
125

    
126
		if (entity instanceof Taxon) {
127
			checkbox_published = formFactory.createCheckbox(formElement,
128
					"Taxon is published", ((Taxon) entity).isPublish(), style);
129
		}
130

    
131

    
132
		if(entity instanceof Synonym){
133
		    sectionSynonymRelationship = formFactory.createSynonymRelationshipDetailSection(getConversationHolder(), formElement, ExpandableComposite.TWISTIE);
134
		    sectionSynonymRelationship.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
135
		    sectionSynonymRelationship.setEntity((Synonym) entity);
136
		}
137
	}
138

    
139
    private void updateCheckboxPublish() {
140
        if(getEntity() instanceof Taxon){
141
            checkbox_published.setEnabled(
142
            		CdmStore.currentAuthentiationHasOneOfRoles(Role.ROLE_PUBLISH, Role.ROLE_ADMIN)
143
            		);
144
        }
145
    }
146

    
147
	@Override
148
    protected void updateControlStates() {
149
        super.updateControlStates();
150
        updateCheckboxPublish();
151
    }
152

    
153
    /** {@inheritDoc} */
154
	@Override
155
	protected void updateContent() {
156
		super.updateContent();
157
		toggleable_cache.setEnabled(getEntity().isProtectedTitleCache());
158
		setIrrelevant(toggleable_cache.getState(),
159
				Arrays.asList(new Object[] { toggleable_cache }));
160
	}
161

    
162
	@Override
163
	protected void handleTitleCacheRelevantChange(PropertyChangeEvent event) {
164
		String title = getEntity().generateTitle();
165
		getEntity().setTitleCache(title);
166
		super.handleTitleCacheRelevantChange(event);
167
	}
168

    
169
	/** {@inheritDoc} */
170
	@Override
171
	public void handleEvent(Object eventSource) {
172
		if (eventSource== toggleable_cache) {
173
			handleToggleableCacheField();
174
		} else if (eventSource == checkbox_doubtful) {
175
			getEntity().setDoubtful(checkbox_doubtful.getSelection());
176
		} else if (eventSource == checkbox_useNameCache) {
177
			getEntity().setUseNameCache(checkbox_useNameCache.getSelection());
178
		} else if (eventSource == selection_secundum) {
179
			getEntity().setSec(selection_secundum.getSelection());
180
		} else if (eventSource == text_appendedPhrase) {
181
			getEntity().setAppendedPhrase(text_appendedPhrase.getText());
182
		}else if (eventSource == text_secundum_microreference) {
183
            getEntity().setSecMicroReference(text_secundum_microreference.getText());
184
        }else if (eventSource == checkbox_excluded) {
185
			((Taxon) getEntity()).setExcluded(checkbox_excluded.getSelection());
186
		} else if (eventSource == checkbox_unplaced) {
187
		    ((Taxon) getEntity()).setUnplaced(checkbox_unplaced.getSelection());
188
		} else if (eventSource == checkbox_published) {
189
		    ((Taxon)getEntity()).setPublish(checkbox_published.getSelection());
190
		}
191
	}
192
	@Override
193
	protected void handleToggleableCacheField() {
194
        boolean pushedState = toggleable_cache.getState();
195

    
196
        getEntity().setTitleCache(toggleable_cache.getText(), pushedState);
197
        setIrrelevant(pushedState, Arrays.asList(new Object[] { toggleable_cache, text_secundum_microreference,text_appendedPhrase, checkbox_published, checkbox_unplaced, checkbox_excluded}));
198
        updateToggleableCacheField();
199
    }
200
}
(3-3/8)