1 package eu
.etaxonomy
.taxeditor
.preference
;
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
;
17 import eu
.etaxonomy
.cdm
.model
.metadata
.PreferencePredicate
;
18 import eu
.etaxonomy
.taxeditor
.l10n
.Messages
;
19 import eu
.etaxonomy
.taxeditor
.preference
.menu
.CdmPreferencePage
;
21 public class OrderPreferences
extends CdmPreferencePage
implements SelectionListener
{
24 NavigatorOrderEnum orderActivated
;
25 private Combo orderSelectionCombo
;
26 boolean isRestoreTaxonNavigator
;
27 boolean isSelectionChanged
= false;
28 boolean isStrictlyAlphabeticallyOrdered
;
29 Button activateRestoreNavigatorButton
;
32 protected Control
createContents(Composite parent
) {
34 isRestoreTaxonNavigator
= PreferencesUtil
.isStoreNavigatorState();
36 Composite secondComposite
= new Composite(parent
, SWT
.NULL
);
37 secondComposite
.setLayout(new GridLayout());
39 activateRestoreNavigatorButton
= new Button(secondComposite
, SWT
.CHECK
| SWT
.LEFT
);
40 activateRestoreNavigatorButton
.setText(Messages
.OrderPreferences_Restore
);
41 activateRestoreNavigatorButton
.setSelection(isRestoreTaxonNavigator
);
42 activateRestoreNavigatorButton
.addSelectionListener(new SelectionAdapter(){
44 public void widgetSelected(SelectionEvent e
) {
46 if(isRestoreTaxonNavigator
!= activateRestoreNavigatorButton
.getSelection()) {
47 isRestoreTaxonNavigator
= activateRestoreNavigatorButton
.getSelection();
55 Composite composite
= new Composite(parent
, SWT
.NULL
);
56 composite
.setLayout(new GridLayout());
58 Label label
= new Label(composite
, SWT
.NONE
);
59 label
.setText(Messages
.OrderPreferences_Sorting
);
61 GridData gridData
= new GridData();
62 gridData
= new GridData(GridData
.BEGINNING
, GridData
.CENTER
, true, false);
63 gridData
.horizontalIndent
= 5;
65 orderSelectionCombo
= new Combo(composite
, SWT
.BORDER
| SWT
.READ_ONLY
);
66 orderSelectionCombo
.setLayoutData(gridData
);
68 for(NavigatorOrderEnum display
: NavigatorOrderEnum
.values()){
69 orderSelectionCombo
.add(display
.getLabel());
74 if (!StringUtils
.isBlank(PreferencesUtil
.getStringValue(PreferencePredicate
.TaxonNodeOrder
.getKey()))){
75 this.orderActivated
= NavigatorOrderEnum
.valueOf(PreferencesUtil
.getStringValue(PreferencePredicate
.TaxonNodeOrder
.getKey()));
77 for (String itemLabel
: orderSelectionCombo
.getItems()){
78 if (itemLabel
.equalsIgnoreCase(orderActivated
.getLabel())){
79 orderSelectionCombo
.select(index
);
86 // TODO remember last selection
87 orderSelectionCombo
.addSelectionListener(this);
89 final Label description
= new Label(parent
, SWT
.NONE
);
90 description
.setText(Messages
.OrderPreferencePage_NewNavigatorWindowRequired
);
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
);
103 return super.performOk();
112 public void widgetSelected(SelectionEvent e
) {
114 isSelectionChanged
= true;
115 for (NavigatorOrderEnum item
: NavigatorOrderEnum
.values()){
116 if (item
.getLabel().equalsIgnoreCase(orderSelectionCombo
.getText())){
117 this.orderActivated
= item
;
127 public void widgetDefaultSelected(SelectionEvent e
) {
128 // TODO Auto-generated method stub
133 protected void performDefaults() {
134 activateRestoreNavigatorButton
.setSelection(false);
135 isRestoreTaxonNavigator
= false;
136 orderActivated
= NavigatorOrderEnum
.RankAndNameOrder
;
138 for (String itemLabel
: orderSelectionCombo
.getItems()){
139 if (itemLabel
.equalsIgnoreCase(orderActivated
.getLabel())){
140 orderSelectionCombo
.select(index
);
145 super.performDefaults();