/* (non-Javadoc)
   * @see PerspectiveMenu#run(IPerspectiveDescriptor)
   */
  protected void run(IPerspectiveDescriptor desc) {
    //        IPreferenceStore store = PrefUtil.getInternalPreferenceStore();
    //        int mode = store.getInt(IPreferenceConstants.OPEN_PERSP_MODE);
    int mode = IPreferenceConstants.OPM_ACTIVE_PAGE;
    IWorkbenchPage page = getWindow().getActivePage();
    IPerspectiveDescriptor persp = null;
    if (page != null) {
      persp = page.getPerspective();
    }

    // Only open a new window if user preference is set and the window
    // has an active perspective.
    if (IPreferenceConstants.OPM_NEW_WINDOW == mode && persp != null) {
      try {
        IWorkbench workbench = getWindow().getWorkbench();
        IAdaptable input = ((Workbench) workbench).getDefaultPageInput();
        workbench.openWorkbenchWindow(desc.getId(), input);
      } catch (WorkbenchException e) {
        handleWorkbenchException(e);
      }
    } else {
      if (page != null) {
        page.setPerspective(desc);
      } else {
        try {
          IWorkbench workbench = getWindow().getWorkbench();
          IAdaptable input = ((Workbench) workbench).getDefaultPageInput();
          getWindow().openPage(desc.getId(), input);
        } catch (WorkbenchException e) {
          handleWorkbenchException(e);
        }
      }
    }
  }
 protected void update() {
   IWorkbenchPage page = fSourcePage.getSite().getWorkbenchWindow().getActivePage();
   if (page != null) {
     IPerspectiveDescriptor perspective = page.getPerspective();
     if (perspective != null) {
       String perspectiveId = perspective.getId();
       if (fCurrentPerspective == null || fCurrentPerspective != perspectiveId) {
         fCurrentPerspective = perspectiveId;
         switch (fImpType) {
           case F_MANIFEST_IMP:
             fImplementation = new ManifestTextHover(fSourcePage);
             break;
           case F_XML_IMP:
             fImplementation = new PluginXMLTextHover(fSourcePage);
             break;
         }
       }
     }
   }
 }