Project

General

Profile

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

    
11
import java.util.ArrayList;
12
import java.util.Arrays;
13
import java.util.List;
14
import java.util.UUID;
15

    
16
import org.apache.commons.lang.StringUtils;
17
import org.eclipse.jface.viewers.ISelectionChangedListener;
18
import org.eclipse.jface.viewers.SelectionChangedEvent;
19
import org.eclipse.swt.SWT;
20
import org.eclipse.swt.custom.CLabel;
21
import org.eclipse.swt.events.SelectionEvent;
22
import org.eclipse.swt.events.SelectionListener;
23
import org.eclipse.swt.layout.GridData;
24
import org.eclipse.swt.layout.GridLayout;
25
import org.eclipse.swt.widgets.Combo;
26
import org.eclipse.swt.widgets.Composite;
27
import org.eclipse.swt.widgets.Control;
28

    
29
import eu.etaxonomy.cdm.api.service.ITermService;
30
import eu.etaxonomy.cdm.api.service.IVocabularyService;
31
import eu.etaxonomy.cdm.model.metadata.CdmPreference;
32
import eu.etaxonomy.cdm.model.term.DefinedTermBase;
33
import eu.etaxonomy.cdm.model.term.TermType;
34
import eu.etaxonomy.cdm.model.term.TermVocabulary;
35
import eu.etaxonomy.cdm.persistence.dto.AbstractTermDto;
36
import eu.etaxonomy.cdm.persistence.dto.TermDto;
37
import eu.etaxonomy.cdm.persistence.dto.TermVocabularyDto;
38
import eu.etaxonomy.taxeditor.editor.definedterm.DefinedTermSorter;
39
import eu.etaxonomy.taxeditor.editor.definedterm.TermDtoContentProvider;
40
import eu.etaxonomy.taxeditor.editor.definedterm.TermDtoLabelProvider;
41
import eu.etaxonomy.taxeditor.l10n.Messages;
42
import eu.etaxonomy.taxeditor.preference.menu.CdmPreferencePage;
43
import eu.etaxonomy.taxeditor.preference.wizard.CheckBoxTreeComposite;
44
import eu.etaxonomy.taxeditor.store.CdmStore;
45

    
46
/**
47
 * @author k.luther
48
 * @since 05.06.2019
49
 *
50
 */
51
abstract public class GeneralTermPreference extends CdmPreferencePage implements ISelectionChangedListener, SelectionListener{
52
    protected CheckBoxTreeComposite treeComposite;
53
    private List<TermVocabularyDto> vocabularies = new ArrayList<>();
54
    protected Combo useLocalOrAdmin ;
55

    
56
    protected boolean isOverride;
57
    protected boolean allowOverride;
58
    protected CdmPreference pref;
59

    
60
    private boolean localPref;
61

    
62
    public GeneralTermPreference(){
63
        super();
64

    
65
    }
66

    
67
    public boolean isLocalPref() {
68
        return localPref;
69
    }
70

    
71
    public void setLocalPref(boolean localPref) {
72
        this.localPref = localPref;
73
    }
74

    
75
    protected TermType type;
76

    
77
    public List<TermVocabularyDto> getVocabularies() {
78
        return vocabularies;
79
    }
80

    
81
    public void setVocabularies(List<TermVocabularyDto> vocabularies) {
82
        this.vocabularies = vocabularies;
83
    }
84

    
85
    /**
86
     * {@inheritDoc}
87
     */
88
    @Override
89
    protected Control createContents(Composite parent) {
90
        Composite container = new Composite(parent, SWT.NULL);
91
        getPreferenceValues();
92
        if (isLocalPref() && !allowOverride){
93
            final CLabel description = new CLabel(parent, SWT.NULL);
94
            description.setText(Messages.NameDetailsViewConfiguration_description_not_available);
95
            this.setDefaultButtonActivated(false);
96
            return parent;
97

    
98
        }
99
        final GridLayout gridLayout = new GridLayout();
100
        gridLayout.numColumns = 2;
101
        container.setLayout(gridLayout);
102
        parent.setLayout(new GridLayout());
103
        useLocalOrAdmin = new Combo(parent, SWT.BORDER | SWT.READ_ONLY);
104
        if (localPref){
105
            useLocalOrAdmin.add(LocalOrDefaultEnum.Default.getLabel());
106
            useLocalOrAdmin.add(LocalOrDefaultEnum.Local.getLabel());
107

    
108
        }else{
109
            useLocalOrAdmin.add(LocalOrDefaultEnum.Database.getLabel());
110
            useLocalOrAdmin.add(LocalOrDefaultEnum.AllowOverride.getLabel());
111
        }
112

    
113

    
114
        treeComposite = new CheckBoxTreeComposite(container, new TermDtoContentProvider(), new TermDtoLabelProvider(), SWT.NONE);
115
        treeComposite.getViewer().setComparator(new DefinedTermSorter());
116
        rememberCheckedValues(getCheckedValuesFromPreferences());
117

    
118
        if (isLocalPref()){
119
            if (isOverride){
120
                useLocalOrAdmin.select(1);
121
            }else{
122
                useLocalOrAdmin.select(0);
123
            }
124
        }else{
125
            if (allowOverride){
126
                useLocalOrAdmin.select(1);
127
            }else{
128
                useLocalOrAdmin.select(0);
129
            }
130
        }
131
        useLocalOrAdmin.addSelectionListener(this);
132

    
133
        GridData data = new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1);
134
        data.heightHint = 300;
135
        treeComposite.setLayoutData(data);
136
        treeComposite.getViewer().addSelectionChangedListener(this);
137

    
138
        return container;
139

    
140
    }
