Project

General

Profile

« Previous | Next » 

Revision 719ac7ab

Added by Patrick Plitzner over 4 years ago

ref #8475 Add applicability detail element to character details view

View differences:

eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/CdmFormFactory.java
192 192
import eu.etaxonomy.taxeditor.ui.section.description.detail.TextDataDetailElement;
193 193
import eu.etaxonomy.taxeditor.ui.section.feature.CharacterDetailElement;
194 194
import eu.etaxonomy.taxeditor.ui.section.feature.CharacterDetailSection;
195
import eu.etaxonomy.taxeditor.ui.section.feature.CharacterNodeDetailElement;
196
import eu.etaxonomy.taxeditor.ui.section.feature.CharacterNodeDetailSection;
195 197
import eu.etaxonomy.taxeditor.ui.section.feature.FeatureDistributionDetailElement;
196 198
import eu.etaxonomy.taxeditor.ui.section.feature.FeatureDistributionDetailSection;
197 199
import eu.etaxonomy.taxeditor.ui.section.feature.FeatureNodeDetailElement;
......
1729 1731
        return element;
1730 1732
    }
1731 1733

  
1734
    public CharacterNodeDetailSection createCharacterNodeDetailSection(ConversationHolder conversation, ICdmFormElement parentElement, ISelectionProvider selectionProvider, int style){
1735
        CharacterNodeDetailSection section = new CharacterNodeDetailSection(this, conversation, parentElement, selectionProvider, style);
1736
        addAndAdaptSection(parentElement, section);
1737
        return section;
1738
    }
1739

  
1732 1740
    public CharacterDetailSection createCharacterDetailSection(ConversationHolder conversation, ICdmFormElement parentElement, ISelectionProvider selectionProvider, int style){
1733 1741
        CharacterDetailSection section = new CharacterDetailSection(this, conversation, parentElement, selectionProvider, style);
1734 1742
        addAndAdaptSection(parentElement, section);
1735 1743
        return section;
1736 1744
    }
1737 1745

  
1746
    public CharacterNodeDetailElement createCharacterNodeDetailElement(ICdmFormElement parentElement, int style){
1747
        CharacterNodeDetailElement element = new CharacterNodeDetailElement(this, parentElement);
1748
        addAndAdaptElement(parentElement, element);
1749
        return element;
1750
    }
1751

  
1738 1752
    public CharacterDetailElement createCharacterDetailElement(ICdmFormElement parentElement, int style){
1739 1753
        CharacterDetailElement element = new CharacterDetailElement(this, parentElement);
1740 1754
        addAndAdaptElement(parentElement, element);
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/feature/CharacterDetailElement.java
12 12

  
13 13
import eu.etaxonomy.cdm.model.common.Language;
14 14
import eu.etaxonomy.cdm.model.description.Character;
15
import eu.etaxonomy.cdm.model.description.Feature;
16 15
import eu.etaxonomy.cdm.model.term.DefinedTerm;
17 16
import eu.etaxonomy.cdm.model.term.Representation;
18 17
import eu.etaxonomy.cdm.model.term.TermNode;
......
68 67
	@Override
69 68
	protected void createControls(ICdmFormElement formElement, Character entity, int style) {
70 69
	    this.parentFormElement = formElement;
71
	    element_Representation = formFactory.createTranslatableRepresentationElement(formElement,  getEntity().getPreferredRepresentation(CdmStore.getDefaultLanguage()),getEntity(), 100, style, true);
70
	    element_Representation = formFactory.createTranslatableRepresentationElement(formElement,  entity.getPreferredRepresentation(CdmStore.getDefaultLanguage()),entity, 100, style, true);
72 71
	    Label lblStructure = new Label(formElement.getLayoutComposite(), style);
73 72
	    lblStructure.setText("Structure");
74 73
	    Label lblStructureText = new Label(formElement.getLayoutComposite(), style);
......
89 88
            sectionStateVocabularies = formFactory.createStateVocabulariesSection(getConversationHolder(),
90 89
                    parentFormElement, StoreUtil.getSectionStyle(StateVocabularyCollectionSection.class, entity.getClass().getCanonicalName(), true));
91 90
            sectionStateVocabularies.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
92
            sectionStateVocabularies.setEntity(getEntity());
91
            sectionStateVocabularies.setEntity(entity);
93 92
        }
94 93
        if (supportsQuantitativeData.getSelection()) {
95 94
            sectionMeasurementUnits = formFactory.createMeasurementUnitCollectionSection(getConversationHolder(),
96 95
                    parentFormElement, StoreUtil.getSectionStyle(MeasurementUnitCollectionSection.class, entity.getClass().getCanonicalName(), true));
97 96
            sectionMeasurementUnits.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
98
            sectionMeasurementUnits.setEntity(getEntity());
97
            sectionMeasurementUnits.setEntity(entity);
99 98

  
100 99
            sectionStatisticalMeasures = formFactory.createStatisticalMeasureCollectionSection(getConversationHolder(),
101 100
                    parentFormElement, StoreUtil.getSectionStyle(StatisticalMeasureCollectionSection.class, entity.getClass().getCanonicalName(), true));
102 101
            sectionStatisticalMeasures.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
103
            sectionStatisticalMeasures.setEntity(getEntity());
102
            sectionStatisticalMeasures.setEntity(entity);
104 103
        }
105 104
        if (supportsCategoricalData.getSelection() || supportsQuantitativeData.getSelection()) {
106 105
            sectionModifierVocabularies = formFactory.createRecommendedModifierVocabulariesCollectionSection(
107 106
                    getConversationHolder(), parentFormElement, StoreUtil.getSectionStyle(RecommendedModifierVocabulariesCollectionSection.class, entity.getClass().getCanonicalName(), true));
108 107
            sectionModifierVocabularies.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
109
            sectionModifierVocabularies.setEntity(getEntity());
108
            sectionModifierVocabularies.setEntity(entity);
110 109
        }
110

  
111 111
    }
