1 package eu
.etaxonomy
.taxeditor
.editor
.view
.checklist
.listener
;
3 import java
.util
.SortedSet
;
5 import org
.eclipse
.jface
.viewers
.TableViewer
;
6 import org
.eclipse
.swt
.SWT
;
7 import org
.eclipse
.swt
.events
.SelectionAdapter
;
8 import org
.eclipse
.swt
.events
.SelectionEvent
;
9 import org
.eclipse
.swt
.graphics
.Point
;
10 import org
.eclipse
.swt
.graphics
.Rectangle
;
11 import org
.eclipse
.swt
.widgets
.Menu
;
12 import org
.eclipse
.swt
.widgets
.MenuItem
;
13 import org
.eclipse
.swt
.widgets
.Table
;
14 import org
.eclipse
.swt
.widgets
.TableColumn
;
15 import org
.eclipse
.swt
.widgets
.ToolItem
;
17 import eu
.etaxonomy
.cdm
.model
.common
.DefinedTermBase
;
18 import eu
.etaxonomy
.taxeditor
.editor
.view
.checklist
.ChecklistEditor
;
19 import eu
.etaxonomy
.taxeditor
.preference
.PreferencesUtil
;
22 * Handles drop down menu selection. Available items are defined in the
23 * enumeration SearchOption.
26 * @created Feb 2, 2010
29 public class ChecklistDropdownSelectionListener
extends SelectionAdapter
{
31 private final Menu menu
;
32 private final ToolItem dropdown
;
33 private final ChecklistEditor editor
;
34 private final SortedSet
<DefinedTermBase
> termSet
;
36 public ChecklistDropdownSelectionListener(ToolItem dropdown
, ChecklistEditor editor
,
37 SortedSet
<DefinedTermBase
> termSet
) {
38 this.dropdown
= dropdown
;
40 this.termSet
= termSet
;
41 menu
= new Menu(dropdown
.getParent().getShell());
44 // SearchOption option
45 public void add(DefinedTermBase
<DefinedTermBase
> term
) {
46 MenuItem menuItem
= new MenuItem(menu
, SWT
.CHECK
);
47 menuItem
.setText(term
.getTitleCache());
48 if (PreferencesUtil
.getPreferenceStore().getBoolean(term
.getUuid().toString())) {
49 menuItem
.setSelection(true);
51 menuItem
.setSelection(false);
53 menuItem
.addSelectionListener(new SelectionAdapter() {
55 public void widgetSelected(SelectionEvent event
) {
56 MenuItem selected
= (MenuItem
) event
.widget
;
58 TableViewer viewer
= (TableViewer
) editor
.getViewer();
59 final Table table
= viewer
.getTable();
60 // TODO make it selectable according to selection event
61 TableColumn column
= null;
62 DefinedTermBase
<DefinedTermBase
> selectedTerm
= null;
63 if (termSet
!= null) {
65 for (DefinedTermBase
<DefinedTermBase
> term
: termSet
) {
67 if (selected
.getText().equalsIgnoreCase(term
.getTitleCache())) {
69 column
= table
.getColumn(4 + i
);
75 if (column
!= null && column
.getWidth() == 0) {
76 // save column status if shown or not
77 if (selectedTerm
!= null) {
78 PreferencesUtil
.getPreferenceStore().setValue(selectedTerm
.getUuid().toString(), true);
81 } else if (column
!= null) {
82 if (selectedTerm
!= null) {
83 PreferencesUtil
.getPreferenceStore().setValue(selectedTerm
.getUuid().toString(), false);
93 public void widgetSelected(SelectionEvent event
) {
94 if (event
.detail
== SWT
.ARROW
) {
95 ToolItem item
= (ToolItem
) event
.widget
;
96 Rectangle rect
= item
.getBounds();
97 Point pt
= item
.getParent().toDisplay(new Point(rect
.x
, rect
.y
));
98 menu
.setLocation(pt
.x
, pt
.y
+ rect
.height
);
99 menu
.setVisible(true);
101 menu
.setVisible(true);