X-Git-Url: http://secure.phpeclipse.com

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 92face4..a5791e8 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
@@ -10,13 +10,18 @@
  *******************************************************************************/
 package net.sourceforge.phpeclipse.webbrowser.views;
 
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
+
 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.ProgressListener;
-import org.eclipse.swt.browser.StatusTextListener;
-import org.eclipse.swt.browser.TitleListener;
+import org.eclipse.swt.browser.Browser;
+import org.eclipse.swt.browser.CloseWindowListener;
+//import org.eclipse.swt.browser.ProgressListener;
+//import org.eclipse.swt.browser.StatusTextListener;
+//import org.eclipse.swt.browser.TitleListener;
+import org.eclipse.swt.browser.WindowEvent;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.ui.part.IShowInTarget;
 import org.eclipse.ui.part.ShowInContext;
@@ -45,6 +50,15 @@ public class BrowserView extends ViewPart implements IShowInTarget {
 		try {
 			if (WebBrowserUtil.isInternalBrowserOperational()) {
 				fInstance = new WebBrowser(frame, true, true);
+				// #1365431 (toshihiro) start
+				fInstance.getBrowser().addCloseWindowListener(
+						new CloseWindowListener() {
+							public void close(WindowEvent event) {
+								getViewSite().getPage().hideView(
+										BrowserView.this);
+							}
+						});
+				// #1365431 (toshihiro) end
 			}
 		} catch (Exception e) {
 			fInstance = null;
@@ -73,10 +87,18 @@ public class BrowserView extends ViewPart implements IShowInTarget {
 		super.dispose();
 	}
 
+	public String getUrl() {
+		if (fInstance != null) {
+			return fInstance.getURL();
+		} else {
+			return null;
+		}
+	}
+
 	public void setUrl(final String url) {
 		if (fInstance != null) {
-			fUrl = url;
-			fInstance.setURL(url);
+				fUrl = url;
+				fInstance.setURL(url);
 			// try {
 			// ResourcesPlugin.getWorkspace().run(new IWorkspaceRunnable() {
 			// public void run(IProgressMonitor monitor) throws CoreException {
@@ -84,7 +106,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();
 			// }
 		}
@@ -100,39 +122,52 @@ 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, J5CharsetEmulator.defaultCharset().name());
+					} catch (UnsupportedEncodingException e) {
+						// e.printStackTrace();
+					}
+					if (!url.equals(browserUrl)) {
+						setUrl(url);
+					}
+				}
 			}
 		}
 	}
 
-	public void addProgressListener(ProgressListener listener) {
-		if (fInstance != null) {
-			fInstance.addProgressListener(listener);
-		}
-	}
+//	public void addProgressListener(ProgressListener listener) {
+//		if (fInstance != null) {
+//			fInstance.addProgressListener(listener);
+//		}
+//	}
 
-	public void addStatusTextListener(StatusTextListener listener) {
-		if (fInstance != null) {
-			fInstance.addStatusTextListener(listener);
-		}
-	}
+//	public void addStatusTextListener(StatusTextListener listener) {
+//		if (fInstance != null) {
+//			fInstance.addStatusTextListener(listener);
+//		}
+//	}
 
-	public void addTitleListener(TitleListener listener) {
-		if (fInstance != null) {
-			fInstance.addTitleListener(listener);
-		}
-	}
+//	public void addTitleListener(TitleListener listener) {
+//		if (fInstance != null) {
+//			fInstance.addTitleListener(listener);
+//		}
+//	}
 
 	public boolean show(ShowInContext context) {
 		if (context instanceof ShowInContextBrowser) {
@@ -143,13 +178,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