1 package net.sourceforge.phpeclipse.ui.editor;
3 import java.net.MalformedURLException;
6 import net.sourceforge.phpeclipse.ui.IPreferenceConstants;
7 import net.sourceforge.phpeclipse.ui.WebUI;
8 import net.sourceforge.phpeclipse.ui.internal.WebUIMessages;
9 import net.sourceforge.phpeclipse.ui.overlaypages.ProjectPrefUtil;
10 import net.sourceforge.phpeclipse.webbrowser.views.BrowserView;
11 import net.sourceforge.phpeclipse.webbrowser.views.ShowInContextBrowser;
13 import org.eclipse.core.resources.IFile;
14 import org.eclipse.core.runtime.IStatus;
15 import org.eclipse.core.runtime.Status;
16 import org.eclipse.jface.dialogs.ErrorDialog;
17 import org.eclipse.swt.widgets.Shell;
18 import org.eclipse.ui.IViewPart;
19 import org.eclipse.ui.IViewReference;
20 import org.eclipse.ui.IWorkbenchPage;
21 import org.eclipse.ui.IWorkbenchPart;
22 import org.eclipse.ui.PartInitException;
23 import org.eclipse.ui.PlatformUI;
24 import org.eclipse.ui.browser.IWebBrowser;
25 import org.eclipse.ui.browser.IWorkbenchBrowserSupport;
26 import org.eclipse.ui.internal.Perspective;
27 import org.eclipse.ui.internal.WorkbenchPage;
28 import org.eclipse.ui.part.IShowInTarget;
29 import org.eclipse.ui.part.ShowInContext;
31 public class BrowserUtil {
33 public static ShowInContextBrowser getShowInContext(IFile previewFile,
34 boolean forceDBGPreview, String postFix) {
35 //String extension = previewFile.getFileExtension().toLowerCase();
36 // boolean showHTMLFilesLocal = false;
37 // boolean showXMLFilesLocal = false;
38 // boolean isHTMLFileName = false;
39 // boolean isXMLFileName = false;
41 if (!forceDBGPreview) {
42 // showHTMLFilesLocal =
43 // ProjectPrefUtil.getPreviewBooleanValue(previewFile,
44 // IPreferenceConstants.PHP_SHOW_HTML_FILES_LOCAL);
45 // showXMLFilesLocal =
46 // ProjectPrefUtil.getPreviewBooleanValue(previewFile,
47 // IPreferenceConstants.PHP_SHOW_XML_FILES_LOCAL);
48 // isHTMLFileName = "html".equals(extension)
49 // || "htm".equals(extension) || "xhtml".equals(extension);
50 // isXMLFileName = "xml".equals(extension) || "xsd".equals(extension)
51 // || "dtd".equals(extension);
53 // if (showHTMLFilesLocal && isHTMLFileName) {
54 // localhostURL = previewFile.getLocation().toString();
55 // } else if (showXMLFilesLocal && isXMLFileName) {
56 // localhostURL = previewFile.getLocation().toString();
58 if ((localhostURL = ShowExternalPreviewAction.getLocalhostURL(null,
59 previewFile)) == null) {
60 return new ShowInContextBrowser(previewFile, null, null);
62 localhostURL += postFix;
63 return new ShowInContextBrowser(previewFile, null, localhostURL);
67 * Returns the <code>IShowInTarget</code> for the given part, or
68 * <code>null</code> if it does not provide one.
72 * @return the <code>IShowInTarget</code> or <code>null</code>
74 private static IShowInTarget getShowInTarget(IWorkbenchPart targetPart) {
75 if (targetPart instanceof IShowInTarget) {
76 return (IShowInTarget) targetPart;
78 Object o = targetPart.getAdapter(IShowInTarget.class);
79 if (o instanceof IShowInTarget) {
80 return (IShowInTarget) o;
85 public static void showPreview(IFile previewFile, boolean forceDBGPreview,
87 if (previewFile == null) {
88 // should never happen
91 IWorkbenchPage page = WebUI.getActivePage();
92 if (page != null && page.isEditorAreaVisible()) {
93 // String extension = previewFile.getFileExtension().toLowerCase();
94 boolean autoPreview = forceDBGPreview;
95 // boolean showHTMLFilesLocal = false;
96 // boolean showXMLFilesLocal = false;
97 // boolean isHTMLFileName = false;
98 // boolean isXMLFileName = false;
99 if (!forceDBGPreview) {
100 autoPreview = ProjectPrefUtil.getPreviewBooleanValue(
102 IPreferenceConstants.PHP_AUTO_PREVIEW_DEFAULT);
104 // showHTMLFilesLocal =
105 // ProjectPrefUtil.getPreviewBooleanValue(previewFile,
106 // IPreferenceConstants.PHP_SHOW_HTML_FILES_LOCAL);
107 // showXMLFilesLocal =
108 // ProjectPrefUtil.getPreviewBooleanValue(previewFile,
109 // IPreferenceConstants.PHP_SHOW_XML_FILES_LOCAL);
110 // isHTMLFileName = "html".equals(extension) ||
111 // "htm".equals(extension)
112 // || "xhtml".equals(extension);
113 // isXMLFileName = "xml".equals(extension) ||
114 // "xsd".equals(extension) ||
115 // "dtd".equals(extension);
118 // String localhostURL;
119 // if (showHTMLFilesLocal && isHTMLFileName) {
120 // localhostURL = previewFile.getLocation().toString();
121 // } else if (showXMLFilesLocal && isXMLFileName) {
122 // localhostURL = previewFile.getLocation().toString();
123 // } else if ((localhostURL =
124 // ShowExternalPreviewAction.getLocalhostURL(null, previewFile))
129 // localhostURL += postFix;
130 ShowInContext context = getShowInContext (previewFile, forceDBGPreview, postFix);
131 IWorkbenchPart sourcePart = page.getActivePart();
133 if (sourcePart == null && context != null) {
138 /* Don't know what this is for, but I removed it by now because of some compile errors!
139 Perspective persp = ((WorkbenchPage) page).getActivePerspective();
141 // If this view is already visible just return.
142 IViewReference ref = persp.findView (BrowserView.ID_BROWSER, null);
143 IViewPart view = null;
146 view = ref.getView(true);
149 if (view == null && forceDBGPreview) {
151 view = persp.showView (BrowserView.ID_BROWSER, null);
152 persp.bringToTop (persp.findView (BrowserView.ID_BROWSER, null));
153 } catch (PartInitException e) {
159 IShowInTarget target = getShowInTarget(view);
160 boolean stickyBrowserURL = ProjectPrefUtil.getPreviewBooleanValue(
162 IPreferenceConstants.PHP_STICKY_BROWSER_URL_DEFAULT);
163 if (target != null) {
165 && ((BrowserView) target).getUrl() != null
166 && ((BrowserView) target).getUrl().length() > 0) {
167 ((BrowserView) target).refresh();
169 target.show(context);
172 ((WorkbenchPage) page).performedShowIn (BrowserView.ID_BROWSER);
176 // IViewPart view = page.showView(BrowserView.ID_BROWSER);
177 // IShowInTarget target = getShowInTarget(view);
178 // if (target != null && target.show(new
179 // ShowInContext(localhostURL,
184 // page).performedShowIn(BrowserView.ID_BROWSER); //
185 // TODO: move back up
186 // } catch (PartInitException e) {
187 // WorkbenchPlugin.log(
188 // "Error showing view in ShowInAction.run", e.getStatus());
193 // IViewPart part = page.showView(BrowserView.ID_BROWSER, null,
194 // IWorkbenchPage.VIEW_VISIBLE);
195 // if (part == null) {
196 // part = page.showView(BrowserView.ID_BROWSER);
198 // page.bringToTop(part);
200 // ((BrowserView) part).setUrl(localhostURL);
202 // } catch (Exception e) {
203 // // PHPeclipsePlugin.log(e);
209 private static final String BROWSER_ID = "net.sourceforge.phpeclipse.browser";
212 * convenient method to show browser as Editor
215 public static void showBrowserAsEditor(IFile file, String queryString) {
216 showBrowser(IWorkbenchBrowserSupport.AS_EDITOR, file, queryString);
220 * convenient method to show browser as External Web Browser
223 public static void showBrowserAsExternal(IFile file, String queryString) {
224 showBrowser(IWorkbenchBrowserSupport.AS_EXTERNAL, file, queryString);
228 * convenient method to show browser as View
231 public static void showBrowserAsView(IFile file, String queryString) {
232 showBrowser(IWorkbenchBrowserSupport.AS_VIEW, file, queryString);
236 * Show browser according to General settings
238 * See IWorkbenchBrowserSupport and DefaultWorkbenchBrowserSupport.
240 public static void showBrowser(int style, IFile file, String queryString) {
241 ShowInContextBrowser context = getShowInContext(file, true, queryString);
242 String url = context.getLocalhostUrl();
244 String dialogTitle = WebUIMessages
245 .getString("BrowserUtil.error.dialog.title");
246 String message = WebUIMessages
247 .getString("BrowserUtil.null.url.message");
248 String reason = WebUIMessages
249 .getString("BrowserUtil.null.url.reason");
250 IStatus status = new Status(IStatus.ERROR, WebUI.PLUGIN_ID, 0,
252 ErrorDialog.openError(new Shell(), dialogTitle, message, status);
255 String id = BROWSER_ID;
257 case IWorkbenchBrowserSupport.AS_EXTERNAL:
260 case IWorkbenchBrowserSupport.AS_EDITOR:
263 case IWorkbenchBrowserSupport.AS_VIEW:
267 style |= IWorkbenchBrowserSupport.LOCATION_BAR
268 | IWorkbenchBrowserSupport.NAVIGATION_BAR
269 | IWorkbenchBrowserSupport.STATUS;
271 IWebBrowser browser = PlatformUI.getWorkbench().getBrowserSupport()
272 .createBrowser(style, id, null, url);
273 browser.openURL(new URL(url));
275 } catch (PartInitException e) {
277 } catch (MalformedURLException e) {