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
.jface
.wizard
.WizardDialog
;
7 import org
.eclipse
.swt
.SWT
;
8 import org
.eclipse
.swt
.events
.SelectionAdapter
;
9 import org
.eclipse
.swt
.events
.SelectionEvent
;
10 import org
.eclipse
.swt
.graphics
.Point
;
11 import org
.eclipse
.swt
.graphics
.Rectangle
;
12 import org
.eclipse
.swt
.widgets
.Menu
;
13 import org
.eclipse
.swt
.widgets
.MenuItem
;
14 import org
.eclipse
.swt
.widgets
.Table
;
15 import org
.eclipse
.swt
.widgets
.TableColumn
;
16 import org
.eclipse
.swt
.widgets
.ToolItem
;
18 import eu
.etaxonomy
.cdm
.model
.common
.DefinedTermBase
;
19 import eu
.etaxonomy
.taxeditor
.editor
.view
.checklist
.ChecklistEditor
;
20 import eu
.etaxonomy
.taxeditor
.preference
.PreferencesUtil
;
21 import eu
.etaxonomy
.taxeditor
.preference
.wizard
.AvailableDistributionWizard
;
22 import eu
.etaxonomy
.taxeditor
.store
.StoreUtil
;
25 * Handles drop down menu selection. Available items are defined in the
26 * enumeration SearchOption.
29 * @created Feb 2, 2010
32 public class ChecklistDropdownSelectionListener
extends SelectionAdapter
{
34 private final Menu menu
;
35 private final ToolItem dropdown
;
36 private final ChecklistEditor editor
;
37 private final SortedSet
<DefinedTermBase
> termSet
;
39 public ChecklistDropdownSelectionListener(ToolItem dropdown
, ChecklistEditor editor
,
40 SortedSet
<DefinedTermBase
> termSet
) {
41 this.dropdown
= dropdown
;
43 this.termSet
= termSet
;
44 menu
= new Menu(dropdown
.getParent().getShell());
48 // SearchOption option
49 public void add(DefinedTermBase
<DefinedTermBase
> term
) {
50 MenuItem menuItem
= new MenuItem(menu
, SWT
.CHECK
);
51 menuItem
.setText(term
.getTitleCache());
52 if (PreferencesUtil
.getPreferenceStore().getBoolean(term
.getUuid().toString())) {
53 menuItem
.setSelection(true);
55 menuItem
.setSelection(false);
57 menuItem
.addSelectionListener(new SelectionAdapter() {
59 public void widgetSelected(SelectionEvent event
) {
60 MenuItem selected
= (MenuItem
) event
.widget
;
62 TableViewer viewer
= (TableViewer
) editor
.getViewer();
63 final Table table
= viewer
.getTable();
64 // TODO make it selectable according to selection event
65 TableColumn column
= null;
66 DefinedTermBase
<DefinedTermBase
> selectedTerm
= null;
67 if (termSet
!= null) {
69 for (DefinedTermBase
<DefinedTermBase
> term
: termSet
) {
71 if (selected
.getText().equalsIgnoreCase(term
.getTitleCache())) {
73 column
= table
.getColumn(4 + i
);
79 if (column
!= null && column
.getWidth() == 0) {
80 // save column status if shown or not
81 if (selectedTerm
!= null) {
82 PreferencesUtil
.getPreferenceStore().setValue(selectedTerm
.getUuid().toString(), true);
85 } else if (column
!= null) {
86 if (selectedTerm
!= null) {
87 PreferencesUtil
.getPreferenceStore().setValue(selectedTerm
.getUuid().toString(), false);
96 private void initialMenuItem(){
97 MenuItem menuItem
= new MenuItem(menu
, SWT
.PUSH
);
98 menuItem
.setText("Add Distribution");
99 menuItem
.addSelectionListener(new SelectionAdapter() {
101 public void widgetSelected(SelectionEvent event
) {
102 AvailableDistributionWizard availableDistributionWizard
= new AvailableDistributionWizard();
103 WizardDialog dialog
= new WizardDialog(StoreUtil
.getShell(),
104 availableDistributionWizard
);
109 new MenuItem(menu
, SWT
.SEPARATOR
);
113 public void widgetSelected(SelectionEvent event
) {
114 if (event
.detail
== SWT
.ARROW
) {
115 ToolItem item
= (ToolItem
) event
.widget
;
116 Rectangle rect
= item
.getBounds();
117 Point pt
= item
.getParent().toDisplay(new Point(rect
.x
, rect
.y
));
118 menu
.setLocation(pt
.x
, pt
.y
+ rect
.height
);
119 menu
.setVisible(true);
121 menu
.setVisible(true);