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
.e4
.container
;
12 import java
.util
.ArrayList
;
13 import java
.util
.List
;
15 import org
.eclipse
.swt
.graphics
.Font
;
17 import eu
.etaxonomy
.cdm
.format
.taxon
.TaxonRelationshipFormatter
;
18 import eu
.etaxonomy
.cdm
.model
.common
.Language
;
19 import eu
.etaxonomy
.cdm
.model
.taxon
.Taxon
;
20 import eu
.etaxonomy
.cdm
.model
.taxon
.TaxonRelationship
;
21 import eu
.etaxonomy
.cdm
.strategy
.cache
.TaggedCacheHelper
;
22 import eu
.etaxonomy
.cdm
.strategy
.cache
.TaggedText
;
23 import eu
.etaxonomy
.taxeditor
.editor
.l10n
.Messages
;
24 import eu
.etaxonomy
.taxeditor
.editor
.name
.container
.EditorAnnotation
;
25 import eu
.etaxonomy
.taxeditor
.editor
.name
.e4
.TaxonNameEditorE4
;
26 import eu
.etaxonomy
.taxeditor
.editor
.name
.e4
.container
.MisappliedGroupE4
.ConceptType
;
27 import eu
.etaxonomy
.taxeditor
.model
.AbstractUtility
;
28 import eu
.etaxonomy
.taxeditor
.model
.NameHelper
;
29 import eu
.etaxonomy
.taxeditor
.preference
.Resources
;
30 import eu
.etaxonomy
.taxeditor
.store
.CdmStore
;
36 public class ConceptContainerE4
extends AbstractGroupedContainerE4
<Taxon
> {
37 TaxonRelationship relationship
;
38 TaxonRelationshipFormatter misappliedFormatter
;
39 ConceptType conceptType
;
41 public ConceptContainerE4(AbstractGroupE4 group
, Taxon misappliedName
, ConceptType conceptType
) {
42 super(group
, misappliedName
);
43 this.conceptType
= conceptType
;
44 misappliedFormatter
= new TaxonRelationshipFormatter();
48 protected void initializeComposite() {
50 setFont(getViewerFont());
51 TaxonNameEditorE4 editor
= getEditor();
52 Taxon taxon
= editor
.getTaxon();
53 for (TaxonRelationship rel
: taxon
.getTaxonRelations(getMisappliedName())){
54 if (rel
.getType().isAnyMisappliedName() && this.conceptType
.equals(ConceptType
.Misapplication
)){
57 }else if (rel
.getType().isAnySynonym() && this.conceptType
.equals(ConceptType
.Synonym
)){
67 protected void updateIcon() {
68 if (relationship
.getType().isAnyMisappliedName() ){
69 setIcon(MISAPPLIEDNAME_ICON
);
70 }else if (relationship
.getType().isProParte()){
71 setIcon(PRO_PARTE_SYNONYM_ICON
);
72 }else if (relationship
.getType().isAnySynonym()){
73 setIcon(PARTIAL_SYNONYM_ICON
);
77 private void showSec() {
78 if (getMisappliedName() == null) {
81 List
<Language
> languages
= new ArrayList
<>();
82 languages
.add(CdmStore
.getDefaultLanguage());
83 List
<TaggedText
> taggedText
= misappliedFormatter
.getTaggedText(relationship
, true, languages
, true);
85 if (taggedText
!= null){
86 String title
= TaggedCacheHelper
.createString(taggedText
);
87 title
= title
.replace("&", "&&");
88 setNonEditableInfo(title
, false);
93 public Taxon
getMisappliedName() {
94 return getTaxonBase();
98 protected Font
getViewerFont() {
99 return AbstractUtility
.getFont(Resources
.MISAPPLIEDNAME_FONT
);
103 public void showAnnotations() {
104 if(getData().getSec() == null){
105 getNameViewer().addAnnotation(
106 new EditorAnnotation(0, Messages
.MisapplicationContainer_SEC_REF_REQUIRED
));
108 super.showAnnotations();
112 protected void updateNonEditableInfo() {
117 protected void updateIndent() {
118 setIndent(MISAPPLIEDNAME_INDENT
);
122 protected void initTextViewer() {
127 if (!conceptType
.equals(ConceptType
.Synonym
) ){
128 text
= NameHelper
.getDisplayNameCache(getData());
130 text
= NameHelper
.getDisplayName(getData());
133 if (text
.length() == 0) {
136 getNameViewer().setText(text
);
139 calculateAnnotations();
143 public void refresh() {
144 // showNameRelations();
145 if (relationship
.getType().isAnyMisappliedName()){
146 conceptType
= ConceptType
.Misapplication
;
147 }else /*if (relationship.getType().isAnySynonym())*/{
148 conceptType
= ConceptType
.Synonym
;
152 if (!conceptType
.equals(ConceptType
.Synonym
) ){
153 text
= NameHelper
.getDisplayNameCache(getData());
155 text
= NameHelper
.getDisplayName(getData());
159 if (getNameViewer().getTextWidget() == null) {
160 // we might get here via dnd. Look slike it can be ignored
164 if (text
.length() == 0) {
166 } else if (!getNameViewer().getTextWidget().getText().equals(text
)) {
168 getNameViewer().getTextWidget().setText(text
);
172 updateNonEditableInfo();
177 setDelayedSelection();