Open preview on editor open
[phpeclipse.git] / net.sourceforge.phpeclipse / src / net / sourceforge / phpeclipse / phpeditor / ShowExternalPreviewAction.java
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 (file)
index 0000000..c00e308
--- /dev/null
@@ -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