1 package eu
.etaxonomy
.taxeditor
.view
;
4 import java
.util
.Map
.Entry
;
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
;
20 * Generic context menu for opening elements in the taxeditor.
23 public class CdmViewerContextMenu
extends CompoundContributionItem
{
26 protected IContributionItem
[] getContributionItems() {
27 IContributionItem
[] contributionItems
= new IContributionItem
[] {
28 new ContributionItem() {
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()));
50 return contributionItems
;
53 private class OpenInViewerListener
extends SelectionAdapter
{
55 private final ICdmViewer cdmViewer
;
56 private final Object input
;
57 private final Class
<?
> viewerClass
;
59 public OpenInViewerListener(ICdmViewer cdmViewer
, Object input
, Class
<?
> viewerClass
) {
61 this.cdmViewer
= cdmViewer
;
63 this.viewerClass
= viewerClass
;
67 public void widgetSelected(SelectionEvent e
) {
68 cdmViewer
.show(input
, viewerClass
);