141

    
142
    protected abstract String getCheckedValuesFromPreferences();
143

    
144
    protected void rememberCheckedValues(String checkedValues) {
145
        initialiseVocabularies();
146

    
147
        treeComposite.getViewer().setInput(getVocabularies());
148

    
149
        if (checkedValues != null && checkedValues != "") { //$NON-NLS-1$
150
            String[] listChecked = checkedValues.split(";"); //$NON-NLS-1$
151
            String[] listCheckedComma = checkedValues.split(","); //$NON-NLS-1$
152
            List<String> checked = new ArrayList<>();
153
            if (listChecked != null ){
154
                checked = Arrays.asList(listChecked);
155
            }
156
            if (listCheckedComma != null && checkedValues.contains(",")){ //$NON-NLS-1$
157
                checked = Arrays.asList(listCheckedComma);
158
            }
159
            List<AbstractTermDto> termsFromStringValues = getTermsFromStringValues(checked);
160
            treeComposite.setCheckedElements(termsFromStringValues.toArray());
161

    
162
        }else{
163
            List<AbstractTermDto> termsFromStringValues = getTermsFromStringValues(new ArrayList<String>());
164
            treeComposite.setCheckedElements(termsFromStringValues.toArray());
165
        }
166
    }
167

    
168
    protected List<AbstractTermDto> getTermsFromStringValues(List<String> listValue) {
169
        List<AbstractTermDto> termlist = new ArrayList<>();
170
        ITermService termService = CdmStore.getService(ITermService.class);
171
        for (String s : listValue) {
172
            if (!StringUtils.isBlank(s)){
173
                UUID uuid = UUID.fromString(s);
174

    
175
                DefinedTermBase definedTermBase = termService.load(uuid);
176
                if(definedTermBase != null){
177
                    termlist.add(TermDto.fromTerm(definedTermBase, true));
178
                }else{
179
                    IVocabularyService vocabularyService = CdmStore.getService(IVocabularyService.class);
180
                    TermVocabulary termVocabulary = vocabularyService.load(uuid);
181
                    if (termVocabulary != null){
182
                        termlist.add(new TermVocabularyDto(uuid, termVocabulary.getRepresentations(), termVocabulary.getTermType()));
183
                    }
184
                }
185
            }
186
        }
187
//        if (listValue.isEmpty()){
188
//            List<DefinedTermBase> terms = CdmStore.getTermManager().getPreferredTerms(type);
189
//            for (DefinedTermBase term: terms){
190
//                termlist.add(TermDto.fromTerm(term, true));
191
//            }
192
//        }
193

    
194
        return termlist;
195
    }
196

    
197
    protected void initialiseVocabularies() {
198
        if (getVocabularies() != null) {
199
            getVocabularies().clear();
200
        }
201
        List<TermVocabularyDto> vocs = new ArrayList<>();
202
        vocs = CdmStore.getService(IVocabularyService.class).findVocabularyDtoByTermType(type);
203

    
204
        setVocabularies(vocs);
205
    }
206

    
207
    protected abstract List<TermVocabularyDto> getVocabulariesFromPreference();
208

    
209
    protected abstract void getPreferenceValues();
210

    
211
    /**
212
     * {@inheritDoc}
213
     */
214
    @Override
215
    public void selectionChanged(SelectionChangedEvent event) {
216
        this.setApply(true);
217
    }
218

    
219
    /**
220
     * {@inheritDoc}
221
     */
222
    @Override
223
    public void widgetSelected(SelectionEvent e) {
224
        this.setApply(true);
225
    }
226

    
227
    /**
228
     * {@inheritDoc}
229
     */
230
    @Override
231
    public void widgetDefaultSelected(SelectionEvent e) {
232
        // TODO Auto-generated method stub
233

    
234
    }
235
}
(13-13/44)