public void validate(IRegion dirtyRegion, IValidationContext helper, IReporter reporter) { // install editors if (fEditor == null) { install(helper); if (fEditor == null) { return; } } if (!(fEditor instanceof PHPStructuredEditor)) { return; } final IModelElement modelElement = ((PHPStructuredEditor) fEditor).getModelElement(); if (modelElement instanceof ISourceModule) { final Program ast[] = new Program[1]; try { SafeRunner.run( new ISafeRunnable() { public void run() throws ModelException { ast[0] = reconcile((ISourceModule) modelElement, true); } public void handleException(Throwable ex) { IStatus status = new Status( IStatus.ERROR, PHPUiPlugin.ID, IStatus.OK, "Error in php Core during reconcile", ex); //$NON-NLS-1$ PHPCorePlugin.getDefault().getLog().log(status); } }); } finally { // Always notify listeners, see // https://bugs.eclipse.org/bugs/show_bug.cgi?id=55969 for the // final solution try { if (fIsScriptReconcilingListener) { IProgressMonitor pm = fProgressMonitor; if (pm == null) pm = new NullProgressMonitor(); fJavaReconcilingListener.reconciled(ast[0], !fNotify, pm); } } finally { fNotify = true; } } } }
public void run(IRefreshSubscriberListener listener) { this.listener = listener; SafeRunner.run(this); }
/* (non-Javadoc) * @see org.eclipse.debug.core.sourcelookup.AbstractSourceLookupDirector#getSourceElement(java.lang.Object) */ public Object getSourceElement(Object element) { PDESourceLookupQuery query = new PDESourceLookupQuery(this, element); SafeRunner.run(query); Object result = query.getResult(); return result != null ? result : super.getSourceElement(element); }