Fix potential NPE
authorPatrick Plitzner <p.plitzner@bgbm.org>
Thu, 18 Aug 2016 12:07:33 +0000 (14:07 +0200)
committerPatrick Plitzner <p.plitzner@bgbm.org>
Thu, 18 Aug 2016 12:07:33 +0000 (14:07 +0200)
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/CdmViewerContextMenu.java

index 1adc652868c6aee513d69b56f35ad4ae5025b955..e8372443e30cf14f5b55ec533b9b06a1595aa681 100644 (file)
@@ -17,6 +17,7 @@ import org.eclipse.swt.events.SelectionAdapter;
 import org.eclipse.swt.events.SelectionEvent;
 import org.eclipse.swt.widgets.Menu;
 import org.eclipse.swt.widgets.MenuItem;
+import org.eclipse.ui.IWorkbenchPage;
 import org.eclipse.ui.IWorkbenchWindow;
 import org.eclipse.ui.PlatformUI;
 import org.eclipse.ui.actions.CompoundContributionItem;
@@ -42,35 +43,38 @@ public class CdmViewerContextMenu extends CompoundContributionItem {
                     @Override
                     public void fill(Menu menu, int index) {
                         final IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
-                        final ISelection selection = window.getActivePage().getSelection();
-                        if(selection instanceof IStructuredSelection){
-                            Object firstElement = ((IStructuredSelection) selection).getFirstElement();
-                            Map<Command, String> enabledCommands = CdmViewerUtil.getAvailableViewers(firstElement);
+                        IWorkbenchPage activePage = window.getActivePage();
+                        if(activePage!=null){
+                               final ISelection selection = activePage.getSelection();
+                               if(selection instanceof IStructuredSelection){
+                                       Object firstElement = ((IStructuredSelection) selection).getFirstElement();
+                                       Map<Command, String> enabledCommands = CdmViewerUtil.getAvailableViewers(firstElement);
 
-                            //check if only one or multiple viewers/commands are available
-                            if(enabledCommands.size()==1){
-                                Entry<Command, String> entry = enabledCommands.entrySet().iterator().next();
-                                final Command command = entry.getKey();
-                                String viewerName = entry.getValue();
+                                       //check if only one or multiple viewers/commands are available
+                                       if(enabledCommands.size()==1){
+                                               Entry<Command, String> entry = enabledCommands.entrySet().iterator().next();
+                                               final Command command = entry.getKey();
+                                               String viewerName = entry.getValue();
 
-                                MenuItem addItem = new MenuItem(menu, SWT.CASCADE);
-                                addItem.setText(String.format(Messages.CdmViewerContextMenu_OPEN, viewerName));
-                                addItem.addSelectionListener(new CommandInvoker(command, firstElement)) ;
-                            }
-                            else if(enabledCommands.size()>1){
-                                MenuItem addItem = new MenuItem(menu, SWT.CASCADE);
-                                addItem.setText(Messages.CdmViewerContextMenu_OPEN_IN);
-                                Menu addMenu = new Menu(menu);
-                                addItem.setMenu(addMenu);
-                                for(Entry<Command, String> entry:enabledCommands.entrySet()){
-                                    final Command command = entry.getKey();
-                                    String viewerName = entry.getValue();
+                                               MenuItem addItem = new MenuItem(menu, SWT.CASCADE);
+                                               addItem.setText(String.format(Messages.CdmViewerContextMenu_OPEN, viewerName));
+                                               addItem.addSelectionListener(new CommandInvoker(command, firstElement)) ;
+                                       }
+                                       else if(enabledCommands.size()>1){
+                                               MenuItem addItem = new MenuItem(menu, SWT.CASCADE);
+                                               addItem.setText(Messages.CdmViewerContextMenu_OPEN_IN);
+                                               Menu addMenu = new Menu(menu);
+                                               addItem.setMenu(addMenu);
+                                               for(Entry<Command, String> entry:enabledCommands.entrySet()){
+                                                       final Command command = entry.getKey();
+                                                       String viewerName = entry.getValue();
 
-                                    MenuItem menuItem = new MenuItem(addMenu, SWT.NONE);
-                                    menuItem.setText(viewerName);
-                                    menuItem.addSelectionListener(new CommandInvoker(command, firstElement)) ;
-                                }
-                            }
+                                                       MenuItem menuItem = new MenuItem(addMenu, SWT.NONE);
+                                                       menuItem.setText(viewerName);
+                                                       menuItem.addSelectionListener(new CommandInvoker(command, firstElement)) ;
+                                               }
+                                       }
+                               }
                         }
                     }