Patch from Martin Koegler:
[phpeclipse.git] / net.sourceforge.phpeclipse.webbrowser / src / net / sourceforge / phpeclipse / webbrowser / views / BrowserView.java
index 36cf147..dbb7ca7 100644 (file)
@@ -13,13 +13,9 @@ package net.sourceforge.phpeclipse.webbrowser.views;
 import net.sourceforge.phpeclipse.webbrowser.internal.WebBrowser;
 import net.sourceforge.phpeclipse.webbrowser.internal.WebBrowserUtil;
 
-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.browser.ProgressListener;
+import org.eclipse.swt.browser.StatusTextListener;
+import org.eclipse.swt.browser.TitleListener;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.ui.part.ViewPart;
 
@@ -32,7 +28,8 @@ import org.eclipse.ui.part.ViewPart;
 public class BrowserView extends ViewPart {
   public final static String ID_BROWSER = "net.sourceforge.phpeclipse.webbrowser.views";
 
-  WebBrowser instance = null;
+  WebBrowser fInstance = null;
+  String fUrl = null;
 
   /**
    * Create the example
@@ -41,11 +38,11 @@ public class BrowserView extends ViewPart {
    */
   public void createPartControl(Composite frame) {
     try {
-      if (WebBrowserUtil.canUseInternalWebBrowser()) {
-        instance = new WebBrowser(frame, true, true);
-      }
+      if (WebBrowserUtil.isInternalBrowserOperational()) {
+        fInstance = new WebBrowser(frame, true, true);
+      } 
     } catch (Exception e) {
-      instance = null;
+      fInstance = null;
     }
   }
 
@@ -55,8 +52,8 @@ public class BrowserView extends ViewPart {
    * @see org.eclipse.ui.part.ViewPart#setFocus
    */
   public void setFocus() {
-    if (instance != null) {
-      instance.setFocus();
+    if (fInstance != null) {
+      fInstance.setFocus();
     }
   }
 
@@ -64,40 +61,71 @@ public class BrowserView extends ViewPart {
    * Called when the View is to be disposed
    */
   public void dispose() {
-    if (instance != null) {
-      instance.dispose();
-      instance = null;
+    if (fInstance != null) {
+      fInstance.dispose();
+      fInstance = null;
     }
     super.dispose();
   }
 
   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();
-      }
+    if (fInstance != null) {
+      fUrl = url;
+      fInstance.setURL(url);
+      //      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) {
-      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();
+    if (fInstance != null) {
+      fInstance.refresh();
+      //      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();
+      //      }
+    }
+  }
+
+  public void refresh(String url) {
+    if (fInstance != null) {
+      if (fUrl==null || !fUrl.equals(url) ) {
+        setUrl(url);
+      } else {
+        refresh();
       }
     }
+  } 
+  
+  public void addProgressListener(ProgressListener listener) {
+    if (fInstance != null) {
+      fInstance.addProgressListener(listener);
+    }
+  }
+
+  public void addStatusTextListener(StatusTextListener listener) {
+    if (fInstance != null) {
+      fInstance.addStatusTextListener(listener);
+    }
+  }
+
+  public void addTitleListener(TitleListener listener) {
+    if (fInstance != null) {
+      fInstance.addTitleListener(listener);
+    }
   }
 }
\ No newline at end of file