diff --git a/bundles/org.eclipse.e4.tools.compat/src/org/eclipse/e4/tools/compat/internal/SelectionProviderContextFunction.java b/bundles/org.eclipse.e4.tools.compat/src/org/eclipse/e4/tools/compat/internal/SelectionProviderContextFunction.java
index 901627c..b77ed46 100644
--- a/bundles/org.eclipse.e4.tools.compat/src/org/eclipse/e4/tools/compat/internal/SelectionProviderContextFunction.java
+++ b/bundles/org.eclipse.e4.tools.compat/src/org/eclipse/e4/tools/compat/internal/SelectionProviderContextFunction.java
@@ -15,10 +15,10 @@
 import org.eclipse.e4.core.contexts.ContextFunction;
 import org.eclipse.e4.core.contexts.IEclipseContext;
 import org.eclipse.e4.tools.services.ISelectionProviderService;
+import org.eclipse.jface.viewers.ISelection;
 import org.eclipse.jface.viewers.ISelectionProvider;
 import org.eclipse.jface.viewers.StructuredSelection;
 
-
 public class SelectionProviderContextFunction extends ContextFunction {
 
 	@Override
@@ -27,12 +27,18 @@
 			public void setSelection(Object selection) {
 				ISelectionProvider pv = context.get(ISelectionProvider.class);
 				
-				if( selection instanceof List<?> ) {
-					pv.setSelection(new StructuredSelection((List<?>)selection));	
+				if( selection == null ) {
+					pv.setSelection(StructuredSelection.EMPTY);
+				} else if (selection instanceof ISelection) {
+					pv.setSelection((ISelection) selection);
+				} else if (selection instanceof List<?>) {
+					pv.setSelection(new StructuredSelection((List<?>) selection));
+				} else if (selection instanceof Object[]) {
+					pv.setSelection(new StructuredSelection(
+							(Object[]) selection));
 				} else {
 					pv.setSelection(new StructuredSelection(selection));
 				}
-				
 			}
 		};
 	}
