e3488051ea8cae333ebc077d3c3ccfe948a645bb
[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.*;
17
18 import org.eclipse.swt.widgets.Display;
19 /**
20  * The main interface to the internal Web browser. If allows
21  * you to query the file types supported by the Web browser
22  * and open a URL.
23  */
24 public class WebBrowser {
25         /**
26          * WebBrowser constructor comment.
27          */
28         private WebBrowser() {
29                 super();
30         }
31
32         /**
33          * Returns true if the internal Web browser is supported on this
34          * platform and the user has chosen to use it.
35          *
36          * @return boolean
37          */
38         public static boolean isUsingInternalBrowser() {
39                 return (getCurrentWebBrowser() instanceof IInternalWebBrowser);
40         }
41
42         /**
43          * Display the given URL in a Web browser. If the user has chosen not
44          * to use the internal browser, an external browser will be used. If
45          * not, a browser in the current page will be reused if forceNewPage
46          * is not true and the user preference is not set. Finally, showToolbar
47          * will decide when the toolbar should be shown in the internal browser.
48          *
49          * @param input
50          */
51         public static void openURL(final IWebBrowserEditorInput input) {
52                 Trace.trace(Trace.FINEST, "openURL() " + input);
53                 if (input == null)
54                         return;
55         
56                 Display.getDefault().asyncExec(new Runnable() {
57                         public void run() {
58                                 if (!isUsingInternalBrowser()){
59                                         IWebBrowser browser = getCurrentWebBrowser();
60                                         browser.openURL(input.getURL());
61                                 } else
62                                         WebBrowserEditor.open(input);
63                         }
64                 });
65         }
66
67         /**
68          * Return a list of all the installed Web browsers.
69          * 
70          * @return
71          */
72         public static List getWebBrowsers() {
73                 return BrowserManager.getInstance().getWebBrowsers();
74         }
75
76         /**
77          * Return the current default web browser.
78          * 
79          * @return
80          */
81         public static IWebBrowser getCurrentWebBrowser() {
82                 return BrowserManager.getInstance().getCurrentWebBrowser();
83         }
84
85         /**
86          * Set the current default web browser.
87          * 
88          * @return
89          */
90         public static void getCurrentWebBrowser(IWebBrowser browser) {
91                 BrowserManager.getInstance().setCurrentWebBrowser(browser);
92         }
93
94         /**
95          * Create a new external Web browser.
96          * 
97          * @return
98          */
99         public static IExternalWebBrowserWorkingCopy createExternalWebBrowser() {
100                 return new ExternalWebBrowserWorkingCopy();
101         }
102
103         /**
104          * Display the given URL in a Web browser.
105          *
106          * @param url java.net.URL
107          */
108         public static void openURL(URL url) {
109                 IWebBrowser browser = getCurrentWebBrowser();
110                 if (browser != null)
111                         browser.openURL(url);
112                 else {
113                         Display.getDefault().asyncExec(new Runnable() {
114                                 public void run() {
115                                         WebBrowserUtil.openError(WebBrowserUIPlugin.getResource("%errorNoBrowser"));
116                                 }
117                         });
118                 }
119         }
120 }