ref #8489: disable combo for local taxonnode sort preference if not allowed
[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 boolean override = false;
32 protected boolean allowOverride;
33
34
35 @Override
36 protected Control createContents(Composite parent) {
37
38 isRestoreTaxonNavigator = PreferencesUtil.isStoreNavigatorState();
39 getValues();
40 Composite secondComposite = createComposite(parent);
41
42 if(!isAdminPreference) {
43 activateRestoreNavigatorButton = new Button(secondComposite, SWT.CHECK | SWT.LEFT);
44 activateRestoreNavigatorButton.setText(Messages.OrderPreferences_Restore);
45 activateRestoreNavigatorButton.setSelection(isRestoreTaxonNavigator);
46 activateRestoreNavigatorButton.addSelectionListener(new SelectionAdapter(){
47 @Override
48 public void widgetSelected(SelectionEvent e) {
49 setApply(true);
50 if(isRestoreTaxonNavigator != activateRestoreNavigatorButton.getSelection()) {
51 isRestoreTaxonNavigator = activateRestoreNavigatorButton.getSelection();
52
53 }
54 }
55
56 });
57 }
58
59 // Composite composite = new Composite(parent, SWT.NULL);
60 // composite.setLayout(new GridLayout());
61 //
62 // Label label = new Label(composite, SWT.NONE);
63 // label.setText(Messages.OrderPreferences_Sorting);
64
65 // GridData gridData = new GridData();
66 // gridData = new GridData(GridData.BEGINNING, GridData.CENTER, true, false);
67 // gridData.horizontalIndent = 5;
68
69 orderSelectionCombo = createCombo(secondComposite, NavigatorOrderEnum.values(), PreferencePredicate.TaxonNodeOrder, Messages.OrderPreferences_Sorting, isAdminPreference);
70 // orderSelectionCombo.setLayoutData(gridData);
71
72 int index = 0;
73
74 if (orderActivated == null){
75 orderSelectionCombo.select(index);
76 }else{
77 for (String itemLabel : orderSelectionCombo.getItems()){
78 if (itemLabel.equalsIgnoreCase(orderActivated.getLabel())){
79 orderSelectionCombo.select(index);
80 break;
81 }
82 index++;
83 }
84 }
85
86
87 orderSelectionCombo.addSelectionListener(this);
88 if (isAdminPreference){
89 allowOverrideButton = createAllowOverrideButton(secondComposite);
90 allowOverrideButton.setSelection(allowOverride);
91 allowOverrideButton.addSelectionListener(new SelectionAdapter(){
92 @Override
93 public void widgetSelected(SelectionEvent e) {
94 allowOverride = !allowOverride;
95 setApply(true);
96 }
97 });
98 }
99
100 if (orderPref != null && !isAdminPreference){
101 if (!orderPref.isAllowOverride()){
102 orderSelectionCombo.setEnabled(false);
103 final CLabel description = new CLabel(secondComposite, SWT.NULL);
104 description.setText(Messages.OrderPreferencePage_NotAllowed);
105 GridData textGrid = createTextGridData();
106 textGrid.verticalSpan = 2;
107 description.setLayoutData(textGrid);
108 }
109 }
110
111 // final CLabel description = new CLabel(secondComposite, SWT.NULL);
112 // description.setText(Messages.OrderPreferencePage_NewNavigatorWindowRequired);
113 // GridData textGrid = createTextGridData();
114 // textGrid.verticalSpan = 2;
115 // description.setLayoutData(textGrid);
116
117 // final Label description = new Label(secondComposite, SWT.NONE);
118 // description.setText(Messages.OrderPreferencePage_NewNavigatorWindowRequired);
119 // GridData textGrid = createTextGridData();
120 // textGrid.verticalSpan = 2;
121 // description.setLayoutData(textGrid);
122 return secondComposite;
123 }
124
125
126 @Override
127 public boolean performOk() {
128 if (isApply()){
129 PreferencesUtil.setSortNodes(this.orderActivated);
130 if (orderActivated != null){
131 PreferencesUtil.setBooleanValue(PreferencesUtil.createOverridePreferenceString(PreferencePredicate.TaxonNodeOrder.getKey()), true);
132 }else{
133 PreferencesUtil.setBooleanValue(PreferencesUtil.createOverridePreferenceString(PreferencePredicate.TaxonNodeOrder.getKey()), false);
134 }
135 PreferencesUtil.setStoreNavigatorState(isRestoreTaxonNavigator);
136 MessageDialog.openInformation(getShell(), null, Messages.OrderPreferencePage_PleaseReopenNavigator);
137 }
138 return true;
139
140 }
141
142
143 /**
144 * {@inheritDoc}
145 */
146 @Override
147 public void widgetSelected(SelectionEvent e) {
148 setApply(true);
149
150 for (NavigatorOrderEnum item : NavigatorOrderEnum.values()){
151 if (!orderSelectionCombo.getText().startsWith(Messages.Preference_Use_Default)){
152 orderActivated = (NavigatorOrderEnum)orderSelectionCombo.getData(orderSelectionCombo.getText());
153 }else{
154 orderActivated = null;
155 }
156
157 }
158 }
159
160
161 /**
162 * {@inheritDoc}
163 */
164 @Override
165 public void widgetDefaultSelected(SelectionEvent e) {
166 // TODO Auto-generated method stub
167
168 }
169
170 @Override
171 protected void performDefaults() {
172 if (!isAdminPreference) {
173 activateRestoreNavigatorButton.setSelection(false);
174 }
175
176 isRestoreTaxonNavigator = false;
177 orderActivated = null;
178
179 orderSelectionCombo.select(0);
180
181 super.performDefaults();
182 }
183
184 @Override
185 protected void getValues(){
186 orderPref = PreferencesUtil.getPreferenceFromDB(PreferencePredicate.TaxonNodeOrder);
187 override = PreferencesUtil.getBooleanValue(PreferencesUtil.createOverridePreferenceString(PreferencePredicate.TaxonNodeOrder.getKey()));
188 allowOverride = orderPref != null? orderPref.isAllowOverride():true;
189 if (orderPref == null || (allowOverride && override)) {
190 orderActivated = NavigatorOrderEnum.valueOf(PreferencesUtil.getStringValue(PreferencePredicate.TaxonNodeOrder.getKey()));
191 }else{
192 orderActivated = orderPref.getValue()!= null? NavigatorOrderEnum.valueOf(orderPref.getValue()):null;
193 }
194
195 }
196
197 }