1 package net.sourceforge.phpeclipse.ui.editor;
3 import net.sourceforge.phpeclipse.ui.IPreferenceConstants;
4 import net.sourceforge.phpeclipse.ui.WebUI;
5 import net.sourceforge.phpeclipse.ui.overlaypages.ProjectPrefUtil;
6 import net.sourceforge.phpeclipse.webbrowser.views.BrowserView;
8 import org.eclipse.core.resources.IFile;
9 import org.eclipse.core.runtime.IPath;
10 import org.eclipse.jface.preference.IPreferenceStore;
11 import org.eclipse.ui.IEditorInput;
12 import org.eclipse.ui.IFileEditorInput;
13 import org.eclipse.ui.IViewPart;
14 import org.eclipse.ui.IWorkbenchPage;
15 import org.eclipse.ui.texteditor.ITextEditor;
16 import org.eclipse.ui.texteditor.TextEditorAction;
19 * ClassDeclaration that defines the action for parsing the current PHP file
21 public class ShowExternalPreviewAction extends TextEditorAction {
22 public final static int XML_TYPE = 1;
24 public final static int HTML_TYPE = 2;
26 public final static int SMARTY_TYPE = 3;
28 public final static int PHP_TYPE = 4;
30 private static ShowExternalPreviewAction instance = new ShowExternalPreviewAction();
33 * Constructs and updates the action.
35 private ShowExternalPreviewAction() {
36 super(EditorMessages.getResourceBundle(), "ParserAction.", null); //$NON-NLS-1$
40 public static ShowExternalPreviewAction getInstance() {
45 * Code called when the action is fired.
51 public void doRun(int type) {
52 IFile previewFile = getFile();
53 if (previewFile == null) {
54 // should never happen
57 String extension = previewFile.getFileExtension().toLowerCase();
58 boolean autoPreview = ProjectPrefUtil.getPreviewBooleanValue(previewFile, IPreferenceConstants.PHP_AUTO_PREVIEW_DEFAULT);
59 boolean bringToTopPreview = ProjectPrefUtil.getPreviewBooleanValue(previewFile, IPreferenceConstants.PHP_BRING_TO_TOP_PREVIEW_DEFAULT);
60 boolean showHTMLFilesLocal = ProjectPrefUtil.getPreviewBooleanValue(previewFile, IPreferenceConstants.PHP_SHOW_HTML_FILES_LOCAL);
61 boolean showXMLFilesLocal = ProjectPrefUtil.getPreviewBooleanValue(previewFile, IPreferenceConstants.PHP_SHOW_XML_FILES_LOCAL);
62 boolean isHTMLFileName = "html".equals(extension) || "htm".equals(extension) || "xhtml".equals(extension);
63 boolean isXMLFileName = "xml".equals(extension) || "xsd".equals(extension) || "dtd".equals(extension);
67 if (showHTMLFilesLocal && isHTMLFileName) {
68 localhostURL = previewFile.getLocation().toString();
69 } else if (showXMLFilesLocal && isXMLFileName) {
70 localhostURL = previewFile.getLocation().toString();
71 } else if ((localhostURL = getLocalhostURL(null, previewFile)) == null) {
74 IWorkbenchPage page = WebUI.getActivePage();
76 IViewPart part = page.findView(BrowserView.ID_BROWSER);
78 part = page.showView(BrowserView.ID_BROWSER);
80 if (bringToTopPreview) {
81 page.bringToTop(part);
84 ((BrowserView) part).setUrl(localhostURL);
86 } catch (Exception e) {
87 //PHPeclipsePlugin.log(e);
92 public void refresh(int type) {
93 IFile fileToParse = getFile();
94 if (fileToParse == null) {
95 // should never happen
98 boolean autoPreview = ProjectPrefUtil.getPreviewBooleanValue(fileToParse, IPreferenceConstants.PHP_AUTO_PREVIEW_DEFAULT);
99 boolean bringToTopPreview = ProjectPrefUtil.getPreviewBooleanValue(fileToParse, IPreferenceConstants.PHP_BRING_TO_TOP_PREVIEW_DEFAULT);
102 IWorkbenchPage page = WebUI.getActivePage();
104 IViewPart part = page.findView(BrowserView.ID_BROWSER);
106 part = page.showView(BrowserView.ID_BROWSER);
108 if (bringToTopPreview) {
109 page.bringToTop(part);
113 ((BrowserView) part).refresh();
115 } catch (Exception e) {
116 // PHPeclipsePlugin.log(e);
122 * Finds the file that's currently opened in the PHP Text Editor
124 protected IFile getFile() {
125 ITextEditor editor = getTextEditor();
126 IEditorInput editorInput = null;
127 if (editor != null) {
128 editorInput = editor.getEditorInput();
130 if (editorInput instanceof IFileEditorInput)
131 return ((IFileEditorInput) editorInput).getFile();
132 // if nothing was found, which should never happen
136 public static String getLocalhostURL(IPreferenceStore store, IFile file) {
138 store = WebUI.getDefault().getPreferenceStore();
140 // IPath path = file.getFullPath();
141 String localhostURL = file.getLocation().toString();
142 String lowerCaseFileName = localhostURL.toLowerCase();
143 // String documentRoot = store.getString(PHPeclipsePlugin.DOCUMENTROOT_PREF);
144 IPath documentRootPath = ProjectPrefUtil.getDocumentRoot(file.getProject());
145 String documentRoot = documentRootPath.toString().toLowerCase();
146 if (lowerCaseFileName.startsWith(documentRoot)) {
147 localhostURL = localhostURL.substring(documentRoot.length());
151 // return store.getString(PHPeclipsePlugin.LOCALHOST_PREF) + localhostURL;
152 return ProjectPrefUtil.getMiscProjectsPreferenceValue(file.getProject(), IPreferenceConstants.PHP_LOCALHOST_PREF) + localhostURL;