Project

General

Profile

Download (5.82 KB) Statistics
| Branch: | Tag: | Revision:
1
/**
2
* Copyright (C) 2007 EDIT
3
* European Distributed Institute of Taxonomy
4
* http://www.e-taxonomy.eu
5
*
6
* The contents of this file are subject to the Mozilla Public License Version 1.1
7
* See LICENSE.TXT at the top of this package for the full license terms.
8
*/
9

    
10
package eu.etaxonomy.taxeditor.preference;
11

    
12
import java.io.IOException;
13
import java.util.Locale;
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.l10n.Messages;
32
import eu.etaxonomy.taxeditor.model.MessagingUtils;
33

    
34
/**
35
 * @author n.hoffmann
36
 * @created Dec 3, 2010
37
 * @version 1.0
38
 */
39
public class LanguageEditorPreferencePage extends PreferencePage implements IWorkbenchPreferencePage{
40

    
41
    private CCombo combo;
42
    PreferencesUtil preferencesUtil = new PreferencesUtil();
43
    private boolean isSelectionChanged = false;
44
    private int initalSelectionIndex;
45

    
46
	/* (non-Javadoc)
47
	 * @see org.eclipse.jface.preference.PreferencePage#createContents(org.eclipse.swt.widgets.Composite)
48
	 */
49
	@Override
50
	protected Control createContents(Composite parent) {
51
		Composite container = new Composite(parent, SWT.NULL);
52
		final GridLayout gridLayout = new GridLayout();
53
		container.setLayout(gridLayout);
54
		createEditorDefaultLanguage(container);
55
		return container;
56
	}
57

    
58
	/**
59
     * @param container
60
     */
61
    private void createEditorDefaultLanguage(Composite container) {
62
        // TODO Auto-generated method stub
63
        final Label description = new Label(container, SWT.NONE);
64
        description.setText(Messages.LanguageEditorPreferencePage_RestartRequired);
65

    
66
        final Label label = new Label(container, SWT.NONE);
67
        label.setText(Messages.LanguageEditorPreferencePage_ChooseDefaultLanguage);
68

    
69
        GridData oneLine = new GridData();
70
        oneLine.grabExcessHorizontalSpace = true;
71
        oneLine.horizontalAlignment = GridData.FILL;
72

    
73
        combo = new CCombo(container, SWT.NONE);
74
        combo.setLayoutData(oneLine);
75

    
76
        combo.add(Language.GERMAN.getLabel(), 0);
77
        combo.add(Language.ENGLISH.getLabel(), 1);
78
        restoreSavedSelection();
79

    
80
        combo.addSelectionListener(new SelectionListener() {
81

    
82
            @Override
83
            public void widgetSelected(SelectionEvent e) {
84
                try {
85
                    preferencesUtil.writePropertyToConfigFile(combo.getSelectionIndex());
86
                    if(initalSelectionIndex != combo.getSelectionIndex()) {
87
                        isSelectionChanged = true;
88
                    }else{
89
                        isSelectionChanged = false;
90
                    }
91
                } catch (IOException e1) {
92
                    MessagingUtils.messageDialog("Failed to write Config.ini", LanguageEditorPreferencePage.class,
93
                            "Language switch failed, because could not write to Folder. No writing permissions!", null);
94
                }
95
            }
96

    
97
            @Override
98
            public void widgetDefaultSelected(SelectionEvent e) {
99
                // TODO Auto-generated method stub
100

    
101
            }
102
        });
103
    }
104

    
105
    /**
106
     * TODO: This method is not taking advantages of the enum field yet
107
     */
108
    private void restoreSavedSelection() {
109
        String rememberedValue = PreferencesUtil.getPreferenceStore().getString(IPreferenceKeys.DEFAULT_LANGUAGE_EDITOR);
110
        if(StringUtils.isNotEmpty(rememberedValue)&& StringUtils.isNotBlank(rememberedValue)){
111
            if(rememberedValue.equalsIgnoreCase("en")){ //$NON-NLS-1$
112
                initalSelectionIndex = 1;
113
                combo.select(1);
114
            }else if(rememberedValue.equalsIgnoreCase("de")){ //$NON-NLS-1$
115
                initalSelectionIndex = 0;
116
                combo.select(0);
117
            }
118
        }else{
119
            Locale locale = Locale.getDefault();
120
            if(locale.getLanguage().equals(new Locale("de").getLanguage())){
121
                initalSelectionIndex = 0;
122
                combo.select(0);
123
            }else if(locale.getLanguage().equals(new Locale("en").getLanguage())){
124
                initalSelectionIndex = 1;
125
                combo.select(1);
126
            }
127
        }
128
    }
129

    
130
    private enum Language{
131

    
132
        GERMAN("Deutsch"), ENGLISH("English"); //$NON-NLS-1$ //$NON-NLS-2$
133
        private final String label;
134
        private Language(String label){
135
            this.label = label;
136
        }
137

    
138
        /**
139
         * @return the label
140
         */
141
        public String getLabel() {
142
            return label;
143
        }
144
    }
145

    
146
 	/* (non-Javadoc)
147
	 * @see org.eclipse.ui.IWorkbenchPreferencePage#init(org.eclipse.ui.IWorkbench)
148
	 */
149
	@Override
150
	public void init(IWorkbench workbench) {
151
		setPreferenceStore(PreferencesUtil.getPreferenceStore());
152
	}
153

    
154
	/* (non-Javadoc)
155
	 * @see org.eclipse.jface.preference.PreferencePage#performOk()
156
	 */
157
	@Override
158
	public boolean performOk() {
159
        try {
160
            if(isSelectionChanged){
161
                preferencesUtil.writePropertyToConfigFile(combo.getSelectionIndex());
162
                boolean result = MessageDialog.openConfirm(getShell(), Messages.LanguageEditorPreferencePage_PleaseRestart, Messages.LanguageEditorPreferencePage_EditorHasToRestart);
163
                if(result){
164
                    //Press Ok
165
                    PlatformUI.getWorkbench().restart();
166
                }
167
            }
168
        } catch (IOException e) {
169
            e.printStackTrace();
170
        }
171
		return super.performOk();
172
	}
173

    
174
}
(10-10/25)