+++ /dev/null
-package org.eclipse.webbrowser.internal;
-
-import java.net.URL;
-
-import org.eclipse.swt.program.Program;
-import org.eclipse.ui.IMemento;
-import org.eclipse.webbrowser.IExternalWebBrowser;
-import org.eclipse.webbrowser.IExternalWebBrowserWorkingCopy;
-/**
- *
- */
-public class ExternalWebBrowser implements IExternalWebBrowser {
- private static final String MEMENTO_NAME = "name";
- private static final String MEMENTO_LOCATION = "location";
- private static final String MEMENTO_PARAMETERS = "parameters";
-
- protected String name;
- protected String location;
- protected String parameters;
-
- /* (non-Javadoc)
- * @see org.eclipse.webbrowser.IWebBrowser#getName()
- */
- public String getName() {
- return name;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.webbrowser.IExternalWebBrowser#getLocation()
- */
- public String getLocation() {
- return location;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.webbrowser.IExternalWebBrowser#getParameters()
- */
- public String getParameters() {
- return parameters;
- }
-
- public void delete() {
- BrowserManager.getInstance().removeWebBrowser(this);
- }
-
- public boolean isWorkingCopy() {
- return false;
- }
-
- public IExternalWebBrowserWorkingCopy getWorkingCopy() {
- return new ExternalWebBrowserWorkingCopy(this);
- }
-
- protected void setInternal(IExternalWebBrowser browser) {
- name = browser.getName();
- location = browser.getLocation();
- parameters = browser.getParameters();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.webbrowser.IWebBrowser#openURL(java.net.URL)
- */
- public void openURL(URL url) {
- String urlText = WebBrowserPreference.getHomePageURL();
-
- if (url != null)
- urlText = url.toExternalForm();
- else if (urlText.startsWith("file:") & urlText.length() > 6) {
- if (urlText.charAt(5) != '/' && urlText.charAt(5) != '\\')
- urlText = urlText.substring(0, 5) + "/" + urlText.substring(5);
- }
-
- // change spaces to "%20"
- if (!WebBrowserUtil.isWindows()) {
- int index = urlText.indexOf(" ");
- while (index >= 0) {
- urlText = urlText.substring(0, index) + "%20" + urlText.substring(index + 1);
- index = urlText.indexOf(" ");
- }
- }
-
- Trace.trace(Trace.FINEST, "Launching external Web browser: " + location + " - " + parameters + " - " + urlText);
- if (location == null || location.length() == 0) {
- try {
- String extension = null;
- if (url != null)
- extension = url.getFile();
- else
- extension = "html";
- int index = extension.indexOf(".");
- if (index >= 0)
- extension = extension.substring(index + 1);
- Program program = Program.findProgram(extension);
- program.execute(urlText);
- } catch (Exception e) {
- Trace.trace(Trace.SEVERE, "Error launching default external browser", e);
- WebBrowserUtil.openError(WebBrowserUIPlugin.getResource("%errorCouldNotLaunchWebBrowser", urlText));
- }
- return;
- }
-
- String params = parameters;
- if (params == null)
- params = "";
-
- int urlIndex = params.indexOf(WebBrowserPreference.URL_PARAMETER);
- if (urlIndex >= 0)
- params = params.substring(0, urlIndex) + " " + urlText + " " + params.substring(urlIndex + WebBrowserPreference.URL_PARAMETER.length());
- else {
- if (!params.endsWith(" "))
- params += " ";
- params += urlText;
- }
-
- try {
- Trace.trace(Trace.FINEST, "Launching " + location + " " + params);
- Runtime.getRuntime().exec(location + " " + params);
- } catch (Exception e) {
- Trace.trace(Trace.SEVERE, "Could not launch external browser", e);
- WebBrowserUtil.openError(WebBrowserUIPlugin.getResource("%errorCouldNotLaunchWebBrowser", urlText));
- }
- }
-
- protected void save(IMemento memento) {
- memento.putString(MEMENTO_NAME, name);
- memento.putString(MEMENTO_LOCATION, location);
- memento.putString(MEMENTO_PARAMETERS, parameters);
- }
-
- protected void load(IMemento memento) {
- name = memento.getString(MEMENTO_NAME);
- location = memento.getString(MEMENTO_LOCATION);
- parameters = memento.getString(MEMENTO_PARAMETERS);
- }
-
- public String toString() {
- return "External Web browser: " + getName() + " / " + getLocation() + " / " + getParameters();
- }
-}
\ No newline at end of file