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