Merge branch 'release/5.19.0'
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / preference / OrderPreferences.java
1 package eu.etaxonomy.taxeditor.preference;
2
3 import org.eclipse.jface.dialogs.MessageDialog;
4 import org.eclipse.swt.SWT;
5 import org.eclipse.swt.custom.CLabel;
6 import org.eclipse.swt.events.SelectionAdapter;
7 import org.eclipse.swt.events.SelectionEvent;
8 import org.eclipse.swt.events.SelectionListener;
9 import org.eclipse.swt.layout.GridData;
10 import org.eclipse.swt.widgets.Button;
11 import org.eclipse.swt.widgets.Combo;
12 import org.eclipse.swt.widgets.Composite;
13 import org.eclipse.swt.widgets.Control;
14
15 import eu.etaxonomy.cdm.model.metadata.CdmPreference;
16 import eu.etaxonomy.cdm.model.metadata.PreferencePredicate;
17 import eu.etaxonomy.taxeditor.l10n.Messages;
18 import eu.etaxonomy.taxeditor.preference.menu.CdmPreferencePage;
19
20 public class OrderPreferences extends CdmPreferencePage implements SelectionListener{
21
22
23 protected NavigatorOrderEnum orderActivated;
24 private Combo orderSelectionCombo;
25 boolean isRestoreTaxonNavigator;
26
27
28 Button activateRestoreNavigatorButton;
29 protected Button allowOverrideButton;
30 protected CdmPreference orderPref;
31 protected CdmPreference nodePref;
32 boolean override = false;
33 protected boolean allowOverride;
34
35 protected Combo showTaxonNodeWizardButton;
36 protected Button allowOverrideShowTaxonNodeWizardButton;
37 protected boolean isOverrideShowTaxonNodeWizard;
38 protected boolean isAllowOverrideShowTaxonNodeWizard;
39 protected Boolean isShowTaxonNodeWizard;
40
41
42
43 @Override
44 protected Control createContents(Composite parent) {
45
46 isRestoreTaxonNavigator = PreferencesUtil.isStoreNavigatorState();
47 getValues();
48 Composite secondComposite = createComposite(parent);
49
50 if(!isAdminPreference) {
51 activateRestoreNavigatorButton = new Button(secondComposite, SWT.CHECK | SWT.LEFT);
52 activateRestoreNavigatorButton.setText(Messages.OrderPreferences_Restore);
53 activateRestoreNavigatorButton.setSelection(isRestoreTaxonNavigator);
54 activateRestoreNavigatorButton.addSelectionListener(new SelectionAdapter(){
55 @Override
56 public void widgetSelected(SelectionEvent e) {
57 setApply(true);
58 if(isRestoreTaxonNavigator != activateRestoreNavigatorButton.getSelection()) {
59 isRestoreTaxonNavigator = activateRestoreNavigatorButton.getSelection();
60
61 }
62 }
63
64 });
65 }
66
67 orderSelectionCombo = createCombo(secondComposite, NavigatorOrderEnum.values(), PreferencePredicate.TaxonNodeOrder, Messages.OrderPreferences_Sorting, isAdminPreference);
68
69 int index = 0;
70
71 if (orderActivated == null){
72 orderSelectionCombo.select(index);
73 }else{
74 for (String itemLabel : orderSelectionCombo.getItems()){
75 if (itemLabel.equalsIgnoreCase(orderActivated.getLabel())){
76 orderSelectionCombo.select(index);
77 break;
78 }
79 index++;
80 }
81 }
82
83
84 orderSelectionCombo.addSelectionListener(this);
85 if (isAdminPreference){
86 allowOverrideButton = createAllowOverrideButton(secondComposite);
87 allowOverrideButton.setSelection(allowOverride);
88 allowOverrideButton.addSelectionListener(new SelectionAdapter(){
89 @Override
90 public void widgetSelected(SelectionEvent e) {
91 allowOverride = !allowOverride;
92 setApply(true);
93 }
94 });
95 }
96
97 if (orderPref != null && !isAdminPreference){
98 if (!orderPref.isAllowOverride()){
99 orderSelectionCombo.setEnabled(false);
100 final CLabel description = new CLabel(secondComposite, SWT.NULL);
101 description.setText(Messages.OrderPreferencePage_NotAllowed);
102 GridData textGrid = createTextGridData();
103 textGrid.verticalSpan = 2;
104 description.setLayoutData(textGrid);
105 }
106 }
107
108 showTaxonNodeWizardButton = createBooleanCombo(secondComposite, SHOW, DO_NOT_SHOW, PreferencePredicate.ShowTaxonNodeWizard, "Show Taxonnode Wizard",
109 isAdminPreference);
110 showTaxonNodeWizardButton.setText(Messages.DatabasePreferncesPage_Show_TaxonNodeWizard);
111 showTaxonNodeWizardButton.addSelectionListener(this);
112
113
114 if (isAdminPreference){
115 allowOverrideShowTaxonNodeWizardButton = createAllowOverrideButton(secondComposite);
116 allowOverrideShowTaxonNodeWizardButton.addSelectionListener(new SelectionAdapter(){
117 @Override
118 public void widgetSelected(SelectionEvent e) {
119 isAllowOverrideShowTaxonNodeWizard = allowOverrideShowTaxonNodeWizardButton.getSelection();
120 setApply(true);
121 }
122 });
123 allowOverrideShowTaxonNodeWizardButton.setSelection(isAllowOverrideShowTaxonNodeWizard);
124 }else{
125 if (!isAllowOverrideShowTaxonNodeWizard){
126 showTaxonNodeWizardButton.setEnabled(false);
127
128 }
129 }
130
131 if (isShowTaxonNodeWizard == null || (!isOverrideShowTaxonNodeWizard && !isAdminPreference)){
132 showTaxonNodeWizardButton.select(0);
133 }else{
134 if (isShowTaxonNodeWizard){
135 showTaxonNodeWizardButton.select(1);
136 }else{
137 showTaxonNodeWizardButton.select(2);
138 }
139 }
140
141 return secondComposite;
142 }
143
144
145 @Override
146 public boolean performOk() {
147 if (isApply()){
148 PreferencesUtil.setSortNodes(this.orderActivated);
149 if (orderActivated != null){
150 PreferencesUtil.setBooleanValue(PreferencesUtil.createOverridePreferenceString(PreferencePredicate.TaxonNodeOrder.getKey()), true);
151 }else{
152 PreferencesUtil.setBooleanValue(PreferencesUtil.createOverridePreferenceString(PreferencePredicate.TaxonNodeOrder.getKey()), false);
153 }
154 PreferencesUtil.setStoreNavigatorState(isRestoreTaxonNavigator);
155
156
157 if (isAllowOverrideShowTaxonNodeWizard){
158 if (isShowTaxonNodeWizard != null){
159 PreferencesUtil.setBooleanValue(PreferencePredicate.ShowTaxonNodeWizard.getKey(), isShowTaxonNodeWizard);
160 }
161 PreferencesUtil.setBooleanValue(PreferencesUtil.prefOverrideKey(PreferencePredicate.ShowTaxonNodeWizard.getKey()), isOverrideShowTaxonNodeWizard);
162 }
163
164 }
165 return true;
166
167 }
168
169
170 /**
171 * {@inheritDoc}
172 */
173 @Override
174 public void widgetSelected(SelectionEvent e) {
175 setApply(true);
176 if (e.getSource().equals(orderSelectionCombo)){
177 for (NavigatorOrderEnum item : NavigatorOrderEnum.values()){
178 if (!orderSelectionCombo.getText().startsWith(Messages.Preference_Use_Default)){
179 orderActivated = (NavigatorOrderEnum)orderSelectionCombo.getData(orderSelectionCombo.getText());
180 }else{
181 orderActivated = null;
182 }
183
184 }
185 MessageDialog.openInformation(getShell(), null, Messages.OrderPreferencePage_PleaseReopenNavigator);
186 }
187 if (e.getSource().equals(this.showTaxonNodeWizardButton)) {
188 String text = showTaxonNodeWizardButton.getText();
189 if (text.startsWith(Messages.Preference_Use_Default)){
190 isOverrideShowTaxonNodeWizard = false;
191 isShowTaxonNodeWizard = null;
192
193 }else if (text.equals(SHOW)){
194 isShowTaxonNodeWizard = true;
195 isOverrideShowTaxonNodeWizard = true;
196 }else{
197 isShowTaxonNodeWizard = false;
198 isOverrideShowTaxonNodeWizard = true;
199 }
200
201 }
202 }
203
204
205 /**
206 * {@inheritDoc}
207 */
208 @Override
209 public void widgetDefaultSelected(SelectionEvent e) {
210 // TODO Auto-generated method stub
211
212 }
213
214 @Override
215 protected void performDefaults() {
216 if (!isAdminPreference) {
217 activateRestoreNavigatorButton.setSelection(false);
218 }
219
220 isRestoreTaxonNavigator = false;
221 orderActivated = null;
222
223 orderSelectionCombo.select(0);
224 isOverrideShowTaxonNodeWizard = false;
225 isShowTaxonNodeWizard = null;
226 showTaxonNodeWizardButton.select(0);
227
228 super.performDefaults();
229 }
230
231 @Override
232 protected void getValues(){
233 orderPref = PreferencesUtil.getPreferenceFromDB(PreferencePredicate.TaxonNodeOrder);
234 override = PreferencesUtil.getOverrideForPreference(PreferencePredicate.TaxonNodeOrder.getKey());
235 allowOverride = orderPref != null? orderPref.isAllowOverride():true;
236 if (orderPref == null || allowOverride ){
237 if (override){
238 orderActivated = NavigatorOrderEnum.valueOf(PreferencesUtil.getStringValue(PreferencePredicate.TaxonNodeOrder.getKey()));
239 }
240 }else{
241 orderActivated = orderPref.getValue()!= null? NavigatorOrderEnum.valueOf(orderPref.getValue()):null;
242 }
243
244 isOverrideShowTaxonNodeWizard = PreferencesUtil.getBooleanValue(PreferencesUtil.prefOverrideKey(PreferencePredicate.ShowTaxonNodeWizard.getKey()), true) != null? PreferencesUtil.getBooleanValue(PreferencesUtil.prefOverrideKey(PreferencePredicate.ShowTaxonNodeWizard.getKey()), true): false;
245 if (isOverrideShowTaxonNodeWizard){
246 isShowTaxonNodeWizard = PreferencesUtil.getBooleanValue(PreferencePredicate.ShowTaxonNodeWizard.getKey(), true);
247 }
248
249
250 nodePref = PreferencesUtil.getPreferenceFromDB(PreferencePredicate.ShowTaxonNodeWizard);
251 if (nodePref != null){
252 isAllowOverrideShowTaxonNodeWizard = nodePref.isAllowOverride();
253 }else{
254 isAllowOverrideShowTaxonNodeWizard = true;
255 }
256
257 }
258
259 }