2 * Copyright (C) 2007 EDIT
3 * European Distributed Institute of Taxonomy
4 * http://www.e-taxonomy.eu
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.
10 package eu
.etaxonomy
.taxeditor
.editor
.name
;
14 import org
.eclipse
.swt
.graphics
.Font
;
16 import eu
.etaxonomy
.cdm
.model
.name
.HomotypicalGroup
;
17 import eu
.etaxonomy
.cdm
.model
.name
.NomenclaturalStatus
;
18 import eu
.etaxonomy
.cdm
.model
.name
.NomenclaturalStatusType
;
19 import eu
.etaxonomy
.cdm
.model
.name
.TaxonNameBase
;
20 import eu
.etaxonomy
.cdm
.model
.taxon
.Synonym
;
21 import eu
.etaxonomy
.taxeditor
.editor
.EditorUtil
;
22 import eu
.etaxonomy
.taxeditor
.preference
.Resources
;
25 * <p>SynonymContainer class.</p>
31 public class SynonymContainer
extends AbstractGroupedContainer
<Synonym
> {
34 * <p>Constructor for SynonymContainer.</p>
36 * @param editor a {@link eu.etaxonomy.taxeditor.editor.name.TaxonNameEditor} object.
37 * @param group a {@link eu.etaxonomy.taxeditor.editor.name.AbstractGroup} object.
38 * @param synonym a {@link eu.etaxonomy.cdm.model.taxon.Synonym} object.
40 public SynonymContainer(TaxonNameEditor editor
, AbstractGroup group
, Synonym synonym
) {
41 super(editor
, group
, synonym
);
45 * @see eu.etaxonomy.taxeditor.editor.name.NameComposite#initializeComposite()
49 protected void initializeComposite() {
51 setFont(getViewerFont());
53 if(getName() == null){
54 EditorUtil
.warn(getClass(), "Synonym with a null name detected. This should never happen.");
60 protected void updateIcon(){
61 TaxonNameBase name
= getName();
64 if (name
.isGroupsBasionym()) {
65 setIcon(HOMOTYPIC_SYNONYM_ORIGINAL_COMBINATION_ICON
);
67 setIcon(HOMOTYPIC_SYNONYM_ICON
);
73 if(! name
.getStatus().isEmpty()){
75 Set
<NomenclaturalStatus
> allStatus
= name
.getStatus();
77 for (NomenclaturalStatus status
: allStatus
){
78 if(status
.getType() != null && (status
.getType().equals(NomenclaturalStatusType
.INVALID()) || status
.getType().equals(NomenclaturalStatusType
.NUDUM()))){
79 setIcon(INVALID_OR_NUDUM_NAME_ICON
);
85 if (name
.getHomotypicalGroup().getBasionyms().isEmpty()) {
86 setIcon(HETEROTYPIC_SYNONYM_ICON
);
88 if (name
.isGroupsBasionym()) {
89 setIcon(HETEROTYPIC_SYNONYM_ORIGINAL_COMBINATION_ICON
);
91 setIcon(HOMOTYPIC_SYNONYM_IN_HETEROTYPIC_GROUP_ICON
);
98 private boolean isHomotypic() {
99 HomotypicalGroup group
= getSynonym().getHomotypicGroup();
100 return group
.equals(editor
.getTaxon().getHomotypicGroup());
106 * @return a {@link eu.etaxonomy.cdm.model.taxon.Synonym} object.
108 public Synonym
getSynonym() {
109 return getTaxonBase();
114 * <p>getViewerFont</p>
116 * @return a {@link org.eclipse.swt.graphics.Font} object.
118 protected Font
getViewerFont() {
119 return EditorUtil
.getFont(Resources
.SYNONYM_FONT
);
124 protected void updateNonEditableInfo() {
129 * @see eu.etaxonomy.taxeditor.editor.name.AbstractGroupedContainer#updateIndent()
132 protected void updateIndent() {
133 TaxonNameBase name
= getName();
135 if (!isHomotypic() && !name
.getHomotypicalGroup().getBasionyms().isEmpty() && !name
.isGroupsBasionym()) {
136 setIndent(HOMOTYPIC_SYNONYM_IN_HETEROTYPIC_GROUP_INDENT
);
140 setIndent(SYNONYM_INDENT
);