Merge branch 'release/4.4.0'
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / databasePreferences / wizard / DatabasePreferencesPage.java
1 // $Id$
2 /**
3 * Copyright (C) 2016 EDIT
4 * European Distributed Institute of Taxonomy
5 * http://www.e-taxonomy.eu
6 *
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.
9 */
10 package eu.etaxonomy.taxeditor.databasePreferences.wizard;
11
12 import java.util.List;
13
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;
22
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;
33
34 /**
35 * @author k.luther
36 * @date 01.11.2016
37 *
38 */
39 public class DatabasePreferencesPage extends FieldEditorPreferencePage implements IWorkbenchPreferencePage, IWizardPage {
40
41 /**
42 * The wizard to which this page belongs; <code>null</code>
43 * if this page has yet to be added to a wizard.
44 */
45 private IWizard wizard = null;
46
47 /**
48 * Indicates whether this page is complete.
49 */
50 private boolean isPageComplete = true;
51
52 /**
53 * The page that was shown right before this page became visible;
54 * <code>null</code> if none.
55 */
56 private IWizardPage previousPage = null;
57
58 CdmPreference preferedNomenclaturalCode;
59
60
61 /* (non-Javadoc)
62 * @see org.eclipse.ui.IWorkbenchPreferencePage#init(org.eclipse.ui.IWorkbench)
63 */
64 @Override
65 public void init(IWorkbench workbench) {
66 setPreferenceStore(TaxeditorStorePlugin.getDefault()
67 .getPreferenceStore());
68
69 preferedNomenclaturalCode = PreferencesUtil.setPreferredNomenclaturalCode(null, false);
70 if (super.getPreferenceStore()== null){
71 setPreferenceStore(PreferencesUtil.getPreferenceStore());
72 }
73
74
75 }
76
77 /* (non-Javadoc)
78 * @see org.eclipse.jface.preference.FieldEditorPreferencePage#createFieldEditors()
79 */
80 @Override
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);
95
96
97 }
98
99 /**
100 * Returns the preference store of this preference page.
101 * <p>
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>.
105 * </p>
106 *
107 * @return the preference store, or <code>null</code> if none
108 */
109 @Override
110 protected IPreferenceStore doGetPreferenceStore() {
111 return PreferencesUtil.getPreferenceStore();
112 }
113
114 /**
115 * @return
116 */
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));
126 }
127 return labelAndValues;
128 }
129 @Override
130 public boolean performOk() {
131 if (super.getPreferenceStore()== null){
132 setPreferenceStore(PreferencesUtil.getPreferenceStore());
133 }
134 boolean result = super.performOk();
135 if (result){
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){
142 return false;
143 }
144 IPreferenceService service = controller.getPreferenceService();
145 service.set(pref);
146 }
147 return result;
148 }
149
150 /**
151 * {@inheritDoc}
152 */
153 @Override
154 public boolean canFlipToNextPage() {
155 // TODO Auto-generated method stub
156 return true;
157 }
158
159 /**
160 * {@inheritDoc}
161 */
162 @Override
163 public String getName() {
164
165 return "Database Preferences";
166 }
167
168 /**
169 * {@inheritDoc}
170 */
171 @Override
172 public IWizardPage getNextPage() {
173 // TODO Auto-generated method stub
174 return null;
175 }
176
177 /**
178 * {@inheritDoc}
179 */
180 @Override
181 public IWizardPage getPreviousPage() {
182
183 return previousPage;
184 }
185
186 /**
187 * {@inheritDoc}
188 */
189 @Override
190 public IWizard getWizard() {
191
192 return wizard;
193 }
194
195 /**
196 * {@inheritDoc}
197 */
198 @Override
199 public boolean isPageComplete() {
200
201 return isPageComplete;
202 }
203
204 /**
205 * {@inheritDoc}
206 */
207 @Override
208 public void setPreviousPage(IWizardPage page) {
209 this.previousPage = page;
210
211 }
212
213 /**
214 * {@inheritDoc}
215 */
216 @Override
217 public void setWizard(IWizard newWizard) {
218 this.wizard = newWizard;
219
220 }
221
222
223 }