901a5b91f01cc02d650e8755f00086126abc6102
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / preference / LanguageRepresentationPreferencePage.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.util.List;
14
15 import org.eclipse.jface.preference.PreferencePage;
16 import org.eclipse.swt.SWT;
17 import org.eclipse.swt.events.SelectionAdapter;
18 import org.eclipse.swt.events.SelectionEvent;
19 import org.eclipse.swt.layout.GridData;
20 import org.eclipse.swt.layout.GridLayout;
21 import org.eclipse.swt.layout.RowLayout;
22 import org.eclipse.swt.widgets.Button;
23 import org.eclipse.swt.widgets.Combo;
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
30 import eu.etaxonomy.cdm.model.common.Language;
31 import eu.etaxonomy.taxeditor.store.CdmStore;
32
33 /**
34 * @author n.hoffmann
35 * @created Dec 3, 2010
36 * @version 1.0
37 */
38 public class LanguageRepresentationPreferencePage extends PreferencePage implements IWorkbenchPreferencePage{
39
40 private boolean isMultilanguageTextEditingCapability;
41 private Language globalLanguage;
42
43 private Composite createComposite(Composite parent){
44 Composite composite = new Composite(parent, SWT.NULL);
45 composite.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false, 2, 1));
46 composite.setLayout(new RowLayout(SWT.HORIZONTAL));
47 return composite;
48 }
49
50 /* (non-Javadoc)
51 * @see org.eclipse.jface.preference.PreferencePage#createContents(org.eclipse.swt.widgets.Composite)
52 */
53 @Override
54 protected Control createContents(Composite parent) {
55 Composite container = new Composite(parent, SWT.NULL);
56 final GridLayout gridLayout = new GridLayout();
57 container.setLayout(gridLayout);
58
59 createSetDefaultLanguage(container);
60
61 createSetMultiLanguageTextEditingCapability(container);
62
63 return container;
64
65
66 }
67
68 /**
69 * @param container
70 */
71 private void createSetDefaultLanguage(Composite parent) {
72 globalLanguage = PreferencesUtil.getGlobalLanguage();
73
74 if(globalLanguage == null) {
75 return;
76 }
77
78 int curentSelectionIndex = 0;
79
80 final Composite composite = createComposite(parent);
81 composite.setLayout(new RowLayout(1));
82
83 final Label label = new Label(composite, SWT.NONE);
84 label.setText("Choose the global language that will be used throughout the editor to get representations in.");
85
86 final Combo combo_globalLanguage = new Combo(composite, SWT.NONE);
87
88 List<Language> preferredLanguages = CdmStore.getTermManager().getPreferredTerms(Language.class);
89
90 for(int i = 0; i < preferredLanguages.size(); i++){
91 Language language = preferredLanguages.get(i);
92 combo_globalLanguage.add(language.getLabel(), i);
93 if(language.equals(globalLanguage)){
94 curentSelectionIndex = i;
95 }
96 }
97
98 combo_globalLanguage.select(curentSelectionIndex);
99
100 combo_globalLanguage.addSelectionListener(new SelectionAdapter() {
101 /* (non-Javadoc)
102 * @see org.eclipse.swt.events.SelectionAdapter#widgetSelected(org.eclipse.swt.events.SelectionEvent)
103 */
104 @Override
105 public void widgetSelected(SelectionEvent e) {
106 int selectionIndex = combo_globalLanguage.getSelectionIndex();
107 globalLanguage = Language.getLanguageByLabel(combo_globalLanguage.getItem(selectionIndex));
108 }
109 });
110 }
111
112 /**
113 *
114 */
115 private void createSetMultiLanguageTextEditingCapability(Composite parent) {
116 isMultilanguageTextEditingCapability = getPreferenceStore().getBoolean(IPreferenceKeys.MULTILANGUAGE_TEXT_EDITING_CAPABILITY);
117
118 final Composite composite = createComposite(parent);
119
120 final Button button_toggle = new Button(composite, SWT.CHECK);
121
122
123 button_toggle.setText("Enable Multiple Language Editing Capability");
124
125 button_toggle.setSelection(isMultilanguageTextEditingCapability);
126
127
128 button_toggle.addSelectionListener(new SelectionAdapter(){
129 /* (non-Javadoc)
130 * @see org.eclipse.swt.events.SelectionAdapter#widgetSelected(org.eclipse.swt.events.SelectionEvent)
131 */
132 @Override
133 public void widgetSelected(SelectionEvent e) {
134 isMultilanguageTextEditingCapability = button_toggle.getSelection();
135 }
136 });
137 }
138
139 /* (non-Javadoc)
140 * @see org.eclipse.ui.IWorkbenchPreferencePage#init(org.eclipse.ui.IWorkbench)
141 */
142 @Override
143 public void init(IWorkbench workbench) {
144 setPreferenceStore(PreferencesUtil.getPreferenceStore());
145 }
146
147 /* (non-Javadoc)
148 * @see org.eclipse.jface.preference.PreferencePage#performOk()
149 */
150 @Override
151 public boolean performOk() {
152 getPreferenceStore().setValue(IPreferenceKeys.MULTILANGUAGE_TEXT_EDITING_CAPABILITY, isMultilanguageTextEditingCapability);
153 PreferencesUtil.setGlobalLanguage(globalLanguage);
154
155 return super.performOk();
156 }
157 }