Revision adab7c46
Added by Patrick Plitzner over 7 years ago
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/CdmViewerContextMenu.java | ||
---|---|---|
17 | 17 |
import org.eclipse.swt.events.SelectionEvent; |
18 | 18 |
import org.eclipse.swt.widgets.Menu; |
19 | 19 |
import org.eclipse.swt.widgets.MenuItem; |
20 |
import org.eclipse.ui.IWorkbenchPage; |
|
20 | 21 |
import org.eclipse.ui.IWorkbenchWindow; |
21 | 22 |
import org.eclipse.ui.PlatformUI; |
22 | 23 |
import org.eclipse.ui.actions.CompoundContributionItem; |
... | ... | |
42 | 43 |
@Override |
43 | 44 |
public void fill(Menu menu, int index) { |
44 | 45 |
final IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow(); |
45 |
final ISelection selection = window.getActivePage().getSelection(); |
|
46 |
if(selection instanceof IStructuredSelection){ |
|
47 |
Object firstElement = ((IStructuredSelection) selection).getFirstElement(); |
|
48 |
Map<Command, String> enabledCommands = CdmViewerUtil.getAvailableViewers(firstElement); |
|
46 |
IWorkbenchPage activePage = window.getActivePage(); |
|
47 |
if(activePage!=null){ |
|
48 |
final ISelection selection = activePage.getSelection(); |
|
49 |
if(selection instanceof IStructuredSelection){ |
|
50 |
Object firstElement = ((IStructuredSelection) selection).getFirstElement(); |
|
51 |
Map<Command, String> enabledCommands = CdmViewerUtil.getAvailableViewers(firstElement); |
|
49 | 52 |
|
50 |
//check if only one or multiple viewers/commands are available
|
|
51 |
if(enabledCommands.size()==1){
|
|
52 |
Entry<Command, String> entry = enabledCommands.entrySet().iterator().next();
|
|
53 |
final Command command = entry.getKey();
|
|
54 |
String viewerName = entry.getValue();
|
|
53 |
//check if only one or multiple viewers/commands are available
|
|
54 |
if(enabledCommands.size()==1){
|
|
55 |
Entry<Command, String> entry = enabledCommands.entrySet().iterator().next();
|
|
56 |
final Command command = entry.getKey();
|
|
57 |
String viewerName = entry.getValue();
|
|
55 | 58 |
|
56 |
MenuItem addItem = new MenuItem(menu, SWT.CASCADE);
|
|
57 |
addItem.setText(String.format(Messages.CdmViewerContextMenu_OPEN, viewerName));
|
|
58 |
addItem.addSelectionListener(new CommandInvoker(command, firstElement)) ;
|
|
59 |
}
|
|
60 |
else if(enabledCommands.size()>1){
|
|
61 |
MenuItem addItem = new MenuItem(menu, SWT.CASCADE);
|
|
62 |
addItem.setText(Messages.CdmViewerContextMenu_OPEN_IN);
|
|
63 |
Menu addMenu = new Menu(menu);
|
|
64 |
addItem.setMenu(addMenu);
|
|
65 |
for(Entry<Command, String> entry:enabledCommands.entrySet()){
|
|
66 |
final Command command = entry.getKey();
|
|
67 |
String viewerName = entry.getValue();
|
|
59 |
MenuItem addItem = new MenuItem(menu, SWT.CASCADE);
|
|
60 |
addItem.setText(String.format(Messages.CdmViewerContextMenu_OPEN, viewerName));
|
|
61 |
addItem.addSelectionListener(new CommandInvoker(command, firstElement)) ;
|
|
62 |
}
|
|
63 |
else if(enabledCommands.size()>1){
|
|
64 |
MenuItem addItem = new MenuItem(menu, SWT.CASCADE);
|
|
65 |
addItem.setText(Messages.CdmViewerContextMenu_OPEN_IN);
|
|
66 |
Menu addMenu = new Menu(menu);
|
|
67 |
addItem.setMenu(addMenu);
|
|
68 |
for(Entry<Command, String> entry:enabledCommands.entrySet()){
|
|
69 |
final Command command = entry.getKey();
|
|
70 |
String viewerName = entry.getValue();
|
|
68 | 71 |
|
69 |
MenuItem menuItem = new MenuItem(addMenu, SWT.NONE); |
|
70 |
menuItem.setText(viewerName); |
|
71 |
menuItem.addSelectionListener(new CommandInvoker(command, firstElement)) ; |
|
72 |
} |
|
73 |
} |
|
72 |
MenuItem menuItem = new MenuItem(addMenu, SWT.NONE); |
|
73 |
menuItem.setText(viewerName); |
|
74 |
menuItem.addSelectionListener(new CommandInvoker(command, firstElement)) ; |
|
75 |
} |
|
76 |
} |
|
77 |
} |
|
74 | 78 |
} |
75 | 79 |
} |
76 | 80 |
|
Also available in: Unified diff
Fix potential NPE