ref #8562: add admin preference page for multilanguage support
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / preference / menu / LanguageMenuPreferences.java
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.menu;
11
12 import org.eclipse.swt.events.SelectionAdapter;
13 import org.eclipse.swt.events.SelectionEvent;
14 import org.eclipse.swt.layout.GridLayout;
15 import org.eclipse.swt.widgets.Button;
16 import org.eclipse.swt.widgets.Combo;
17 import org.eclipse.swt.widgets.Composite;
18 import org.eclipse.swt.widgets.Control;
19
20 import eu.etaxonomy.cdm.model.metadata.CdmPreference;
21 import eu.etaxonomy.cdm.model.metadata.PreferencePredicate;
22 import eu.etaxonomy.cdm.model.term.TermType;
23 import eu.etaxonomy.taxeditor.l10n.Messages;
24 import eu.etaxonomy.taxeditor.preference.GeneralTermPreferencePage;
25 import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
26
27 /**
28 * <p>LanguageMenuPreferences class.</p>
29 *
30 * @author p.ciardelli
31 * @created 24.08.2009
32 * @version 1.0
33 */
34 public class LanguageMenuPreferences extends GeneralTermPreferencePage {
35
36 /** Constant <code>ID="eu.etaxonomy.taxeditor.preferences.lang"{trunked}</code> */
37 public final static String ID = "eu.etaxonomy.taxeditor.preferences.languages"; //$NON-NLS-1$
38 protected Boolean isMultilanguageTextEditingCapability;
39 protected CdmPreference multiLangugeActivatedPref =null;
40 private boolean overrideActivated;
41
42 Combo multiLanguageEditing;
43
44 Button allowOverrideOrderButton;
45
46 /**
47 * <p>Constructor for LanguageMenuPreferences.</p>
48 */
49 public LanguageMenuPreferences() {
50 super();
51 setPredicate(PreferencePredicate.AvailableLanguages);
52 type = TermType.Language;
53
54 }
55
56 @Override
57 protected Control createContents(Composite parent) {
58 createSetMultiLanguageTextEditingCapability(parent);
59 Composite result = (Composite) super.createContents(parent);
60 return result;
61 }
62
63 private void createSetMultiLanguageTextEditingCapability(Composite parent) {
64 //isMultilanguageTextEditingCapability = PreferencesUtil.getBooleanValue(PreferencePredicate.MultiLanguageTextEditing.getKey());
65 getValues();
66 final Composite composite = createComposite(parent);
67 GridLayout layout = new GridLayout();
68 layout.numColumns = 2;
69
70 composite.setLayout(layout);
71
72 multiLanguageEditing = createBooleanCombo(composite, Messages.GeneralPreference_yes, Messages.GeneralPreference_no, PreferencePredicate.MultiLanguageTextEditing, "Allow multi language editing", isAdminPreference);
73 int index = 0;
74 for (String itemLabel : multiLanguageEditing.getItems()) {
75 if (isMultilanguageTextEditingCapability == null && itemLabel.startsWith(Messages.Preference_Use_Default)) {
76 multiLanguageEditing.select(index);
77 break;
78 }
79 if (isMultilanguageTextEditingCapability != null && itemLabel.equals(Messages.GeneralPreference_yes) && isMultilanguageTextEditingCapability){
80 multiLanguageEditing.select(index);
81 break;
82 }
83 if (isMultilanguageTextEditingCapability != null && itemLabel.equals(Messages.GeneralPreference_no) && !isMultilanguageTextEditingCapability){
84 multiLanguageEditing.select(index);
85 break;
86 }
87 index++;
88 }
89 if (!isAdminPreference && multiLangugeActivatedPref != null){
90 multiLanguageEditing.setEnabled(multiLangugeActivatedPref.isAllowOverride());
91 }
92 multiLanguageEditing.addSelectionListener(this);
93
94 if (isAdminPreference) {
95 allowOverrideOrderButton = createAllowOverrideButton(composite);
96 allowOverrideOrderButton.setSelection(multiLangugeActivatedPref != null? multiLangugeActivatedPref.isAllowOverride(): true);
97 //allowOverrideOrderAreasButton.setEnabled(prefAreaSort != null);
98 allowOverrideOrderButton.addSelectionListener(new SelectionAdapter() {
99 @Override
100 public void widgetSelected(SelectionEvent e) {
101 setApply(true);
102 if (multiLangugeActivatedPref == null){
103 multiLangugeActivatedPref = CdmPreference.NewTaxEditorInstance(PreferencePredicate.MultiLanguageTextEditing, PreferencePredicate.MultiLanguageTextEditing.getDefaultValue() != null ? PreferencePredicate.MultiLanguageTextEditing.getDefaultValue().toString(): null);
104 }
105 multiLangugeActivatedPref.setAllowOverride(allowOverrideOrderButton.getSelection());
106 }
107 });
108 }
109 }
110
111 @Override
112 public void getValues() {
113 isAdminPreference = false;
114 setPreferenceStore(PreferencesUtil.getPreferenceStore());
115 multiLangugeActivatedPref = PreferencesUtil.getPreferenceFromDB(PreferencePredicate.MultiLanguageTextEditing);
116 overrideActivated = PreferencesUtil.getBooleanValue(
117 PreferencesUtil.prefOverrideKey(PreferencePredicate.MultiLanguageTextEditing.getKey()), true) != null? PreferencesUtil.getBooleanValue(
118 PreferencesUtil.prefOverrideKey(PreferencePredicate.MultiLanguageTextEditing.getKey()), true):false;
119 if (multiLangugeActivatedPref != null) {
120 if (multiLangugeActivatedPref.isAllowOverride() ) {
121 if (overrideActivated){
122 isMultilanguageTextEditingCapability = PreferencesUtil.getBooleanValue(PreferencePredicate.MultiLanguageTextEditing.getKey(), true);
123 }
124
125 } else {
126 isMultilanguageTextEditingCapability = multiLangugeActivatedPref.getValue() != null? Boolean.valueOf(multiLangugeActivatedPref.getValue()): null;
127 }
128
129 } else {
130 if(!overrideActivated){
131 isMultilanguageTextEditingCapability = null;
132 }else{
133 isMultilanguageTextEditingCapability = PreferencesUtil.getBooleanValue(PreferencePredicate.MultiLanguageTextEditing.getKey(), true);
134 }
135 multiLangugeActivatedPref = CdmPreference.NewTaxEditorInstance(PreferencePredicate.MultiLanguageTextEditing, PreferencePredicate.MultiLanguageTextEditing.getDefaultValue() != null ? PreferencePredicate.MultiLanguageTextEditing.getDefaultValue().toString(): null);
136 }
137 }
138 @Override
139 public void widgetSelected(SelectionEvent e) {
140 setApply(true);
141 if (e.getSource().equals(multiLanguageEditing)) {
142 String text = multiLanguageEditing.getText();
143 if(text.startsWith(Messages.Preference_Use_Default)){
144 isMultilanguageTextEditingCapability = null;
145 treeComposite.setEnabled(multiLangugeActivatedPref == null? true: multiLangugeActivatedPref.getValue() != null?Boolean.parseBoolean(multiLangugeActivatedPref.getValue().toString()): true);
146 if (!isAdminPreference) {
147 overrideActivated = false;
148 }
149 return;
150 }
151 overrideActivated = true;
152
153 if (text.equals(Messages.GeneralPreference_yes)){
154 isMultilanguageTextEditingCapability = true;
155 }else{
156 isMultilanguageTextEditingCapability = false;
157 }
158
159 if (isMultilanguageTextEditingCapability != null){
160 treeComposite.setEnabled(isMultilanguageTextEditingCapability);
161 }else{
162 treeComposite.setEnabled(multiLangugeActivatedPref == null? true: multiLangugeActivatedPref.getValue() != null?Boolean.parseBoolean(multiLangugeActivatedPref.getValue().toString()): true);
163 }
164
165 }
166 }
167
168 @Override
169 public boolean performOk() {
170 if (!isApply()){
171 return true;
172 }
173 if (isMultilanguageTextEditingCapability!= null){
174 PreferencesUtil.setBooleanValue(PreferencePredicate.MultiLanguageTextEditing.getKey(), isMultilanguageTextEditingCapability);
175 }
176 PreferencesUtil.setBooleanValue(
177 PreferencesUtil.prefOverrideKey(PreferencePredicate.MultiLanguageTextEditing.getKey()),
178 overrideActivated);
179 return super.performOk();
180 }
181 }