Project

General

Profile

Download (4.7 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.name.e4.TaxonEditor;
24
import eu.etaxonomy.taxeditor.editor.name.e4.container.MisappliedGroup.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;
29

    
30
/**
31
 * @author pplitzner
32
 * @date Aug 24, 2017
33
 */
34
public class ConceptContainer extends AbstractGroupedContainer<Taxon> {
35

    
36
    private TaxonRelationship relationship;
37
    private TaxonRelationshipFormatter misappliedFormatter;
38
    private ConceptType conceptType;
39

    
40
	public ConceptContainer(AbstractGroup group, Taxon misappliedName,  ConceptType conceptType) {
41
		super(group, misappliedName);
42
		this.conceptType = conceptType;
43
		misappliedFormatter = TaxonRelationshipFormatter.INSTANCE();
44
	}
45

    
46
	@Override
47
	protected void initializeComposite() {
48
		setIsDraggable(true);
49
		setFont(getViewerFont());
50
		TaxonEditor editor = getEditor();
51
		Taxon taxon = editor.getTaxon();
52
		for (TaxonRelationship rel: taxon.getTaxonRelations(getMisappliedName())){
53
			if (rel.getType().isAnyMisappliedName() && this.conceptType.equals(ConceptType.Misapplication)){
54
			    relationship = rel;
55
				break;
56
			}else if (rel.getType().isAnySynonym() && this.conceptType.equals(ConceptType.Synonym)){
57
			    relationship = rel;
58
                break;
59
			}
60
		}
61
		showSec();
62
		initTextViewer();
63
	}
64

    
65
	@Override
66
	protected void updateIcon() {
67
	    if (relationship.getType().isAnyMisappliedName() ){
68
	        setIcon(MISAPPLIEDNAME_ICON);
69
        }else if (relationship.getType().isProParte()){
70
	        setIcon(PRO_PARTE_SYNONYM_ICON);
71
	    }else if (relationship.getType().isAnySynonym()){
72
            setIcon(PARTIAL_SYNONYM_ICON);
73
        }
74
	}
75

    
76
	private void showSec() {
77
		if (getMisappliedName() == null) {
78
			return;
79
		}
80
		List<Language> languages = new ArrayList<>();
81
		languages.add(CdmStore.getDefaultLanguage());
82
		List<TaggedText> taggedText = misappliedFormatter.getTaggedText(relationship, true, languages, true);
83

    
84
		if (taggedText != null){
85
    		String title = TaggedCacheHelper.createString(taggedText);
86
    		title = title.replace("&", "&&");
87
    		setNonEditableInfo(title, false);
88
		}
89

    
90
	}
91

    
92
	public Taxon getMisappliedName() {
93
		return getTaxonBase();
94
	}
95

    
96
	@Override
97
	protected Font getViewerFont() {
98
		return AbstractUtility.getFont(Resources.MISAPPLIEDNAME_FONT);
99
	}
100

    
101
	@Override
102
	public void showAnnotations() {
103
		super.showAnnotations();
104
	}
105

    
106
	@Override
107
	protected void updateNonEditableInfo() {
108
		showSec();
109
	}
110

    
111
	@Override
112
	protected void updateIndent() {
113
		setIndent(MISAPPLIEDNAME_INDENT);
114
	}
115

    
116
	@Override
117
	protected void initTextViewer() {
118
		updateIndent();
119

    
120
		updateIcon();
121
		String text;
122
		if (!conceptType.equals(ConceptType.Synonym) ){
123
		    text = NameHelper.getDisplayNameCache(getData());
124
		}else{
125
		    text = NameHelper.getDisplayName(getData());
126
		}
127

    
128
		if (text.length() == 0) {
129
			initEmptyText();
130
		} else {
131
			getNameViewer().setText(text);
132
            if (this.isSelected()){
133
                placeCursor();
134
            }
135

    
136
		}
137
		calculateAnnotations();
138
	}
139

    
140
	@Override
141
    public void refresh() {
142
		// showNameRelations();
143
	    if (relationship.getType().isAnyMisappliedName()){
144
            conceptType = ConceptType.Misapplication;
145
        }else /*if (relationship.getType().isAnySynonym())*/{
146
            conceptType = ConceptType.Synonym;
147
        }
148

    
149
		String text;
150
		if (!conceptType.equals(ConceptType.Synonym) ){
151
            text = NameHelper.getDisplayNameCache(getData());
152
        }else{
153
            text = NameHelper.getDisplayName(getData());
154
        }
155

    
156

    
157
		if (getNameViewer().getTextWidget() == null) {
158
			// we might get here via dnd. Look slike it can be ignored
159
			return;
160
		}
161

    
162
		if (text.length() == 0) {
163
			initEmptyText();
164
		} else if (!getNameViewer().getTextWidget().getText().equals(text)) {
165
			removeListener();
166
			getNameViewer().getTextWidget().setText(text);
167
			addListener();
168
		}
169

    
170
		updateNonEditableInfo();
171

    
172
		updateIcon();
173
		// placeCursor();
174
		updateIndent();
175
		setDelayedSelection();
176

    
177
		enableFreeText();
178
	}
179
}
(6-6/11)