ref #8045: show possible entries for preferences in combo boxes and show default...
[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.apache.commons.lang.StringUtils;
4 import org.eclipse.jface.dialogs.MessageDialog;
5 import org.eclipse.swt.SWT;
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.layout.GridLayout;
11 import org.eclipse.swt.widgets.Button;
12 import org.eclipse.swt.widgets.Combo;
13 import org.eclipse.swt.widgets.Composite;
14 import org.eclipse.swt.widgets.Control;
15 import org.eclipse.swt.widgets.Label;
16
17 import eu.etaxonomy.cdm.model.metadata.PreferencePredicate;
18 import eu.etaxonomy.taxeditor.l10n.Messages;
19 import eu.etaxonomy.taxeditor.preference.menu.CdmPreferencePage;
20
21 public class OrderPreferences extends CdmPreferencePage implements SelectionListener{
22
23
24 NavigatorOrderEnum orderActivated;
25 private Combo orderSelectionCombo;
26 boolean isRestoreTaxonNavigator;
27 boolean isSelectionChanged = false;
28 boolean isStrictlyAlphabeticallyOrdered;
29 Button activateRestoreNavigatorButton;
30
31 @Override
32 protected Control createContents(Composite parent) {
33
34 isRestoreTaxonNavigator = PreferencesUtil.isStoreNavigatorState();
35
36 Composite secondComposite = new Composite(parent, SWT.NULL);
37 secondComposite.setLayout(new GridLayout());
38
39 activateRestoreNavigatorButton = new Button(secondComposite, SWT.CHECK | SWT.LEFT);
40 activateRestoreNavigatorButton.setText(Messages.OrderPreferences_Restore);
41 activateRestoreNavigatorButton.setSelection(isRestoreTaxonNavigator);
42 activateRestoreNavigatorButton.addSelectionListener(new SelectionAdapter(){
43 @Override
44 public void widgetSelected(SelectionEvent e) {
45 setApply(true);
46 if(isRestoreTaxonNavigator != activateRestoreNavigatorButton.getSelection()) {
47 isRestoreTaxonNavigator = activateRestoreNavigatorButton.getSelection();
48
49 }
50 }
51
52 });
53
54
55 Composite composite = new Composite(parent, SWT.NULL);
56 composite.setLayout(new GridLayout());
57
58 Label label = new Label(composite, SWT.NONE);
59 label.setText(Messages.OrderPreferences_Sorting);
60
61 GridData gridData = new GridData();
62 gridData = new GridData(GridData.BEGINNING, GridData.CENTER, true, false);
63 gridData.horizontalIndent = 5;
64
65 orderSelectionCombo = new Combo(composite, SWT.BORDER| SWT.READ_ONLY);
66 orderSelectionCombo.setLayoutData(gridData);
67
68 for(NavigatorOrderEnum display: NavigatorOrderEnum.values()){
69 orderSelectionCombo.add(display.getLabel());
70 }
71
72 int index = 0;
73
74 if (!StringUtils.isBlank(PreferencesUtil.getStringValue(PreferencePredicate.TaxonNodeOrder.getKey()))){
75 this.orderActivated = NavigatorOrderEnum.valueOf(PreferencesUtil.getStringValue(PreferencePredicate.TaxonNodeOrder.getKey()));
76
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 // TODO remember last selection
87 orderSelectionCombo.addSelectionListener(this);
88
89 final Label description = new Label(parent, SWT.NONE);
90 description.setText(Messages.OrderPreferencePage_NewNavigatorWindowRequired);
91
92 return composite;
93 }
94
95
96 @Override
97 public boolean performOk() {
98 if (this.orderActivated != null){
99 PreferencesUtil.setSortNodes(this.orderActivated);
100 PreferencesUtil.setStoreNavigatorState(isRestoreTaxonNavigator);
101 MessageDialog.openInformation(getShell(), null, Messages.OrderPreferencePage_PleaseReopenNavigator);
102 }
103 return super.performOk();
104
105 }
106
107
108 /**
109 * {@inheritDoc}
110 */
111 @Override
112 public void widgetSelected(SelectionEvent e) {
113 setApply(true);
114 isSelectionChanged = true;
115 for (NavigatorOrderEnum item : NavigatorOrderEnum.values()){
116 if (item.getLabel().equalsIgnoreCase(orderSelectionCombo.getText())){
117 this.orderActivated = item;
118 }
119 }
120 }
121
122
123 /**
124 * {@inheritDoc}
125 */
126 @Override
127 public void widgetDefaultSelected(SelectionEvent e) {
128 // TODO Auto-generated method stub
129
130 }
131
132 @Override
133 protected void performDefaults() {
134 activateRestoreNavigatorButton.setSelection(false);
135 isRestoreTaxonNavigator = false;
136 orderActivated = NavigatorOrderEnum.RankAndNameOrder;
137 int index = 0;
138 for (String itemLabel : orderSelectionCombo.getItems()){
139 if (itemLabel.equalsIgnoreCase(orderActivated.getLabel())){
140 orderSelectionCombo.select(index);
141 break;
142 }
143 index++;
144 }
145 super.performDefaults();
146 }
147
148
149 }