Project

General

Profile

Download (6.75 KB) Statistics
| Branch: | Tag: | Revision:
1
/**
2
* Copyright (C) 2020 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 org.eclipse.swt.SWT;
12
import org.eclipse.swt.events.SelectionAdapter;
13
import org.eclipse.swt.events.SelectionEvent;
14
import org.eclipse.swt.events.SelectionListener;
15
import org.eclipse.swt.layout.GridData;
16
import org.eclipse.swt.widgets.Button;
17
import org.eclipse.swt.widgets.Combo;
18
import org.eclipse.swt.widgets.Composite;
19
import org.eclipse.swt.widgets.Control;
20
import org.eclipse.swt.widgets.Label;
21

    
22
import eu.etaxonomy.cdm.model.metadata.CdmPreference;
23
import eu.etaxonomy.cdm.model.metadata.CdmPreference.PrefKey;
24
import eu.etaxonomy.cdm.model.metadata.PreferencePredicate;
25
import eu.etaxonomy.cdm.model.metadata.PreferenceSubject;
26
import eu.etaxonomy.taxeditor.l10n.Messages;
27
import eu.etaxonomy.taxeditor.preference.menu.CdmPreferencePage;
28

    
29
/**
30
 * @author k.luther
31
 * @since 11.02.2020
32
 */
