Project

General

Profile

Download (2.94 KB) Statistics
| Branch: | Tag: | Revision:
1
package eu.etaxonomy.taxeditor.view;
2

    
3
import java.util.Map;
4
import java.util.Map.Entry;
5

    
6
import org.eclipse.jface.action.ContributionItem;
7
import org.eclipse.jface.action.IContributionItem;
8
import org.eclipse.jface.viewers.ISelection;
9
import org.eclipse.jface.viewers.IStructuredSelection;
10
import org.eclipse.swt.SWT;
11
import org.eclipse.swt.events.SelectionAdapter;
12
import org.eclipse.swt.events.SelectionEvent;
13
import org.eclipse.swt.widgets.Menu;
14
import org.eclipse.swt.widgets.MenuItem;
15
import org.eclipse.ui.IWorkbenchWindow;
16
import org.eclipse.ui.PlatformUI;
17
import org.eclipse.ui.actions.CompoundContributionItem;
18

    
19
/**
20
 * Generic context menu for opening elements in the taxeditor.
21
 *
22
 */
23
public class CdmViewerContextMenu extends CompoundContributionItem {
24

    
25
    @Override
26
    protected IContributionItem[] getContributionItems() {
27
        IContributionItem[] contributionItems = new IContributionItem[] {
28
                new ContributionItem() {
29
                    @Override
30
                    public void fill(Menu menu, int index) {
31
                        MenuItem addItem = new MenuItem(menu, SWT.CASCADE);
32
                        addItem.setText("Open in...");
33
                        Menu addMenu = new Menu(menu);
34
                        addItem.setMenu(addMenu);
35
                        final IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
36
                        final ISelection selection = window.getActivePage().getSelection();
37
                        if(selection instanceof IStructuredSelection){
38
                            Object firstElement = ((IStructuredSelection) selection).getFirstElement();
39
                            Map<Entry<Class<?>, String>, ICdmViewer> nameViewerMap = CdmViewerUtil.getNameViewerMap(firstElement);
40
                            for(Entry<Entry<Class<?>, String>, ICdmViewer> entry:nameViewerMap.entrySet()){
41
                                Entry<Class<?>, String> viewerClass = entry.getKey();
42
                                MenuItem menuItem = new MenuItem(addMenu, SWT.NONE);
43
                                menuItem.setText(viewerClass.getValue());
44
                                menuItem.addSelectionListener(new OpenInViewerListener(entry.getValue(), firstElement, viewerClass.getKey()));
45
                            }
46
                        }
47
                    }
48
                }
49
        };
50
        return contributionItems;
51
    }
52

    
53
    private class OpenInViewerListener extends SelectionAdapter {
54

    
55
        private final ICdmViewer cdmViewer;
56
        private final Object input;
57
        private final Class<?> viewerClass;
58

    
59
        public OpenInViewerListener(ICdmViewer cdmViewer, Object input, Class<?> viewerClass) {
60
            super();
61
            this.cdmViewer = cdmViewer;
62
            this.input = input;
63
            this.viewerClass = viewerClass;
64
        }
65

    
66
        @Override
67
        public void widgetSelected(SelectionEvent e) {
68
            cdmViewer.show(input, viewerClass);
69
        }
70

    
71
    }
72

    
73
}
(7-7/9)