-/**
- * 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