941829ea96391073b0655d7d6b5cc64e8a1921ee
[phpeclipse.git] / net.sourceforge.phpeclipse / src / net / sourceforge / phpeclipse / phpeditor / ShowExternalPreviewAction.java
1 package net.sourceforge.phpeclipse.phpeditor;
2 /*******************************************************************************
3  * Copyright (c) 2000, 2002 IBM Corp. and others. All rights reserved. This
4  * program and the accompanying materials are made available under the terms of
5  * the Common Public License v1.0 which accompanies this distribution, and is
6  * available at http://www.eclipse.org/legal/cpl-v10.html
7  * 
8  * Contributors: IBM Corporation - Initial implementation Klaus Hartlage -
9  * www.eclipseproject.de
10  ******************************************************************************/
11 import net.sourceforge.phpeclipse.PHPeclipsePlugin;
12 import net.sourceforge.phpeclipse.actions.PHPEclipseShowAction;
13 import net.sourceforge.phpeclipse.views.browser.BrowserView;
14
15 import org.eclipse.core.resources.IFile;
16 import org.eclipse.ui.IEditorInput;
17 import org.eclipse.ui.IFileEditorInput;
18 import org.eclipse.ui.IViewPart;
19 import org.eclipse.ui.IWorkbenchPage;
20 import org.eclipse.ui.PartInitException;
21 import org.eclipse.ui.texteditor.ITextEditor;
22 import org.eclipse.ui.texteditor.TextEditorAction;
23 //import org.eclipse.update.internal.ui.UpdatePerspective;
24 //import org.eclipse.update.internal.ui.views.IEmbeddedWebBrowser;
25 /**
26  * ClassDeclaration that defines the action for parsing the current PHP file
27  */
28 public class ShowExternalPreviewAction extends TextEditorAction {
29   private static ShowExternalPreviewAction instance = new ShowExternalPreviewAction();
30   protected IFile fileToParse;
31   /**
32    * Constructs and updates the action.
33    */
34   private ShowExternalPreviewAction() {
35     super(PHPEditorMessages.getResourceBundle(), "ParserAction.", null); //$NON-NLS-1$
36     update();
37   }
38   public static ShowExternalPreviewAction getInstance() {
39     return instance;
40   }
41   /**
42    * Code called when the action is fired.
43    */
44   public void run() {
45     fileToParse = getFile();
46     if (fileToParse == null) {
47       // should never happen
48       return;
49     }
50     String localhostURL;
51     if ((localhostURL = PHPEclipseShowAction.getLocalhostURL(null, fileToParse)) == null) {
52       return;
53     }
54     IWorkbenchPage page = PHPeclipsePlugin.getActivePage();
55     try {
56       IViewPart part = page.findView(BrowserView.ID_BROWSER);
57       if (part == null) {
58         part = page.showView(BrowserView.ID_BROWSER);
59       } else {
60         page.bringToTop(part);
61       }
62       ((BrowserView) part).setUrl(localhostURL);
63     } catch (PartInitException e) {
64       PHPeclipsePlugin.log(e);
65     }
66   }
67   /**
68    * Finds the file that's currently opened in the PHP Text Editor
69    */
70   protected IFile getFile() {
71     ITextEditor editor = getTextEditor();
72     IEditorInput editorInput = null;
73     if (editor != null) {
74       editorInput = editor.getEditorInput();
75     }
76     if (editorInput instanceof IFileEditorInput)
77       return ((IFileEditorInput) editorInput).getFile();
78     // if nothing was found, which should never happen
79     return null;
80   }
81 }