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
;
12 import java
.util
.List
;
15 import org
.eclipse
.jface
.preference
.PreferencePage
;
16 import org
.eclipse
.swt
.SWT
;
17 import org
.eclipse
.swt
.events
.MouseAdapter
;
18 import org
.eclipse
.swt
.events
.MouseEvent
;
19 import org
.eclipse
.swt
.layout
.GridLayout
;
20 import org
.eclipse
.swt
.widgets
.Button
;
21 import org
.eclipse
.swt
.widgets
.Composite
;
22 import org
.eclipse
.swt
.widgets
.Control
;
23 import org
.eclipse
.swt
.widgets
.Label
;
24 import org
.eclipse
.ui
.IWorkbench
;
25 import org
.eclipse
.ui
.IWorkbenchPreferencePage
;
27 import eu
.etaxonomy
.cdm
.model
.common
.OrderedTermVocabulary
;
28 import eu
.etaxonomy
.cdm
.model
.name
.Rank
;
29 import eu
.etaxonomy
.taxeditor
.store
.CdmStore
;
32 * Allows the user to choose which <code>Rank</code>s to display in the
33 * <code>PropertySheet</code> drop-down menu for <code>TaxonNameBase</code>.
39 public class RankMenuPreferences
extends PreferencePage
implements
40 IWorkbenchPreferencePage
{
42 public static final String PLUGIN_ID
= "eu.etaxonomy.taxeditor.preferences.ranks";
44 private Map
<Rank
, Button
> rankButtons
;
46 private Button toggleButton
;
48 public RankMenuPreferences() {
50 setDescription("Choose which ranks to display in the property sheet drop-down menu.");
55 * Create contents of the preference page
59 public Control
createContents(Composite parent
) {
61 rankButtons
= new HashMap
<Rank
, Button
>();
63 Composite container
= new Composite(parent
, SWT
.NULL
);
64 final GridLayout gridLayout
= new GridLayout();
65 gridLayout
.numColumns
= 3;
66 container
.setLayout(gridLayout
);
68 CdmStore
.getDefault();
69 OrderedTermVocabulary
<Rank
> ranks
= CdmStore
.getRanks();
71 for (Rank rank
: ranks
) {
73 Button button
= new Button(container
, SWT
.CHECK
);
74 button
.setText(rank
.getLabel());
75 rankButtons
.put(rank
, button
);
77 if (PreferencesUtil
.getRankPreference(rank
)) {
78 button
.setSelection(true);
82 Composite toggleContainer
= new Composite(parent
, SWT
.NULL
);
83 toggleContainer
.setLayout(new GridLayout());
85 toggleButton
= new Button(toggleContainer
, SWT
.TOGGLE
);
86 toggleButton
.setText("Toggle Selection");
87 toggleButton
.addMouseListener(new MouseAdapter(){
90 * @see org.eclipse.swt.events.MouseAdapter#mouseDown(org.eclipse.swt.events.MouseEvent)
93 public void mouseDown(MouseEvent e
) {
94 setSelectionForAll(toggleButton
.getSelection());
103 * @see org.eclipse.ui.IWorkbenchPreferencePage#init(org.eclipse.ui.IWorkbench)
105 public void init(IWorkbench workbench
) {
106 setPreferenceStore(PreferencesUtil
.getPrefStore());
110 * @see org.eclipse.jface.preference.PreferencePage#performDefaults()
112 protected void performDefaults() {
113 setSelectionForAll(true);
117 * Set all buttons to the given value
119 * @param selection true to activate all of the checkboxes, false otherwise
121 private void setSelectionForAll(boolean selection
){
122 for (Button button
: rankButtons
.values()) {
123 button
.setSelection(selection
);
128 * @see org.eclipse.jface.preference.PreferencePage#performOk()
130 public boolean performOk() {
132 for (Rank rank
: rankButtons
.keySet()) {
133 Button button
= rankButtons
.get(rank
);
134 PreferencesUtil
.setRankPreference(rank
, button
.getSelection());