3 * Copyright (C) 2007 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.
11 package eu
.etaxonomy
.taxeditor
.preference
;
13 import java
.util
.HashMap
;
14 import java
.util
.List
;
17 import org
.eclipse
.jface
.preference
.PreferencePage
;
18 import org
.eclipse
.jface
.viewers
.CheckboxTableViewer
;
19 import org
.eclipse
.jface
.viewers
.IStructuredContentProvider
;
20 import org
.eclipse
.jface
.viewers
.ITableLabelProvider
;
21 import org
.eclipse
.jface
.viewers
.LabelProvider
;
22 import org
.eclipse
.jface
.viewers
.Viewer
;
23 import org
.eclipse
.swt
.SWT
;
24 import org
.eclipse
.swt
.events
.MouseAdapter
;
25 import org
.eclipse
.swt
.events
.MouseEvent
;
26 import org
.eclipse
.swt
.graphics
.Image
;
27 import org
.eclipse
.swt
.layout
.GridData
;
28 import org
.eclipse
.swt
.layout
.GridLayout
;
29 import org
.eclipse
.swt
.widgets
.Button
;
30 import org
.eclipse
.swt
.widgets
.Composite
;
31 import org
.eclipse
.swt
.widgets
.Control
;
32 import org
.eclipse
.ui
.IWorkbench
;
34 import eu
.etaxonomy
.cdm
.model
.common
.DefinedTermBase
;
41 public abstract class AbstractMenuPreferences
extends PreferencePage
{
43 private Button toggleButton
;
44 protected HashMap
<DefinedTermBase
, Button
> menuButtons
;
46 protected Set
<?
> vocabulary
;
48 private List preferedTerms
;
50 protected CheckboxTableViewer tableViewer
;
52 private boolean state
= true;
55 * Constructs a new menu preference page.
57 * @param initialVocabulary the initial vocabulary contating all possible entries for the menu
58 * @param preferedTerms a List containtg already prefered terms
59 * @param title the title of the page
60 * @param description describing text for the preference page
62 public AbstractMenuPreferences(Set
<?
> initialVocabulary
, List preferedTerms
, String title
, String description
) {
64 vocabulary
= initialVocabulary
;
65 this.preferedTerms
= preferedTerms
;
66 setDescription(description
);
70 * Create contents of the preference page
74 public Control
createContents(Composite parent
) {
76 Composite container
= new Composite(parent
, SWT
.NULL
);
77 final GridLayout gridLayout
= new GridLayout();
78 gridLayout
.numColumns
= 2;
79 container
.setLayout(gridLayout
);
81 tableViewer
= CheckboxTableViewer
.newCheckList(container
, SWT
.NULL
);
82 GridData tableLayoutData
= new GridData(SWT
.FILL
, SWT
.FILL
, true, false);
83 tableLayoutData
.heightHint
= 300;
84 tableViewer
.getTable().setLayoutData(tableLayoutData
);
86 tableViewer
.setContentProvider(new MenuPreferenceContentProvider());
87 tableViewer
.setLabelProvider(new MenuPreferenceLabelProvider());
89 tableViewer
.setInput(vocabulary
);
91 tableViewer
.setCheckedElements(preferedTerms
.toArray());
93 Composite buttonContainer
= new Composite(container
, SWT
.NULL
);
94 GridData buttonContainerLayoutData
= new GridData();
95 buttonContainerLayoutData
.verticalAlignment
= SWT
.TOP
;
96 buttonContainer
.setLayoutData(buttonContainerLayoutData
);
97 buttonContainer
.setLayout(new GridLayout());
99 createButtons(buttonContainer
);
101 toggleButton
= new Button(buttonContainer
, SWT
.PUSH
);
102 toggleButton
.setText("Toggle");
103 toggleButton
.addMouseListener(new MouseAdapter(){
106 * @see org.eclipse.swt.events.MouseAdapter#mouseDown(org.eclipse.swt.events.MouseEvent)
109 public void mouseDown(MouseEvent e
) {
110 tableViewer
.setAllChecked(state
);
111 state
= state ?
false : true;
120 * @param buttonContainer
122 protected abstract void createButtons(Composite buttonContainer
);
124 public void init(IWorkbench workbench
) {
125 setPreferenceStore(PreferencesUtil
.getPrefStore());
130 * @see org.eclipse.jface.preference.PreferencePage#performDefaults()
132 protected void performDefaults() {
133 tableViewer
.setAllChecked(true);
139 * @created 12.06.2009
142 private class MenuPreferenceContentProvider
implements IStructuredContentProvider
{
144 public Object
[] getElements(Object inputElement
) {
145 return ((Set
<?
>) inputElement
).toArray(new DefinedTermBase
[0]);
148 public void dispose() {}
150 public void inputChanged(Viewer viewer
, Object oldInput
,
158 * @created 12.06.2009
161 private class MenuPreferenceLabelProvider
extends LabelProvider
implements ITableLabelProvider
{
164 * @see org.eclipse.jface.viewers.ITableLabelProvider#getColumnImage(java.lang.Object, int)
166 public Image
getColumnImage(Object element
, int columnIndex
) {
171 * @see org.eclipse.jface.viewers.ITableLabelProvider#getColumnText(java.lang.Object, int)
173 public String
getColumnText(Object element
, int columnIndex
) {
174 return ((DefinedTermBase
)element
).getLabel();
180 * @return the tableViewer
182 public CheckboxTableViewer
getTableViewer() {