2 * Copyright (C) 2007 EDIT
3 * European Distributed Institute of Taxonomy
4 * http://www.e-taxonomy.eu
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.
9 package eu
.etaxonomy
.taxeditor
.preference
.menu
;
11 import java
.util
.List
;
13 import org
.eclipse
.jface
.preference
.BooleanFieldEditor
;
14 import org
.eclipse
.jface
.preference
.ComboFieldEditor
;
15 import org
.eclipse
.jface
.preference
.FieldEditorPreferencePage
;
16 import org
.eclipse
.ui
.IWorkbench
;
17 import org
.eclipse
.ui
.IWorkbenchPreferencePage
;
19 import eu
.etaxonomy
.cdm
.api
.application
.ICdmApplicationConfiguration
;
20 import eu
.etaxonomy
.cdm
.api
.service
.IPreferenceService
;
21 import eu
.etaxonomy
.cdm
.model
.metadata
.CdmPreference
;
22 import eu
.etaxonomy
.cdm
.model
.metadata
.CdmPreference
.PrefKey
;
23 import eu
.etaxonomy
.cdm
.model
.metadata
.PreferencePredicate
;
24 import eu
.etaxonomy
.cdm
.model
.metadata
.PreferenceSubject
;
25 import eu
.etaxonomy
.cdm
.model
.name
.NomenclaturalCode
;
26 import eu
.etaxonomy
.taxeditor
.model
.NomenclaturalCodeHelper
;
27 import eu
.etaxonomy
.taxeditor
.preference
.IPreferenceKeys
;
28 import eu
.etaxonomy
.taxeditor
.preference
.PreferencesUtil
;
29 import eu
.etaxonomy
.taxeditor
.store
.CdmStore
;
30 import eu
.etaxonomy
.taxeditor
.store
.internal
.TaxeditorStorePlugin
;
34 * NomenclaturalCodePreferences class.
40 public class NomenclaturalCodePreferences
extends FieldEditorPreferencePage
41 implements IWorkbenchPreferencePage
{
44 protected void createFieldEditors() {
45 PreferencesUtil
.setPreferredNomenclaturalCode(null, false);
46 if (getPreferenceStore().getBoolean(IPreferenceKeys
.ALLOW_OVERRIDE_NOMENCLATURAL_CODE_KEY
)) {
47 addField(new ComboFieldEditor(
48 IPreferenceKeys
.PREFERRED_NOMENCLATURAL_CODE_KEY
,
49 "Available Codes", getLabelAndValues(),
50 getFieldEditorParent()));
52 addField(new BooleanFieldEditor(
53 IPreferenceKeys
.OVERRIDE_NOMENCLATURAL_CODE_KEY
,
54 "Use local nomenclatural code",
55 getFieldEditorParent()));
57 setDescription("The CDM settings don't allow to set the nomenclatural code locally. If you need to make local settings, please ask an administrator.");
65 private String
[][] getLabelAndValues() {
66 List
<NomenclaturalCode
> supportedCodes
= NomenclaturalCodeHelper
68 String
[][] labelAndValues
= new String
[supportedCodes
.size()][2];
69 for (int i
= 0; i
< supportedCodes
.size(); i
++) {
70 labelAndValues
[i
][0] = NomenclaturalCodeHelper
71 .getDescription(supportedCodes
.get(i
));
72 labelAndValues
[i
][1] = PreferencesUtil
73 .getPreferenceKey(supportedCodes
.get(i
));
75 return labelAndValues
;
81 * Initialize the preference page
84 public void init(IWorkbench workbench
) {
86 setPreferenceStore(TaxeditorStorePlugin
.getDefault()
87 .getPreferenceStore());
89 ICdmApplicationConfiguration controller
= CdmStore
.getCurrentApplicationConfiguration();
90 if (controller
!= null){
91 IPreferenceService service
= controller
.getPreferenceService();
92 PrefKey key
= CdmPreference
.NewKey(PreferenceSubject
.NewDatabaseInstance(), PreferencePredicate
.NomenclaturalCode
);
93 CdmPreference pref
= service
.find(key
);
94 getPreferenceStore().setValue(IPreferenceKeys
.ALLOW_OVERRIDE_NOMENCLATURAL_CODE_KEY
, pref
== null?
true : pref
.isAllowOverride());
97 if (getPreferenceStore().getBoolean(IPreferenceKeys
.ALLOW_OVERRIDE_NOMENCLATURAL_CODE_KEY
)) {
98 setDescription("Choose which nomenclatural code you would like to use in your local application for scientific names unless otherwise specified.");
100 setDescription("The CDM settings don't allow to set the nomenclatural code locally. If you need to make local settings, please ask an administrator.");
106 public boolean performOk() {
108 boolean result
= super.performOk();
110 // String value = getPreferenceStore().getString(IPreferenceKeys.PREFERRED_NOMENCLATURAL_CODE_KEY);
111 // CdmPreference pref = CdmPreference.NewDatabaseInstance( PreferencePredicate.NomenclaturalCode, value);
112 // ICdmApplicationConfiguration controller = CdmStore.getCurrentApplicationConfiguration();
113 // if (controller == null){
116 // IPreferenceService service = controller.getPreferenceService();
117 // service.set(pref);