package eu.etaxonomy.taxeditor.preference;\r
\r
import java.util.List;\r
+import java.util.UUID;\r
\r
import org.eclipse.swt.SWT;\r
+import org.eclipse.swt.custom.CLabel;\r
import org.eclipse.swt.events.SelectionAdapter;\r
import org.eclipse.swt.events.SelectionEvent;\r
import org.eclipse.swt.layout.GridLayout;\r
-import org.eclipse.swt.layout.RowLayout;\r
import org.eclipse.swt.widgets.Button;\r
import org.eclipse.swt.widgets.Combo;\r
import org.eclipse.swt.widgets.Composite;\r
import org.eclipse.swt.widgets.Label;\r
\r
import eu.etaxonomy.cdm.model.common.Language;\r
+import eu.etaxonomy.cdm.model.metadata.CdmPreference;\r
+import eu.etaxonomy.cdm.model.metadata.PreferencePredicate;\r
+import eu.etaxonomy.cdm.model.term.DefinedTermBase;\r
+import eu.etaxonomy.cdm.model.term.TermType;\r
import eu.etaxonomy.taxeditor.l10n.Messages;\r
import eu.etaxonomy.taxeditor.preference.menu.CdmPreferencePage;\r
import eu.etaxonomy.taxeditor.store.CdmStore;\r
*/\r
public class LanguageRepresentationPreferencePage extends CdmPreferencePage{\r
\r
- private boolean isMultilanguageTextEditingCapability;\r
- private Language globalLanguage;\r
+\r
+ protected Language globalLanguage;\r
+ public final static String ID = "eu.etaxonomy.taxeditor.preferences.termLanguages"; //$NON-NLS-1$\r
+\r
+ protected CdmPreference termLanguagePref =null;\r
+ protected boolean overrideActivated;\r
+ protected Button allowOverrideOrderButton;\r
+ private String defaultSettings = "Default settings";\r
+ protected Combo combo_globalLanguage;\r
\r
// private Composite createComposite(Composite parent){\r
// Composite composite = new Composite(parent, SWT.NULL);\r
\r
createSetDefaultLanguage(container);\r
\r
- createSetMultiLanguageTextEditingCapability(container);\r
+// createSetMultiLanguageTextEditingCapability(container);\r
\r
return container;\r
\r
}\r
\r
private void createSetDefaultLanguage(Composite parent) {\r
- globalLanguage = PreferencesUtil.getGlobalLanguage();\r
-\r
- if(globalLanguage == null) {\r
- return;\r
- }\r
+ getValues();\r
\r
int curentSelectionIndex = 0;\r
\r
final Composite composite = createComposite(parent);\r
- composite.setLayout(new RowLayout(1));\r
-\r
- final Label label = new Label(composite, SWT.NONE);\r
- label.setText(Messages.LanguageRepresentationPreferencePage_global);\r
-\r
- final Combo combo_globalLanguage = new Combo(composite, SWT.NONE);\r
-\r
- List<Language> preferredLanguages = CdmStore.getTermManager().getPreferredTerms(Language.class);\r
-\r
- for(int i = 0; i < preferredLanguages.size(); i++){\r
- Language language = preferredLanguages.get(i);\r
- combo_globalLanguage.add(language.getLabel(), i);\r
- if(language.equals(globalLanguage)){\r
- curentSelectionIndex = i;\r
- }\r
- }\r
-\r
- combo_globalLanguage.select(curentSelectionIndex);\r
-\r
- combo_globalLanguage.addSelectionListener(new SelectionAdapter() {\r
- /* (non-Javadoc)\r
- * @see org.eclipse.swt.events.SelectionAdapter#widgetSelected(org.eclipse.swt.events.SelectionEvent)\r
- */\r
- @Override\r
- public void widgetSelected(SelectionEvent e) {\r
- setApply(true);\r
- int selectionIndex = combo_globalLanguage.getSelectionIndex();\r
- globalLanguage = CdmStore.getCurrentApplicationConfiguration().getTermService().getLanguageByLabel(combo_globalLanguage.getItem(selectionIndex));\r
- }\r
- });\r
- }\r
-\r
- private void createSetMultiLanguageTextEditingCapability(Composite parent) {\r
- isMultilanguageTextEditingCapability = getPreferenceStore().getBoolean(IPreferenceKeys.MULTILANGUAGE_TEXT_EDITING_CAPABILITY);\r
-\r
- final Composite composite = createComposite(parent);\r
-\r
- final Button button_toggle = new Button(composite, SWT.CHECK);\r
-\r
+ GridLayout layout = new GridLayout();\r
+ layout.numColumns = 2;\r
+ composite.setLayout(layout);\r
+\r
+ if (isAdminPreference || !isAdminPreference && this.termLanguagePref.isAllowOverride()) {\r
+ final Label label = new Label(composite, SWT.NONE);\r
+ label.setText(Messages.LanguageRepresentationPreferencePage_global);\r
+ final Label labelFree = new Label(composite, SWT.NONE);\r
+ // label.setText(Messages.LanguageRepresentationPreferencePage_global);\r
+\r
+ //combo_globalLanguage = new Combo(composite, SWT.NONE);\r
+ \r
+ List<DefinedTermBase> preferredLanguages = CdmStore.getTermManager().getPreferredTerms(TermType.Language);\r
+ combo_globalLanguage = createComboTerms(composite, preferredLanguages, PreferencePredicate.TermLanguage, "Term Language", isAdminPreference);\r
+\r
+\r
+\r
+ for(int i = 0; i < preferredLanguages.size(); i++){\r
+ Language language = (Language)preferredLanguages.get(i);\r
+ \r
+ if(language.equals(globalLanguage)){\r
+ curentSelectionIndex = i;\r
+ }\r
+ }\r
+\r
+ if (curentSelectionIndex != 0) {\r
+ curentSelectionIndex ++;\r
+ }\r
+ combo_globalLanguage.select(curentSelectionIndex);\r
+\r
+ combo_globalLanguage.addSelectionListener(new SelectionAdapter() {\r
+ /* (non-Javadoc)\r
+ * @see org.eclipse.swt.events.SelectionAdapter#widgetSelected(org.eclipse.swt.events.SelectionEvent)\r
+ */\r
+ @Override\r
+ public void widgetSelected(SelectionEvent e) {\r
+\r
+ int selectionIndex = combo_globalLanguage.getSelectionIndex();\r
+ if (combo_globalLanguage.getItem(selectionIndex).startsWith(Messages.Preference_Use_Default)){\r
+ overrideActivated = false;\r
+ }else {\r
+ globalLanguage = (Language)combo_globalLanguage.getData(combo_globalLanguage.getItem(selectionIndex));\r
+ overrideActivated = true;\r
+ }\r
+ setApply(true);\r
+ }\r
+ });\r
+ }else {\r
+ //changing the Term Language locally is not allowed\r
+ final CLabel description = new CLabel(parent, SWT.NULL);\r
+ description.setText(Messages.LanguageRepresentationPreferencePage_not_available);\r
+ this.setDefaultButtonActivated(false);\r
+ }\r
\r
- button_toggle.setText(Messages.LanguageRepresentationPreferencePage_enable);\r
\r
- button_toggle.setSelection(isMultilanguageTextEditingCapability);\r
+ if (isAdminPreference) {\r
+ allowOverrideOrderButton = createAllowOverrideButton(composite);\r
+ allowOverrideOrderButton.setSelection(termLanguagePref != null? termLanguagePref.isAllowOverride(): true);\r
+ //allowOverrideOrderAreasButton.setEnabled(prefAreaSort != null);\r
+ allowOverrideOrderButton.addSelectionListener(new SelectionAdapter() {\r
+ @Override\r
+ public void widgetSelected(SelectionEvent e) {\r
+ setApply(true);\r
+ if (termLanguagePref == null){\r
+ termLanguagePref = CdmPreference.NewTaxEditorInstance(PreferencePredicate.TermLanguage, PreferencePredicate.TermLanguage.getDefaultValue() != null ? PreferencePredicate.TermLanguage.getDefaultValue().toString(): null);\r
+ }\r
+ termLanguagePref.setAllowOverride(allowOverrideOrderButton.getSelection());\r
+ }\r
+ });\r
+ }\r
+ }\r
\r
\r
- button_toggle.addSelectionListener(new SelectionAdapter(){\r
- /* (non-Javadoc)\r
- * @see org.eclipse.swt.events.SelectionAdapter#widgetSelected(org.eclipse.swt.events.SelectionEvent)\r
- */\r
- @Override\r
- public void widgetSelected(SelectionEvent e) {\r
- setApply(true);\r
- isMultilanguageTextEditingCapability = button_toggle.getSelection();\r
- }\r
- });\r
- }\r
+ @Override\r
+ public void getValues() {\r
+ isAdminPreference = false;\r
+ setPreferenceStore(PreferencesUtil.getPreferenceStore());\r
+ termLanguagePref = PreferencesUtil.getPreferenceFromDB(PreferencePredicate.TermLanguage);\r
+ overrideActivated = PreferencesUtil.getBooleanValue(\r
+ PreferencesUtil.prefOverrideKey(PreferencePredicate.TermLanguage.getKey()), true) != null? PreferencesUtil.getBooleanValue(\r
+ PreferencesUtil.prefOverrideKey(PreferencePredicate.TermLanguage.getKey()), true):false;\r
+ if (termLanguagePref != null) {\r
+ if (termLanguagePref.isAllowOverride() && overrideActivated) {\r
+ String globalLanguageUUIDString = PreferencesUtil.getStringValue(PreferencePredicate.TermLanguage.getKey(), true);\r
+ if (globalLanguageUUIDString != null) {\r
+ globalLanguage = Language.getLanguageFromUuid(UUID.fromString( globalLanguageUUIDString));\r
+ }else {\r
+ globalLanguage = Language.getDefaultLanguage();\r
+ }\r
+ //globalLanguage = Language.getLanguageFromUuid(UUID.fromString(PreferencesUtil.getStringValue(PreferencePredicate.TermLanguage.getKey(), true)));\r
+ } else {\r
+ if(!overrideActivated){\r
+ globalLanguage = null;\r
+ }else{\r
+ globalLanguage = termLanguagePref.getValue() != null? Language.getLanguageFromUuid(UUID.fromString(termLanguagePref.getValue())): CdmStore.getDefaultLanguage();\r
+ }\r
+ }\r
+\r
+ } else {\r
+ if(!overrideActivated){\r
+ globalLanguage = null;\r
+ }else{\r
+ String globalLanguageUUIDString = PreferencesUtil.getStringValue(PreferencePredicate.TermLanguage.getKey(), true);\r
+ if (globalLanguageUUIDString != null) {\r
+ globalLanguage = Language.getLanguageFromUuid(UUID.fromString( globalLanguageUUIDString));\r
+ }else {\r
+ globalLanguage = Language.getDefaultLanguage();\r
+ }\r
+ }\r
+ termLanguagePref = CdmPreference.NewTaxEditorInstance(PreferencePredicate.TermLanguage, PreferencePredicate.TermLanguage.getDefaultValue() != null ? PreferencePredicate.TermLanguage.getDefaultValue().toString(): null);\r
+ }\r
+ }\r
\r
@Override\r
public boolean performOk() {\r
- if (isApply()){\r
- PreferencesUtil.setBooleanValue(IPreferenceKeys.MULTILANGUAGE_TEXT_EDITING_CAPABILITY, isMultilanguageTextEditingCapability);\r
- PreferencesUtil.setGlobalLanguage(globalLanguage);\r
+ if (!isApply()){\r
+ return true;\r
}\r
+ //check whether a language or the option to use the db selection was chosen\r
+ PreferencesUtil.setGlobalLanguage(globalLanguage);\r
+ // if (overrideActivated) {\r
+ PreferencesUtil.setBooleanValue(PreferencesUtil.createOverridePreferenceString(PreferencePredicate.TermLanguage.getKey()), overrideActivated);\r
+ // }\r
return super.performOk();\r
}\r
+ \r
+ @Override\r
+ protected void performDefaults() {\r
+\r
+ globalLanguage = null;\r
+ \r
+ combo_globalLanguage.select(0);\r
+ overrideActivated = false;\r
+ \r
+ setApply(true);\r
+\r
+ }\r
+ \r
}\r