1 package eu
.etaxonomy
.taxeditor
.editor
.view
.checklist
.listener
;
3 import java
.util
.SortedSet
;
5 import org
.apache
.log4j
.Logger
;
6 import org
.eclipse
.jface
.viewers
.TableViewer
;
7 import org
.eclipse
.jface
.wizard
.WizardDialog
;
8 import org
.eclipse
.swt
.SWT
;
9 import org
.eclipse
.swt
.events
.SelectionAdapter
;
10 import org
.eclipse
.swt
.events
.SelectionEvent
;
11 import org
.eclipse
.swt
.graphics
.Point
;
12 import org
.eclipse
.swt
.graphics
.Rectangle
;
13 import org
.eclipse
.swt
.widgets
.Menu
;
14 import org
.eclipse
.swt
.widgets
.MenuItem
;
15 import org
.eclipse
.swt
.widgets
.Table
;
16 import org
.eclipse
.swt
.widgets
.TableColumn
;
17 import org
.eclipse
.swt
.widgets
.ToolItem
;
19 import eu
.etaxonomy
.cdm
.model
.common
.DefinedTermBase
;
20 import eu
.etaxonomy
.taxeditor
.editor
.view
.checklist
.ChecklistEditor
;
21 import eu
.etaxonomy
.taxeditor
.preference
.PreferencesUtil
;
22 import eu
.etaxonomy
.taxeditor
.preference
.wizard
.AvailableDistributionWizard
;
23 import eu
.etaxonomy
.taxeditor
.store
.StoreUtil
;
26 * Handles drop down menu selection. Available items are defined in the
27 * enumeration SearchOption.
30 * @created Feb 2, 2010
33 public class ChecklistDropdownSelectionListener
extends SelectionAdapter
{
35 private final Menu menu
;
36 private final ChecklistEditor editor
;
37 private final SortedSet
<DefinedTermBase
> termSet
;
38 private Logger logger
= Logger
.getLogger(ChecklistDropdownSelectionListener
.class);
40 public ChecklistDropdownSelectionListener(ToolItem dropdown
, ChecklistEditor editor
,
41 SortedSet
<DefinedTermBase
> termSet
) {
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) {
68 TableColumn
[] columns
= viewer
.getTable().getColumns();
69 for(int i
=0; i
<columns
.length
; i
++){
70 if(selected
.getText().equalsIgnoreCase(columns
[i
].getText())){
72 logger
.info("Column no " +i
+" Column Header "+ column
.getText() );
73 for (DefinedTermBase
<DefinedTermBase
> term
: termSet
) {
74 if(column
.getText().equalsIgnoreCase(term
.getTitleCache())){
82 if (column
!= null && column
.getWidth() == 0) {
83 // save column status if shown or not
84 if (selectedTerm
!= null) {
85 PreferencesUtil
.getPreferenceStore().setValue(selectedTerm
.getUuid().toString(), true);
88 } else if (column
!= null) {
89 if (selectedTerm
!= null) {
90 PreferencesUtil
.getPreferenceStore().setValue(selectedTerm
.getUuid().toString(), false);
98 private void initialMenuItem(){
99 MenuItem menuItem
= new MenuItem(menu
, SWT
.PUSH
);
100 menuItem
.setText("Add Distribution");
101 menuItem
.addSelectionListener(new SelectionAdapter() {
103 public void widgetSelected(SelectionEvent event
) {
104 AvailableDistributionWizard availableDistributionWizard
= new AvailableDistributionWizard();
105 WizardDialog dialog
= new WizardDialog(StoreUtil
.getShell(),
106 availableDistributionWizard
);
108 int open
= dialog
.open();
114 new MenuItem(menu
, SWT
.SEPARATOR
);
118 public void widgetSelected(SelectionEvent event
) {
119 if (event
.detail
== SWT
.ARROW
) {
120 ToolItem item
= (ToolItem
) event
.widget
;
121 Rectangle rect
= item
.getBounds();
122 Point pt
= item
.getParent().toDisplay(new Point(rect
.x
, rect
.y
));
123 menu
.setLocation(pt
.x
, pt
.y
+ rect
.height
);
124 menu
.setVisible(true);
126 menu
.setVisible(true);
130 public Menu
getMenu(){