33
public class IOPreferences extends CdmPreferencePage implements SelectionListener {
34

    
35
    protected Boolean isShowIOMenu;
36
    protected CdmPreference showIOMenuPref;
37
    protected boolean isAllowOverrideShowIOMenu;
38
    protected boolean isOverrideShowIOMenu;
39

    
40
    protected Combo showIOMenuButton;
41
    protected Button allowOverrideShowIOMenuButton;
42

    
43
    @Override
44
    protected Control createContents(Composite parent) {
45
        getValues();
46
        final Composite composite = createComposite(parent);
47

    
48
        GridData gridData = createTextGridData();
49
        if (!isAdminPreference && showIOMenuPref != null && !showIOMenuPref.isAllowOverride() ) {
50
            Label label = new Label(composite, SWT.NONE);
51
            label.setText(
52
                    "The CDM settings don't allow to set the preferences for using the distribution editor locally. If you need to make local settings, please ask an administrator.");
53
            this.setDefaultButtonActivated(false);
54
        } else {
55
            Label separator= new Label(composite, SWT.HORIZONTAL | SWT.SEPARATOR);
56
            separator.setLayoutData(gridData);
57
            separator.setVisible(false);
58
            showIOMenuButton = createBooleanCombo(composite, SHOW, DO_NOT_SHOW, PreferencePredicate.ShowImportExportMenu, "Show Export/Import Menu",
59
                    isAdminPreference);
60

    
61
            int index = 0;
62
            for (String itemLabel : showIOMenuButton.getItems()) {
63
                if (isShowIOMenu == null && itemLabel.startsWith(Messages.Preference_Use_Default)) {
64
                    showIOMenuButton.select(index);
65
                    break;
66
                }
67
                if (isShowIOMenu != null && itemLabel.equals(SHOW) && isShowIOMenu){
68
                    showIOMenuButton.select(index);
69
                    break;
70
                }
71
                if (isShowIOMenu != null && itemLabel.equals(DO_NOT_SHOW) && !isShowIOMenu){
72
                    showIOMenuButton.select(index);
73
                    break;
74
                }
75
                index++;
76
            }
77

    
78
            showIOMenuButton.addSelectionListener(this);
79

    
80

    
81
            if (isAdminPreference){
82
                allowOverrideShowIOMenuButton = createAllowOverrideButton(composite);
83
                allowOverrideShowIOMenuButton.addSelectionListener(new SelectionAdapter(){
84
                    @Override
85
                    public void widgetSelected(SelectionEvent e) {
86
                        isAllowOverrideShowIOMenu = allowOverrideShowIOMenuButton.getSelection();
87
                        setApply(true);
88
                    }
89
                });
90
                allowOverrideShowIOMenuButton.setSelection(isAllowOverrideShowIOMenu);
91

    
92
            }
93
            if(!isAdminPreference){
94
                if (!isAllowOverrideShowIOMenu){
95
                    showIOMenuButton.setEnabled(false);
96
                }
97
            }
98
        }
99
        return composite;
100

    
101
    }
102

    
103
    @Override
104
    public boolean performOk() {
105
        if (!isApply()){
106
            return true;
107
        }
108

    
109
        if (isAllowOverrideShowIOMenu){
110
            if (isShowIOMenu != null){
111
                PreferencesUtil.setBooleanValue(PreferencePredicate.ShowImportExportMenu.getKey(), isShowIOMenu);
112
            }
113
            PreferencesUtil.setBooleanValue(PreferencesUtil.prefOverrideKey(PreferencePredicate.ShowImportExportMenu.getKey()), isOverrideShowIOMenu);
114
        }
115

    
116

    
117

    
118
       return true;
119
   }
120

    
121
    @Override
122
    protected void getValues(){
123
        isAdminPreference = false;
124

    
125
        CdmPreferenceCache cache = CdmPreferenceCache.instance();
126
        isOverrideShowIOMenu = PreferencesUtil.getBooleanValue(PreferencesUtil.prefOverrideKey(PreferencePredicate.ShowImportExportMenu.getKey()), true) != null?
127
                PreferencesUtil.getBooleanValue(PreferencesUtil.prefOverrideKey(PreferencePredicate.ShowImportExportMenu.getKey()), true): false;
128
        if (isOverrideShowIOMenu){
129
            isShowIOMenu = PreferencesUtil.getBooleanValue(PreferencePredicate.ShowImportExportMenu.getKey(), true);
130
        }
131

    
132

    
133
        PrefKey key = CdmPreference.NewKey(PreferenceSubject.NewTaxEditorInstance(), PreferencePredicate.ShowImportExportMenu);
134
        showIOMenuPref = cache.findBestMatching(key);
135
        if (showIOMenuPref != null){
136
            isAllowOverrideShowIOMenu = showIOMenuPref.isAllowOverride();
137
        }else{
138
            isAllowOverrideShowIOMenu = true;
139
        }
140
    }
141

    
142

    
143
    @Override
144
    public void widgetSelected(SelectionEvent e) {
145
        setApply(true);
146
        if (e.getSource().equals(this.showIOMenuButton)) {
147
            String text = showIOMenuButton.getText();
148
            if (text.startsWith(Messages.Preference_Use_Default)){
149
                isOverrideShowIOMenu = false;
150
                isShowIOMenu = null;
151

    
152
            }else if (text.equals(SHOW)){
153
                isShowIOMenu = true;
154
                isOverrideShowIOMenu = true;
155

    
156
            }else{
157
                isShowIOMenu = false;
158
                isOverrideShowIOMenu = true;
159
            }
160
        }
161
    }
162

    
163
    @Override
164
    protected void performDefaults() {
165
        isOverrideShowIOMenu = false;
166
        isShowIOMenu = null;
167
        setSelections();
168
        setApply(true);
169
    }
170

    
171
    protected void setSelections(){
172
        if (isShowIOMenu == null || (!isOverrideShowIOMenu && !isAdminPreference)){
173
            showIOMenuButton.select(0);
174
        }else{
175
            if (isShowIOMenu){
176
                showIOMenuButton.select(1);
177
            }else{
178
                showIOMenuButton.select(2);
179
            }
180
        }
181
        if (isAdminPreference){
182
            allowOverrideShowIOMenuButton.setSelection(isAllowOverrideShowIOMenu);
183
        }
184
    }
185

    
186
    @Override
187
    public void widgetDefaultSelected(SelectionEvent e) {
188
        // TODO Auto-generated method stub
189

    
190
    }
191

    
192
}
(24-24/62)