ref #10305: fix doubled entries
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / preference / LanguageRepresentationPreferencePage.java
index 866e88556db4d5d48d4e43f676249806c4fbf786..0ff9019784a7b59af027a532030030c11941a2ae 100644 (file)
 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.Control;\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
@@ -34,7 +40,14 @@ import eu.etaxonomy.taxeditor.store.CdmStore;
 public class LanguageRepresentationPreferencePage extends CdmPreferencePage{\r
 \r
 \r
-       private Language globalLanguage;\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
@@ -59,79 +72,147 @@ public class LanguageRepresentationPreferencePage extends CdmPreferencePage{
        }\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
+               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
-               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
-                               globalLanguage = CdmStore.getCurrentApplicationConfiguration().getTermService().getLanguageByLabel(combo_globalLanguage.getItem(selectionIndex));\r
-                               setApply(true);\r
-                       }\r
-               });\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
-//     private void createSetMultiLanguageTextEditingCapability(Composite parent) {\r
-//             isMultilanguageTextEditingCapability = PreferencesUtil.getBooleanValue(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
-//\r
-//             button_toggle.setText(Messages.LanguageRepresentationPreferencePage_enable);\r
-//\r
-//             button_toggle.setSelection(isMultilanguageTextEditingCapability);\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
+\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
                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