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