From cd96c785906710d073b6c56faba83bd30211d427 Mon Sep 17 00:00:00 2001 From: jsurfer Date: Tue, 21 Sep 2004 21:45:33 +0000 Subject: [PATCH 1/1] Run Browser's setURL() and refresh() in separate threads --- .../phpeclipse/webbrowser/views/BrowserView.java | 61 ++++++++++++++----- 1 files changed, 45 insertions(+), 16 deletions(-) diff --git a/net.sourceforge.phpeclipse.webbrowser/src/net/sourceforge/phpeclipse/webbrowser/views/BrowserView.java b/net.sourceforge.phpeclipse.webbrowser/src/net/sourceforge/phpeclipse/webbrowser/views/BrowserView.java index e307f21..36cf147 100644 --- a/net.sourceforge.phpeclipse.webbrowser/src/net/sourceforge/phpeclipse/webbrowser/views/BrowserView.java +++ b/net.sourceforge.phpeclipse.webbrowser/src/net/sourceforge/phpeclipse/webbrowser/views/BrowserView.java @@ -9,24 +9,31 @@ * IBM Corporation - initial API and implementation *******************************************************************************/ package net.sourceforge.phpeclipse.webbrowser.views; + import net.sourceforge.phpeclipse.webbrowser.internal.WebBrowser; -import net.sourceforge.phpeclipse.webbrowser.internal.WebBrowserUIPlugin; import net.sourceforge.phpeclipse.webbrowser.internal.WebBrowserUtil; -import org.eclipse.swt.SWT; -import org.eclipse.swt.browser.Browser; +import org.eclipse.core.resources.IWorkspaceRunnable; +import org.eclipse.core.resources.ResourcesPlugin; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.core.runtime.IStatus; +import org.eclipse.core.runtime.Status; +import org.eclipse.core.runtime.jobs.Job; import org.eclipse.swt.widgets.Composite; import org.eclipse.ui.part.ViewPart; + /** - * BrowserView is a simple demonstration of the SWT Browser - * widget. It consists of a workbench view and tab folder where each tab in the - * folder allows the user to interact with a control. + * BrowserView is a simple demonstration of the SWT Browser widget. It consists of a workbench view and tab folder + * where each tab in the folder allows the user to interact with a control. * * @see ViewPart */ public class BrowserView extends ViewPart { public final static String ID_BROWSER = "net.sourceforge.phpeclipse.webbrowser.views"; + WebBrowser instance = null; + /** * Create the example * @@ -34,41 +41,63 @@ public class BrowserView extends ViewPart { */ public void createPartControl(Composite frame) { try { - if (WebBrowserUtil.canUseInternalWebBrowser() ) { + if (WebBrowserUtil.canUseInternalWebBrowser()) { instance = new WebBrowser(frame, true, true); } - } catch(Exception e) { + } catch (Exception e) { instance = null; } } + /** * Called when we must grab focus. * * @see org.eclipse.ui.part.ViewPart#setFocus */ public void setFocus() { - if (instance!=null) { + if (instance != null) { instance.setFocus(); } } + /** * Called when the View is to be disposed */ public void dispose() { - if (instance!=null) { + if (instance != null) { instance.dispose(); instance = null; } super.dispose(); } - public void setUrl(String url) { - if (instance!=null) { - instance.setURL(url); + + public void setUrl(final String url) { + if (instance != null) { + try { + ResourcesPlugin.getWorkspace().run(new IWorkspaceRunnable() { + public void run(IProgressMonitor monitor) throws CoreException { + instance.setURL(url); + } + }, null); + } catch (CoreException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } } } + public void refresh() { - if (instance!=null) { - instance.refresh(); + if (instance != null) { + try { + ResourcesPlugin.getWorkspace().run(new IWorkspaceRunnable() { + public void run(IProgressMonitor monitor) throws CoreException { + instance.refresh(); + } + }, null); + } catch (CoreException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } } } -} +} \ No newline at end of file -- 1.7.1