Project

General

Profile

Download (8.13 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.wizard;
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.lang3.StringUtils;
17
import org.eclipse.jface.viewers.ISelectionChangedListener;
18
import org.eclipse.swt.SWT;
19
import org.eclipse.swt.custom.CLabel;
20
import org.eclipse.swt.events.SelectionListener;
21
import org.eclipse.swt.layout.GridData;
22
import org.eclipse.swt.layout.GridLayout;
23
import org.eclipse.swt.widgets.Combo;
24
import org.eclipse.swt.widgets.Composite;
25
import org.eclipse.swt.widgets.Control;
26

    
27
import eu.etaxonomy.cdm.api.service.IVocabularyService;
28
import eu.etaxonomy.cdm.model.metadata.CdmPreference;
29
import eu.etaxonomy.cdm.persistence.dto.TermVocabularyDto;
30
import eu.etaxonomy.taxeditor.editor.definedterm.DefinedTermSorter;
31
import eu.etaxonomy.taxeditor.editor.definedterm.RootElementsOnlyTreeContentProvider;
32
import eu.etaxonomy.taxeditor.editor.definedterm.TermDtoLabelProvider;
33
import eu.etaxonomy.taxeditor.l10n.Messages;
34
import eu.etaxonomy.taxeditor.preference.AbstractGeneralTermPreference;
35
import eu.etaxonomy.taxeditor.preference.LocalOrDefaultEnum;
36
import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
37
import eu.etaxonomy.taxeditor.store.CdmStore;
38

    
39
/**
40
 * @author k.luther
41
 * @since 13.09.2019
42
 */
43
public class GeneralVocabularyPreferencePage extends AbstractGeneralTermPreference<TermVocabularyDto> implements ISelectionChangedListener, SelectionListener{
44

    
45

    
46
    protected List<TermVocabularyDto> getVocabulariesFromPreference() {
47

    
48
        return null;
49
    }
50

    
51
    @Override
52
    protected Control createContents(Composite parent) {
53
        Composite container = new Composite(parent, SWT.NULL);
54
       // getValues();
55
        getPreferenceValues();
56
        if (!isAdminPreference && !allowOverride){
57
            final CLabel description = new CLabel(parent, SWT.NULL);
58
            description.setText(Messages.NameDetailsViewConfiguration_description_not_available);
59
            this.setDefaultButtonActivated(false);
60
            return parent;
61

    
62
        }
63
        final GridLayout gridLayout = new GridLayout();
64
        gridLayout.numColumns = 2;
65
        container.setLayout(gridLayout);
66
        parent.setLayout(new GridLayout());
67
        useLocalOrAdmin = new Combo(parent, SWT.BORDER | SWT.READ_ONLY);
68
        if (!isAdminPreference){
69
            useLocalOrAdmin.add(LocalOrDefaultEnum.Default.getLabel(), 0);
70
            useLocalOrAdmin.add(LocalOrDefaultEnum.Local.getLabel(), 1);
71

    
72
        }else{
73
            useLocalOrAdmin.add(LocalOrDefaultEnum.AllowOverride.getLabel(), 0);
74
            useLocalOrAdmin.add(LocalOrDefaultEnum.Database.getLabel(), 1);
75
        }
76

    
77

    
78
        treeComposite = new CheckBoxTreeComposite(container, new RootElementsOnlyTreeContentProvider(), new TermDtoLabelProvider(), SWT.NONE);
79
        treeComposite.getViewer().setComparator(new DefinedTermSorter());
80
        treeComposite.setAllowTopLevelSelection(true);
81
        rememberCheckedValues(getCheckedValuesFromPreferences());
82

    
83
        if (!isAdminPreference){
84
            if (isOverride){
85
                useLocalOrAdmin.select(1);
86
            }else{
87
                useLocalOrAdmin.select(0);
88
                treeComposite.setEnabled(false);
89
            }
90
        }else{
91
            if (allowOverride){
92
                useLocalOrAdmin.select(0);
93
            }else{
94
                useLocalOrAdmin.select(1);
95
            }
96
        }
97
        useLocalOrAdmin.addSelectionListener(this);
98

    
99
        GridData data = new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1);
100
        data.heightHint = 300;
101
        treeComposite.setLayoutData(data);
102
        treeComposite.getViewer().addSelectionChangedListener(this);
103

    
104
        return container;
105

    
106
    }
107

    
108
    @Override
109
    protected void rememberCheckedValues(String checkedValues) {
110
        initialiseVocabularies();
111
        treeComposite.getViewer().getTree().deselectAll();
112
        treeComposite.getViewer().refresh();
113
        treeComposite.getViewer().setInput(getVocabularies());
114

    
115
        if (checkedValues != null && checkedValues != "") { //$NON-NLS-1$
116
            String[] listChecked = checkedValues.split(";"); //$NON-NLS-1$
117
            String[] listCheckedComma = checkedValues.split(","); //$NON-NLS-1$
118
            List<String> checked = new ArrayList<>();
119
            if (listChecked != null ){
120
                checked = Arrays.asList(listChecked);
121
            }
122
            if (listCheckedComma != null && checkedValues.contains(",")){ //$NON-NLS-1$
123
                checked = Arrays.asList(listCheckedComma);
124
            }
125
            List<TermVocabularyDto> termsFromStringValues = getTermsFromStringValues(checked);
126
            treeComposite.setCheckedElements(termsFromStringValues.toArray());
127

    
128
        }else{
129
            List<TermVocabularyDto> termsFromStringValues = getTermsFromStringValues(new ArrayList<String>());
130
            treeComposite.setCheckedElements(termsFromStringValues.toArray());
131
            treeComposite.getViewer().refresh();
132
            treeComposite.redraw();
133

    
134
        }
135
    }
136

    
137

    
138
    @Override
139
    protected List<TermVocabularyDto> getTermsFromStringValues(List<String> listValue) {
140
        List<TermVocabularyDto> vocList = new ArrayList<>();
141
        List<UUID> uuids = new ArrayList();
142
        IVocabularyService vocService = CdmStore.getService(IVocabularyService.class);
143
        for (String s : listValue) {
144
            if (!StringUtils.isBlank(s)){
145
                UUID uuid = UUID.fromString(s);
146
                uuids.add(uuid);
147
            }
148
        }
149
        vocList = vocService.findVocabularyDtoByVocabularyUuids(uuids);
150

    
151

    
152
        if (listValue.isEmpty()){
153
            vocList =vocService.findVocabularyDtoByTermType(type);
154
        }
155

    
156
        return vocList;
157
    }
158

    
159
    @Override
160
    public boolean performOk() {
161
        if (!isApply()){
162
            return true;
163
        }
164
        Object[] checkedElements = treeComposite.getViewer().getCheckedElements();
165
        List<UUID> listUIIDChecked = new ArrayList<>();
166

    
167
        for (Object o : checkedElements) {
168
            if(o instanceof TermVocabularyDto){
169
                TermVocabularyDto termDto = (TermVocabularyDto) o;
170
                listUIIDChecked.add(termDto.getUuid());
171
             }
172
        }
173
        String saveCheckedElements = StringUtils.join(listUIIDChecked, ";"); //$NON-NLS-1$
174
        if (isAdminPreference){
175
            CdmPreference savePref = CdmPreference.NewTaxEditorInstance(predicate, saveCheckedElements);
176
            String text = this.useLocalOrAdmin.getText();
177
            if (text.equals(LocalOrDefaultEnum.Database.getLabel()) ){
178
                savePref.setAllowOverride(false);
179
            }else if (text.equals(LocalOrDefaultEnum.AllowOverride.getLabel())){
180
                savePref.setAllowOverride(true);
181
            }
182
            PreferencesUtil.setPreferenceToDB(savePref);
183
            PreferencesUtil.updateDBPreferences();
184
        }else{
185
            PreferencesUtil.setStringValue(predicate.getKey(), saveCheckedElements);
186
            String text = this.useLocalOrAdmin.getText();
187
            if (text.equals(LocalOrDefaultEnum.Database.getLabel()) || text.equals(LocalOrDefaultEnum.Default.getLabel())){
188
                PreferencesUtil.setBooleanValue(PreferencesUtil.createOverridePreferenceString(predicate.getKey()), false);
189
            }else if (text.equals(LocalOrDefaultEnum.Local.getLabel())){
190
                PreferencesUtil.setBooleanValue(PreferencesUtil.createOverridePreferenceString(predicate.getKey()), true);
191
            }
192
        }
193

    
194
        PreferencesUtil.firePreferencesChanged(this.getClass());
195
        return true;
196
    }
197

    
198
    @Override
199
    protected void performDefaults(){
200
        if (isAdminPreference){
201
            rememberCheckedValues("");
202
            treeComposite.setEnabled(true);
203
        }else{
204
            isOverride = false;
205
            rememberCheckedValues(getCheckedValuesFromPreferences());
206
            treeComposite.setEnabled(false);
207
        }
208
       pref = null;
209
       useLocalOrAdmin.select(0);
210

    
211
       setApply(true);
212
       super.performDefaults();
213

    
214
    }
215

    
216
}
(15-15/19)