X-Git-Url: http://git.phpeclipse.com diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/phpeditor/ShowExternalPreviewAction.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/phpeditor/ShowExternalPreviewAction.java new file mode 100644 index 0000000..c00e308 --- /dev/null +++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/phpeditor/ShowExternalPreviewAction.java @@ -0,0 +1,100 @@ +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.phpeclipse.PHPeclipsePlugin; +import net.sourceforge.phpeclipse.actions.PHPEclipseShowAction; + +import org.eclipse.core.resources.IFile; +import org.eclipse.swt.SWT; +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.UpdateUIPlugin; +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(); + + protected IFile fileToParse; + + /** + * 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() { + fileToParse = getFile(); + if (fileToParse == null) { + // should never happen + return; + } + + if (SWT.getPlatform().equals("win32")) { + String localhostURL; + if ((localhostURL = PHPEclipseShowAction.getLocalhostURL(null, fileToParse)) == null) { + return; + } + IWorkbenchPage page = PHPeclipsePlugin.getActivePage(); + try { + IViewPart part = page.findView(UpdatePerspective.ID_BROWSER); + if (part == null) { + part = page.showView(UpdatePerspective.ID_BROWSER); + } else + page.bringToTop(part); + ((IEmbeddedWebBrowser) part).openTo(localhostURL); + } catch (PartInitException e) { + UpdateUIPlugin.logException(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; + } + +} \ No newline at end of file