3 * Copyright (C) 2016 EDIT
4 * European Distributed Institute of Taxonomy
5 * http://www.e-taxonomy.eu
7 * The contents of this file are subject to the Mozilla Public License Version 1.1
8 * See LICENSE.TXT at the top of this package for the full license terms.
10 package eu
.etaxonomy
.taxeditor
.databasePreferences
.wizard
;
12 import java
.util
.List
;
14 import org
.eclipse
.jface
.preference
.BooleanFieldEditor
;
15 import org
.eclipse
.jface
.preference
.ComboFieldEditor
;
16 import org
.eclipse
.jface
.preference
.FieldEditorPreferencePage
;
17 import org
.eclipse
.jface
.preference
.IPreferenceStore
;
18 import org
.eclipse
.jface
.wizard
.IWizard
;
19 import org
.eclipse
.jface
.wizard
.IWizardPage
;
20 import org
.eclipse
.ui
.IWorkbench
;
21 import org
.eclipse
.ui
.IWorkbenchPreferencePage
;
23 import eu
.etaxonomy
.cdm
.api
.application
.ICdmApplicationConfiguration
;
24 import eu
.etaxonomy
.cdm
.api
.service
.IPreferenceService
;
25 import eu
.etaxonomy
.cdm
.model
.metadata
.CdmPreference
;
26 import eu
.etaxonomy
.cdm
.model
.metadata
.PreferencePredicate
;
27 import eu
.etaxonomy
.cdm
.model
.name
.NomenclaturalCode
;
28 import eu
.etaxonomy
.taxeditor
.model
.NomenclaturalCodeHelper
;
29 import eu
.etaxonomy
.taxeditor
.preference
.IPreferenceKeys
;
30 import eu
.etaxonomy
.taxeditor
.preference
.PreferencesUtil
;
31 import eu
.etaxonomy
.taxeditor
.store
.CdmStore
;
32 import eu
.etaxonomy
.taxeditor
.store
.internal
.TaxeditorStorePlugin
;
39 public class DatabasePreferencesPage
extends FieldEditorPreferencePage
implements IWorkbenchPreferencePage
, IWizardPage
{
42 * The wizard to which this page belongs; <code>null</code>
43 * if this page has yet to be added to a wizard.
45 private IWizard wizard
= null;
48 * Indicates whether this page is complete.
50 private boolean isPageComplete
= true;
53 * The page that was shown right before this page became visible;
54 * <code>null</code> if none.
56 private IWizardPage previousPage
= null;
58 CdmPreference preferedNomenclaturalCode
;
62 * @see org.eclipse.ui.IWorkbenchPreferencePage#init(org.eclipse.ui.IWorkbench)
65 public void init(IWorkbench workbench
) {
66 setPreferenceStore(TaxeditorStorePlugin
.getDefault()
67 .getPreferenceStore());
69 preferedNomenclaturalCode
= PreferencesUtil
.setPreferredNomenclaturalCode(null, false);
70 if (super.getPreferenceStore()== null){
71 setPreferenceStore(PreferencesUtil
.getPreferenceStore());
78 * @see org.eclipse.jface.preference.FieldEditorPreferencePage#createFieldEditors()
81 protected void createFieldEditors() {
82 setMessage("Choose which nomenclatural code you would like to use for scientific names unless otherwise specified.");
83 ComboFieldEditor nomenclaturalCode
= new ComboFieldEditor(
84 IPreferenceKeys
.CDM_NOMENCLATURAL_CODE_KEY
,
85 "Available Codes", getLabelAndValues(),
86 getFieldEditorParent());
87 nomenclaturalCode
.setPreferenceStore(PreferencesUtil
.getPreferenceStore());
88 addField(nomenclaturalCode
);
89 BooleanFieldEditor allowOverride
= new BooleanFieldEditor(
90 IPreferenceKeys
.ALLOW_OVERRIDE_NOMENCLATURAL_CODE_KEY
,
91 "allow to use local preference",
92 getFieldEditorParent());
93 allowOverride
.setPreferenceStore(PreferencesUtil
.getPreferenceStore());
94 addField(allowOverride
);
100 * Returns the preference store of this preference page.
102 * This is a framework hook method for subclasses to return a
103 * page-specific preference store. The default implementation
104 * returns <code>null</code>.
107 * @return the preference store, or <code>null</code> if none
110 protected IPreferenceStore
doGetPreferenceStore() {
111 return PreferencesUtil
.getPreferenceStore();
117 private String
[][] getLabelAndValues() {
118 List
<NomenclaturalCode
> supportedCodes
= NomenclaturalCodeHelper
119 .getSupportedCodes();
120 String
[][] labelAndValues
= new String
[supportedCodes
.size()][2];
121 for (int i
= 0; i
< supportedCodes
.size(); i
++) {
122 labelAndValues
[i
][0] = NomenclaturalCodeHelper
123 .getDescription(supportedCodes
.get(i
));
124 labelAndValues
[i
][1] = PreferencesUtil
125 .getPreferenceKey(supportedCodes
.get(i
));
127 return labelAndValues
;
130 public boolean performOk() {
131 if (super.getPreferenceStore()== null){
132 setPreferenceStore(PreferencesUtil
.getPreferenceStore());
134 boolean result
= super.performOk();
136 String value
=getPreferenceStore().getString(IPreferenceKeys
.CDM_NOMENCLATURAL_CODE_KEY
);
137 boolean allowOverride
= getPreferenceStore().getBoolean(IPreferenceKeys
.ALLOW_OVERRIDE_NOMENCLATURAL_CODE_KEY
);
138 CdmPreference pref
= CdmPreference
.NewDatabaseInstance( PreferencePredicate
.NomenclaturalCode
, value
);
139 pref
.setAllowOverride(allowOverride
);
140 ICdmApplicationConfiguration controller
= CdmStore
.getCurrentApplicationConfiguration();
141 if (controller
== null){
144 IPreferenceService service
= controller
.getPreferenceService();
154 public boolean canFlipToNextPage() {
155 // TODO Auto-generated method stub
163 public String
getName() {
165 return "Database Preferences";
172 public IWizardPage
getNextPage() {
173 // TODO Auto-generated method stub
181 public IWizardPage
getPreviousPage() {
190 public IWizard
getWizard() {
199 public boolean isPageComplete() {
201 return isPageComplete
;
208 public void setPreviousPage(IWizardPage page
) {
209 this.previousPage
= page
;
217 public void setWizard(IWizard newWizard
) {
218 this.wizard
= newWizard
;