/** * Return the project associated with the given stack frame. */ private IJavaProject getProject(IJavaStackFrame javaStackFrame) { ILaunch launch = javaStackFrame.getLaunch(); if (launch == null) { return null; } ISourceLocator locator= launch.getSourceLocator(); if (locator == null) { return null; } Object sourceElement = locator.getSourceElement(javaStackFrame); if (!(sourceElement instanceof IJavaElement) && sourceElement instanceof IAdaptable) { sourceElement = ((IAdaptable)sourceElement).getAdapter(IJavaElement.class); } if (sourceElement instanceof IJavaElement) { return ((IJavaElement) sourceElement).getJavaProject(); } return null; } }
/** * Return the project associated with the given stack frame. * (copied from JavaWatchExpressionDelegate) */ private IJavaProject getProject(IJavaStackFrame javaStackFrame) { ILaunch launch = javaStackFrame.getLaunch(); if (launch == null) { return null; } ISourceLocator locator= launch.getSourceLocator(); if (locator == null) { return null; } Object sourceElement = locator.getSourceElement(javaStackFrame); if (!(sourceElement instanceof IJavaElement) && sourceElement instanceof IAdaptable) { sourceElement = ((IAdaptable)sourceElement).getAdapter(IJavaElement.class); } if (sourceElement instanceof IJavaElement) { return ((IJavaElement) sourceElement).getJavaProject(); } return null; } }
ILaunch launch = frame.getLaunch(); if (launch != null) { ISourceLookupResult result = DebugUITools.lookupSource(frame, null);
public void run() { try { String message = MessageFormat.format(LauncherMessages.JavaUISourceLocator_selectprojects_message, new String[] {frame.getDeclaringTypeName()}); ILaunchConfiguration configuration = frame.getLaunch().getLaunchConfiguration(); JavaSourceLookupDialog dialog = new JavaSourceLookupDialog( JDIDebugUIPlugin.getActiveWorkbenchShell(), message, configuration); int result = dialog.open(); if (result == Window.OK) { fAllowedToAsk = !dialog.isNotAskAgain(); JavaUISourceLocator.this.initializeDefaults( configuration); } } catch (CoreException e) { // only report an error if the thread has not resumed if (e.getStatus().getCode() != IJavaThread.ERR_THREAD_NOT_SUSPENDED) { JDIDebugUIPlugin.log(e); } } } };
public void debugContextChanged(DebugContextEvent event) { if ((event.getFlags() & DebugContextEvent.ACTIVATED) > 0) { IWorkbenchPart part = event.getDebugContextProvider().getPart(); if (part != null) { IWorkbenchPage page = part.getSite().getPage(); ISelection selection = event.getContext(); if (selection instanceof IStructuredSelection) { IStructuredSelection ss = (IStructuredSelection)selection; if (ss.size() == 1) { Object element = ss.getFirstElement(); if (element instanceof IAdaptable) { IJavaStackFrame frame = (IJavaStackFrame)((IAdaptable)element).getAdapter(IJavaStackFrame.class); boolean instOf = element instanceof IJavaStackFrame || element instanceof IJavaThread; if (frame != null) { // do not consider scrapbook frames if (frame.getLaunch().getAttribute(ScrapbookLauncher.SCRAPBOOK_LAUNCH) == null) { setContext(page, frame, instOf); return; } } } } } // no context in the given view removeContext(page); } } }