Added change for feature #1154254 Browser now has a sticky url.
[phpeclipse.git] / net.sourceforge.phpeclipse.webbrowser / src / net / sourceforge / phpeclipse / webbrowser / views / BrowserView.java
index 04a4cb7..443d433 100644 (file)
  *******************************************************************************/
 package net.sourceforge.phpeclipse.webbrowser.views;
 
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
+import java.nio.charset.Charset;
+
 import net.sourceforge.phpeclipse.webbrowser.internal.WebBrowser;
 import net.sourceforge.phpeclipse.webbrowser.internal.WebBrowserUtil;
 
-import org.eclipse.core.resources.IFile;
+import org.eclipse.swt.browser.Browser;
 import org.eclipse.swt.browser.CloseWindowListener;
 import org.eclipse.swt.browser.ProgressListener;
 import org.eclipse.swt.browser.StatusTextListener;
@@ -85,9 +89,14 @@ public class BrowserView extends ViewPart implements IShowInTarget {
        }
 
        public void setUrl(final String url) {
-               if (fInstance != null) {
-                       fUrl = url;
-                       fInstance.setURL(url);
+               if (fInstance != null) {
+              if (fInstance.getURL() != null && fInstance.getURL().length() > 0) {
+                fUrl = fInstance.getURL();
+                fInstance.setURL(fUrl);
+            } else {
+                fUrl = url;
+                fInstance.setURL(url);
+            }
                        // try {
                        // ResourcesPlugin.getWorkspace().run(new IWorkspaceRunnable() {
                        // public void run(IProgressMonitor monitor) throws CoreException {
@@ -95,7 +104,7 @@ public class BrowserView extends ViewPart implements IShowInTarget {
                        // }
                        // }, null);
                        // } catch (CoreException e) {
-                       // // TODO Auto-generated catch block
+                       // // TO DO Auto-generated catch block
                        // e.printStackTrace();
                        // }
                }
@@ -111,18 +120,29 @@ public class BrowserView extends ViewPart implements IShowInTarget {
                        // }
                        // }, null);
                        // } catch (CoreException e) {
-                       // // TODO Auto-generated catch block
+                       // // TO DO Auto-generated catch block
                        // e.printStackTrace();
                        // }
                }
        }
 
        public void refresh(String url) {
-               if (fInstance != null) {
-                       if (fUrl == null || !fUrl.equals(url)) {
+               if (fInstance != null && url != null) {
+                       if (fUrl == null) {
                                setUrl(url);
                        } else {
-                               refresh();
+                               Browser browser = fInstance.getBrowser();
+                               if (browser != null) {
+                                       String browserUrl = browser.getUrl();
+                                       try {
+                                               browserUrl = URLDecoder.decode(browserUrl, Charset.defaultCharset().name());
+                                       } catch (UnsupportedEncodingException e) {
+                                               // e.printStackTrace();
+                                       }
+                                       if (!url.equals(browserUrl)) {
+                                               setUrl(url);
+                                       }
+                               }
                        }
                }
        }
@@ -154,13 +174,19 @@ public class BrowserView extends ViewPart implements IShowInTarget {
                                return true;
                        }
                }
-               if (context.getInput() instanceof IFile) {
-                       IFile file = (IFile) context.getInput();
-                       String localhostURL;
-                       localhostURL = "file:///" + file.getLocation().toString();
-                       setUrl(localhostURL);
-                       return true;
-               }
+               // *WARNING*
+               // This causes unexpected behaviour such as downloading (save file).
+               // It depends on mime-types setting and native browser, it isn't under control of eclipse.
+               // (IE shows script as plain text since .php is unknown type by default.
+               //  Mozilla downloads script file since .php is defined in mimeTypes.rdf as such.)
+               //
+               //if (context.getInput() instanceof IFile) {
+               //      IFile file = (IFile) context.getInput();
+               //      String localhostURL;
+               //      localhostURL = "file:///" + file.getLocation().toString();
+               //      setUrl(localhostURL);
+               //      return true;
+               //}
                return false;
        }
 }
\ No newline at end of file