ref #10305: add message if allowOveride is false
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / preference / LanguageRepresentationPreferencePage.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;
11
12 import java.util.List;
13 import java.util.UUID;
14
15 import org.eclipse.swt.SWT;
16 import org.eclipse.swt.custom.CLabel;
17 import org.eclipse.swt.events.SelectionAdapter;
18 import org.eclipse.swt.events.SelectionEvent;
19 import org.eclipse.swt.layout.GridLayout;
20 import org.eclipse.swt.widgets.Button;
21 import org.eclipse.swt.widgets.Combo;
22 import org.eclipse.swt.widgets.Composite;
23 import org.eclipse.swt.widgets.Control;
24 import org.eclipse.swt.widgets.Label;
25
26 import eu.etaxonomy.cdm.model.common.Language;
27 import eu.etaxonomy.cdm.model.metadata.CdmPreference;
28 import eu.etaxonomy.cdm.model.metadata.PreferencePredicate;
29 import eu.etaxonomy.cdm.model.term.TermType;
30 import eu.etaxonomy.taxeditor.l10n.Messages;
31 import eu.etaxonomy.taxeditor.preference.menu.CdmPreferencePage;
32 import eu.etaxonomy.taxeditor.store.CdmStore;
33
34 /**
35 * @author n.hoffmann
36 * @created Dec 3, 2010
37 * @version 1.0
38 */
39 public class LanguageRepresentationPreferencePage extends CdmPreferencePage{
40
41
42 protected Language globalLanguage;
43 public final static String ID = "eu.etaxonomy.taxeditor.preferences.termLanguages"; //$NON-NLS-1$
44
45 protected CdmPreference termLanguagePref =null;
46 protected boolean overrideActivated;
47 protected Button allowOverrideOrderButton;
48 private String defaultSettings = "Use default settings";
49 protected Combo combo_globalLanguage;
50
51 // private Composite createComposite(Composite parent){
52 // Composite composite = new Composite(parent, SWT.NULL);
53 // composite.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false, 2, 1));
54 // composite.setLayout(new RowLayout(SWT.HORIZONTAL));
55 // return composite;
56 // }
57
58 @Override
59 protected Control createContents(Composite parent) {
60 Composite container = new Composite(parent, SWT.NULL);
61 final GridLayout gridLayout = new GridLayout();
62 container.setLayout(gridLayout);
63
64 createSetDefaultLanguage(container);
65
66 // createSetMultiLanguageTextEditingCapability(container);
67
68 return container;
69
70
71 }
72
73 private void createSetDefaultLanguage(Composite parent) {
74 getValues();
75
76 int curentSelectionIndex = 0;
77
78 final Composite composite = createComposite(parent);
79 GridLayout layout = new GridLayout();
80 layout.numColumns = 2;
81 composite.setLayout(layout);
82
83 if (isAdminPreference || !isAdminPreference && this.termLanguagePref.isAllowOverride()) {
84 final Label label = new Label(composite, SWT.NONE);
85 label.setText(Messages.LanguageRepresentationPreferencePage_global);
86 final Label labelFree = new Label(composite, SWT.NONE);
87 // label.setText(Messages.LanguageRepresentationPreferencePage_global);
88
89 Combo combo_globalLanguage = new Combo(composite, SWT.NONE);
90
91 List<Language> preferredLanguages = CdmStore.getTermManager().getPreferredTerms(TermType.Language);
92
93
94
95
96 for(int i = 0; i < preferredLanguages.size(); i++){
97 Language language = preferredLanguages.get(i);
98 combo_globalLanguage.add(language.getLabel(), i);
99 if(language.equals(globalLanguage)){
100 curentSelectionIndex = i;
101 }
102 }
103 if (!isAdminPreference) {
104 combo_globalLanguage.add("Use default settings", 0);
105 curentSelectionIndex++;
106 }
107
108 combo_globalLanguage.select(curentSelectionIndex);
109
110 combo_globalLanguage.addSelectionListener(new SelectionAdapter() {
111 /* (non-Javadoc)
112 * @see org.eclipse.swt.events.SelectionAdapter#widgetSelected(org.eclipse.swt.events.SelectionEvent)
113 */
114 @Override
115 public void widgetSelected(SelectionEvent e) {
116
117 int selectionIndex = combo_globalLanguage.getSelectionIndex();
118 if (combo_globalLanguage.getItem(selectionIndex).equals(defaultSettings)){
119 overrideActivated = false;
120 }else {
121 globalLanguage = CdmStore.getCurrentApplicationConfiguration().getTermService().getLanguageByLabel(combo_globalLanguage.getItem(selectionIndex));
122 overrideActivated = true;
123 }
124 setApply(true);
125 }
126 });
127 }else {
128 //changing the Term Language locally is not allowed
129 final CLabel description = new CLabel(parent, SWT.NULL);
130 description.setText(Messages.LanguageRepresentationPreferencePage_not_available);
131 this.setDefaultButtonActivated(false);
132 }
133
134
135 if (isAdminPreference) {
136 allowOverrideOrderButton = createAllowOverrideButton(composite);
137 allowOverrideOrderButton.setSelection(termLanguagePref != null? termLanguagePref.isAllowOverride(): true);
138 //allowOverrideOrderAreasButton.setEnabled(prefAreaSort != null);
139 allowOverrideOrderButton.addSelectionListener(new SelectionAdapter() {
140 @Override
141 public void widgetSelected(SelectionEvent e) {
142 setApply(true);
143 if (termLanguagePref == null){
144 termLanguagePref = CdmPreference.NewTaxEditorInstance(PreferencePredicate.TermLanguage, PreferencePredicate.TermLanguage.getDefaultValue() != null ? PreferencePredicate.TermLanguage.getDefaultValue().toString(): null);
145 }
146 termLanguagePref.setAllowOverride(allowOverrideOrderButton.getSelection());
147 }
148 });
149 }
150 }
151
152
153 @Override
154 public void getValues() {
155 isAdminPreference = false;
156 setPreferenceStore(PreferencesUtil.getPreferenceStore());
157 termLanguagePref = PreferencesUtil.getPreferenceFromDB(PreferencePredicate.TermLanguage);
158 overrideActivated = PreferencesUtil.getBooleanValue(
159 PreferencesUtil.prefOverrideKey(PreferencePredicate.TermLanguage.getKey()), true) != null? PreferencesUtil.getBooleanValue(
160 PreferencesUtil.prefOverrideKey(PreferencePredicate.TermLanguage.getKey()), true):false;
161 if (termLanguagePref != null) {
162 if (termLanguagePref.isAllowOverride() && overrideActivated) {
163 String globalLanguageUUIDString = PreferencesUtil.getStringValue(PreferencePredicate.TermLanguage.getKey(), true);
164 if (globalLanguageUUIDString != null) {
165 globalLanguage = Language.getLanguageFromUuid(UUID.fromString( globalLanguageUUIDString));
166 }else {
167 globalLanguage = Language.getDefaultLanguage();
168 }
169 //globalLanguage = Language.getLanguageFromUuid(UUID.fromString(PreferencesUtil.getStringValue(PreferencePredicate.TermLanguage.getKey(), true)));
170 } else {
171 globalLanguage = termLanguagePref.getValue() != null? Language.getLanguageFromUuid(UUID.fromString(termLanguagePref.getValue())): CdmStore.getDefaultLanguage();
172 }
173
174 } else {
175 if(!overrideActivated){
176 globalLanguage = null;
177 }else{
178 String globalLanguageUUIDString = PreferencesUtil.getStringValue(PreferencePredicate.TermLanguage.getKey(), true);
179 if (globalLanguageUUIDString != null) {
180 globalLanguage = Language.getLanguageFromUuid(UUID.fromString( globalLanguageUUIDString));
181 }else {
182 globalLanguage = Language.getDefaultLanguage();
183 }
184 }
185 termLanguagePref = CdmPreference.NewTaxEditorInstance(PreferencePredicate.TermLanguage, PreferencePredicate.TermLanguage.getDefaultValue() != null ? PreferencePredicate.TermLanguage.getDefaultValue().toString(): null);
186 }
187 }
188
189 @Override
190 public boolean performOk() {
191 if (!isApply()){
192 return true;
193 }
194 //check whether a language or the option to use the db selection was chosen
195 PreferencesUtil.setGlobalLanguage(globalLanguage);
196 // if (overrideActivated) {
197 PreferencesUtil.setBooleanValue(PreferencesUtil.createOverridePreferenceString(PreferencePredicate.TermLanguage.getKey()), overrideActivated);
198 // }
199 return super.performOk();
200 }
201 }