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
.name
.e4
.TaxonNameEditorE4
;
24 import eu
.etaxonomy
.taxeditor
.editor
.name
.e4
.container
.MisappliedGroupE4
.ConceptType
;
25 import eu
.etaxonomy
.taxeditor
.model
.AbstractUtility
;
26 import eu
.etaxonomy
.taxeditor
.model
.NameHelper
;
27 import eu
.etaxonomy
.taxeditor
.preference
.Resources
;
28 import eu
.etaxonomy
.taxeditor
.store
.CdmStore
;
34 public class ConceptContainerE4
extends AbstractGroupedContainerE4
<Taxon
> {
35 TaxonRelationship relationship
;
36 TaxonRelationshipFormatter misappliedFormatter
;
37 ConceptType conceptType
;
39 public ConceptContainerE4(AbstractGroupE4 group
, Taxon misappliedName
, ConceptType conceptType
) {
40 super(group
, misappliedName
);
41 this.conceptType
= conceptType
;
42 misappliedFormatter
= new TaxonRelationshipFormatter();
46 protected void initializeComposite() {
48 setFont(getViewerFont());
49 TaxonNameEditorE4 editor
= getEditor();
50 Taxon taxon
= editor
.getTaxon();
51 for (TaxonRelationship rel
: taxon
.getTaxonRelations(getMisappliedName())){
52 if (rel
.getType().isAnyMisappliedName() && this.conceptType
.equals(ConceptType
.Misapplication
)){
55 }else if (rel
.getType().isAnySynonym() && this.conceptType
.equals(ConceptType
.Synonym
)){
65 protected void updateIcon() {
66 if (relationship
.getType().isAnyMisappliedName() ){
67 setIcon(MISAPPLIEDNAME_ICON
);
68 }else if (relationship
.getType().isProParte()){
69 setIcon(PRO_PARTE_SYNONYM_ICON
);
70 }else if (relationship
.getType().isAnySynonym()){
71 setIcon(PARTIAL_SYNONYM_ICON
);
75 private void showSec() {
76 if (getMisappliedName() == null) {
79 List
<Language
> languages
= new ArrayList
<>();
80 languages
.add(CdmStore
.getDefaultLanguage());
81 List
<TaggedText
> taggedText
= misappliedFormatter
.getTaggedText(relationship
, true, languages
, true);
83 if (taggedText
!= null){
84 String title
= TaggedCacheHelper
.createString(taggedText
);
85 title
= title
.replace("&", "&&");
86 setNonEditableInfo(title
, false);
91 public Taxon
getMisappliedName() {
92 return getTaxonBase();
96 protected Font
getViewerFont() {
97 return AbstractUtility
.getFont(Resources
.MISAPPLIEDNAME_FONT
);
101 public void showAnnotations() {
102 super.showAnnotations();
106 protected void updateNonEditableInfo() {
111 protected void updateIndent() {
112 setIndent(MISAPPLIEDNAME_INDENT
);
116 protected void initTextViewer() {
121 if (!conceptType
.equals(ConceptType
.Synonym
) ){
122 text
= NameHelper
.getDisplayNameCache(getData());
124 text
= NameHelper
.getDisplayName(getData());
127 if (text
.length() == 0) {
130 getNameViewer().setText(text
);
133 calculateAnnotations();
137 public void refresh() {
138 // showNameRelations();
139 if (relationship
.getType().isAnyMisappliedName()){
140 conceptType
= ConceptType
.Misapplication
;
141 }else /*if (relationship.getType().isAnySynonym())*/{
142 conceptType
= ConceptType
.Synonym
;
146 if (!conceptType
.equals(ConceptType
.Synonym
) ){
147 text
= NameHelper
.getDisplayNameCache(getData());
149 text
= NameHelper
.getDisplayName(getData());
153 if (getNameViewer().getTextWidget() == null) {
154 // we might get here via dnd. Look slike it can be ignored
158 if (text
.length() == 0) {
160 } else if (!getNameViewer().getTextWidget().getText().equals(text
)) {
162 getNameViewer().getTextWidget().setText(text
);
166 updateNonEditableInfo();
171 setDelayedSelection();