Project

General

Profile

Download (5.25 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.editor.name.e4.container;
11

    
12
import java.util.ArrayList;
13
import java.util.List;
14

    
15
import org.eclipse.swt.graphics.Font;
16

    
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;
31

    
32
/**
33
 *
34
 * @author pplitzner
35
 * @date Aug 24, 2017
36
 *
37
 */
38
public class ConceptContainerE4 extends AbstractGroupedContainerE4<Taxon> {
39
	TaxonRelationship relationship;
40
	TaxonRelationshipFormatter misappliedFormatter;
41
	ConceptType conceptType;
42

    
43
	public ConceptContainerE4(AbstractGroupE4 group, Taxon misappliedName,  ConceptType conceptType) {
44
		super(group, misappliedName);
45
		this.conceptType = conceptType;
46
		misappliedFormatter = new TaxonRelationshipFormatter();
47

    
48
	}
49

    
50
	/** {@inheritDoc} */
51
	@Override
52
	protected void initializeComposite() {
53
		setIsDraggable(true);
54
		setFont(getViewerFont());
55
		TaxonNameEditorE4 editor = getEditor();
56
		Taxon taxon = editor.getTaxon();
57
		for (TaxonRelationship rel: taxon.getTaxonRelations(getMisappliedName())){
58
			if (rel.getType().isAnyMisappliedName() && this.conceptType.equals(ConceptType.Misapplication)){
59
			    relationship = rel;
60
				break;
61
			}else if (rel.getType().isAnySynonym() && this.conceptType.equals(ConceptType.Synonym)){
62
			    relationship = rel;
63
                break;
64
			} else if (rel.getType().isInvalidDesignation() && this.conceptType.equals(ConceptType.InvalidDesignation)){
65
                relationship = rel;
66
                break;
67
            }
68
		}
69
		showSec();
70
		initTextViewer();
71
	}
72

    
73
	@Override
74
	protected void updateIcon() {
75
	    if (relationship.getType().isAnyMisappliedName() || relationship.getType().isInvalidDesignation()){
76
	        setIcon(MISAPPLIEDNAME_ICON);
77
	    }else if (relationship.getType().isProParte()){
78
	        setIcon(PRO_PARTE_SYNONYM_ICON);
79
	    }else if (relationship.getType().isAnySynonym()){
80
            setIcon(PARTIAL_SYNONYM_ICON);
81
        }
82
	}
83

    
84
	private void showSec() {
85
		if (getMisappliedName() == null) {
86
			return;
87
		}
88
		List<Language> languages = new ArrayList<>();
89
		languages.add(CdmStore.getDefaultLanguage());
90
		List<TaggedText> taggedText = misappliedFormatter.getTaggedText(relationship, true, languages, true);
91

    
92
		if (taggedText != null){
93
    		String title = TaggedCacheHelper.createString(taggedText);
94
    		title = title.replace("&", "&&");
95
    		setNonEditableInfo(title, false);
96
		}
97

    
98
	}
99

    
100
	public Taxon getMisappliedName() {
101
		return getTaxonBase();
102
	}
103

    
104
	/** {@inheritDoc} */
105
	@Override
106
	protected Font getViewerFont() {
107
		return AbstractUtility.getFont(Resources.MISAPPLIEDNAME_FONT);
108
	}
109

    
110
	@Override
111
	public void showAnnotations() {
112
		if(getData().getSec() == null){
113
			getNameViewer().addAnnotation(
114
					new EditorAnnotation(0, Messages.MisapplicationContainer_SEC_REF_REQUIRED));
115
		}
116
		super.showAnnotations();
117
	}
118

    
119

    
120
	/** {@inheritDoc} */
121
	@Override
122
	protected void updateNonEditableInfo() {
123
		showSec();
124
	}
125

    
126
	@Override
127
	protected void updateIndent() {
128
		setIndent(MISAPPLIEDNAME_INDENT);
129
	}
130

    
131
	@Override
132
	protected void initTextViewer() {
133
		updateIndent();
134

    
135
		updateIcon();
136
		String text;
137
		if (!conceptType.equals(ConceptType.Synonym) ){
138
		    text = NameHelper.getDisplayNameCache(getData());
139
		}else{
140
		    text = NameHelper.getDisplayName(getData());
141
		}
142

    
143
		if (text.length() == 0) {
144
			initEmptyText();
145
		} else {
146
			getNameViewer().setText(text);
147
			placeCursor();
148
		}
149
		calculateAnnotations();
150
	}
151

    
152
	@Override
153
    public void refresh() {
154
		// showNameRelations();
155
	    if (relationship.getType().isAnyMisappliedName()){
156
            conceptType = ConceptType.Misapplication;
157
        }else if (relationship.getType().isAnySynonym()){
158
            conceptType = ConceptType.Synonym;
159
        }else{
160
            conceptType = ConceptType.InvalidDesignation;
161
        }
162

    
163
		String text;
164
		if (!conceptType.equals(ConceptType.Synonym) ){
165
            text = NameHelper.getDisplayNameCache(getData());
166
        }else{
167
            text = NameHelper.getDisplayName(getData());
168
        }
169

    
170

    
171
		if (getNameViewer().getTextWidget() == null) {
172
			// we might get here via dnd. Look slike it can be ignored
173
			return;
174
		}
175

    
176
		if (text.length() == 0) {
177
			initEmptyText();
178
		} else if (!getNameViewer().getTextWidget().getText().equals(text)) {
179
			removeListener();
180
			getNameViewer().getTextWidget().setText(text);
181
			addListener();
182
		}
183

    
184
		updateNonEditableInfo();
185

    
186
		updateIcon();
187
		// placeCursor();
188
		updateIndent();
189
		setDelayedSelection();
190

    
191
		enableFreeText();
192
	}
193

    
194
}
(6-6/11)