ref #8294: add preference page for id in namespace and namespace in source
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / preference / SupplementalDataPreferences.java
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 SupplementalDataPreferences extends CdmPreferencePage implements SelectionListener{
35
36
37 protected Boolean isShowIDNamspace;
38 protected Boolean isShowNamespace;
39
40 protected boolean isAllowOverrideShowIDNamspace;
41 protected boolean isAllowOverrideShowNamspace;
42
43 protected boolean isOverrideShowIDNamspace;
44 protected boolean isOverrideShowNamspace;
45
46
47 protected Combo showIDNamspaceButton;
48 protected Button allowOverrideShowIDNamspaceButton;
49 protected Combo showNamspaceButton;
50 protected Button allowOverrideNamspaceButton;
51
52 final String SHOW = Messages.GeneralPreference_yes;
53 final String DO_NOT_SHOW = Messages.GeneralPreference_no;
54 /**
55 * {@inheritDoc}
56 */
57 @Override
58 protected Control createContents(Composite parent) {
59 getValues();
60 final Composite composite = createComposite(parent);
61
62 GridData gridData = createTextGridData();
63
64 Label separator= new Label(composite, SWT.HORIZONTAL | SWT.SEPARATOR);
65 separator.setLayoutData(gridData);
66 separator.setVisible(false);
67
68 showIDNamspaceButton = createBooleanCombo(composite, SHOW, DO_NOT_SHOW, PreferencePredicate.ShowIdInSource, "Show ID in Namespace in Source",
69 isAdminPreference);
70
71 showIDNamspaceButton.addSelectionListener(this);
72
73 if (isShowIDNamspace == null || (!isOverrideShowIDNamspace && !isAdminPreference)){
74 showIDNamspaceButton.select(0);
75 }else if (isShowIDNamspace){
76 showIDNamspaceButton.select(1);
77 }else{
78 showIDNamspaceButton.select(2);
79 }
80 if (isAdminPreference){
81 allowOverrideShowIDNamspaceButton = createAllowOverrideButton(composite);
82
83 allowOverrideShowIDNamspaceButton.setSelection(isAllowOverrideShowIDNamspace);
84 allowOverrideShowIDNamspaceButton.addSelectionListener(new SelectionAdapter(){
85 @Override
86 public void widgetSelected(SelectionEvent e) {
87 isAllowOverrideShowIDNamspace = allowOverrideShowIDNamspaceButton.getSelection();
88 setApply(true);
89 }
90 });
91 }
92
93
94 showNamspaceButton = createBooleanCombo(composite, SHOW, DO_NOT_SHOW, PreferencePredicate.ShowNamespaceInSource, "Show Namespace in Source",
95 isAdminPreference);
96
97 showNamspaceButton.addSelectionListener(this);
98 if (isShowNamespace == null || (!isOverrideShowNamspace && !isAdminPreference)){
99 showNamspaceButton.select(0);
100 }else if (isShowNamespace){
101 showNamspaceButton.select(1);
102 }else{
103 showNamspaceButton.select(2);
104 }
105
106 if (isAdminPreference){
107 allowOverrideNamspaceButton = createAllowOverrideButton(composite);
108 allowOverrideNamspaceButton.setSelection(isAllowOverrideShowNamspace);
109 allowOverrideNamspaceButton.addSelectionListener(new SelectionAdapter(){
110 @Override
111 public void widgetSelected(SelectionEvent e) {
112 isAllowOverrideShowNamspace = allowOverrideNamspaceButton.getSelection();
113 setApply(true);
114 }
115 });
116 }
117 if (!isAllowOverrideShowIDNamspace && !isAdminPreference){
118 showIDNamspaceButton.setEnabled(false);
119 }
120 if (!isAllowOverrideShowNamspace && !isAdminPreference){
121 showNamspaceButton.setEnabled(false);
122 }
123
124
125 return composite;
126 }
127
128
129
130 @Override
131 public boolean performOk() {
132 if (isAllowOverrideShowIDNamspace){
133 PreferencesUtil.setBooleanValue(PreferencesUtil.prefOverrideKey(PreferencePredicate.ShowIdInSource.getKey()), isOverrideShowIDNamspace);
134 PreferencesUtil.setBooleanValue(PreferencePredicate.ShowIdInSource.getKey(), isShowIDNamspace);
135 }
136 if (isAllowOverrideShowNamspace){
137 PreferencesUtil.setBooleanValue(PreferencePredicate.ShowNamespaceInSource.getKey(), isShowNamespace);
138 PreferencesUtil.setBooleanValue(PreferencesUtil.prefOverrideKey(PreferencePredicate.ShowNamespaceInSource.getKey()), isOverrideShowNamspace);
139 }
140
141
142 return true;
143 }
144 @Override
145 protected void getValues(){
146 isAdminPreference = false;
147
148 CdmPreferenceCache cache = CdmPreferenceCache.instance();
149 isShowIDNamspace = PreferencesUtil.getBooleanValue(PreferencePredicate.ShowIdInSource.getKey(), true);
150 isOverrideShowIDNamspace = PreferencesUtil.getBooleanValue(PreferencesUtil.prefOverrideKey(PreferencePredicate.ShowIdInSource.getKey()), true) != null?PreferencesUtil.getBooleanValue(PreferencesUtil.prefOverrideKey(PreferencePredicate.ShowIdInSource.getKey()), true): false;
151 PrefKey key = CdmPreference.NewKey(PreferenceSubject.NewTaxEditorInstance(), PreferencePredicate.ShowIdInSource);
152 CdmPreference pref = cache.findBestMatching(key);
153 if (pref != null){
154 isAllowOverrideShowIDNamspace = pref.isAllowOverride();
155 }else{
156 isAllowOverrideShowIDNamspace = true;
157 }
158
159 isShowNamespace = PreferencesUtil.getBooleanValue(PreferencePredicate.ShowNamespaceInSource.getKey(), true);
160 isOverrideShowNamspace = PreferencesUtil.getBooleanValue(PreferencesUtil.prefOverrideKey(PreferencePredicate.ShowNamespaceInSource.getKey()), true) != null? PreferencesUtil.getBooleanValue(PreferencesUtil.prefOverrideKey(PreferencePredicate.ShowNamespaceInSource.getKey()), true):false;
161 key = CdmPreference.NewKey(PreferenceSubject.NewTaxEditorInstance(), PreferencePredicate.ShowNamespaceInSource);
162 pref = cache.findBestMatching(key);
163 if (pref != null){
164 isAllowOverrideShowNamspace = pref.isAllowOverride();
165 }else{
166 isAllowOverrideShowNamspace = true;
167 }
168
169
170 }
171
172
173
174 /**
175 * {@inheritDoc}
176 */
177 @Override
178 public void widgetSelected(SelectionEvent e) {
179 if (e.getSource().equals(this.showIDNamspaceButton)) {
180 String text = showIDNamspaceButton.getText();
181 // text = text.replace(Messages.Preference_Use_Default, "");
182 if (text.equals(Messages.Preference_Use_Default)){
183 isOverrideShowIDNamspace = false;
184 }else{
185 isOverrideShowIDNamspace = true;
186 }
187 if (text.equals(SHOW)){
188 isShowIDNamspace = true;
189
190 }else{
191 isShowIDNamspace = false;
192 }
193 }
194 if (e.getSource().equals(this.showNamspaceButton)) {
195 String text = showNamspaceButton.getText();
196 if (text.equals(Messages.Preference_Use_Default)){
197 isOverrideShowNamspace = false;
198 }else{
199 isOverrideShowNamspace = true;
200 }
201 if (text.equals(SHOW)){
202 isShowNamespace = true;
203 }else{
204 isShowNamespace = false;
205 }
206 }
207
208 this.setApply(true);
209
210
211 }
212
213
214
215 /**
216 * {@inheritDoc}
217 */
218 @Override
219 public void widgetDefaultSelected(SelectionEvent e) {
220 // TODO Auto-generated method stub
221
222 }
223
224 }