Project

General

Profile

« Previous | Next » 

Revision f13ee832

Added by Katja Luther over 2 years ago

ref #9340, #9734, #9668: further improvements for configurable sec handling during taxon(base) operations

View differences:

eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/SecundumReferenceHandling.java
8 8
*/
9 9
package eu.etaxonomy.taxeditor.preference;
10 10

  
11
import org.eclipse.swt.SWT;
12
import org.eclipse.swt.custom.CLabel;
13 11
import org.eclipse.swt.events.SelectionAdapter;
14 12
import org.eclipse.swt.events.SelectionEvent;
15 13
import org.eclipse.swt.events.SelectionListener;
......
23 21
import eu.etaxonomy.cdm.model.metadata.PreferencePredicate;
24 22
import eu.etaxonomy.cdm.model.metadata.PreferenceSubject;
25 23
import eu.etaxonomy.cdm.model.metadata.SecReferenceHandlingEnum;
24
import eu.etaxonomy.cdm.model.metadata.SecReferenceHandlingSwapEnum;
26 25
import eu.etaxonomy.taxeditor.l10n.Messages;
27 26
import eu.etaxonomy.taxeditor.preference.menu.CdmPreferencePage;
28 27

  
......
33 32
public class SecundumReferenceHandling extends CdmPreferencePage {
34 33

  
35 34
    protected SecReferenceHandlingEnum secundumBehaviour;
35
    protected SecReferenceHandlingSwapEnum secundumSwapBehaviour;
36

  
36 37

  
37 38
    protected Combo synonymSecundumBehaviour;
38 39
    protected CdmPreference pref = null;
......
41 42
    protected boolean allowOverride;
42 43
    private boolean override = true;
43 44

  
45
    protected Combo synonymSecundumSwapBehaviour;
46
    protected CdmPreference prefSwap = null;
47
    Button allowOverrideSwapButton;
48

  
49
    protected boolean allowOverrideSwap;
50
    private boolean overrideSwap = true;
51

  
44 52

  
45 53
   @Override
46 54
   public void init() {
47 55
       super.init();
56
       isAdminPreference = false;
48 57

  
49 58

  
50 59
   }
......
56 65
        getValues();
57 66

  
58 67
        Composite composite = createComposite(parent);
59

  
60
        if (!allowOverride && !isAdminPreference){
61
            final CLabel description = new CLabel(composite, SWT.NULL);
62
            description.setText(Messages.PublishFlagPreference_description_not_allowed);
63
            description.setLayoutData(createTextGridData());
64
            return composite;
65
        }
66

  
67 68
        synonymSecundumBehaviour = createCombo(composite, SecReferenceHandlingEnum.values(), PreferencePredicate.DefaultBehaviourForSecundum, Messages.SecundumPreference_description, isAdminPreference);
69

  
68 70
        synonymSecundumBehaviour.addSelectionListener(new SelectionListener() {
69 71

  
70 72
            @Override
......
78 80

  
79 81
            }
80 82

  
83

  
84

  
81 85
            @Override
82 86
            public void widgetDefaultSelected(SelectionEvent e) {
83 87
                // TODO Auto-generated method stub
......
109 113
                    index++;
110 114
                }
111 115
            }
116
            //swap secundum behaviour
117
            synonymSecundumSwapBehaviour = createCombo(composite, SecReferenceHandlingSwapEnum.values(), PreferencePredicate.DefaultBehaviourForSecundumWhenSwap, Messages.SecundumPreferenceSwap_description, isAdminPreference);
118

  
119
            synonymSecundumSwapBehaviour.addSelectionListener(new SelectionListener() {
120

  
121
                @Override
122
                public void widgetSelected(SelectionEvent e) {
123
                    setApply(true);
124
                    if (!synonymSecundumSwapBehaviour.getText().startsWith(Messages.Preference_Use_Default)){
125
                        secundumSwapBehaviour = (SecReferenceHandlingSwapEnum)synonymSecundumSwapBehaviour.getData(synonymSecundumSwapBehaviour.getText());
126
                    }else{
127
                        secundumSwapBehaviour = null;
128
                    }
129

  
130
                }
131

  
132
                @Override
133
                public void widgetDefaultSelected(SelectionEvent e) {
134
                    // TODO Auto-generated method stub
112 135

  
136
                    }
137
                });
138
                if (this.isAdminPreference){
139
                    allowOverrideSwapButton = createAllowOverrideButton(composite);
140
                    allowOverrideSwapButton.setSelection(allowOverrideSwap);
141
                    allowOverrideSwapButton.addSelectionListener(new SelectionAdapter(){
142
                        @Override
143
                        public void widgetSelected(SelectionEvent e) {
144
                            allowOverrideSwap = !allowOverrideSwap;
145
                            setApply(true);
146
                            }
147
                    });
148
                }
149
                index = 0;
150

  
151
                if(secundumSwapBehaviour==null){
152
                    synonymSecundumSwapBehaviour.select(0);
153
                }
154
                else{
155
                    for (String itemLabel : synonymSecundumSwapBehaviour.getItems()){
156
                        if (itemLabel.startsWith(secundumSwapBehaviour.getLabel())){
157
                            synonymSecundumSwapBehaviour.select(index);
158
                            break;
159
                        }
160
                        index++;
161
                    }
162
                }
163
                if (!allowOverride && !isAdminPreference){
164
                    synonymSecundumBehaviour.setEnabled(false);
165
                }
166
                if (!allowOverrideSwap && !isAdminPreference){
167
                    synonymSecundumSwapBehaviour.setEnabled(false);
168
                }
113 169
            return composite;
114 170

  
115 171
        }
