X-Git-Url: http://git.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