Project

General

Profile

Download (9.3 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 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 18.01.2019
32
 *
33
 */
34
public class SupplementalDataSourcePreferences extends CdmPreferencePage implements SelectionListener{
35

    
36
    protected Boolean isShowIDNamespace;
37
    protected Boolean isShowIDSource;
38

    
39
    protected boolean isAllowOverrideShowIDNamespace;
40
    protected boolean isAllowOverrideShowIDSource;
41

    
42
    protected boolean isOverrideShowIDNamespace;
43
    protected boolean isOverrideShowIDSource;
44

    
45
    protected Combo showIDNamespaceButton;
46
    protected Button allowOverrideShowIDNamespaceButton;
47
    protected Combo showIDSourceButton;
48
    protected Button allowOverrideIDSourceButton;
49

    
50
    final String SHOW = Messages.GeneralPreference_yes;
51
    final String DO_NOT_SHOW = Messages.GeneralPreference_no;
52

    
53
    @Override
54
    protected Control createContents(Composite parent) {
55
        getValues();
56
        final Composite composite = createComposite(parent);
57

    
58
        GridData gridData = createTextGridData();
59

    
60
        Label separator= new Label(composite, SWT.HORIZONTAL | SWT.SEPARATOR);
61
        separator.setLayoutData(gridData);
62
        separator.setVisible(false);
63

    
64
        showIDSourceButton = createBooleanCombo(composite, SHOW, DO_NOT_SHOW, PreferencePredicate.ShowIdInSource, Messages.SupplementalDataSourcePreferences_SHOW_ID,
65
                isAdminPreference);
66
        showIDSourceButton.addSelectionListener(this);
67
        if (isShowIDSource == null || (!isOverrideShowIDSource && !isAdminPreference)){
68
            showIDSourceButton.select(0);
69
        }else if (isShowIDSource){
70
            showIDSourceButton.select(1);
71
        }else{
72
            showIDSourceButton.select(2);
73
        }
74

    
75
        if (isAdminPreference){
76
            allowOverrideIDSourceButton = createAllowOverrideButton(composite);
77
            allowOverrideIDSourceButton.setSelection(isAllowOverrideShowIDSource);
78
            allowOverrideIDSourceButton.setEnabled(isShowIDSource != null);
79
            allowOverrideIDSourceButton.addSelectionListener(new SelectionAdapter(){
80
                @Override
81
                public void widgetSelected(SelectionEvent e) {
82
                    isAllowOverrideShowIDSource = allowOverrideIDSourceButton.getSelection();
83
                    setApply(true);
84
                }
85
            });
86
        }
87

    
88
        showIDNamespaceButton = createBooleanCombo(composite, SHOW, DO_NOT_SHOW, PreferencePredicate.ShowNamespaceInSource, Messages.SupplementalDataSourcePreferences_SHOW_NAMESPACE,
89
                isAdminPreference);
90

    
91
        showIDNamespaceButton.addSelectionListener(this);
92

    
93
        if (isShowIDNamespace == null || (!isOverrideShowIDNamespace && !isAdminPreference)){
94
            showIDNamespaceButton.select(0);
95
        }else if (isShowIDNamespace){
96
            showIDNamespaceButton.select(1);
97
        }else{
98
            showIDNamespaceButton.select(2);
99
        }
100
        if (isAdminPreference){
101
            allowOverrideShowIDNamespaceButton = createAllowOverrideButton(composite);
102

    
103
            allowOverrideShowIDNamespaceButton.setSelection(isAllowOverrideShowIDNamespace);
104
            allowOverrideShowIDNamespaceButton.setEnabled(isShowIDNamespace != null);
105
            allowOverrideShowIDNamespaceButton.addSelectionListener(new SelectionAdapter(){
106
                @Override
107
                public void widgetSelected(SelectionEvent e) {
108
                    isAllowOverrideShowIDNamespace = allowOverrideShowIDNamespaceButton.getSelection();
109
                    setApply(true);
110
                }
111
            });
112
        }
113

    
114
        if (!isAllowOverrideShowIDNamespace && !isAdminPreference){
115
            showIDNamespaceButton.setEnabled(false);
116
        }
117
        if (!isAllowOverrideShowIDSource && !isAdminPreference){
118
            showIDSourceButton.setEnabled(false);
119
        }
120
        return composite;
121
    }
122

    
123
    @Override
124
    public boolean performOk() {
125
        if (isAllowOverrideShowIDSource){
126
            PreferencesUtil.setBooleanValue(PreferencesUtil.prefOverrideKey(PreferencePredicate.ShowIdInSource.getKey()), isOverrideShowIDSource);
127
            if(isShowIDSource != null){
128
                PreferencesUtil.setBooleanValue(PreferencePredicate.ShowIdInSource.getKey(), isShowIDSource);
129
            }
130
        }
131
        if (isAllowOverrideShowIDNamespace){
132
            PreferencesUtil.setBooleanValue(PreferencesUtil.prefOverrideKey(PreferencePredicate.ShowNamespaceInSource.getKey()), isOverrideShowIDNamespace);
133
            if (isShowIDNamespace != null){
134
                PreferencesUtil.setBooleanValue(PreferencePredicate.ShowNamespaceInSource.getKey(), isShowIDNamespace);
135
            }
136
        }
137
       return true;
138
   }
139
    @Override
140
    protected void getValues(){
141
        isAdminPreference = false;
142

    
143
        CdmPreferenceCache cache = CdmPreferenceCache.instance();
144
        isShowIDSource = PreferencesUtil.getBooleanValue(PreferencePredicate.ShowIdInSource.getKey(), true);
145
        isOverrideShowIDSource = PreferencesUtil.getBooleanValue(PreferencesUtil.prefOverrideKey(PreferencePredicate.ShowIdInSource.getKey()), true) != null?PreferencesUtil.getBooleanValue(PreferencesUtil.prefOverrideKey(PreferencePredicate.ShowIdInSource.getKey()), true): false;
146
        PrefKey key = CdmPreference.NewKey(PreferenceSubject.NewTaxEditorInstance(), PreferencePredicate.ShowIdInSource);
147
        CdmPreference pref = cache.findBestMatching(key);
148
        if (pref != null){
149
            isAllowOverrideShowIDSource = pref.isAllowOverride();
150
        }else{
151
            isAllowOverrideShowIDSource = true;
152
        }
153

    
154
        isShowIDNamespace = PreferencesUtil.getBooleanValue(PreferencePredicate.ShowNamespaceInSource.getKey(), true);
155
        isOverrideShowIDNamespace = PreferencesUtil.getBooleanValue(PreferencesUtil.prefOverrideKey(PreferencePredicate.ShowNamespaceInSource.getKey()), true) != null? PreferencesUtil.getBooleanValue(PreferencesUtil.prefOverrideKey(PreferencePredicate.ShowNamespaceInSource.getKey()), true):false;
156
        key = CdmPreference.NewKey(PreferenceSubject.NewTaxEditorInstance(), PreferencePredicate.ShowNamespaceInSource);
157
        pref = cache.findBestMatching(key);
158
        if (pref != null){
159
            isAllowOverrideShowIDNamespace= pref.isAllowOverride();
160
        }else{
161
            isAllowOverrideShowIDNamespace = true;
162
        }
163
    }
164

    
165
    @Override
166
    public void widgetSelected(SelectionEvent e) {
167
        if (e.getSource().equals(this.showIDNamespaceButton)) {
168
            String text = showIDNamespaceButton.getText();
169
           // text = text.replace(Messages.Preference_Use_Default, "");
170
            if (text.startsWith(Messages.Preference_Use_Default)){
171
                isShowIDNamespace = null;
172
                isOverrideShowIDNamespace = false;
173
            }else{
174
                isOverrideShowIDNamespace = true;
175
                if (text.equals(SHOW)){
176
                    isShowIDNamespace = true;
177

    
178
                }else{
179
                    isShowIDNamespace = false;
180
                }
181
            }
182

    
183
            allowOverrideShowIDNamespaceButton.setEnabled(isShowIDNamespace != null);
184
        }
185
        if (e.getSource().equals(this.showIDSourceButton)) {
186
            String text = showIDSourceButton.getText();
187
            if (text.startsWith(Messages.Preference_Use_Default)){
188
                isShowIDSource = null;
189
                isOverrideShowIDSource = false;
190
            }else{
191
                isOverrideShowIDSource = true;
192
                if (text.equals(SHOW)){
193
                    isShowIDSource = true;
194
                }else{
195
                    isShowIDSource = false;
196
                }
197
            }
198

    
199
            allowOverrideIDSourceButton.setEnabled(isShowIDSource != null);
200
        }
201

    
202
        this.setApply(true);
203
    }
204

    
205
    @Override
206
    public void widgetDefaultSelected(SelectionEvent e) {
207
    }
208

    
209
    @Override
210
    protected void performDefaults() {
211
        showIDNamespaceButton.select(0);
212
        isShowIDNamespace = null;
213
        isAllowOverrideShowIDNamespace=true;
214
        isOverrideShowIDNamespace = false;
215
        isOverrideShowIDSource = false;
216
        if (isAdminPreference){
217
            allowOverrideIDSourceButton.setSelection(true);
218
            allowOverrideShowIDNamespaceButton.setSelection(true);
219
            allowOverrideIDSourceButton.setEnabled(false);
220
            allowOverrideShowIDNamespaceButton.setEnabled(false);
221
        }
222

    
223
        showIDSourceButton.select(0);
224
        isShowIDSource = null;
225
        isAllowOverrideShowIDSource=true;
226
        super.performDefaults();
227
    }
228

    
229

    
230

    
231
}
(45-45/52)