Fixed Ticket #4535
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / preference / LanguageEditorPreferencePage.java
1 // $Id$
2 /**
3 * Copyright (C) 2007 EDIT
4 * European Distributed Institute of Taxonomy
5 * http://www.e-taxonomy.eu
6 *
7 * The contents of this file are subject to the Mozilla Public License Version 1.1
8 * See LICENSE.TXT at the top of this package for the full license terms.
9 */
10
11 package eu.etaxonomy.taxeditor.preference;
12
13 import java.io.IOException;
14
15 import org.apache.commons.lang.StringUtils;
16 import org.eclipse.jface.dialogs.MessageDialog;
17 import org.eclipse.jface.preference.PreferencePage;
18 import org.eclipse.swt.SWT;
19 import org.eclipse.swt.custom.CCombo;
20 import org.eclipse.swt.events.SelectionEvent;
21 import org.eclipse.swt.events.SelectionListener;
22 import org.eclipse.swt.layout.GridData;
23 import org.eclipse.swt.layout.GridLayout;
24 import org.eclipse.swt.widgets.Composite;
25 import org.eclipse.swt.widgets.Control;
26 import org.eclipse.swt.widgets.Label;
27 import org.eclipse.ui.IWorkbench;
28 import org.eclipse.ui.IWorkbenchPreferencePage;
29 import org.eclipse.ui.PlatformUI;
30
31 /**
32 * @author n.hoffmann
33 * @created Dec 3, 2010
34 * @version 1.0
35 */
36 public class LanguageEditorPreferencePage extends PreferencePage implements IWorkbenchPreferencePage{
37
38 private CCombo combo;
39 PreferencesUtil preferencesUtil = new PreferencesUtil();
40
41 /* (non-Javadoc)
42 * @see org.eclipse.jface.preference.PreferencePage#createContents(org.eclipse.swt.widgets.Composite)
43 */
44 @Override
45 protected Control createContents(Composite parent) {
46 Composite container = new Composite(parent, SWT.NULL);
47 final GridLayout gridLayout = new GridLayout();
48 container.setLayout(gridLayout);
49 createEditorDefaultLanguage(container);
50 return container;
51 }
52
53 /**
54 * @param container
55 */
56 private void createEditorDefaultLanguage(Composite container) {
57 // TODO Auto-generated method stub
58 final Label description = new Label(container, SWT.NONE);
59 description.setText("After changing the default language, a restart is required,\nin order for the new settings to take effect.");
60
61 final Label label = new Label(container, SWT.NONE);
62 label.setText("Please choose your default language for the editor: ");
63
64 GridData oneLine = new GridData();
65 oneLine.grabExcessHorizontalSpace = true;
66 oneLine.horizontalAlignment = GridData.FILL;
67
68 combo = new CCombo(container, SWT.NONE);
69 combo.setLayoutData(oneLine);
70
71 combo.add(Language.GERMAN.getLabel(), 0);
72 combo.add(Language.ENGLISH.getLabel(), 1);
73 restoreSavedSelection();
74
75 combo.addSelectionListener(new SelectionListener() {
76
77 @Override
78 public void widgetSelected(SelectionEvent e) {
79 try {
80 preferencesUtil.writePropertyToConfigFile(combo.getSelectionIndex());
81 } catch (IOException e1) {
82 e1.printStackTrace();
83 }
84 }
85
86 @Override
87 public void widgetDefaultSelected(SelectionEvent e) {
88 // TODO Auto-generated method stub
89
90 }
91 });
92 }
93
94 /**
95 * TODO: This method is not taking advantages of the enum field yet
96 */
97 private void restoreSavedSelection() {
98 String rememberedValue = PreferencesUtil.getPreferenceStore().getString(IPreferenceKeys.DEFAULT_LANGUAGE_EDITOR);
99 if(StringUtils.isNotEmpty(rememberedValue)&& StringUtils.isNotBlank(rememberedValue)){
100 if(rememberedValue.equalsIgnoreCase("en")){
101 combo.select(1);
102 }else if(rememberedValue.equalsIgnoreCase("de")){
103 combo.select(0);
104 }
105 }
106 }
107
108 private enum Language{
109
110 GERMAN("Deutsch"), ENGLISH("English");
111 private final String label;
112 private Language(String label){
113 this.label = label;
114 }
115
116 /**
117 * @return the label
118 */
119 public String getLabel() {
120 return label;
121 }
122 }
123
124 /* (non-Javadoc)
125 * @see org.eclipse.ui.IWorkbenchPreferencePage#init(org.eclipse.ui.IWorkbench)
126 */
127 @Override
128 public void init(IWorkbench workbench) {
129 setPreferenceStore(PreferencesUtil.getPreferenceStore());
130 }
131
132 /* (non-Javadoc)
133 * @see org.eclipse.jface.preference.PreferencePage#performOk()
134 */
135 @Override
136 public boolean performOk() {
137 try {
138 preferencesUtil.writePropertyToConfigFile(combo.getSelectionIndex());
139 boolean result = MessageDialog.openConfirm(getShell(), "Please Restart", "The Taxonomic Editor has to restart now, in order to complete the language switch.\nDo you want to restart now?");
140 if(result){
141 //Press Ok
142 PlatformUI.getWorkbench().restart();
143 }
144 } catch (IOException e) {
145 e.printStackTrace();
146 }
147 return super.performOk();
148 }
149
150 }