68a1a94a11686eb90ba0d4d83a914eea13484a0a
[taxeditor.git] / eu.etaxonomy.taxeditor.editor / src / main / java / eu / etaxonomy / taxeditor / editor / view / checklist / listener / ChecklistDropdownSelectionListener.java
1 package eu.etaxonomy.taxeditor.editor.view.checklist.listener;
2
3 import java.util.SortedSet;
4
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;
16
17 import eu.etaxonomy.cdm.model.common.DefinedTermBase;
18 import eu.etaxonomy.taxeditor.editor.view.checklist.ChecklistEditor;
19 import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
20
21 /**
22 * Handles drop down menu selection. Available items are defined in the
23 * enumeration SearchOption.
24 *
25 * @author n.hoffmann
26 * @created Feb 2, 2010
27 * @version 1.0
28 */
29 public class ChecklistDropdownSelectionListener extends SelectionAdapter {
30
31 private final Menu menu;
32 private final ToolItem dropdown;
33 private final ChecklistEditor editor;
34 private final SortedSet<DefinedTermBase> termSet;
35
36 public ChecklistDropdownSelectionListener(ToolItem dropdown, ChecklistEditor editor,
37 SortedSet<DefinedTermBase> termSet) {
38 this.dropdown = dropdown;
39 this.editor = editor;
40 this.termSet = termSet;
41 menu = new Menu(dropdown.getParent().getShell());
42 }
43
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);
50 } else {
51 menuItem.setSelection(false);
52 }
53 menuItem.addSelectionListener(new SelectionAdapter() {
54 @Override
55 public void widgetSelected(SelectionEvent event) {
56 MenuItem selected = (MenuItem) event.widget;
57
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) {
64 int i = 0;
65 for (DefinedTermBase<DefinedTermBase> term : termSet) {
66 if (term != null) {
67 if (selected.getText().equalsIgnoreCase(term.getTitleCache())) {
68 selectedTerm = term;
69 column = table.getColumn(4 + i);
70 }
71 i++;
72 }
73 }
74 }
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);
79 }
80 column.setWidth(100);
81 } else if (column != null) {
82 if (selectedTerm != null) {
83 PreferencesUtil.getPreferenceStore().setValue(selectedTerm.getUuid().toString(), false);
84 }
85 column.setWidth(0);
86 }
87 viewer.refresh();
88 }
89 });
90 }
91
92 @Override
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);
100 } else {
101 menu.setVisible(true);
102 }
103 }
104 }