package net.sourceforge.phpeclipse.phpeditor; /******************************************************************************* * Copyright (c) 2000, 2002 IBM Corp. and others. All rights reserved. This * program and the accompanying materials are made available under the terms of * the Common Public License v1.0 which accompanies this distribution, and is * available at http://www.eclipse.org/legal/cpl-v10.html * * Contributors: IBM Corporation - Initial implementation Klaus Hartlage - * www.eclipseproject.de ******************************************************************************/ import net.sourceforge.phpdt.internal.ui.util.PHPFileUtil; import net.sourceforge.phpeclipse.IPreferenceConstants; import net.sourceforge.phpeclipse.PHPeclipsePlugin; import net.sourceforge.phpeclipse.actions.PHPEclipseShowAction; import net.sourceforge.phpeclipse.overlaypages.Util; import net.sourceforge.phpeclipse.views.browser.BrowserView; import org.eclipse.core.resources.IFile; import org.eclipse.ui.IEditorInput; import org.eclipse.ui.IFileEditorInput; import org.eclipse.ui.IViewPart; import org.eclipse.ui.IWorkbenchPage; import org.eclipse.ui.PartInitException; import org.eclipse.ui.texteditor.ITextEditor; import org.eclipse.ui.texteditor.TextEditorAction; //import org.eclipse.update.internal.ui.UpdatePerspective; //import org.eclipse.update.internal.ui.views.IEmbeddedWebBrowser; /** * ClassDeclaration that defines the action for parsing the current PHP file */ public class ShowExternalPreviewAction extends TextEditorAction { private static ShowExternalPreviewAction instance = new ShowExternalPreviewAction(); /** * Constructs and updates the action. */ private ShowExternalPreviewAction() { super(PHPEditorMessages.getResourceBundle(), "ParserAction.", null); //$NON-NLS-1$ update(); } public static ShowExternalPreviewAction getInstance() { return instance; } /** * Code called when the action is fired. */ public void run() { IFile previewFile = getFile(); if (previewFile == null) { // should never happen return; } boolean autoPreview = Util.getPreviewBooleanValue(previewFile, IPreferenceConstants.PHP_AUTO_PREVIEW_DEFAULT); boolean bringToTopPreview = Util.getPreviewBooleanValue(previewFile, IPreferenceConstants.PHP_BRING_TO_TOP_PREVIEW_DEFAULT); boolean showHTMLFilesLocal = Util.getPreviewBooleanValue(previewFile, IPreferenceConstants.PHP_SHOW_HTML_FILES_LOCAL); boolean isPHPFileName = PHPFileUtil.isPHPFileName(previewFile.getLocation().toString()); if (autoPreview) { String localhostURL; if (showHTMLFilesLocal && (!isPHPFileName)) { localhostURL = previewFile.getLocation().toString(); } else if ((localhostURL = PHPEclipseShowAction.getLocalhostURL(null, previewFile)) == null) { return; } IWorkbenchPage page = PHPeclipsePlugin.getActivePage(); try { IViewPart part = page.findView(BrowserView.ID_BROWSER); if (part == null) { part = page.showView(BrowserView.ID_BROWSER); } else { if (bringToTopPreview) { page.bringToTop(part); } } ((BrowserView) part).setUrl(localhostURL); } catch (PartInitException e) { PHPeclipsePlugin.log(e); } } } public void refresh() { IFile fileToParse = getFile(); if (fileToParse == null) { // should never happen return; } boolean autoPreview = Util.getPreviewBooleanValue(fileToParse, IPreferenceConstants.PHP_AUTO_PREVIEW_DEFAULT); boolean bringToTopPreview = Util.getPreviewBooleanValue(fileToParse, IPreferenceConstants.PHP_BRING_TO_TOP_PREVIEW_DEFAULT); if (autoPreview) { IWorkbenchPage page = PHPeclipsePlugin.getActivePage(); try { IViewPart part = page.findView(BrowserView.ID_BROWSER); if (part == null) { part = page.showView(BrowserView.ID_BROWSER); } else { if (bringToTopPreview) { page.bringToTop(part); } } ((BrowserView) part).refresh(); } catch (PartInitException e) { PHPeclipsePlugin.log(e); } } } /** * Finds the file that's currently opened in the PHP Text Editor */ protected IFile getFile() { ITextEditor editor = getTextEditor(); IEditorInput editorInput = null; if (editor != null) { editorInput = editor.getEditorInput(); } if (editorInput instanceof IFileEditorInput) return ((IFileEditorInput) editorInput).getFile(); // if nothing was found, which should never happen return null; } }