112 112

  
113 113
	private String getPath(TermNode node){
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/feature/CharacterNodeDetailElement.java
1
/**
2
* Copyright (C) 2009 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
package eu.etaxonomy.taxeditor.ui.section.feature;
10

  
11
import org.eclipse.swt.widgets.Label;
12

  
13
import eu.etaxonomy.cdm.model.common.Language;
14
import eu.etaxonomy.cdm.model.description.Character;
15
import eu.etaxonomy.cdm.model.term.DefinedTerm;
16
import eu.etaxonomy.cdm.model.term.Representation;
17
import eu.etaxonomy.cdm.model.term.TermNode;
18
import eu.etaxonomy.cdm.model.term.TermType;
19
import eu.etaxonomy.taxeditor.editor.definedterm.TermBasePropertyTester;
20
import eu.etaxonomy.taxeditor.model.ColorResources;
21
import eu.etaxonomy.taxeditor.preference.Resources;
22
import eu.etaxonomy.taxeditor.store.CdmStore;
23
import eu.etaxonomy.taxeditor.store.StoreUtil;
24
import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
25
import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
26
import eu.etaxonomy.taxeditor.ui.element.CheckboxElement;
27
import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
28
import eu.etaxonomy.taxeditor.ui.element.LayoutConstants;
29
import eu.etaxonomy.taxeditor.ui.element.RepresentationElement;
30
import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
31
import eu.etaxonomy.taxeditor.ui.section.vocabulary.MeasurementUnitCollectionSection;
32
import eu.etaxonomy.taxeditor.ui.section.vocabulary.RecommendedModifierVocabulariesCollectionSection;
33
import eu.etaxonomy.taxeditor.ui.section.vocabulary.StateVocabularyCollectionSection;
34
import eu.etaxonomy.taxeditor.ui.section.vocabulary.StatisticalMeasureCollectionSection;
35

  
36
/**
37
 *
38
 * @author pplitzner
39
 * @since Aug 19, 2019
40
 *
41
 */
42
public class CharacterNodeDetailElement extends AbstractCdmDetailElement<TermNode<Character>> {
43

  
44
    private ICdmFormElement parentFormElement;
45

  
46
    protected RepresentationElement element_Representation;
47

  
48
    private TermComboElement<DefinedTerm> comboStructuralModifier;
49

  
50
    private CheckboxElement supportsQuantitativeData;
51

  
52
    private CheckboxElement supportsCategoricalData;
53

  
54
    private StateVocabularyCollectionSection sectionStateVocabularies;
55

  
56
    private MeasurementUnitCollectionSection sectionMeasurementUnits;
57

  
58
    private StatisticalMeasureCollectionSection sectionStatisticalMeasures;
59

  
60
    private RecommendedModifierVocabulariesCollectionSection sectionModifierVocabularies;
61

  
62
    private InapplicableIfEntityCollectionSection sectionInapplicableIf;
63
    private OnlyApplicableIfEntityCollectionSection sectionOnlyApplicableIf;
64

  
65
	public CharacterNodeDetailElement(CdmFormFactory formFactory,
66
			ICdmFormElement formElement) {
67
		super(formFactory, formElement);
68
	}
69

  
70
	@Override
71
	protected void createControls(ICdmFormElement formElement, TermNode<Character> entity, int style) {
72
	    this.parentFormElement = formElement;
73
	    element_Representation = formFactory.createTranslatableRepresentationElement(formElement,  entity.getTerm().getPreferredRepresentation(CdmStore.getDefaultLanguage()),entity.getTerm(), 100, style, true);
74
	    Label lblStructure = new Label(formElement.getLayoutComposite(), style);
75
	    lblStructure.setText("Structure");
76
	    Label lblStructureText = new Label(formElement.getLayoutComposite(), style);
77
	    lblStructureText.setText(getPath(entity.getTerm().getStructure()));
78
	    lblStructureText.setForeground(ColorResources.getColor(Resources.BLACK));
79
	    Label lblProperty = new Label(formElement.getLayoutComposite(), style);
80
	    lblProperty.setText("Property");
81
	    Label lblPropertyText = new Label(formElement.getLayoutComposite(), style);
82
	    lblPropertyText.setForeground(ColorResources.getColor(Resources.BLACK));
83
	    lblPropertyText.setText(getPath(entity.getTerm().getProperty()));
84

  
85
        comboStructuralModifier = formFactory.createDefinedTermComboElement(TermType.StructureModifier, formElement, "Structural Modifier", entity.getTerm().getStructureModifier(), style);
86

  
87
	    supportsQuantitativeData = formFactory.createCheckbox(formElement, "Supports Quantitative Data", entity.getTerm().isSupportsQuantitativeData(), style);
88
	    supportsCategoricalData = formFactory.createCheckbox(formElement, "Supports Categorical Data", entity.getTerm().isSupportsCategoricalData(), style);
89

  
90
        if (supportsCategoricalData.getSelection()) {
91
            sectionStateVocabularies = formFactory.createStateVocabulariesSection(getConversationHolder(),
92
                    parentFormElement, StoreUtil.getSectionStyle(StateVocabularyCollectionSection.class, entity.getClass().getCanonicalName(), true));
93
            sectionStateVocabularies.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
94
            sectionStateVocabularies.setEntity(entity.getTerm());
95
        }
96
        if (supportsQuantitativeData.getSelection()) {
97
            sectionMeasurementUnits = formFactory.createMeasurementUnitCollectionSection(getConversationHolder(),
98
                    parentFormElement, StoreUtil.getSectionStyle(MeasurementUnitCollectionSection.class, entity.getClass().getCanonicalName(), true));
99
            sectionMeasurementUnits.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
100
            sectionMeasurementUnits.setEntity(entity.getTerm());
101

  
102
            sectionStatisticalMeasures = formFactory.createStatisticalMeasureCollectionSection(getConversationHolder(),
103
                    parentFormElement, StoreUtil.getSectionStyle(StatisticalMeasureCollectionSection.class, entity.getClass().getCanonicalName(), true));
104
            sectionStatisticalMeasures.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
105
            sectionStatisticalMeasures.setEntity(entity.getTerm());
106
        }
107
        if (supportsCategoricalData.getSelection() || supportsQuantitativeData.getSelection()) {
108
            sectionModifierVocabularies = formFactory.createRecommendedModifierVocabulariesCollectionSection(
109
                    getConversationHolder(), parentFormElement, StoreUtil.getSectionStyle(RecommendedModifierVocabulariesCollectionSection.class, entity.getClass().getCanonicalName(), true));
110
            sectionModifierVocabularies.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
111
            sectionModifierVocabularies.setEntity(entity.getTerm());
112
        }
113

  
114
        // applicability
115
        sectionInapplicableIf = formFactory.createInapplicableIfEntityCollectionSection(getConversationHolder(),
116
                formElement, StoreUtil.getSectionStyle(InapplicableIfEntityCollectionSection.class, entity.getTerm().getClass().getCanonicalName()));
117
        sectionInapplicableIf.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
118
        sectionInapplicableIf.setEntity(getEntity());
119
        sectionOnlyApplicableIf = formFactory.createOnlyApplicableIfEntityCollectionSection(getConversationHolder(),
120
                formElement, StoreUtil.getSectionStyle(OnlyApplicableIfEntityCollectionSection.class, entity.getTerm().getClass().getCanonicalName()));
121
        sectionOnlyApplicableIf.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
122
        sectionOnlyApplicableIf.setEntity(entity);
123
    }
124

  
125
	private String getPath(TermNode node){
126
	    String path = node.getTerm().getLabel();
127
	    TermNode parent = node.getParent();
128
	    while(parent != null && parent.getTerm()!=null){
129
	        path = parent.getTerm().getLabel() + "/" + path;
130
	        parent = parent.getParent();
131
	    }
132
	    return path;
133
	}
134

  
135
    @Override
136
    public void setEntity(TermNode<Character> entity) {
137
        super.setEntity(entity);
138
        setEnabled(TermBasePropertyTester.isModifiable(entity));
139
    }
140

  
141
	@Override
142
	public void handleEvent(Object eventSource) {
143
	    if(eventSource == comboStructuralModifier){
144
	        getEntity().getTerm().setStructureModifier(comboStructuralModifier.getSelection());
145
	    }
146
	    if(eventSource == supportsQuantitativeData || eventSource == supportsCategoricalData){
147
	        //if any type is selected disable supportsTextData
148
	        getEntity().getTerm().setSupportsTextData(false);
149
	    }
150
	    if(eventSource == supportsQuantitativeData){
151
	        getEntity().getTerm().setSupportsQuantitativeData(supportsQuantitativeData.getSelection());
152
	        if(supportsQuantitativeData.getSelection()){
153
	            activateQuantitativeWidgets();
154
	        }
155
	        else{
156
	            removeQuantitativeWidgets();
157
	        }
158
            StoreUtil.reflowParentScrolledForm(getLayoutComposite(), true);
159
	    }
160
	    else if(eventSource == supportsCategoricalData){
161
	        getEntity().getTerm().setSupportsCategoricalData(supportsCategoricalData.getSelection());
162
            if (supportsCategoricalData.getSelection()) {
163
                activateCategoricalWidgets();
164
            }
165
	        else{
166
	            removeCategoricalWidgets();
167
	        }
168
            StoreUtil.reflowParentScrolledForm(getLayoutComposite(), true);
169
	    }
170
	    else if (eventSource == element_Representation) {
171
            Representation selectedRepresentation = element_Representation.getSelectedRepresentation();
172
            if(selectedRepresentation!=null){
173
                Language representationLanguage = selectedRepresentation.getLanguage();
174
                if(representationLanguage==null){
175
                    representationLanguage = Language.getDefaultLanguage();
176
                }
177
                getEntity().getTerm().setLabel(selectedRepresentation.getLabel(),  representationLanguage);
178
                getEntity().getTerm().getRepresentation(representationLanguage).setAbbreviatedLabel(selectedRepresentation.getAbbreviatedLabel());
179
                getEntity().getTerm().getRepresentation(representationLanguage).setText(selectedRepresentation.getDescription());
180
            }
181
            getEntity().getTerm().setTitleCache(null);
182
        }
183
	}
184

  
185
	private void activateQuantitativeWidgets(){
186
	    //disable categorical widgets
187
	    supportsCategoricalData.setSelection(false);
188
	    getEntity().getTerm().setSupportsCategoricalData(false);
189
	    removeCategoricalWidgets();
190

  
191
	    //measurement units
192
	    sectionMeasurementUnits = formFactory.createMeasurementUnitCollectionSection(getConversationHolder(),
193
	            parentFormElement, StoreUtil.getSectionStyle(MeasurementUnitCollectionSection.class, getEntity().getClass().getCanonicalName(), true));
194
	    sectionMeasurementUnits.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
195
	    sectionMeasurementUnits.setEntity(getEntity().getTerm());
196

  
197
	    //statistical measures
198
	    sectionStatisticalMeasures = formFactory.createStatisticalMeasureCollectionSection(
199
	            getConversationHolder(), parentFormElement, StoreUtil.getSectionStyle(StatisticalMeasureCollectionSection.class, getEntity().getClass().getCanonicalName(), true));
200
	    sectionStatisticalMeasures.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
201
	    sectionStatisticalMeasures.setEntity(getEntity().getTerm());
202

  
203
	    //modifiers
204
	    sectionModifierVocabularies = formFactory.createRecommendedModifierVocabulariesCollectionSection(
205
	            getConversationHolder(), parentFormElement, StoreUtil.getSectionStyle(RecommendedModifierVocabulariesCollectionSection.class, getEntity().getClass().getCanonicalName(), true));
206
	    sectionModifierVocabularies.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
207
	    sectionModifierVocabularies.setEntity(getEntity().getTerm());
208
	}
209

  
210
	private void removeQuantitativeWidgets(){
211
	    if(sectionMeasurementUnits!=null){
212
	        removeElementsAndControls(sectionMeasurementUnits);
213
	        removeElementsAndControls(sectionStatisticalMeasures);
214
	        removeElementsAndControls(sectionModifierVocabularies);
215
	    }
216
	}
217

  
218
	private void activateCategoricalWidgets(){
219
	    //disable quantitative widgeets
220
	    supportsQuantitativeData.setSelection(false);
221
	    getEntity().getTerm().setSupportsQuantitativeData(false);
222
	    removeQuantitativeWidgets();
223

  
224
	    //states
225
	    sectionStateVocabularies = formFactory.createStateVocabulariesSection(getConversationHolder(),
226
                parentFormElement, StoreUtil.getSectionStyle(StateVocabularyCollectionSection.class, getEntity().getClass().getCanonicalName(), true));
227
        sectionStateVocabularies.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
228
        sectionStateVocabularies.setEntity(getEntity().getTerm());
229

  
230
        //modifiers
231
        sectionModifierVocabularies = formFactory.createRecommendedModifierVocabulariesCollectionSection(
232
                getConversationHolder(), parentFormElement, StoreUtil.getSectionStyle(RecommendedModifierVocabulariesCollectionSection.class, getEntity().getClass().getCanonicalName(), true));
233
        sectionModifierVocabularies.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
234
        sectionModifierVocabularies.setEntity(getEntity().getTerm());
235
	}
236

  
237
	private void removeCategoricalWidgets(){
238
	    if(sectionStateVocabularies!=null){
239
	        removeElementsAndControls(sectionStateVocabularies);
240
	        removeElementsAndControls(sectionModifierVocabularies);
241
	    }
242
	}
243

  
244
}
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/feature/CharacterNodeDetailSection.java
1
/**
2
* Copyright (C) 2009 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
package eu.etaxonomy.taxeditor.ui.section.feature;
10

  
11
import org.eclipse.jface.viewers.ISelectionProvider;
12

  
13
import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
14
import eu.etaxonomy.cdm.model.description.Character;
15
import eu.etaxonomy.cdm.model.term.TermNode;
16
import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
17
import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
18
import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
19
import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection;
20

  
21
/**
22
 *
23
 * @author pplitzner
24
 * @since Aug 19, 2019
25
 *
26
 */
27
public class CharacterNodeDetailSection extends AbstractCdmDetailSection<TermNode<Character>> {
28

  
29
	public CharacterNodeDetailSection(CdmFormFactory formFactory,
30
	        ConversationHolder conversation, ICdmFormElement parentElement,
31
			ISelectionProvider selectionProvider, int style) {
32
		super(formFactory, conversation, parentElement, selectionProvider, style);
33
	}
34

  
35
	@Override
36
	public String getHeading() {
37
		return "Character Node";
38
	}
39

  
40
    /**
41
     * {@inheritDoc}
42
     */
43
    @Override
44
    protected AbstractCdmDetailElement<TermNode<Character>> createCdmDetailElement(AbstractCdmDetailSection<TermNode<Character>> parentElement,
45
            int style) {
46
        return formFactory.createCharacterNodeDetailElement(parentElement, style);
47
    }
48

  
49
}
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/e4/details/DetailsViewerE4.java
25 25
import eu.etaxonomy.cdm.api.facade.DerivedUnitFacade;
26 26
import eu.etaxonomy.cdm.api.facade.DerivedUnitFacadeNotSupportedException;
27 27
import eu.etaxonomy.cdm.ext.occurrence.gbif.GbifResponse;
28
import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
29 28
import eu.etaxonomy.cdm.model.agent.Person;
30 29
import eu.etaxonomy.cdm.model.agent.Team;
31 30
import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase;
32
import eu.etaxonomy.cdm.model.permission.Group;
33 31
import eu.etaxonomy.cdm.model.common.Marker;
34
import eu.etaxonomy.cdm.model.permission.User;
35 32
import eu.etaxonomy.cdm.model.description.CategoricalData;
36 33
import eu.etaxonomy.cdm.model.description.Character;
37 34
import eu.etaxonomy.cdm.model.description.DescriptionBase;
......
49 46
import eu.etaxonomy.cdm.model.occurrence.FieldUnit;
50 47
import eu.etaxonomy.cdm.model.occurrence.MediaSpecimen;
51 48
import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationType;
49
import eu.etaxonomy.cdm.model.permission.Group;
50
import eu.etaxonomy.cdm.model.permission.User;
52 51
import eu.etaxonomy.cdm.model.reference.Reference;
53 52
import eu.etaxonomy.cdm.model.taxon.TaxonBase;
54 53
import eu.etaxonomy.cdm.model.taxon.TaxonRelationship;
55 54
import eu.etaxonomy.cdm.model.term.DefinedTermBase;
56 55
import eu.etaxonomy.cdm.model.term.TermNode;
57 56
import eu.etaxonomy.cdm.model.term.TermTree;
57
import eu.etaxonomy.cdm.model.term.TermType;
58 58
import eu.etaxonomy.cdm.model.term.TermVocabulary;
59 59
import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap;
60 60
import eu.etaxonomy.taxeditor.editor.IDistributionEditor;
......
83 83
import eu.etaxonomy.taxeditor.ui.section.description.NaturalLanguageSection;
84 84
import eu.etaxonomy.taxeditor.ui.section.description.ScopeSection;
85 85
import eu.etaxonomy.taxeditor.ui.section.feature.CharacterDetailSection;
86
import eu.etaxonomy.taxeditor.ui.section.feature.CharacterNodeDetailSection;
86 87
import eu.etaxonomy.taxeditor.ui.section.feature.FeatureDistributionDetailSection;
87 88
import eu.etaxonomy.taxeditor.ui.section.feature.FeatureNodeDetailSection;
88 89
import eu.etaxonomy.taxeditor.ui.section.feature.FeatureTreeDetailSection;
......
177 178
        if(input instanceof GbifResponse){
178 179
            input = ((GbifResponse) input).getDerivedUnitFacade();
179 180
        }
180
        if(input instanceof TermNode
181
                && HibernateProxyHelper.isInstanceOf(((TermNode) input).getTerm(), Character.class)){
182
            input = HibernateProxyHelper.deproxy(((TermNode) input).getTerm(), Character.class);
183
        }
184 181
        if (input !=null && input.getClass().equals(DerivedUnit.class)) {
185 182
            DerivedUnit derivedUnit = (DerivedUnit)input;
186 183
            try {
......
359 356
            createFeatureDistributionSection(rootElement);
360 357

  
361 358
        } else if (input instanceof TermNode) {
362
            createFeatureNodeSection(rootElement);
359
            TermType type= ((TermNode) input).getTermType();
360
            if(type.equals(TermType.Character)){
361
                createCharacterNodeSection(rootElement);
362
            }
363
            else{
364
                createFeatureNodeSection(rootElement);
365
            }
363 366

  
364 367
        } else if (input instanceof TermTree) {
365 368
            createFeatureTreeSection(rootElement);
......
779 782
        addPart(featureDistributionSection);
780 783
    }
781 784

  
785
    private void createCharacterNodeSection(RootElement parent) {
786
        CharacterNodeDetailSection featureDistributionSection = formFactory.createCharacterNodeDetailSection(getConversationHolder(), parent, this, StoreUtil.getSectionStyle(CharacterDetailSection.class, getInput().getClass().getCanonicalName(), true));
787
        addPart(featureDistributionSection);
788
    }
789

  
782 790
    private void createCharacterSection(RootElement parent) {
783 791
        CharacterDetailSection featureDistributionSection = formFactory.createCharacterDetailSection(getConversationHolder(), parent, this, StoreUtil.getSectionStyle(CharacterDetailSection.class, getInput().getClass().getCanonicalName(), true));
784

  
785 792
        addPart(featureDistributionSection);
786 793
    }
787 794

  

Also available in: Unified diff