/* (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; } } } } }