Project

General

Profile

Download (6.82 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.taxon;
11

    
12
import java.util.Arrays;
13

    
14
import org.eclipse.jface.util.PropertyChangeEvent;
15
import org.eclipse.swt.SWT;
16

    
17
import eu.etaxonomy.cdm.model.reference.Reference;
18
import eu.etaxonomy.cdm.model.taxon.Synonym;
19
import eu.etaxonomy.cdm.model.taxon.SynonymType;
20
import eu.etaxonomy.cdm.model.taxon.Taxon;
21
import eu.etaxonomy.cdm.model.taxon.TaxonBase;
22
import eu.etaxonomy.cdm.persistence.hibernate.permission.Role;
23
import eu.etaxonomy.taxeditor.preference.NameDetailsConfigurator;
24
import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
25
import eu.etaxonomy.taxeditor.store.CdmStore;
26
import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
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.TextWithLabelElement;
31
import eu.etaxonomy.taxeditor.ui.section.AbstractIdentifiableEntityDetailElement;
32
import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
33

    
34
/**
35
 * @author n.hoffmann
36
 * @created Feb 26, 2010
37
 * @version 1.0
38
 */
39
public class TaxonBaseDetailElement extends AbstractIdentifiableEntityDetailElement<TaxonBase> {
40

    
41
	private CheckboxElement checkbox_doubtful;
42

    
43
	private CheckboxElement checkbox_useNameCache;
44

    
45
	private EntitySelectionElement<Reference> selection_secundum;
46
	private EntitySelectionElement<Reference> selection_sensu;
47
	private TextWithLabelElement text_secundum_microreference;
48

    
49
	private TextWithLabelElement text_appendedPhrase;
50

    
51
	private CheckboxElement checkbox_published;
52

    
53
    private TermComboElement<SynonymType> combo_relationshipType;
54
    private CheckboxElement checkProParte;
55
    private CheckboxElement checkPartial;
56

    
57
	public TaxonBaseDetailElement(CdmFormFactory cdmFormFactory,
58
			ICdmFormElement formElement, int style) {
59
		super(cdmFormFactory, formElement);
60
	}
61

    
62
	/** {@inheritDoc} */
63
	@Override
64
	protected void createControls(ICdmFormElement formElement, TaxonBase entity, int style) {
65

    
66
	    NameDetailsConfigurator config = PreferencesUtil.getPreferredNameDetailsConfiguration();
67
		toggleable_cache = formFactory.createToggleableTextField(formElement,
68
					"Title Cache", entity.getTitleCache(),
69
					entity.isProtectedTitleCache(), style);
70

    
71

    
72
		text_appendedPhrase = formFactory.createTextWithLabelElement(
73
					formElement, "Appended Phrase", entity.getAppendedPhrase(),
74
					SWT.WRAP);
75

    
76

    
77

    
78
		selection_secundum = formFactory.createSelectionElement(Reference.class,//getConversationHolder(),
79
				 formElement, "Secundum",
80
				entity.getSec(), EntitySelectionElement.ALL,
81
				style);
82
		if (!config.isSecEnabled() && config.isSimpleDetailsViewActivated()){
83
		    selection_secundum.setEnabled(false);
84
		}
85
		if (config.isSecDetailsActivated() || !config.isSimpleDetailsViewActivated()){
86
    		text_secundum_microreference = formFactory.createTextWithLabelElement(
87
                    formElement, "Detail",
88
                   entity.getSecMicroReference(),null,
89
                    SWT.WRAP);
90
		}
91

    
92
		checkbox_useNameCache = formFactory.createCheckbox(formElement,
93
					"Exclude Authorship", entity.isUseNameCache(), style);
94
		checkbox_doubtful = formFactory.createCheckbox(formElement,
95
					entity.getClass().getSimpleName() + " is doubtful", entity.isDoubtful(), style);
96

    
97

    
98

    
99
		checkbox_published = formFactory.createCheckbox(formElement,
100
		        entity.getClass().getSimpleName()+" is published", entity.isPublish(), style);
101

    
102

    
103
		if(entity instanceof Synonym){
104
		    //#6198 removed type as it is currently not handled correctly in the editor
105
//		    combo_relationshipType = formFactory.createDefinedTermComboElement(TermType.SynonymType, formElement, "Synonym Type", ((Synonym) entity).getType(), style);
106
			//#7334 removed pro parte and partial as they are handled as concept relationships now
107
//	        checkProParte = formFactory.createCheckbox(formElement, "Pro Parte Synonym", ((Synonym) entity).isProParte(), style);
108
//	        checkPartial= formFactory.createCheckbox(formElement, "Partial Synonym", ((Synonym) entity).isPartial(), style);
109
		}
110
	}
111

    
112
    private void updateCheckboxPublish() {
113
        if(getEntity() instanceof Taxon){
114
            checkbox_published.setEnabled(
115
            		CdmStore.currentAuthentiationHasOneOfRoles(Role.ROLE_PUBLISH, Role.ROLE_ADMIN)
116
            		);
117
        }
118
    }
119

    
120
	@Override
121
    protected void updateControlStates() {
122
        super.updateControlStates();
123
        updateCheckboxPublish();
124
    }
125

    
126
    /** {@inheritDoc} */
127
	@Override
128
	protected void updateContent() {
129
		super.updateContent();
130
		toggleable_cache.setEnabled(getEntity().isProtectedTitleCache());
131
		setIrrelevant(toggleable_cache.getState(),
132
				Arrays.asList(new Object[] { toggleable_cache, checkbox_published}));
133
	}
134

    
135
	@Override
136
	protected void handleTitleCacheRelevantChange(PropertyChangeEvent event) {
137
		String title = getEntity().generateTitle();
138
		getEntity().setTitleCache(title);
139
		super.handleTitleCacheRelevantChange(event);
140
	}
141

    
142
	/** {@inheritDoc} */
143
	@Override
144
	public void handleEvent(Object eventSource) {
145
		if (eventSource== toggleable_cache) {
146
			handleToggleableCacheField();
147
		} else if (eventSource == checkbox_doubtful) {
148
			getEntity().setDoubtful(checkbox_doubtful.getSelection());
149
		} else if (eventSource == checkbox_useNameCache) {
150
			getEntity().setUseNameCache(checkbox_useNameCache.getSelection());
151
		} else if (eventSource == selection_secundum) {
152
			getEntity().setSec(selection_secundum.getSelection());
153
		} else if (eventSource == text_appendedPhrase) {
154
			getEntity().setAppendedPhrase(text_appendedPhrase.getText());
155
		} else if (eventSource == text_secundum_microreference) {
156
            getEntity().setSecMicroReference(text_secundum_microreference.getText());
157
		} else if (eventSource == checkbox_published) {
158
		    getEntity().setPublish(checkbox_published.getSelection());
159
		} else if(eventSource == combo_relationshipType){
160
            ((Synonym) getEntity()).setType(combo_relationshipType.getSelection());
161
		//#7334/5 removed pro parte and partial as they are handled as concept relationships now
162
//        } else if(eventSource == checkPartial){
163
//            ((Synonym) getEntity()).setPartial(checkPartial.getSelection());
164
//        } else if(eventSource == checkProParte){
165
//            ((Synonym) getEntity()).setProParte(checkProParte.getSelection());
166
        }
167
	}
168
	@Override
169
	protected void handleToggleableCacheField() {
170
        boolean pushedState = toggleable_cache.getState();
171

    
172
        getEntity().setTitleCache(toggleable_cache.getText(), pushedState);
173
        setIrrelevant(pushedState, Arrays.asList(new Object[] { toggleable_cache, checkbox_published}));
174
        updateToggleableCacheField();
175
    }
176
}
(3-3/10)