Project

General

Profile

Download (4 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.name;
12

    
13
import java.util.Collection;
14

    
15
import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
16
import eu.etaxonomy.cdm.api.service.INameService;
17
import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
18
import eu.etaxonomy.cdm.model.name.NameTypeDesignation;
19
import eu.etaxonomy.cdm.model.name.NonViralName;
20
import eu.etaxonomy.cdm.model.name.Rank;
21
import eu.etaxonomy.cdm.model.name.SpecimenTypeDesignation;
22
import eu.etaxonomy.cdm.model.name.TaxonNameBase;
23
import eu.etaxonomy.cdm.model.name.TypeDesignationBase;
24
import eu.etaxonomy.cdm.model.taxon.TaxonBase;
25
import eu.etaxonomy.taxeditor.preference.IPreferenceKeys;
26
import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
27
import eu.etaxonomy.taxeditor.store.CdmStore;
28
import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
29
import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
30
import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionSection;
31
import eu.etaxonomy.taxeditor.ui.section.ITaxonBaseDetailSection;
32

    
33
/**
34
 * <p>TypeDesignationSection class.</p>
35
 *
36
 * @author n.hoffmann
37
 * @created May 17, 2010
38
 * @version 1.0
39
 */
40
public class TypeDesignationSection extends AbstractEntityCollectionSection<TaxonNameBase, TypeDesignationBase> implements ITaxonBaseDetailSection {
41

    
42
	private TaxonBase taxonBase;
43

    
44
	/**
45
	 * <p>Constructor for TypeDesignationSection.</p>
46
	 *
47
	 * @param formFactory a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory} object.
48
	 * @param conversation a {@link eu.etaxonomy.cdm.api.conversation.ConversationHolder} object.
49
	 * @param parentElement a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement} object.
50
	 * @param style a int.
51
	 */
52
	public TypeDesignationSection(CdmFormFactory formFactory, ConversationHolder conversation,
53
			ICdmFormElement parentElement, int style) {
54
		super(formFactory, conversation, parentElement, "Type Designations", style);
55
	}
56
	
57
	/** {@inheritDoc} */
58
	@Override
59
	public void addElement(TypeDesignationBase element) {
60
		getEntity().addTypeDesignation(element, PreferencesUtil.getPreferenceStore().getBoolean(IPreferenceKeys.ADD_TYPES_TO_ALL_NAMES));
61
	}
62

    
63
	/** {@inheritDoc} */
64
	@Override
65
	public TypeDesignationBase createNewElement() {
66
		if(isSpecimenType()){
67
			return SpecimenTypeDesignation.NewInstance();
68
		}else{
69
			return NameTypeDesignation.NewInstance();
70
		}
71
	}
72

    
73
	/** {@inheritDoc} */
74
	@Override
75
	public Collection<TypeDesignationBase> getCollection(TaxonNameBase entity) {
76
		return entity.getTypeDesignations();
77
	}
78

    
79
	/** {@inheritDoc} */
80
	@Override
81
	public String getEmptyString() {
82
		return "No type designations yet.";
83
	}
84

    
85
	/** {@inheritDoc} */
86
	@Override
87
	protected String getTooltipString() {
88
		return "Add a type designation";
89
	}
90

    
91
	/** {@inheritDoc} */
92
	@Override
93
	public void removeElement(TypeDesignationBase element) {
94
		boolean removeTypeDesignationFromAllTypifiedNames = PreferencesUtil.getPreferenceStore().getBoolean(IPreferenceKeys.ADD_TYPES_TO_ALL_NAMES);
95
		TaxonNameBase entity = removeTypeDesignationFromAllTypifiedNames ? null : getEntity();
96
		CdmStore.getService(INameService.class).deleteTypeDesignation(entity, element);
97
	}
98

    
99
	/*
100
	 * (non-Javadoc)
101
	 * @see eu.etaxonomy.taxeditor.section.ITaxonDetailSection#setTaxon(eu.etaxonomy.cdm.model.taxon.TaxonBase)
102
	 */
103
	/** {@inheritDoc} */
104
	public void setTaxonBase(TaxonBase entity) {
105
		this.taxonBase = entity;
106
		NonViralName name = (NonViralName) HibernateProxyHelper.deproxy(entity.getName());
107
		setEntity(name);
108
	}
109
	
110
	private boolean isSpecimenType(){
111
		Rank rank = getEntity().getRank();
112
		return rank.isSpecies() || rank.isInfraSpecific();
113
	}
114

    
115
	/* (non-Javadoc)
116
	 * @see eu.etaxonomy.taxeditor.section.ITaxonDetailSection#getTaxon(eu.etaxonomy.cdm.model.taxon.TaxonBase)
117
	 */
118
	@Override
119
	public TaxonBase getTaxonBase() {
120
		return taxonBase;
121
	}
122
}
(21-21/21)