Project

General

Profile

Download (4.27 KB) Statistics
| Branch: | Tag: | Revision:
1
/**
2
* Copyright (C) 2018 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.combo;
10

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

    
15
import org.eclipse.jface.resource.FontDescriptor;
16
import org.eclipse.jface.util.PropertyChangeEvent;
17
import org.eclipse.swt.SWT;
18
import org.eclipse.swt.events.SelectionEvent;
19

    
20
import eu.etaxonomy.cdm.model.common.TermType;
21
import eu.etaxonomy.cdm.model.name.NameRelationshipType;
22
import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
23
import eu.etaxonomy.taxeditor.store.CdmStore;
24
import eu.etaxonomy.taxeditor.store.TermManager;
25
import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
26
import eu.etaxonomy.taxeditor.ui.element.CdmPropertyChangeEvent;
27
import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
28

    
29
/**
30
 * @author k.luther
31
 * @since 08.10.2018
32
 *
33
 */
34
public class NameRelationshipTypeCombo<T extends InverseTermWrapper> extends AbstractComboElement<T> {
35

    
36

    
37
   List<InverseTermWrapper> wrapperList = new ArrayList<>();
38
   T wrapperSelection;
39
   List<NameRelationshipType> terms = new ArrayList();
40
   boolean useAbbrevLabel;
41

    
42

    
43
    /**
44
     * @param cdmFormFactory
45
     * @param parentElement
46
     * @param termType
47
     * @param labelString
48
     * @param selection
49
     * @param addEmptyElement
50
     * @param style
51
     * @param useAbbrevLabel
52
     * @param comparator
53
     */
54
    public NameRelationshipTypeCombo(CdmFormFactory cdmFormFactory, ICdmFormElement parentElement,
55
            String labelString,  boolean addEmptyElement, int style, boolean useAbbrevLabel,
56
            Comparator<T> comparator) {
57
     super(cdmFormFactory, parentElement);
58
     // labelString, selection, addEmptyElement, style,  comparator
59
     terms = getTermManager().getPreferredTerms(TermType.NameRelationshipType);
60
     this.useAbbrevLabel = useAbbrevLabel;
61
     populateTerms();
62
     label.setText(labelString);
63
     FontDescriptor descriptor = FontDescriptor.createFrom(label.getFont());
64
  // setStyle method returns a new font descriptor for the given style
65
     descriptor = descriptor.setStyle(SWT.ITALIC);
66
     label.setFont(descriptor.createFont(label.getDisplay()));
67

    
68
     combo.addSelectionListener(this);
69
     combo.addDisposeListener(this);
70
     PreferencesUtil.getPreferenceStore().addPropertyChangeListener(this);
71

    
72

    
73
    }
74

    
75
    /**
76
     * Fills the combo with elements and sets up the convenience functions
77
     * for selection index
78
     *
79
     * @param preferredTerms
80
     */
81

    
82
    protected void populateTerms() {
83

    
84
        combo.removeAll();
85

    
86

    
87
        fillInverseTermWrapperList();
88

    
89
        int i = 1;
90

    
91
        for (InverseTermWrapper termWrapper : wrapperList) {
92
            String label = termWrapper.getLabel();
93
            combo.add(label);
94
            i++;
95

    
96
        }
97

    
98
    }
99

    
100
    /**
101
     *
102
     */
103
    private void fillInverseTermWrapperList() {
104
        for (NameRelationshipType term: terms){
105
            if (term.getInverseLabel(CdmStore.getDefaultLanguage()) != null && !term.getInverseLabel(CdmStore.getDefaultLanguage()).equals(term.getLabel(CdmStore.getDefaultLanguage()))){
106
                wrapperList.add(new InverseTermWrapper(term, true, useAbbrevLabel));
107
            }
108
            wrapperList.add(new InverseTermWrapper(term, false, useAbbrevLabel));
109
        }
110

    
111
    }
112

    
113

    
114
    /** {@inheritDoc} */
115
    @Override
116
    public void widgetSelected(SelectionEvent e) {
117
        wrapperSelection = (T) wrapperList.get(combo.getSelectionIndex());
118
        firePropertyChangeEvent(new CdmPropertyChangeEvent(this, e));
119
    }
120

    
121
    /** {@inheritDoc} */
122
    @Override
123
    public void propertyChange(PropertyChangeEvent event) {
124
        super.propertyChange(event);
125
        if (event != null
126
                && PreferencesUtil.PREFERRED_TERMS_CHANGE.equals(event
127
                        .getProperty())) {
128
            populateTerms();
129
        }
130
    }
131

    
132

    
133
    @Override
134
    public T getSelection() {
135
        return wrapperSelection;
136
    }
137

    
138
    /**
139
     * {@inheritDoc}
140
     */
141
    @Override
142
    public void setSelection(T selection) {
143
        // TODO Auto-generated method stub
144

    
145
    }
146
    protected TermManager getTermManager() {
147
        return CdmStore.getTermManager();
148
    }
149
}
(6-6/11)