Project

General

Profile

Download (5.18 KB) Statistics
| Branch: | Tag: | Revision:
1
package eu.etaxonomy.taxeditor.editor.view.checklist.e4;
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.l10n.Messages;
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 ChecklistDropdownSelectionListenerE4 extends SelectionAdapter {
34

    
35
    private final Menu menu;
36
    private final ChecklistEditorE4 editor;
37
    private final SortedSet<DefinedTermBase> termSet;
38
    private Logger logger = Logger.getLogger(ChecklistDropdownSelectionListenerE4.class);
39

    
40
    public ChecklistDropdownSelectionListenerE4(ToolItem dropdown, ChecklistEditorE4 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
//        if (PreferencesUtil) {
52
//            menuItem.setText(term.getTitleCache());
53
//        }
54
        if (PreferencesUtil.getPreferenceStore().getBoolean(term.getUuid().toString())) {
55
            menuItem.setSelection(true);
56
        } else {
57
            menuItem.setSelection(false);
58
        }
59
        menuItem.addSelectionListener(new SelectionAdapter() {
60
            @Override
61
            public void widgetSelected(SelectionEvent event) {
62
                MenuItem selected = (MenuItem) event.widget;
63

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

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

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

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

    
132
    public Menu getMenu(){
133
    	return menu;
134
    }
135
}
(1-1/4)