p2izing the editor
[taxeditor.git] / eclipseprojects / eu.etaxonomy.taxeditor / src / eu / etaxonomy / taxeditor / preference / RankMenuPreferences.java
1 /**
2 * Copyright (C) 2007 EDIT
3 * European Distributed Institute of Taxonomy
4 * http://www.e-taxonomy.eu
5 *
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.
8 */
9 package eu.etaxonomy.taxeditor.preference;
10
11 import java.util.HashMap;
12 import java.util.Map;
13 import java.util.SortedSet;
14
15 import org.apache.log4j.Logger;
16 import org.eclipse.jface.preference.PreferencePage;
17 import org.eclipse.swt.SWT;
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;
24
25 import eu.etaxonomy.cdm.model.name.Rank;
26 import eu.etaxonomy.taxeditor.controller.PreferencesController;
27 import eu.etaxonomy.taxeditor.model.CdmSessionDataRepository;
28 import eu.etaxonomy.taxeditor.model.CdmUtil;
29
30 /**
31 * Allows the user to choose which <code>Rank</code>s to display in the
32 * <code>PropertySheet</code> drop-down menu for <code>TaxonNameBase</code>.
33 *
34 * @author p.ciardelli
35 * @created 17.09.2008
36 * @version 1.0
37 */
38 public class RankMenuPreferences extends PreferencePage implements
39 IWorkbenchPreferencePage {
40 private static final Logger logger = Logger
41 .getLogger(RankMenuPreferences.class);
42
43 public static final String PLUGIN_ID = "eu.etaxonomy.taxeditor.preferences.ranks";
44
45 private Map<Rank, Button> rankButtons;
46
47 public RankMenuPreferences() {
48 super();
49 setDescription("Choose which ranks to display in the property sheet drop-down menu.");
50 }
51
52
53 /**
54 * Create contents of the preference page
55 * @param parent
56 */
57 @Override
58 public Control createContents(Composite parent) {
59
60 rankButtons = new HashMap<Rank, Button>();
61
62 Composite container = new Composite(parent, SWT.NULL);
63 final GridLayout gridLayout = new GridLayout();
64 gridLayout.numColumns = 3;
65 container.setLayout(gridLayout);
66
67 SortedSet<Rank> ranks =
68 CdmSessionDataRepository.getDefault().getRanks();
69
70 for (Rank rank : ranks) {
71
72 Button button = new Button(container, SWT.CHECK);
73 button.setText(rank.getLabel());
74 rankButtons.put(rank, button);
75
76 if (PreferencesController.getRankPreference(rank)) {
77 button.setSelection(true);
78 }
79 }
80
81 return container;
82 }
83
84
85 /* (non-Javadoc)
86 * @see org.eclipse.ui.IWorkbenchPreferencePage#init(org.eclipse.ui.IWorkbench)
87 */
88 public void init(IWorkbench workbench) {
89 setPreferenceStore(PreferencesController.getPrefStore());
90 }
91
92 /* (non-Javadoc)
93 * @see org.eclipse.jface.preference.PreferencePage#performDefaults()
94 */
95 protected void performDefaults() {
96
97 // Set all buttons to show feature
98 for (Button button : rankButtons.values()) {
99 button.setSelection(true);
100 }
101 }
102
103 /* (non-Javadoc)
104 * @see org.eclipse.jface.preference.PreferencePage#performOk()
105 */
106 public boolean performOk() {
107
108 for (Rank rank : rankButtons.keySet()) {
109 Button button = rankButtons.get(rank);
110 PreferencesController.setRankPreference(rank, button.getSelection());
111 }
112
113 return true;
114 }
115 }