@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;
 }