[278892] Visualization Action doesn't work in PHP perspective
diff --git a/plugins/org.eclipse.actf.visualization.ui.pdt/src/org/eclipse/actf/visualization/internal/ui/pdt/AbstructVisualizationActionForPdt.java b/plugins/org.eclipse.actf.visualization.ui.pdt/src/org/eclipse/actf/visualization/internal/ui/pdt/AbstructVisualizationActionForPdt.java
new file mode 100644
index 0000000..1e0c3f5
--- /dev/null
+++ b/plugins/org.eclipse.actf.visualization.ui.pdt/src/org/eclipse/actf/visualization/internal/ui/pdt/AbstructVisualizationActionForPdt.java
@@ -0,0 +1,204 @@
+/*******************************************************************************
+ * Copyright (c) 2009 IBM Corporation and Others
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Kentarou FUKUDA - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.actf.visualization.internal.ui.pdt;
+
+import java.io.File;
+import java.io.PrintWriter;
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
+import java.util.HashMap;
+
+import org.eclipse.actf.model.ui.IModelService;
+import org.eclipse.actf.model.ui.IModelServiceHolder;
+import org.eclipse.actf.model.ui.editor.browser.IWebBrowserACTF;
+import org.eclipse.actf.model.ui.editor.browser.WaitForBrowserReadyHandler;
+import org.eclipse.actf.model.ui.util.ModelServiceUtils;
+import org.eclipse.actf.ui.util.PlatformUIUtil;
+import org.eclipse.actf.ui.util.timer.WaitExecSyncEventHandler;
+import org.eclipse.actf.ui.util.timer.WaitExecSyncEventListener;
+import org.eclipse.actf.visualization.ui.IVisualizationView;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IEditorReference;
+import org.eclipse.ui.IViewPart;
+import org.eclipse.ui.IViewReference;
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.PartInitException;
+
+abstract class AbstructVisualizationActionForPdt {
+
+ private static final String BROWSER_EDITOR_ID = "org.eclipse.ui.browser.editor"; //$NON-NLS-1$
+ private static final String SWT_BROWSER_GET_TEXT_METHOD = "getText"; //$NON-NLS-1$
+ private static final String SWT_BROWSER_CLASS = "org.eclipse.swt.browser.Browser"; //$NON-NLS-1$
+ private static final String PHPBROWSER_ID = "org.eclipse.debug.ui.PHPBrowserOutput"; //$NON-NLS-1$
+ private static final String LISTENER_KEY = "org.eclipse.actf.visualization.internal.ui.pdt.AbstructVisualizationActionForPdt"; //$NON-NLS-1$
+
+ private IModelServiceHolder browserHolder;
+ private IWebBrowserACTF browser;
+ private String targetHtml = ""; //$NON-NLS-1$
+ private File targetHtmlFile = null;
+ private IWorkbenchWindow _window;
+ private HashMap<String, WaitExecSyncEventListener> eventhandlerHolder = new HashMap<String, WaitExecSyncEventListener>();
+
+ public void dispose() {
+ }
+
+ public void init(IWorkbenchWindow window) {
+ this._window = window;
+ }
+
+ public void run(IAction action) {
+
+ IModelService modelService = ModelServiceUtils.getActiveModelService();
+ if ((modelService != null && modelService != browser)) {
+ visualize();
+ return;
+ }
+
+ IEditorPart editor = PlatformUIUtil.getActiveEditor();
+ if (editor != null
+ && BROWSER_EDITOR_ID.equals(editor.getEditorSite().getId())) {
+ visualize();
+ return;
+ }
+
+ boolean updated = false;
+ String text = getText(_window.getActivePage());
+ if (text != null && !text.equals(targetHtml)) {
+ updated = true;
+ targetHtml = text;
+ targetHtmlFile = saveToFile(targetHtml);
+ }
+
+ for (IEditorReference editorRef : _window.getActivePage()
+ .getEditorReferences()) {
+ if (editorRef.getEditor(false) == browserHolder) {
+ if (updated) {
+ browser.navigate(targetHtmlFile.getAbsolutePath());
+ waitAndVisualize();
+ return;
+ } else {
+ _window.getActivePage().activate(
+ browserHolder.getEditorPart());
+ visualize();
+ return;
+ }
+ }
+ }
+
+ if (text != null) {
+ ModelServiceUtils.launch(targetHtmlFile.getAbsolutePath());
+ browser = (IWebBrowserACTF) ModelServiceUtils
+ .getActiveModelService();
+ browserHolder = ModelServiceUtils.getActiveModelServiceHolder();
+ waitAndVisualize();
+ return;
+ }
+
+ }
+
+ public void selectionChanged(IAction action, ISelection selection) {
+ }
+
+ private void visualize() {
+ try {
+ IViewPart viewPart = this._window.getActivePage().showView(
+ getTargetViewId());
+ if (viewPart instanceof IVisualizationView) {
+ ((IVisualizationView) viewPart).doVisualize();
+ }
+ } catch (PartInitException pie) {
+ }
+ }
+
+ private File saveToFile(String text) {
+ File tmpFile = null;
+ try {
+ tmpFile = PdtVisualizationPlugin.getDefault().createTempFile("php", //$NON-NLS-1$
+ ".html"); //$NON-NLS-1$
+ PrintWriter pw = new PrintWriter(tmpFile, "UTF-8"); //$NON-NLS-1$
+ pw.print(text);
+ pw.flush();
+ pw.close();
+ } catch (Exception e) {
+ }
+ return tmpFile;
+ }
+
+ private void waitAndVisualize() {
+
+ if (browser != null) {
+ IViewPart viewPart = null;
+ try {
+ viewPart = this._window.getActivePage().showView(
+ getTargetViewId());
+ } catch (PartInitException pie) {
+ }
+ if (viewPart instanceof IVisualizationView) {
+ final IVisualizationView targetView = (IVisualizationView) viewPart;
+ WaitExecSyncEventHandler handler = new WaitForBrowserReadyHandler(
+ browser, 30, false, new Runnable() {
+ public void run() {
+ eventhandlerHolder.remove(LISTENER_KEY);
+ targetView.doVisualize();
+ PlatformUIUtil.showView(getTargetViewId());
+ }
+ });
+ eventhandlerHolder.put(LISTENER_KEY,
+ new WaitExecSyncEventListener(handler));
+ }
+ }
+ }
+
+ private String getText(IWorkbenchPage activePage) {
+ if (activePage == null) {
+ return null;
+ }
+ for (IViewReference viewRef : activePage.getViewReferences()) {
+ if (PHPBROWSER_ID.equals(viewRef.getId())) {
+ IViewPart[] views = activePage.getViewStack(viewRef
+ .getView(false));
+ try {
+ for (IViewPart viewpart : views) {
+ if (PHPBROWSER_ID
+ .equals(viewpart.getViewSite().getId())) {
+ Field[] fields = viewpart.getClass()
+ .getDeclaredFields();
+ for (Field field : fields) {
+ if (SWT_BROWSER_CLASS.equals(field.getType()
+ .getName())) {
+ field.setAccessible(true);
+ Object view = field.get(viewpart);
+
+ Method getText = view.getClass().getMethod(
+ SWT_BROWSER_GET_TEXT_METHOD,
+ new Class[] {});
+ String text = (String) getText.invoke(view,
+ new Object[] {});
+
+ field.setAccessible(false);
+ return (text);
+ }
+ }
+ }
+ }
+ } catch (Exception e) {
+ }
+ }
+ }
+ return null;
+ }
+
+ abstract String getTargetViewId();
+
+}
\ No newline at end of file
diff --git a/plugins/org.eclipse.actf.visualization.ui.pdt/src/org/eclipse/actf/visualization/internal/ui/pdt/SimulationActionForPdt.java b/plugins/org.eclipse.actf.visualization.ui.pdt/src/org/eclipse/actf/visualization/internal/ui/pdt/SimulationActionForPdt.java
index 59ee372..edcb389 100644
--- a/plugins/org.eclipse.actf.visualization.ui.pdt/src/org/eclipse/actf/visualization/internal/ui/pdt/SimulationActionForPdt.java
+++ b/plugins/org.eclipse.actf.visualization.ui.pdt/src/org/eclipse/actf/visualization/internal/ui/pdt/SimulationActionForPdt.java
@@ -10,197 +10,15 @@
*******************************************************************************/
package org.eclipse.actf.visualization.internal.ui.pdt;
-import java.io.File;
-import java.io.PrintWriter;
-import java.lang.reflect.Field;
-import java.lang.reflect.Method;
-import java.util.HashMap;
-
-import org.eclipse.actf.model.ui.IModelService;
-import org.eclipse.actf.model.ui.IModelServiceHolder;
-import org.eclipse.actf.model.ui.editor.browser.IWebBrowserACTF;
-import org.eclipse.actf.model.ui.editor.browser.WaitForBrowserReadyHandler;
-import org.eclipse.actf.model.ui.util.ModelServiceUtils;
-import org.eclipse.actf.ui.util.PlatformUIUtil;
-import org.eclipse.actf.ui.util.timer.WaitExecSyncEventHandler;
-import org.eclipse.actf.ui.util.timer.WaitExecSyncEventListener;
import org.eclipse.actf.visualization.ui.IVisualizationView;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.IEditorReference;
-import org.eclipse.ui.IViewPart;
-import org.eclipse.ui.IViewReference;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.IWorkbenchWindowActionDelegate;
-import org.eclipse.ui.PartInitException;
-public class SimulationActionForPdt implements IWorkbenchWindowActionDelegate {
+public class SimulationActionForPdt extends AbstructVisualizationActionForPdt implements IWorkbenchWindowActionDelegate {
- private static final String BROWSER_EDITOR_ID = "org.eclipse.ui.browser.editor"; //$NON-NLS-1$
-
- private static final String SWT_BROWSER_GET_TEXT_METHOD = "getText"; //$NON-NLS-1$
- private static final String SWT_BROWSER_CLASS = "org.eclipse.swt.browser.Browser"; //$NON-NLS-1$
- private static final String PHPBROWSER_ID = "org.eclipse.debug.ui.PHPBrowserOutput"; //$NON-NLS-1$
-
- private IModelServiceHolder browserHolder;
- private IWebBrowserACTF browser;
- private String targetHtml = ""; //$NON-NLS-1$
- private File targetHtmlFile = null;
-
- private IWorkbenchWindow _window;
-
- public void dispose() {
+ @Override
+ String getTargetViewId() {
+ return IVisualizationView.ID_LOWVISIONVIEW;
}
- public void init(IWorkbenchWindow window) {
- this._window = window;
- }
-
- public void run(IAction action) {
-
- IModelService modelService = ModelServiceUtils.getActiveModelService();
- if ((modelService != null && modelService != browser)) {
- simulate();
- return;
- }
-
- IEditorPart editor = PlatformUIUtil.getActiveEditor();
- if (editor != null
- && BROWSER_EDITOR_ID.equals(editor.getEditorSite().getId())) {
- simulate();
- return;
- }
-
- boolean updated = false;
- String text = getText(_window.getActivePage());
- if (text != null && !text.equals(targetHtml)) {
- updated = true;
- targetHtml = text;
- targetHtmlFile = saveToFile(targetHtml);
- }
-
- for (IEditorReference editorRef : _window.getActivePage()
- .getEditorReferences()) {
- if (editorRef.getEditor(false) == browserHolder) {
- if (updated) {
- browser.navigate(targetHtmlFile.getAbsolutePath());
- waitAndVisualize();
- return;
- } else {
- _window.getActivePage().activate(
- browserHolder.getEditorPart());
- simulate();
- return;
- }
- }
- }
-
- if (updated) {
- ModelServiceUtils.launch(targetHtmlFile.getAbsolutePath());
- browser = (IWebBrowserACTF) ModelServiceUtils
- .getActiveModelService();
- browserHolder = ModelServiceUtils.getActiveModelServiceHolder();
- waitAndVisualize();
- return;
- }
-
- }
-
- public void selectionChanged(IAction action, ISelection selection) {
- }
-
- private void simulate() {
- try {
- IViewPart viewPart = this._window.getActivePage().showView(
- IVisualizationView.ID_LOWVISIONVIEW);
- if (viewPart instanceof IVisualizationView) {
- ((IVisualizationView) viewPart).doVisualize();
- }
- } catch (PartInitException pie) {
- }
- }
-
- private File saveToFile(String text) {
- File tmpFile = null;
- try {
- tmpFile = PdtVisualizationPlugin.getDefault().createTempFile("php", //$NON-NLS-1$
- ".html"); //$NON-NLS-1$
- PrintWriter pw = new PrintWriter(tmpFile, "UTF-8"); //$NON-NLS-1$
- pw.print(text);
- pw.flush();
- pw.close();
- } catch (Exception e) {
- }
- return tmpFile;
- }
-
- private HashMap<String, WaitExecSyncEventListener> eventhandlerHolder = new HashMap<String, WaitExecSyncEventListener>();
- private static final String LISTENER_KEY = "browser"; //$NON-NLS-1$
-
- private void waitAndVisualize() {
-
- if (browser != null) {
- IViewPart viewPart = null;
- try {
- viewPart = this._window.getActivePage().showView(
- IVisualizationView.ID_LOWVISIONVIEW);
- } catch (PartInitException pie) {
- }
- if (viewPart instanceof IVisualizationView) {
- final IVisualizationView targetView = (IVisualizationView) viewPart;
- WaitExecSyncEventHandler handler = new WaitForBrowserReadyHandler(
- browser, 30, false, new Runnable() {
- public void run() {
- eventhandlerHolder.remove(LISTENER_KEY);
- targetView.doVisualize();
- PlatformUIUtil.showView(
- IVisualizationView.ID_LOWVISIONVIEW);
- }
- });
- eventhandlerHolder.put(LISTENER_KEY,
- new WaitExecSyncEventListener(handler));
- }
- }
- }
-
- private String getText(IWorkbenchPage activePage) {
- if (activePage == null) {
- return null;
- }
- for (IViewReference viewRef : activePage.getViewReferences()) {
- if (PHPBROWSER_ID.equals(viewRef.getId())) {
- IViewPart[] views = activePage.getViewStack(viewRef
- .getView(false));
- try {
- if (views != null
- && PHPBROWSER_ID.equals(views[0].getViewSite()
- .getId())) {
- Field[] fields = views[0].getClass()
- .getDeclaredFields();
- for (Field field : fields) {
- if (SWT_BROWSER_CLASS.equals(field.getType()
- .getName())) {
- field.setAccessible(true);
- Object view = field.get(views[0]);
-
- Method getText = view.getClass().getMethod(
- SWT_BROWSER_GET_TEXT_METHOD,
- new Class[] {});
- String text = (String) getText.invoke(view,
- new Object[] {});
-
- field.setAccessible(false);
- return (text);
- }
- }
- }
- } catch (Exception e) {
- }
- }
- }
- return null;
- }
}
diff --git a/plugins/org.eclipse.actf.visualization.ui.pdt/src/org/eclipse/actf/visualization/internal/ui/pdt/VisualizeActionForPdt.java b/plugins/org.eclipse.actf.visualization.ui.pdt/src/org/eclipse/actf/visualization/internal/ui/pdt/VisualizeActionForPdt.java
index 4335ab1..216dad3 100644
--- a/plugins/org.eclipse.actf.visualization.ui.pdt/src/org/eclipse/actf/visualization/internal/ui/pdt/VisualizeActionForPdt.java
+++ b/plugins/org.eclipse.actf.visualization.ui.pdt/src/org/eclipse/actf/visualization/internal/ui/pdt/VisualizeActionForPdt.java
@@ -10,197 +10,15 @@
*******************************************************************************/
package org.eclipse.actf.visualization.internal.ui.pdt;
-import java.io.File;
-import java.io.PrintWriter;
-import java.lang.reflect.Field;
-import java.lang.reflect.Method;
-import java.util.HashMap;
-
-import org.eclipse.actf.model.ui.IModelService;
-import org.eclipse.actf.model.ui.IModelServiceHolder;
-import org.eclipse.actf.model.ui.editor.browser.IWebBrowserACTF;
-import org.eclipse.actf.model.ui.editor.browser.WaitForBrowserReadyHandler;
-import org.eclipse.actf.model.ui.util.ModelServiceUtils;
-import org.eclipse.actf.ui.util.PlatformUIUtil;
-import org.eclipse.actf.ui.util.timer.WaitExecSyncEventHandler;
-import org.eclipse.actf.ui.util.timer.WaitExecSyncEventListener;
import org.eclipse.actf.visualization.ui.IVisualizationView;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.IEditorReference;
-import org.eclipse.ui.IViewPart;
-import org.eclipse.ui.IViewReference;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.IWorkbenchWindowActionDelegate;
-import org.eclipse.ui.PartInitException;
-public class VisualizeActionForPdt implements IWorkbenchWindowActionDelegate {
+public class VisualizeActionForPdt extends AbstructVisualizationActionForPdt
+ implements IWorkbenchWindowActionDelegate {
- private static final String BROWSER_EDITOR_ID = "org.eclipse.ui.browser.editor"; //$NON-NLS-1$
-
- private static final String SWT_BROWSER_GET_TEXT_METHOD = "getText"; //$NON-NLS-1$
- private static final String SWT_BROWSER_CLASS = "org.eclipse.swt.browser.Browser"; //$NON-NLS-1$
- private static final String PHPBROWSER_ID = "org.eclipse.debug.ui.PHPBrowserOutput"; //$NON-NLS-1$
-
- private IModelServiceHolder browserHolder;
- private IWebBrowserACTF browser;
- private String targetHtml = ""; //$NON-NLS-1$
- private File targetHtmlFile = null;
-
- private IWorkbenchWindow _window;
-
- public void dispose() {
- }
-
- public void init(IWorkbenchWindow window) {
- this._window = window;
- }
-
- public void run(IAction action) {
-
- IModelService modelService = ModelServiceUtils.getActiveModelService();
- if ((modelService != null && modelService != browser)) {
- visualize();
- return;
- }
-
- IEditorPart editor = PlatformUIUtil.getActiveEditor();
- if (editor != null
- && BROWSER_EDITOR_ID.equals(editor.getEditorSite().getId())) {
- visualize();
- return;
- }
-
- boolean updated = false;
- String text = getText(_window.getActivePage());
- if (text != null && !text.equals(targetHtml)) {
- updated = true;
- targetHtml = text;
- targetHtmlFile = saveToFile(targetHtml);
- }
-
- for (IEditorReference editorRef : _window.getActivePage()
- .getEditorReferences()) {
- if (editorRef.getEditor(false) == browserHolder) {
- if (updated) {
- browser.navigate(targetHtmlFile.getAbsolutePath());
- waitAndVisualize();
- return;
- } else {
- _window.getActivePage().activate(
- browserHolder.getEditorPart());
- visualize();
- return;
- }
- }
- }
-
- if (updated) {
- ModelServiceUtils.launch(targetHtmlFile.getAbsolutePath());
- browser = (IWebBrowserACTF) ModelServiceUtils
- .getActiveModelService();
- browserHolder = ModelServiceUtils.getActiveModelServiceHolder();
- waitAndVisualize();
- return;
- }
-
- }
-
- public void selectionChanged(IAction action, ISelection selection) {
- }
-
- private void visualize() {
- try {
- IViewPart viewPart = this._window.getActivePage().showView(
- IVisualizationView.ID_BLINDVIEW);
- if (viewPart instanceof IVisualizationView) {
- ((IVisualizationView) viewPart).doVisualize();
- }
- } catch (PartInitException pie) {
- }
- }
-
- private File saveToFile(String text) {
- File tmpFile = null;
- try {
- tmpFile = PdtVisualizationPlugin.getDefault().createTempFile("php", //$NON-NLS-1$
- ".html"); //$NON-NLS-1$
- PrintWriter pw = new PrintWriter(tmpFile, "UTF-8"); //$NON-NLS-1$
- pw.print(text);
- pw.flush();
- pw.close();
- } catch (Exception e) {
- }
- return tmpFile;
- }
-
- private HashMap<String, WaitExecSyncEventListener> eventhandlerHolder = new HashMap<String, WaitExecSyncEventListener>();
- private static final String LISTENER_KEY = "browser"; //$NON-NLS-1$
-
- private void waitAndVisualize() {
-
- if (browser != null) {
- IViewPart viewPart = null;
- try {
- viewPart = this._window.getActivePage().showView(
- IVisualizationView.ID_BLINDVIEW);
- } catch (PartInitException pie) {
- }
- if (viewPart instanceof IVisualizationView) {
- final IVisualizationView targetView = (IVisualizationView) viewPart;
- WaitExecSyncEventHandler handler = new WaitForBrowserReadyHandler(
- browser, 30, false, new Runnable() {
- public void run() {
- eventhandlerHolder.remove(LISTENER_KEY);
- targetView.doVisualize();
- PlatformUIUtil.showView(
- IVisualizationView.ID_BLINDVIEW);
- }
- });
- eventhandlerHolder.put(LISTENER_KEY,
- new WaitExecSyncEventListener(handler));
- }
- }
- }
-
- private String getText(IWorkbenchPage activePage) {
- if (activePage == null) {
- return null;
- }
- for (IViewReference viewRef : activePage.getViewReferences()) {
- if (PHPBROWSER_ID.equals(viewRef.getId())) {
- IViewPart[] views = activePage.getViewStack(viewRef
- .getView(false));
- try {
- if (views != null
- && PHPBROWSER_ID.equals(views[0].getViewSite()
- .getId())) {
- Field[] fields = views[0].getClass()
- .getDeclaredFields();
- for (Field field : fields) {
- if (SWT_BROWSER_CLASS.equals(field.getType()
- .getName())) {
- field.setAccessible(true);
- Object view = field.get(views[0]);
-
- Method getText = view.getClass().getMethod(
- SWT_BROWSER_GET_TEXT_METHOD,
- new Class[] {});
- String text = (String) getText.invoke(view,
- new Object[] {});
-
- field.setAccessible(false);
- return (text);
- }
- }
- }
- } catch (Exception e) {
- }
- }
- }
- return null;
+ @Override
+ String getTargetViewId() {
+ return IVisualizationView.ID_BLINDVIEW;
}
}