Project

General

Profile

Download (5.08 KB) Statistics
| Branch: | Tag: | Revision:
1
package eu.etaxonomy.taxeditor.editor.view.checklist.listener;
2

    
3
import java.util.SortedSet;
4

    
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;
18

    
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;
24

    
25
/**
26
 * Handles drop down menu selection. Available items are defined in the
27
 * enumeration SearchOption.
28
 *
29
 * @author n.hoffmann
30
 * @created Feb 2, 2010
31
 * @version 1.0
32
 */
33
public class ChecklistDropdownSelectionListener extends SelectionAdapter {
34

    
35
    private final Menu menu;
36
    private final ChecklistEditor editor;
37
    private final SortedSet<DefinedTermBase> termSet;
38
    private Logger logger = Logger.getLogger(ChecklistDropdownSelectionListener.class);
39
    
40
    public ChecklistDropdownSelectionListener(ToolItem dropdown, ChecklistEditor editor,
41
            SortedSet<DefinedTermBase> termSet) {
42
        this.editor = editor;
43
        this.termSet = termSet;
44
        menu = new Menu(dropdown.getParent().getShell());
45
        initialMenuItem();
46
    }
47

    
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);
54
        } else {
55
            menuItem.setSelection(false);
56
        }
57
        menuItem.addSelectionListener(new SelectionAdapter() {
58
            @Override
59
            public void widgetSelected(SelectionEvent event) {
60
                MenuItem selected = (MenuItem) event.widget;
61

    
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())){
71
                			column = columns[i];
72
                			logger.info("Column no " +i +" Column Header "+ column.getText() );
73
                			for (DefinedTermBase<DefinedTermBase> term : termSet) {
74
                				if(column.getText().equalsIgnoreCase(term.getTitleCache())){
75
                					selectedTerm = term;
76
                					break;
77
                				}
78
                			}
79
                		}
80
                	}
81
                }
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);
86
                    }
87
                    column.setWidth(100);
88
                } else if (column != null) {
89
                    if (selectedTerm != null) {
90
                        PreferencesUtil.getPreferenceStore().setValue(selectedTerm.getUuid().toString(), false);
91
                    }
92
                    column.setWidth(0);
93
                }
94
            }
95
        });
96
    }
97

    
98
    private void initialMenuItem(){
99
        MenuItem menuItem = new MenuItem(menu, SWT.PUSH);
100
        menuItem.setText("Add Distribution");
101
        menuItem.addSelectionListener(new SelectionAdapter() {
102
            @Override
103
            public void widgetSelected(SelectionEvent event) {
104
                AvailableDistributionWizard availableDistributionWizard = new AvailableDistributionWizard();
105
                WizardDialog dialog = new WizardDialog(StoreUtil.getShell(),
106
                        availableDistributionWizard);
107

    
108
                int open = dialog.open();
109
                if(open == 0){
110
                	editor.reload();
111
                }
112
            }
113
        });
114
        new MenuItem(menu, SWT.SEPARATOR);
115
    }
116

    
117
    @Override
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);
125
        } else {
126
            menu.setVisible(true);
127
        }
128
    }
129
    
130
    public Menu getMenu(){
131
    	return menu;
132
    }
133
}
(1-1/3)