@Override public Object execute(ExecutionEvent event) throws ExecutionException { IWorkbenchWindow activeWorkbenchWindow = HandlerUtil.getActiveWorkbenchWindow(event); if (activeWorkbenchWindow != null) { WorkbenchPage page = (WorkbenchPage) activeWorkbenchWindow.getActivePage(); if (page != null) { Map parameters = event.getParameters(); String value = (String) parameters.get(IWorkbenchCommandConstants.WINDOW_CLOSE_PERSPECTIVE_PARM_ID); if (value == null) { page.closePerspective(page.getPerspective(), true, true); } else { IPerspectiveDescriptor perspective = activeWorkbenchWindow .getWorkbench() .getPerspectiveRegistry() .findPerspectiveWithId(value); if (perspective != null) { page.closePerspective(perspective, true, true); } } } } return null; }