*******************************************************************************/
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;
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;
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 {
// }
// }, null);
// } catch (CoreException e) {
- // // TODO Auto-generated catch block
+ // // TO DO Auto-generated catch block
// e.printStackTrace();
// }
}
// }
// }, 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) {
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