Project

General

Profile

Download (5.2 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.Messages;
21
import eu.etaxonomy.taxeditor.editor.view.checklist.ChecklistEditor;
22
import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
23
import eu.etaxonomy.taxeditor.preference.wizard.AvailableDistributionWizard;
24
import eu.etaxonomy.taxeditor.store.StoreUtil;
25

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

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

    
49
    // SearchOption option
50
    public void add(DefinedTermBase<DefinedTermBase> term) {
51
        MenuItem menuItem = new MenuItem(menu, SWT.CHECK);
52
        menuItem.setText(term.getTitleCache());
53
        if (PreferencesUtil.getPreferenceStore().getBoolean(term.getUuid().toString())) {
54
            menuItem.setSelection(true);
55
        } else {
56
            menuItem.setSelection(false);
57
        }
58
        menuItem.addSelectionListener(new SelectionAdapter() {
59
            @Override
60
            public void widgetSelected(SelectionEvent event) {
61
                MenuItem selected = (MenuItem) event.widget;
62

    
63
                TableViewer viewer = (TableViewer) editor.getViewer();
64
                final Table table = viewer.getTable();
65
                // TODO make it selectable according to selection event
66
                TableColumn column = null;
67
                DefinedTermBase<DefinedTermBase> selectedTerm = null;
68
                if (termSet != null) {
69
                	TableColumn[] columns = viewer.getTable().getColumns();
70
                	for(int i=0; i<columns.length; i++){
71
                		if(selected.getText().equalsIgnoreCase(columns[i].getText())){
72
                			column = columns[i];
73
                			logger.info("Column no " +i +" Column Header "+ column.getText() ); //$NON-NLS-1$ //$NON-NLS-2$
74
                			for (DefinedTermBase<DefinedTermBase> term : termSet) {
75
                				if(column.getText().equalsIgnoreCase(term.getTitleCache())){
76
                					selectedTerm = term;
77
                					break;
78
                				}
79
                			}
80
                		}
81
                	}
82
                }
83
                if (column != null && column.getWidth() == 0) {
84
                    // save column status if shown or not
85
                    if (selectedTerm != null) {
86
                        PreferencesUtil.getPreferenceStore().setValue(selectedTerm.getUuid().toString(), true);
87
                    }
88
                    column.setWidth(100);
89
                } else if (column != null) {
90
                    if (selectedTerm != null) {
91
                        PreferencesUtil.getPreferenceStore().setValue(selectedTerm.getUuid().toString(), false);
92
                    }
93
                    column.setWidth(0);
94
                }
95
            }
96
        });
97
    }
98

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

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

    
118
    @Override
119
    public void widgetSelected(SelectionEvent event) {
120
        if (event.detail == SWT.ARROW) {
121
            ToolItem item = (ToolItem) event.widget;
122
            Rectangle rect = item.getBounds();
123
            Point pt = item.getParent().toDisplay(new Point(rect.x, rect.y));
124
            menu.setLocation(pt.x, pt.y + rect.height);
125
            menu.setVisible(true);
126
        } else {
127
            menu.setVisible(true);
128
        }
129
    }
130
    
131
    public Menu getMenu(){
132
    	return menu;
133
    }
134
}
(1-1/3)