X-Git-Url: http://git.phpeclipse.com
diff --git a/net.sourceforge.phpeclipse.webbrowser/src/net/sourceforge/phpeclipse/webbrowser/WebBrowserEditorInput.java b/net.sourceforge.phpeclipse.webbrowser/src/net/sourceforge/phpeclipse/webbrowser/WebBrowserEditorInput.java
new file mode 100644
index 0000000..fd5e16a
--- /dev/null
+++ b/net.sourceforge.phpeclipse.webbrowser/src/net/sourceforge/phpeclipse/webbrowser/WebBrowserEditorInput.java
@@ -0,0 +1,317 @@
+/**
+ * Copyright (c) 2003 IBM Corporation 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 - Initial API and implementation
+ */
+package net.sourceforge.phpeclipse.webbrowser;
+
+import java.net.URL;
+
+import net.sourceforge.phpeclipse.webbrowser.internal.ImageResource;
+import net.sourceforge.phpeclipse.webbrowser.internal.Trace;
+import net.sourceforge.phpeclipse.webbrowser.internal.WebBrowserPreference;
+import net.sourceforge.phpeclipse.webbrowser.internal.WebBrowserUIPlugin;
+
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.ui.*;
+import org.eclipse.core.runtime.IAdaptable;
+/**
+ * The editor input for the integrated web browser.
+ */
+public class WebBrowserEditorInput implements IWebBrowserEditorInput, IPersistableElement, IElementFactory {
+ // --- constants to pass into constructor ---
+
+ // if used, the toolbar will be available
+ public static final int SHOW_TOOLBAR = 1 << 1;
+
+ // if used, the status bar will be available
+ public static final int SHOW_STATUSBAR = 1 << 2;
+
+ // if used, this input will always force a new page
+ // and will never reuse an open Web browser
+ public static final int FORCE_NEW_PAGE = 1 << 3;
+
+ // if used, the original URL will be saved and
+ // the page can reopen to the same URL after
+ // shutting down
+ public static final int SAVE_URL = 1 << 5;
+
+ // if used, the browser will be transient and will not appear
+ // in the most recently used file list, nor will it reopen after
+ // restarting Eclipse
+ public static final int TRANSIENT = 1 << 6;
+
+ public static final int SHOW_ALL = SHOW_TOOLBAR | SHOW_STATUSBAR;
+
+ private static final String ELEMENT_FACTORY_ID = "net.sourceforge.phpeclipse.webbrowser.elementFactory";
+ private static final String MEMENTO_URL = "url";
+ private static final String MEMENTO_STYLE = "style";
+ private static final String MEMENTO_ID = "id";
+
+ private URL url;
+ private int style;
+ private String id = null;
+
+ /**
+ * WebBrowser editor input for the homepage.
+ */
+ public WebBrowserEditorInput() {
+ this(null);
+ }
+
+ /**
+ * WebBrowserEditorInput constructor comment.
+ */
+ public WebBrowserEditorInput(URL url) {
+ this(url, SHOW_ALL | SAVE_URL);
+ }
+
+ /**
+ * WebBrowserEditorInput constructor comment.
+ */
+ public WebBrowserEditorInput(URL url, int style) {
+ super();
+ this.url = url;
+ this.style = style;
+ }
+
+ /**
+ * WebBrowserEditorInput constructor comment.
+ */
+ public WebBrowserEditorInput(URL url, int style, String browserId) {
+ super();
+ this.url = url;
+ this.style = style;
+ this.id = browserId;
+ }
+
+ /**
+ * WebBrowserEditorInput constructor comment.
+ */
+ public WebBrowserEditorInput(URL url, boolean b) {
+ this(url);
+ }
+
+ /**
+ * Returns true if this page can reuse the browser that the
+ * given input is being displayed in, or false if it should
+ * open up in a new page.
+ *
+ * @param input net.sourceforge.phpeclipse.webbrowser.IWebBrowserEditorInput
+ * @return boolean
+ */
+ public boolean canReplaceInput(IWebBrowserEditorInput input) {
+ Trace.trace(Trace.FINEST, "canReplaceInput " + this + " " + input);
+ if ((style & FORCE_NEW_PAGE) != 0)
+ return false;
+ else if (input.isToolbarVisible() != isToolbarVisible())
+ return false;
+ else if (input.isStatusbarVisible() != isStatusbarVisible())
+ return false;
+ else if (id != null) {
+ if (!(input instanceof WebBrowserEditorInput))
+ return false;
+ String bid = ((WebBrowserEditorInput) input).getBrowserId();
+ return id.equals(bid);
+ } else
+ return false;
+ }
+
+ /**
+ * Creates an IElement
from the state captured within
+ * an IMemento
.
+ *
+ * @param memento a memento containing the state for an element
+ * @return an element, or null
if the element could not be created
+ */
+ public IAdaptable createElement(IMemento memento) {
+ URL url2 = null;
+ try {
+ url2 = new URL(WebBrowserPreference.getHomePageURL());
+ } catch (Exception e) {
+ // could not determine the URL
+ }
+
+ int newStyle = SHOW_TOOLBAR | SHOW_STATUSBAR;
+ try {
+ newStyle = memento.getInteger(MEMENTO_STYLE).intValue();
+
+ if ((newStyle & SAVE_URL) != 0)
+ url = new URL(memento.getString(MEMENTO_URL));
+ } catch (Exception e) {
+ // could not determine the style
+ }
+
+ String id2 = null;
+ try {
+ id2 = memento.getString(MEMENTO_ID);
+ if (id2 != null && id2.length() < 1)
+ id2 = null;
+ } catch (Exception e) { }
+
+ return new WebBrowserEditorInput(url2, newStyle, id2);
+ }
+
+ /**
+ * Indicates whether some other object is "equal to" this one.
+ * In this case it means that the underlying IFolders are equal.
+ */
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (!(obj instanceof WebBrowserEditorInput))
+ return false;
+ WebBrowserEditorInput other = (WebBrowserEditorInput) obj;
+
+ if (url != null && !url.equals(obj))
+ return false;
+
+ return canReplaceInput(other);
+ }
+
+ /**
+ * Returns whether the editor input exists.
+ *
+ * This method is primarily used to determine if an editor input should
+ * appear in the "File Most Recently Used" menu. An editor input will appear
+ * in the list until the return value of exists
becomes
+ * false
or it drops off the bottom of the list.
+ *
+ * @return true
if the editor input exists; false
+ * otherwise
+ */
+ public boolean exists() {
+ if ((style & TRANSIENT) != 0)
+ return false;
+ else
+ return true;
+ }
+
+ /**
+ * Returns an object which is an instance of the given class
+ * associated with this object. Returns null
if
+ * no such object can be found.
+ *
+ * @param adapter the adapter class to look up
+ * @return a object castable to the given class,
+ * or null
if this object does not
+ * have an adapter for the given class
+ */
+ public Object getAdapter(Class adapter) {
+ return null;
+ }
+
+ /**
+ * Returns the ID of an element factory which can be used to recreate
+ * this object. An element factory extension with this ID must exist
+ * within the workbench registry.
+ *
+ * @return the element factory ID
+ */
+ public String getFactoryId() {
+ return ELEMENT_FACTORY_ID;
+ }
+
+ public ImageDescriptor getImageDescriptor() {
+ return ImageResource.getImageDescriptor(ImageResource.IMG_INTERNAL_BROWSER);
+ }
+
+ /**
+ * Returns the name of this editor input for display purposes.
+ *
+ * For instance, if the fully qualified input name is
+ * "a\b\MyFile.gif"
, the return value would be just
+ * "MyFile.gif"
.
+ *
+ * @return the file name string
+ */
+ public String getName() {
+ return WebBrowserUIPlugin.getResource("%viewWebBrowserTitle");
+ }
+
+ /*
+ * Returns an object that can be used to save the state of this editor input.
+ *
+ * @return the persistable element, or null
if this editor input
+ * cannot be persisted
+ */
+ public IPersistableElement getPersistable() {
+ if ((style & TRANSIENT) != 0)
+ return null;
+ else
+ return this;
+ }
+
+ public String getToolTipText() {
+ if (url != null)
+ return url.toExternalForm();
+ else
+ return WebBrowserUIPlugin.getResource("%viewWebBrowserTitle");
+ }
+
+ /**
+ * Returns the url.
+ *
+ * @return java.net.URL
+ */
+ public URL getURL() {
+ return url;
+ }
+
+ /**
+ * Returns the browser id. Browsers with a set id will always & only be
+ * replaced by browsers with the same id.
+ *
+ * @return String
+ */
+ public String getBrowserId() {
+ return id;
+ }
+
+ /**
+ * Returns true if the status bar should be shown.
+ *
+ * @return boolean
+ */
+ public boolean isStatusbarVisible() {
+ return (style & SHOW_STATUSBAR) != 0;
+ }
+
+ /**
+ * Returns true if the toolbar should be shown.
+ *
+ * @return boolean
+ */
+ public boolean isToolbarVisible() {
+ return (style & SHOW_TOOLBAR) != 0;
+ }
+
+ /**
+ * Saves the state of an element within a memento.
+ *
+ * @param memento the storage area for element state
+ */
+ public void saveState(IMemento memento) {
+ if ((style & SAVE_URL) != 0 && url != null)
+ memento.putString(MEMENTO_URL, url.toExternalForm());
+
+ memento.putInteger(MEMENTO_STYLE, style);
+
+ if (id != null)
+ memento.putString(MEMENTO_ID, id);
+ }
+
+ /**
+ * Converts this object to a string.
+ *
+ * @return java.lang.String
+ */
+ public String toString() {
+ return "WebBrowserEditorInput[" + url + " " + style + " " + id + "]";
+ }
+}
\ No newline at end of file