Adding patch from pteague for templates.
[phpeclipse.git] / net.sourceforge.phpeclipse.webbrowser / src / net / sourceforge / phpeclipse / webbrowser / WebBrowser.java
1 /**
2  * Copyright (c) 2003 IBM Corporation and others.
3  * All rights reserved. This program and the accompanying materials
4  * are made available under the terms of the Common Public License v1.0
5  * which accompanies this distribution, and is available at
6  * http://www.eclipse.org/legal/cpl-v10.html
7  �*
8  * Contributors:
9  *    IBM - Initial API and implementation
10  */
11 package net.sourceforge.phpeclipse.webbrowser;
12
13 import java.net.URL;
14 import java.util.List;
15
16 import net.sourceforge.phpeclipse.webbrowser.internal.BrowserManager;
17 import net.sourceforge.phpeclipse.webbrowser.internal.ExternalWebBrowserWorkingCopy;
18 import net.sourceforge.phpeclipse.webbrowser.internal.Trace;
19 import net.sourceforge.phpeclipse.webbrowser.internal.WebBrowserEditor;
20 import net.sourceforge.phpeclipse.webbrowser.internal.WebBrowserUIPlugin;
21 import net.sourceforge.phpeclipse.webbrowser.internal.WebBrowserUtil;
22
23 import org.eclipse.swt.widgets.Display;
24
25 /**
26  * The main interface to the internal Web browser. If allows you to query the
27  * file types supported by the Web browser and open a URL.
28  */
29 public class WebBrowser {
30         /**
31          * WebBrowser constructor comment.
32          */
33         private WebBrowser() {
34                 super();
35         }
36
37         /**
38          * Returns true if the internal Web browser is supported on this platform
39          * and the user has chosen to use it.
40          * 
41          * @return boolean
42          */
43         public static boolean isUsingInternalBrowser() {
44                 return (getCurrentWebBrowser() instanceof IInternalWebBrowser);
45         }
46
47         /**
48          * Display the given URL in a Web browser. If the user has chosen not to use
49          * the internal browser, an external browser will be used. If not, a browser
50          * in the current page will be reused if forceNewPage is not true and the
51          * user preference is not set. Finally, showToolbar will decide when the
52          * toolbar should be shown in the internal browser.
53          * 
54          * @param input
55          */
56         public static void openURL(final IWebBrowserEditorInput input) {
57                 Trace.trace(Trace.FINEST, "openURL() " + input);
58                 if (input == null)
59                         return;
60
61                 Display.getDefault().asyncExec(new Runnable() {
62                         public void run() {
63                                 if (!isUsingInternalBrowser()) {
64                                         IWebBrowser browser = getCurrentWebBrowser();
65                                         browser.openURL(input.getURL());
66                                 } else
67                                         WebBrowserEditor.open(input);
68                         }
69                 });
70         }
71
72         /**
73          * Return a list of all the installed Web browsers.
74          * 
75          * @return
76          */
77         public static List getWebBrowsers() {
78                 return BrowserManager.getInstance().getWebBrowsers();
79         }
80
81         /**
82          * Return the current default web browser.
83          * 
84          * @return
85          */
86         public static IWebBrowser getCurrentWebBrowser() {
87                 return BrowserManager.getInstance().getCurrentWebBrowser();
88         }
89
90         /**
91          * Set the current default web browser.
92          * 
93          * @return
94          */
95         public static void getCurrentWebBrowser(IWebBrowser browser) {
96                 BrowserManager.getInstance().setCurrentWebBrowser(browser);
97         }
98
99         /**
100          * Create a new external Web browser.
101          * 
102          * @return
103          */
104         public static IExternalWebBrowserWorkingCopy createExternalWebBrowser() {
105                 return new ExternalWebBrowserWorkingCopy();
106         }
107
108         /**
109          * Display the given URL in a Web browser.
110          * 
111          * @param url
112          *            java.net.URL
113          */
114         public static void openURL(URL url) {
115                 IWebBrowser browser = getCurrentWebBrowser();
116                 if (browser != null)
117                         browser.openURL(url);
118                 else {
119                         Display.getDefault().asyncExec(new Runnable() {
120                                 public void run() {
121                                         WebBrowserUtil.openError(WebBrowserUIPlugin
122                                                         .getResource("%errorNoBrowser"));
123                                 }
124                         });
125                 }
126         }
127 }