cleanup
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / preference / NomenclaturalCodePreferences.java
old mode 100644 (file)
new mode 100755 (executable)
index 451645a..0fb9711
-/**
- * Copyright (C) 2007 EDIT
- * European Distributed Institute of Taxonomy
- * http://www.e-taxonomy.eu
- *
- * The contents of this file are subject to the Mozilla Public License Version 1.1
- * See LICENSE.TXT at the top of this package for the full license terms.
- */
-package eu.etaxonomy.taxeditor.preference;
-
-import java.util.List;
-
-import org.eclipse.jface.preference.BooleanFieldEditor;
-import org.eclipse.jface.preference.ComboFieldEditor;
-import org.eclipse.jface.preference.FieldEditorPreferencePage;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchPreferencePage;
-
-import eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration;
-import eu.etaxonomy.cdm.api.service.IPreferenceService;
-import eu.etaxonomy.cdm.model.metadata.CdmPreference;
-import eu.etaxonomy.cdm.model.metadata.CdmPreference.PrefKey;
-import eu.etaxonomy.cdm.model.metadata.PreferencePredicate;
-import eu.etaxonomy.cdm.model.metadata.PreferenceSubject;
-import eu.etaxonomy.cdm.model.name.NomenclaturalCode;
-import eu.etaxonomy.taxeditor.model.NomenclaturalCodeHelper;
-import eu.etaxonomy.taxeditor.store.CdmStore;
-import eu.etaxonomy.taxeditor.store.internal.TaxeditorStorePlugin;
-
-/**
- * <p>
- * NomenclaturalCodePreferences class.
- * </p>
- *
- * @author p.ciardelli
- * @created 16.09.2008
- */
-public class NomenclaturalCodePreferences extends FieldEditorPreferencePage
-               implements IWorkbenchPreferencePage {
-
-       @Override
-       protected void createFieldEditors() {
-           PreferencesUtil.setPreferredNomenclaturalCode(null, false);
-           if (getPreferenceStore().getBoolean(IPreferenceKeys.ALLOW_OVERRIDE_NOMENCLATURAL_CODE_KEY)) {
-               addField(new ComboFieldEditor(
-                               IPreferenceKeys.PREFERRED_NOMENCLATURAL_CODE_KEY,
-                               "Available Codes", getLabelAndValues(),
-                               getFieldEditorParent()));
-
-            addField(new BooleanFieldEditor(
-                    IPreferenceKeys.OVERRIDE_NOMENCLATURAL_CODE_KEY,
-                    "Use local nomenclatural code",
-                    getFieldEditorParent()));
-        } else {
-            setDescription("The CDM settings don't allow to set the nomenclatural code locally. If you need to make local settings, please ask an administrator.");
-        }
-
-       }
-
-       /**
-        * @return
-        */
-       private String[][] getLabelAndValues() {
-               List<NomenclaturalCode> supportedCodes = NomenclaturalCodeHelper
-                               .getSupportedCodes();
-               String[][] labelAndValues = new String[supportedCodes.size()][2];
-               for (int i = 0; i < supportedCodes.size(); i++) {
-                       labelAndValues[i][0] = NomenclaturalCodeHelper
-                                       .getDescription(supportedCodes.get(i));
-                       labelAndValues[i][1] = PreferencesUtil
-                                       .getPreferenceKey(supportedCodes.get(i));
-               }
-               return labelAndValues;
-       }
-
-       /**
-        * {@inheritDoc}
-        *
-        * Initialize the preference page
-        */
-       @Override
-    public void init(IWorkbench workbench) {
-
-               setPreferenceStore(TaxeditorStorePlugin.getDefault()
-                               .getPreferenceStore());
-
-             ICdmApplicationConfiguration controller = CdmStore.getCurrentApplicationConfiguration();
-          if (controller != null){
-              IPreferenceService service = controller.getPreferenceService();
-              PrefKey key = CdmPreference.NewKey(PreferenceSubject.NewDatabaseInstance(), PreferencePredicate.NomenclaturalCode);
-              CdmPreference pref = service.find(key);
-              getPreferenceStore().setValue(IPreferenceKeys.ALLOW_OVERRIDE_NOMENCLATURAL_CODE_KEY, pref == null? true : pref.isAllowOverride());
-          }
-
-           if (getPreferenceStore().getBoolean(IPreferenceKeys.ALLOW_OVERRIDE_NOMENCLATURAL_CODE_KEY)) {
-               setDescription("Choose which nomenclatural code you would like to use in your local application for scientific names unless otherwise specified.");
-           }else{
-               setDescription("The CDM settings don't allow to set the nomenclatural code locally. If you need to make local settings, please ask an administrator.");
-
-           }
-       }
-
-       @Override
-        public boolean performOk() {
-
-               boolean result = super.performOk();
-//             if (result){
-//                     String value = getPreferenceStore().getString(IPreferenceKeys.PREFERRED_NOMENCLATURAL_CODE_KEY);
-//                     CdmPreference pref = CdmPreference.NewDatabaseInstance( PreferencePredicate.NomenclaturalCode, value);
-//                     ICdmApplicationConfiguration controller = CdmStore.getCurrentApplicationConfiguration();
-//                     if (controller == null){
-//                             return false;
-//                     }
-//                     IPreferenceService service = controller.getPreferenceService();
-//                     service.set(pref);
-//             }
-        return result;
-    }
-
-}
+/**\r
+ * Copyright (C) 2007 EDIT\r
+ * European Distributed Institute of Taxonomy\r
+ * http://www.e-taxonomy.eu\r
+ *\r
+ * The contents of this file are subject to the Mozilla Public License Version 1.1\r
+ * See LICENSE.TXT at the top of this package for the full license terms.\r
+ */\r
+package eu.etaxonomy.taxeditor.preference;\r
+\r
+import java.util.HashMap;\r
+import java.util.List;\r
+import java.util.Map;\r
+import java.util.Map.Entry;\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.widgets.Button;\r
+import org.eclipse.swt.widgets.Combo;\r
+import org.eclipse.swt.widgets.Composite;\r
+import org.eclipse.swt.widgets.Control;\r
+\r
+import eu.etaxonomy.cdm.model.metadata.CdmPreference;\r
+import eu.etaxonomy.cdm.model.metadata.PreferencePredicate;\r
+import eu.etaxonomy.cdm.model.name.NomenclaturalCode;\r
+import eu.etaxonomy.taxeditor.databaseAdmin.preferencePage.IE4AdminPreferencePage;\r
+import eu.etaxonomy.taxeditor.l10n.Messages;\r
+import eu.etaxonomy.taxeditor.model.NomenclaturalCodeHelper;\r
+import eu.etaxonomy.taxeditor.preference.menu.CdmPreferencePage;\r
+import eu.etaxonomy.taxeditor.store.CdmStore;\r
+\r
+/**\r
+ * <p>\r
+ * NomenclaturalCodePreferences class.\r
+ * </p>\r
+ *\r
+ * @author k.luther\r
+ * @created 14.09.2018\r
+ */\r
+public class NomenclaturalCodePreferences extends CdmPreferencePage implements IE4AdminPreferencePage{\r
+    protected CdmPreference pref;\r
+    protected NomenclaturalCode actualCode = null;\r
+    protected Map<NomenclaturalCode, String>  labelAndValues;\r
+    protected Map<NomenclaturalCode, Integer> keyAndIndex;\r
+    protected Combo nomenclaturalCode;\r
+    protected Button allowOverrideButton;\r
+    protected boolean allowOverride;\r
+    private boolean override;\r
+\r
+\r
+       @Override\r
+       protected Control createContents(Composite parent) {\r
+//         PreferencesUtil.setPreferredNomenclaturalCode(null, false);\r
+\r
+           getValues();\r
+           Composite composite = createComposite(parent);\r
+           if (pref != null && !pref.isAllowOverride() && !isAdminPreference){\r
+               final CLabel description = new CLabel(composite, SWT.NULL);\r
+               description.setText(Messages.NomenclaturalCodePreferences_localChangesNotAllowed);\r
+               description.setLayoutData(createTextGridData());\r
+               return composite;\r
+           }\r
+        final CLabel description = new CLabel(composite, SWT.NULL);\r
+        description.setText(Messages.NomenclaturalCodePreferences_description);\r
+        description.setLayoutData(createTextGridData());\r
+\r
+        nomenclaturalCode= new Combo(composite, SWT.READ_ONLY);\r
+        nomenclaturalCode.setText(Messages.NomenclaturalCodePreferences_available_codes);\r
+\r
+\r
+\r
+        nomenclaturalCode.setFont(parent.getFont());\r
+        getLabelAndValues();\r
+        keyAndIndex = new HashMap<>();\r
+        Integer index = 0;\r
+        if (isAdminPreference){\r
+            nomenclaturalCode.add(Messages.Preference_Use_Default + " (" +PreferencePredicate.NomenclaturalCode.getDefaultValue().toString()+")", index);\r
+        }else{\r
+            if (pref != null){\r
+                if (pref.getValue() == null){\r
+                    nomenclaturalCode.add(Messages.Preference_Use_Default + " (" +PreferencePredicate.NomenclaturalCode.getDefaultValue().toString()+")", index);\r
+                }else{\r
+                    nomenclaturalCode.add(Messages.Preference_Use_Default + " (" +pref.getValue()+")", index);\r
+                }\r
+            }\r
+        }\r
+        index++;\r
+        for (NomenclaturalCode key: labelAndValues.keySet()) {\r
+            nomenclaturalCode.add(labelAndValues.get(key));\r
+            keyAndIndex.put(key, index);\r
+            index++;\r
+        }\r
+        index = keyAndIndex.get(actualCode);\r
+        if(index!=null){\r
+            nomenclaturalCode.select(index);\r
+        }else{\r
+            nomenclaturalCode.select(0);\r
+\r
+        }\r
+        if (isAdminPreference){\r
+            allowOverrideButton = createAllowOverrideButton(composite);\r
+            allowOverrideButton.setText(Messages.GeneralPreference_allowOverride);\r
+            allowOverrideButton.setSelection(allowOverride);\r
+            if (actualCode == null){\r
+//                allowOverrideButton.setEnabled(false);\r
+            }\r
+            allowOverrideButton.addSelectionListener(new SelectionAdapter(){\r
+                @Override\r
+                public void widgetSelected(SelectionEvent e) {\r
+                    allowOverride = allowOverrideButton.getSelection();\r
+                    setApply(true);\r
+                }\r
+            });\r
+        }\r
+\r
+        nomenclaturalCode.addSelectionListener(new SelectionAdapter() {\r
+            @Override\r
+            public void widgetSelected(SelectionEvent evt) {\r
+                setApply(true);\r
+                String name = nomenclaturalCode.getText();\r
+                actualCode = null;\r
+                for (Entry<NomenclaturalCode, String> label:labelAndValues.entrySet()){\r
+                    if (label.getValue().equals(name)){\r
+                        actualCode = label.getKey();\r
+                    }\r
+                }\r
+\r
+\r
+\r
+            }\r
+        });\r
+\r
+        return composite;\r
+\r
+       }\r
+\r
+       /**\r
+        * @return\r
+        */\r
+       private void getLabelAndValues() {\r
+               List<NomenclaturalCode> supportedCodes = NomenclaturalCodeHelper\r
+                               .getSupportedCodes();\r
+               labelAndValues = new HashMap<>();\r
+\r
+               for (int i = 0; i < supportedCodes.size(); i++) {\r
+                       labelAndValues.put(supportedCodes.get(i), NomenclaturalCodeHelper\r
+                    .getDescription(supportedCodes.get(i))) ;\r
+\r
+               }\r
+\r
+       }\r
+\r
+       /**\r
+        * {@inheritDoc}\r
+        *\r
+        * Initialize the preference page\r
+        */\r
+    @Override\r
+    public void init() {\r
+        super.init();\r
+        if(!CdmStore.isActive()){\r
+            return;\r
+        }\r
+\r
+\r
+\r
+       }\r
+\r
+       @Override\r
+        public boolean performOk() {\r
+           if (!isApply()){\r
+            return true;\r
+        }\r
+\r
+           if (actualCode != null && pref.isAllowOverride()){\r
+               PreferencesUtil.setStringValue(PreferencePredicate.NomenclaturalCode.getKey(), actualCode.getKey());\r
+               PreferencesUtil.setBooleanValue(PreferencesUtil.createOverridePreferenceString(PreferencePredicate.NomenclaturalCode.getKey()), true);\r
+           }else{\r
+               PreferencesUtil.setBooleanValue(PreferencesUtil.createOverridePreferenceString(PreferencePredicate.NomenclaturalCode.getKey()), false);\r
+           }\r
+        return true;\r
+    }\r
+\r
+       @Override\r
+       protected void performDefaults() {\r
+           actualCode = null;\r
+           allowOverride = true;\r
+\r
+           nomenclaturalCode.select(0);\r
+\r
+        if (isAdminPreference){\r
+            allowOverrideButton.setSelection(allowOverride);\r
+        }\r
+        setApply(true);\r
+           super.performDefaults();\r
+       }\r
+\r
+       @Override\r
+    protected void getValues(){\r
+           isAdminPreference = false;\r
+           pref = PreferencesUtil.getPreferenceFromDB(PreferencePredicate.NomenclaturalCode);\r
+        override = PreferencesUtil.getBooleanValue(\r
+                PreferencesUtil.prefOverrideKey(PreferencePredicate.NomenclaturalCode.getKey()), true) != null? PreferencesUtil.getBooleanValue(\r
+                        PreferencesUtil.prefOverrideKey(PreferencePredicate.NomenclaturalCode.getKey()), true):false;\r
+        String nomString = null;\r
+        if (pref != null) {\r
+            if (pref.isAllowOverride() ) {\r
+                if (override){\r
+                    nomString = PreferencesUtil.getStringValue(PreferencePredicate.NomenclaturalCode.getKey(), true);\r
+                }\r
+\r
+            } else {\r
+                nomString = pref.getValue() != null? String.valueOf(pref.getValue()): null;\r
+            }\r
+\r
+        } else {\r
+            if(!override){\r
+                actualCode = null;\r
+            }else{\r
+                nomString = PreferencesUtil.getStringValue(PreferencePredicate.NomenclaturalCode.getKey(), true);\r
+\r
+            }\r
+            pref = CdmPreference.NewTaxEditorInstance(PreferencePredicate.NomenclaturalCode, PreferencePredicate.NomenclaturalCode.getDefaultValue() != null ?  PreferencePredicate.NomenclaturalCode.getDefaultValue().toString(): null);\r
+        }\r
+        if (nomString != null){\r
+            actualCode = NomenclaturalCode.fromString(nomString);\r
+        }\r
+\r
+\r
+\r
+\r
+       }\r
+\r
+}\r