Revision f13ee832
Added by Katja Luther over 2 years ago
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
ref #9340, #9734, #9668: further improvements for configurable sec handling during taxon(base) operations