X-Git-Url: http://secure.phpeclipse.com

diff --git a/net.sourceforge.phpeclipse.webbrowser/src/net/sourceforge/phpeclipse/webbrowser/views/BrowserView.java b/net.sourceforge.phpeclipse.webbrowser/src/net/sourceforge/phpeclipse/webbrowser/views/BrowserView.java
index e307f21..db5d321 100644
--- a/net.sourceforge.phpeclipse.webbrowser/src/net/sourceforge/phpeclipse/webbrowser/views/BrowserView.java
+++ b/net.sourceforge.phpeclipse.webbrowser/src/net/sourceforge/phpeclipse/webbrowser/views/BrowserView.java
@@ -1,74 +1,155 @@
 /*******************************************************************************
  * Copyright (c) 2000, 2003 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials 
+ * 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 API and implementation
  *******************************************************************************/
 package net.sourceforge.phpeclipse.webbrowser.views;
+
 import net.sourceforge.phpeclipse.webbrowser.internal.WebBrowser;
-import net.sourceforge.phpeclipse.webbrowser.internal.WebBrowserUIPlugin;
 import net.sourceforge.phpeclipse.webbrowser.internal.WebBrowserUtil;
 
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.browser.Browser;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.swt.browser.ProgressListener;
+import org.eclipse.swt.browser.StatusTextListener;
+import org.eclipse.swt.browser.TitleListener;
 import org.eclipse.swt.widgets.Composite;
+import org.eclipse.ui.part.IShowInTarget;
+import org.eclipse.ui.part.ShowInContext;
 import org.eclipse.ui.part.ViewPart;
+
 /**
  * <code>BrowserView</code> is a simple demonstration of the SWT Browser
  * widget. It consists of a workbench view and tab folder where each tab in the
  * folder allows the user to interact with a control.
- * 
+ *
  * @see ViewPart
  */
-public class BrowserView extends ViewPart {
-  public final static String ID_BROWSER = "net.sourceforge.phpeclipse.webbrowser.views";
-  WebBrowser instance = null;
-  /**
-   * Create the example
-   * 
-   * @see ViewPart#createPartControl
-   */
-  public void createPartControl(Composite frame) {
-    try {
-      if (WebBrowserUtil.canUseInternalWebBrowser() ) {
-        instance = new WebBrowser(frame, true, true);
-      }
-    } catch(Exception e) {
-      instance = null;
-    }
-  }
-  /**
-   * Called when we must grab focus.
-   * 
-   * @see org.eclipse.ui.part.ViewPart#setFocus
-   */
-  public void setFocus() {
-    if (instance!=null) {
-      instance.setFocus();
-    }
-  }
-  /**
-   * Called when the View is to be disposed
-   */
-  public void dispose() {
-    if (instance!=null) {
-      instance.dispose();
-      instance = null;
-    }
-    super.dispose();
-  }
-  public void setUrl(String url) {
-    if (instance!=null) {
-      instance.setURL(url);
-    }
-  }
-  public void refresh() {
-    if (instance!=null) {
-      instance.refresh();
-    }
-  }
-}
+public class BrowserView extends ViewPart implements IShowInTarget {
+	public final static String ID_BROWSER = "net.sourceforge.phpeclipse.webbrowser.views";
+
+	WebBrowser fInstance = null;
+
+	String fUrl = null;
+
+	/**
+	 * Create the example
+	 *
+	 * @see ViewPart#createPartControl
+	 */
+	public void createPartControl(Composite frame) {
+		try {
+			if (WebBrowserUtil.isInternalBrowserOperational()) {
+				fInstance = new WebBrowser(frame, true, true);
+			}
+		} catch (Exception e) {
+			fInstance = null;
+		}
+	}
+
+	/**
+	 * Called when we must grab focus.
+	 *
+	 * @see org.eclipse.ui.part.ViewPart#setFocus
+	 */
+	public void setFocus() {
+		if (fInstance != null) {
+			fInstance.setFocus();
+		}
+	}
+
+	/**
+	 * Called when the View is to be disposed
+	 */
+	public void dispose() {
+		if (fInstance != null) {
+			fInstance.dispose();
+			fInstance = null;
+		}
+		super.dispose();
+	}
+
+	public void setUrl(final String url) {
+		if (fInstance != null) {
+			fUrl = url;
+			fInstance.setURL(url);
+			// try {
+			// ResourcesPlugin.getWorkspace().run(new IWorkspaceRunnable() {
+			// public void run(IProgressMonitor monitor) throws CoreException {
+			// instance.setURL(url);
+			// }
+			// }, null);
+			// } catch (CoreException e) {
+			// // TODO Auto-generated catch block
+			// e.printStackTrace();
+			// }
+		}
+	}
+
+	public void refresh() {
+		if (fInstance != null) {
+			fInstance.refresh();
+			// try {
+			// ResourcesPlugin.getWorkspace().run(new IWorkspaceRunnable() {
+			// public void run(IProgressMonitor monitor) throws CoreException {
+			// instance.refresh();
+			// }
+			// }, null);
+			// } catch (CoreException e) {
+			// // TODO Auto-generated catch block
+			// e.printStackTrace();
+			// }
+		}
+	}
+
+	public void refresh(String url) {
+		if (fInstance != null) {
+			if (fUrl == null || !fUrl.equals(url)) {
+				setUrl(url);
+			} else {
+				refresh();
+			}
+		}
+	}
+
+	public void addProgressListener(ProgressListener listener) {
+		if (fInstance != null) {
+			fInstance.addProgressListener(listener);
+		}
+	}
+
+	public void addStatusTextListener(StatusTextListener listener) {
+		if (fInstance != null) {
+			fInstance.addStatusTextListener(listener);
+		}
+	}
+
+	public void addTitleListener(TitleListener listener) {
+		if (fInstance != null) {
+			fInstance.addTitleListener(listener);
+		}
+	}
+
+	public boolean show(ShowInContext context) {
+		if (context instanceof ShowInContextBrowser) {
+			ShowInContextBrowser contextBrowser = (ShowInContextBrowser) context;
+			String localhostURL = contextBrowser.getLocalhostUrl();
+			if (localhostURL != null) {
+				setUrl(localhostURL);
+				return true;
+			}
+		}
+		if (context.getInput() instanceof IFile) {
+			IFile file = (IFile) context.getInput();
+			String localhostURL;
+			localhostURL = "file:///" + file.getLocation().toString();
+			setUrl(localhostURL);
+			return true;
+		}
+		return false;
+	}
+}
\ No newline at end of file