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
;
11 import java
.util
.HashMap
;
14 import org
.eclipse
.jface
.preference
.PreferencePage
;
15 import org
.eclipse
.swt
.SWT
;
16 import org
.eclipse
.swt
.events
.SelectionAdapter
;
17 import org
.eclipse
.swt
.events
.SelectionEvent
;
18 import org
.eclipse
.swt
.layout
.GridLayout
;
19 import org
.eclipse
.swt
.widgets
.Button
;
20 import org
.eclipse
.swt
.widgets
.Composite
;
21 import org
.eclipse
.swt
.widgets
.Control
;
22 import org
.eclipse
.ui
.IWorkbench
;
23 import org
.eclipse
.ui
.IWorkbenchPreferencePage
;
25 import eu
.etaxonomy
.cdm
.model
.name
.NomenclaturalCode
;
26 import eu
.etaxonomy
.taxeditor
.model
.NomenclaturalCodeHelper
;
27 import eu
.etaxonomy
.taxeditor
.store
.internal
.TaxeditorStorePlugin
;
30 * <p>NomenclaturalCodePreferences class.</p>
36 public class NomenclaturalCodePreferences
extends PreferencePage
implements
37 IWorkbenchPreferencePage
{
39 /** Constant <code>PLUGIN_ID="eu.etaxonomy.taxeditor.preferences.nome"{trunked}</code> */
40 public static final String PLUGIN_ID
= "eu.etaxonomy.taxeditor.preferences.nomenclatural";
42 private NomenclaturalCode preferredCode
;
44 private Map
<NomenclaturalCode
, Button
> buttons
= new HashMap
<NomenclaturalCode
, Button
>();
47 * <p>Constructor for NomenclaturalCodePreferences.</p>
49 public NomenclaturalCodePreferences() {
51 setDescription("Choose which nomenclatural code you would like to use for scientific names unless otherwise specified.");
57 * Create contents of the preference page
60 public Control
createContents(Composite parent
) {
62 Composite container
= new Composite(parent
, SWT
.NULL
);
63 container
.setLayout(new GridLayout());
65 for (final NomenclaturalCode code
: NomenclaturalCodeHelper
.getSupportedCodes()) {
66 Button button
= new Button(container
, SWT
.RADIO
);
67 button
.setText(NomenclaturalCodeHelper
.getDescription(code
));
68 button
.addSelectionListener(new SelectionAdapter() {
69 public void widgetSelected(SelectionEvent e
) {
73 buttons
.put(code
, button
);
76 preferredCode
= PreferencesUtil
.getPreferredNomenclaturalCode();
77 if (preferredCode
== null) {
78 preferredCode
= NomenclaturalCodeHelper
.getDefaultCode();
79 PreferencesUtil
.setPreferredNomenclaturalCode(preferredCode
);
81 setButton(preferredCode
);
89 * Initialize the preference page
91 public void init(IWorkbench workbench
) {
92 setPreferenceStore(TaxeditorStorePlugin
.getDefault().getPreferenceStore());
96 * <p>performDefaults</p>
98 protected void performDefaults() {
99 setButton(NomenclaturalCodeHelper
.getDefaultCode());
107 public boolean performOk() {
108 PreferencesUtil
.setPreferredNomenclaturalCode(preferredCode
);
112 private void setButton(NomenclaturalCode preferredCode
) {
113 this.preferredCode
= preferredCode
;
114 for (NomenclaturalCode code
: buttons
.keySet()) {
115 buttons
.get(code
).setSelection(code
.equals(preferredCode
));