53ec0636f098db34d78adba45f26930d0d42c297
[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 import eu.etaxonomy.taxeditor.Messages;
32
33 /**
34 * @author n.hoffmann
35 * @created Dec 3, 2010
36 * @version 1.0
37 */
38 public class LanguageEditorPreferencePage extends PreferencePage implements IWorkbenchPreferencePage{
39
40 private CCombo combo;
41 PreferencesUtil preferencesUtil = new PreferencesUtil();
42
43 /* (non-Javadoc)
44 * @see org.eclipse.jface.preference.PreferencePage#createContents(org.eclipse.swt.widgets.Composite)
45 */
46 @Override
47 protected Control createContents(Composite parent) {
48 Composite container = new Composite(parent, SWT.NULL);
49 final GridLayout gridLayout = new GridLayout();
50 container.setLayout(gridLayout);
51 createEditorDefaultLanguage(container);
52 return container;
53 }
54
55 /**
56 * @param container
57 */
58 private void createEditorDefaultLanguage(Composite container) {
59 // TODO Auto-generated method stub
60 final Label description = new Label(container, SWT.NONE);
61 description.setText(Messages.LanguageEditorPreferencePage_RestartRequired);
62
63 final Label label = new Label(container, SWT.NONE);
64 label.setText(Messages.LanguageEditorPreferencePage_ChooseDefaultLanguage);
65
66 GridData oneLine = new GridData();
67 oneLine.grabExcessHorizontalSpace = true;
68 oneLine.horizontalAlignment = GridData.FILL;
69
70 combo = new CCombo(container, SWT.NONE);
71 combo.setLayoutData(oneLine);
72
73 combo.add(Language.GERMAN.getLabel(), 0);
74 combo.add(Language.ENGLISH.getLabel(), 1);
75 restoreSavedSelection();
76
77 combo.addSelectionListener(new SelectionListener() {
78
79 @Override
80 public void widgetSelected(SelectionEvent e) {
81 try {
82 preferencesUtil.writePropertyToConfigFile(combo.getSelectionIndex());
83 } catch (IOException e1) {
84 e1.printStackTrace();
85 }
86 }
87
88 @Override
89 public void widgetDefaultSelected(SelectionEvent e) {
90 // TODO Auto-generated method stub
91
92 }
93 });
94 }
95
96 /**
97 * TODO: This method is not taking advantages of the enum field yet
98 */
99 private void restoreSavedSelection() {
100 String rememberedValue = PreferencesUtil.getPreferenceStore().getString(IPreferenceKeys.DEFAULT_LANGUAGE_EDITOR);
101 if(StringUtils.isNotEmpty(rememberedValue)&& StringUtils.isNotBlank(rememberedValue)){
102 if(rememberedValue.equalsIgnoreCase("en")){ //$NON-NLS-1$
103 combo.select(1);
104 }else if(rememberedValue.equalsIgnoreCase("de")){ //$NON-NLS-1$
105 combo.select(0);
106 }
107 }
108 }
109
110 private enum Language{
111
112 GERMAN("Deutsch"), ENGLISH("English"); //$NON-NLS-1$ //$NON-NLS-2$
113 private final String label;
114 private Language(String label){
115 this.label = label;
116 }
117
118 /**
119 * @return the label
120 */
121 public String getLabel() {
122 return label;
123 }
124 }
125
126 /* (non-Javadoc)
127 * @see org.eclipse.ui.IWorkbenchPreferencePage#init(org.eclipse.ui.IWorkbench)
128 */
129 @Override
130 public void init(IWorkbench workbench) {
131 setPreferenceStore(PreferencesUtil.getPreferenceStore());
132 }
133
134 /* (non-Javadoc)
135 * @see org.eclipse.jface.preference.PreferencePage#performOk()
136 */
137 @Override
138 public boolean performOk() {
139 try {
140 preferencesUtil.writePropertyToConfigFile(combo.getSelectionIndex());
141 boolean result = MessageDialog.openConfirm(getShell(), Messages.LanguageEditorPreferencePage_PleaseRestart, Messages.LanguageEditorPreferencePage_EditorHasToRestart);
142 if(result){
143 //Press Ok
144 PlatformUI.getWorkbench().restart();
145 }
146 } catch (IOException e) {
147 e.printStackTrace();
148 }
149 return super.performOk();
150 }
151
152 }