Run Browser's setURL() and refresh() in separate threads
authorjsurfer <jsurfer>
Tue, 21 Sep 2004 21:45:33 +0000 (21:45 +0000)
committerjsurfer <jsurfer>
Tue, 21 Sep 2004 21:45:33 +0000 (21:45 +0000)
net.sourceforge.phpeclipse.webbrowser/src/net/sourceforge/phpeclipse/webbrowser/views/BrowserView.java

index e307f21..36cf147 100644 (file)
@@ -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;
+
 /**
- * <code>BrowserView</code> 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.
+ * <code>BrowserView</code> 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