......
119 175
        public boolean performOk() {
120 176
            if (isApply()){
121 177
                if (secundumBehaviour != null){
122
                    String text = synonymSecundumBehaviour.getText();
123
                    for (SecReferenceHandlingEnum display: SecReferenceHandlingEnum.values()){
124
                        if (text.startsWith(display.getLabel())){
125
                            text = display.getKey();
126
                            break;
127
                        }
128
                    }
178
                    String text = secundumBehaviour.getKey();
129 179
                    PreferencesUtil.setStringValue(PreferencePredicate.DefaultBehaviourForSecundum.getKey(), text);
130 180
                    if (pref == null || !pref.getValue().equals(text)){
131 181
                        PreferencesUtil.setBooleanValue(PreferencesUtil.prefOverrideKey(PreferencePredicate.DefaultBehaviourForSecundum.getKey()), true);
......
133 183
                }else{
134 184
                    PreferencesUtil.setBooleanValue(PreferencesUtil.prefOverrideKey(PreferencePredicate.DefaultBehaviourForSecundum.getKey()), false);
135 185
                }
186

  
187
                //for swap operations
188
                if (secundumSwapBehaviour != null){
189
                    String text = secundumSwapBehaviour.getKey();
190
                    PreferencesUtil.setStringValue(PreferencePredicate.DefaultBehaviourForSecundumWhenSwap.getKey(), text);
191
                    if (prefSwap == null || !prefSwap.getValue().equals(text)){
192
                        PreferencesUtil.setBooleanValue(PreferencesUtil.prefOverrideKey(PreferencePredicate.DefaultBehaviourForSecundumWhenSwap.getKey()), true);
193
                    }
194
                }else{
195
                    PreferencesUtil.setBooleanValue(PreferencesUtil.prefOverrideKey(PreferencePredicate.DefaultBehaviourForSecundumWhenSwap.getKey()), false);
196
                }
136 197
            }
137 198
            return true;
138 199
        }
......
140 201
        @Override
141 202
        public void getValues(){
142 203
            secundumBehaviour = null;
143
            PrefKey key = CdmPreference.NewKey(PreferenceSubject.NewInstance("/MoveSynToAccepted/"), PreferencePredicate.DefaultBehaviourForSecundum);
204
            PrefKey key = CdmPreference.NewKey(PreferenceSubject.NewInstance("/MoveSynOrAccepted/"), PreferencePredicate.DefaultBehaviourForSecundum);
144 205
            pref = PreferencesUtil.getPreferenceFromDB(key);
145 206
            if (pref == null){
146 207
                pref = CdmPreference.NewInstance(key, PreferencePredicate.DefaultBehaviourForSecundum.getDefaultValue().toString());
147 208
            }
148 209
            allowOverride = pref.isAllowOverride();
149 210
            try{
150
                String secundumString = PreferencesUtil.getStringValue(PreferencePredicate.DefaultBehaviourForSecundum.getKey(), true);
151

  
152
                if (secundumString != null){
153
                    secundumBehaviour = SecReferenceHandlingEnum.valueOf(secundumString);
211
                if (!isAdminPreference && allowOverride){
212
                    String secundumString = PreferencesUtil.getStringValue(PreferencePredicate.DefaultBehaviourForSecundum.getKey(), true);
213
                    if (secundumString != null){
214
                        secundumBehaviour = SecReferenceHandlingEnum.valueOf(secundumString);
215
                    }
216
                }else{
217
                    secundumBehaviour = SecReferenceHandlingEnum.valueOf(pref.getValue());
154 218
                }
219

  
220

  
155 221
            }catch (IllegalArgumentException e){
156
                secundumBehaviour = SecReferenceHandlingEnum.KeepWhenSame;
222
                secundumBehaviour = SecReferenceHandlingEnum.KeepOrWarn;
157 223
            }
158 224
            String prefString = PreferencesUtil.prefOverrideKey(PreferencePredicate.DefaultBehaviourForSecundum.getKey());
159 225
            override = PreferencesUtil.getBooleanValue(PreferencesUtil.prefOverrideKey(PreferencePredicate.DefaultBehaviourForSecundum.getKey()), true);
160
            if (!override){
226
            if (!override && !isAdminPreference){
161 227
                secundumBehaviour = null;
162 228
            }
229

  
230
            //for swap operation
231

  
232
            secundumSwapBehaviour = null;
233
            key = CdmPreference.NewKey(PreferenceSubject.NewInstance("/SwapSynToAccepted/"), PreferencePredicate.DefaultBehaviourForSecundumWhenSwap);
234

  
235
            prefSwap = PreferencesUtil.getPreferenceFromDB(key);
236
            if (prefSwap == null){
237
                prefSwap = CdmPreference.NewInstance(key, PreferencePredicate.DefaultBehaviourForSecundumWhenSwap.getDefaultValue().toString());
238
            }
239
            allowOverrideSwap = prefSwap.isAllowOverride();
240
            try{
241
                if (!isAdminPreference && allowOverrideSwap){
242
                    String secundumString = PreferencesUtil.getStringValue(PreferencePredicate.DefaultBehaviourForSecundumWhenSwap.getKey(), !isAdminPreference);
243

  
244
                    if (secundumString != null){
245
                        secundumSwapBehaviour = SecReferenceHandlingSwapEnum.valueOf(secundumString);
246
                    }
247
                }else{
248
                    secundumSwapBehaviour = SecReferenceHandlingSwapEnum.valueOf(prefSwap.getValue());
249
                }
250

  
251

  
252
            }catch (IllegalArgumentException e){
253
                secundumSwapBehaviour = SecReferenceHandlingSwapEnum.KeepOrWarn;
254
            }
255
            prefString = PreferencesUtil.prefOverrideKey(PreferencePredicate.DefaultBehaviourForSecundumWhenSwap.getKey());
256
            overrideSwap = PreferencesUtil.getBooleanValue(PreferencesUtil.prefOverrideKey(PreferencePredicate.DefaultBehaviourForSecundumWhenSwap.getKey()), true);
257
            if (!overrideSwap){
258
                secundumSwapBehaviour = null;
259
            }
163 260
        }
164 261

  
165 262
        @Override
......
178 275
            if (isAdminPreference){
179 276
                allowOverrideButton.setSelection(allowOverride);
180 277
            }
278

  
279
            //for swap operation
280

  
281
            secundumSwapBehaviour = null;
282
            allowOverrideSwap = true;
283
            index = 0;
284

  
285
            for (String itemLabel : synonymSecundumSwapBehaviour.getItems()){
286
                if (itemLabel.startsWith(Messages.Preference_Use_Default)){
287
                    synonymSecundumSwapBehaviour.select(index);
288
                    break;
289
                }
290
                index++;
291
            }
292
            if (isAdminPreference){
293
                allowOverrideSwapButton.setSelection(allowOverrideSwap);
294
            }
295

  
181 296
            setApply(true);
182 297
            super.performDefaults();
183 298
        }

Also available in: Unified diff