Project

General

Profile

Download (5.23 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.model.taxon.TaxonRelationshipType;
22
import eu.etaxonomy.cdm.strategy.cache.TaggedCacheHelper;
23
import eu.etaxonomy.cdm.strategy.cache.TaggedText;
24
import eu.etaxonomy.taxeditor.editor.l10n.Messages;
25
import eu.etaxonomy.taxeditor.editor.name.container.EditorAnnotation;
26
import eu.etaxonomy.taxeditor.editor.name.e4.TaxonNameEditorE4;
27
import eu.etaxonomy.taxeditor.editor.name.e4.container.MisappliedGroupE4.ConceptType;
28
import eu.etaxonomy.taxeditor.model.AbstractUtility;
29
import eu.etaxonomy.taxeditor.model.NameHelper;
30
import eu.etaxonomy.taxeditor.preference.Resources;
31
import eu.etaxonomy.taxeditor.store.CdmStore;
32

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

    
44

    
45

    
46
	public ConceptContainerE4(AbstractGroupE4 group, Taxon misappliedName, ConceptType conceptType) {
47
		super(group, misappliedName);
48
		this.conceptType = conceptType;
49
		misappliedFormatter = new TaxonRelationshipFormatter();
50

    
51
	}
52

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

    
72
		}
73
		showSec();
74

    
75
		initTextViewer();
76
	}
77

    
78
	@Override
79
	protected void updateIcon() {
80
	    if (relationship.getType().isMisappliedNameOrInvalidDesignation()){
81
	        setIcon(MISAPPLIEDNAME_ICON);
82
	    }else if (relationship.getType().isProParte()){
83
	        setIcon(PRO_PARTE_SYNONYM_ICON);
84
	    }
85
	}
86

    
87
	private void showSec() {
88
		if (getMisappliedName() == null) {
89
			return;
90
		}
91
		List<Language> languages = new ArrayList<>();
92
		languages.add(CdmStore.getDefaultLanguage());
93
		List<TaggedText> taggedText = misappliedFormatter.getTaggedText(relationship, true, languages, true);
94
		if (taggedText != null){
95
		    String title = TaggedCacheHelper.createString(taggedText);
96
		    title = title.replace("&", "&&");
97
		    setNonEditableInfo(title, false);
98
		}
99

    
100
	}
101

    
102
	public Taxon getMisappliedName() {
103
		return getTaxonBase();
104
	}
105

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

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

    
121

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

    
128
	@Override
129
	protected void updateIndent() {
130
		setIndent(MISAPPLIEDNAME_INDENT);
131
	}
132

    
133
	@Override
134
	protected void initTextViewer() {
135

    
136
		// showNameRelations();
137

    
138
		updateIndent();
139

    
140
		updateIcon();
141
		String text;
142
		if (!conceptType.equals(ConceptType.Synonym) ){
143
		    text = NameHelper.getDisplayNameCache(getData());
144
		}else{
145
		    text = NameHelper.getDisplayName(getData());
146
		}
147

    
148
		if (text.length() == 0) {
149
			initEmptyText();
150
		} else {
151
			getNameViewer().setText(text);
152
			placeCursor();
153
		}
154
		calculateAnnotations();
155
	}
156

    
157
	@Override
158
    public void refresh() {
159
		// showNameRelations();
160
	    if (relationship.getType().isAnyMisappliedName()){
161
	        conceptType = ConceptType.Misapplication;
162
	    }else if (relationship.getType().isAnySynonym()){
163
	        conceptType = ConceptType.Synonym;
164
	    } else{
165
	        conceptType = ConceptType.InvalidDesignation;
166
	    }
167
		String text;
168
		if (!conceptType.equals(ConceptType.Synonym) ){
169
            text = NameHelper.getDisplayNameCache(getData());
170
        }else{
171
            text = NameHelper.getDisplayName(getData());
172
        }
173

    
174

    
175
		if (getNameViewer().getTextWidget() == null) {
176
			// we might get here via dnd. Look slike it can be ignored
177
			return;
178
		}
179

    
180
		if (text.length() == 0) {
181
			initEmptyText();
182
		} else if (!getNameViewer().getTextWidget().getText().equals(text)) {
183
			removeListener();
184
			getNameViewer().getTextWidget().setText(text);
185
			addListener();
186
		}
187

    
188
		updateNonEditableInfo();
189

    
190
		updateIcon();
191
		// placeCursor();
192
		updateIndent();
193
		setDelayedSelection();
194

    
195
		enableFreeText();
196
	}
197

    
198
}
(6-6/11)