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

diff --git a/net.sourceforge.phpeclipse.webbrowser/src/net/sourceforge/phpeclipse/webbrowser/internal/BrowserManager.java b/net.sourceforge.phpeclipse.webbrowser/src/net/sourceforge/phpeclipse/webbrowser/internal/BrowserManager.java
index 30a22f9..7131dbc 100644
--- a/net.sourceforge.phpeclipse.webbrowser/src/net/sourceforge/phpeclipse/webbrowser/internal/BrowserManager.java
+++ b/net.sourceforge.phpeclipse.webbrowser/src/net/sourceforge/phpeclipse/webbrowser/internal/BrowserManager.java
@@ -4,7 +4,7 @@
  * 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
  **********************************************************************/
@@ -30,258 +30,273 @@ import org.eclipse.ui.IMemento;
 import org.eclipse.ui.XMLMemento;
 
 /**
- *  
+ * 
  */
 public class BrowserManager {
-  private static final int ADD = 0;
-
-  private static final int CHANGE = 1;
-
-  private static final int REMOVE = 2;
-
-  protected List browsers;
-
-  protected IWebBrowser currentBrowser;
-
-  protected List browserListeners = new ArrayList();
-
-  private Preferences.IPropertyChangeListener pcl;
-
-  protected boolean ignorePreferenceChanges = false;
-
-  protected static BrowserManager instance;
-
-  public static BrowserManager getInstance() {
-    if (instance == null)
-      instance = new BrowserManager();
-    return instance;
-  }
-
-  private BrowserManager() {
-    pcl = new Preferences.IPropertyChangeListener() {
-      public void propertyChange(Preferences.PropertyChangeEvent event) {
-        if (ignorePreferenceChanges)
-          return;
-        String property = event.getProperty();
-        if (property.equals("browsers")) {
-          loadBrowsers();
-        }
-      }
-    };
-
-    WebBrowserUIPlugin.getInstance().getPluginPreferences().addPropertyChangeListener(pcl);
-  }
-
-  protected void dispose() {
-    WebBrowserUIPlugin.getInstance().getPluginPreferences().removePropertyChangeListener(pcl);
-
-    // clear the cache
-    if (browsers != null) {
-      Iterator iterator = browsers.iterator();
-      while (iterator.hasNext()) {
-        Object obj = iterator.next();
-        if (obj instanceof IInternalWebBrowser) {
-          IInternalWebBrowser wb = (IInternalWebBrowser) obj;
-          if (wb.getClearHistoryOnExit())
-            WebBrowserPreference.setInternalWebBrowserHistory(null);
-        }
-      }
-    }
-  }
-
-  public IExternalWebBrowserWorkingCopy createExternalWebBrowser() {
-    return new ExternalWebBrowserWorkingCopy();
-  }
-
-  public List getWebBrowsers() {
-    if (browsers == null)
-      loadBrowsers();
-    return new ArrayList(browsers);
-  }
-
-  protected void loadBrowsers() {
-    Trace.trace(Trace.FINEST, "Loading web browsers");
-
-    Preferences prefs = WebBrowserUIPlugin.getInstance().getPluginPreferences();
-    String xmlString = prefs.getString("browsers");
-    if (xmlString != null && xmlString.length() > 0) {
-      browsers = new ArrayList();
-
-      try {
-        ByteArrayInputStream in = new ByteArrayInputStream(xmlString.getBytes());
-        Reader reader = new InputStreamReader(in);
-        IMemento memento = XMLMemento.createReadRoot(reader);
-
-        IMemento child = memento.getChild("internal");
-        if (child != null) {
-          InternalWebBrowser browser = new InternalWebBrowser();
-          browser.load(child);
-          browsers.add(browser);
-        }
-
-        IMemento[] children = memento.getChildren("external");
-        int size = children.length;
-        for (int i = 0; i < size; i++) {
-          ExternalWebBrowser browser = new ExternalWebBrowser();
-          browser.load(children[i]);
-          browsers.add(browser);
-        }
-
-        Integer current = memento.getInteger("current");
-        if (current != null) {
-          currentBrowser = (IWebBrowser) browsers.get(current.intValue());
-        }
-      } catch (Exception e) {
-        Trace.trace(Trace.WARNING, "Could not load browsers: " + e.getMessage());
-      }
-      addInternalBrowser(browsers);
-      if (currentBrowser == null && browsers.size() > 0)
-        currentBrowser = (IWebBrowser) browsers.get(0);
-    } else {
-      setupDefaultBrowsers();
-      saveBrowsers();
-      return;
-    }
-  }
-
-  protected void saveBrowsers() {
-    try {
-      ignorePreferenceChanges = true;
-      XMLMemento memento = XMLMemento.createWriteRoot("web-browsers");
-
-      Iterator iterator = browsers.iterator();
-      while (iterator.hasNext()) {
-        Object obj = iterator.next();
-        if (obj instanceof InternalWebBrowser) {
-          InternalWebBrowser browser = (InternalWebBrowser) obj;
-          IMemento child = memento.createChild("internal");
-          browser.save(child);
-        } else if (obj instanceof ExternalWebBrowser) {
-          ExternalWebBrowser browser = (ExternalWebBrowser) obj;
-          IMemento child = memento.createChild("external");
-          browser.save(child);
-        }
-      }
-
-      memento.putInteger("current", browsers.indexOf(currentBrowser));
-
-      StringWriter writer = new StringWriter();
-      memento.save(writer);
-      String xmlString = writer.getBuffer().toString();
-      Preferences prefs = WebBrowserUIPlugin.getInstance().getPluginPreferences();
-      prefs.setValue("browsers", xmlString);
-      WebBrowserUIPlugin.getInstance().savePluginPreferences();
-    } catch (Exception e) {
-      Trace.trace(Trace.SEVERE, "Could not save browsers", e);
-    }
-    ignorePreferenceChanges = false;
-  }
-
-  protected void addInternalBrowser(List browserList) {
-    if (browserList == null)
-      return;
-
-    Iterator iterator = browserList.iterator();
-    while (iterator.hasNext()) {
-      IWebBrowser browser = (IWebBrowser) iterator.next();
-      if (browser instanceof IInternalWebBrowser)
-        return;
-    }
-
-    // add the internal browser if we can
-    WebBrowserUIPlugin.getInstance().getLog().log(
-        new Status(IStatus.INFO, WebBrowserUIPlugin.PLUGIN_ID, 0, WebBrowserUtil.canUseInternalWebBrowser() + "/"
-            + WebBrowserUtil.isInternalBrowserOperational(), null));
-    if (!WebBrowserUtil.canUseInternalWebBrowser() || !WebBrowserUtil.isInternalBrowserOperational())
-      return;
-
-    browserList.add(0, new InternalWebBrowser());
-  }
-
-  private void setupDefaultBrowsers() {
-    browsers = new ArrayList();
-
-    addInternalBrowser(browsers);
-
-    // handle all the EXTERNAL browsers by criteria and add those too at startup
-    WebBrowserUtil.addFoundBrowsers(browsers);
-
-    // by default, if internal is there, that is current, else set the first external one
-    if (!browsers.isEmpty())
-      currentBrowser = (IWebBrowser) browsers.get(0);
-  }
-
-  protected void addBrowser(IExternalWebBrowser browser) {
-    if (browsers == null)
-      loadBrowsers();
-    if (!browsers.contains(browser))
-      browsers.add(browser);
-    fireWebBrowserEvent(browser, ADD);
-    saveBrowsers();
-  }
-
-  protected void removeWebBrowser(IExternalWebBrowser browser) {
-    if (browsers == null)
-      loadBrowsers();
-    browsers.remove(browser);
-    fireWebBrowserEvent(browser, REMOVE);
-  }
-
-  // Internal Web browser CAN be "edited", just not created or removed
-  protected void browserChanged(IWebBrowser browser) {
-    fireWebBrowserEvent(browser, CHANGE);
-    saveBrowsers();
-  }
-
-  /**
-   * Add Web browser listener.
-   * 
-   * @param listener
-   */
-  public void addWebBrowserListener(IWebBrowserListener listener) {
-    browserListeners.add(listener);
-  }
-
-  /**
-   * Remove Web browser listener.
-   * 
-   * @param listener
-   */
-  public void removeWebBrowserListener(IWebBrowserListener listener) {
-    browserListeners.remove(listener);
-  }
-
-  /**
-   * Fire a Web browser event.
-   * 
-   * @param browser
-   * @param type
-   */
-  protected void fireWebBrowserEvent(IWebBrowser browser, int type) {
-    Object[] obj = browserListeners.toArray();
-
-    int size = obj.length;
-    for (int i = 0; i < size; i++) {
-      IWebBrowserListener listener = (IWebBrowserListener) obj[i];
-      if (type == ADD)
-        listener.browserAdded(browser);
-      else if (type == CHANGE)
-        listener.browserChanged(browser);
-      else if (type == REMOVE)
-        listener.browserRemoved(browser);
-    }
-  }
-
-  public IWebBrowser getCurrentWebBrowser() {
-    if (browsers == null)
-      loadBrowsers();
-
-    return currentBrowser;
-  }
-
-  public void setCurrentWebBrowser(IWebBrowser wb) {
-    if (browsers.contains(wb))
-      currentBrowser = wb;
-    saveBrowsers();
-  }
+	private static final int ADD = 0;
+
+	private static final int CHANGE = 1;
+
+	private static final int REMOVE = 2;
+
+	protected List browsers;
+
+	protected IWebBrowser currentBrowser;
+
+	protected List browserListeners = new ArrayList();
+
+	private Preferences.IPropertyChangeListener pcl;
+
+	protected boolean ignorePreferenceChanges = false;
+
+	protected static BrowserManager instance;
+
+	public static BrowserManager getInstance() {
+		if (instance == null)
+			instance = new BrowserManager();
+		return instance;
+	}
+
+	private BrowserManager() {
+		pcl = new Preferences.IPropertyChangeListener() {
+			public void propertyChange(Preferences.PropertyChangeEvent event) {
+				if (ignorePreferenceChanges)
+					return;
+				String property = event.getProperty();
+				if (property.equals("browsers")) {
+					loadBrowsers();
+				}
+			}
+		};
+
+		WebBrowserUIPlugin.getInstance().getPluginPreferences()
+				.addPropertyChangeListener(pcl);
+	}
+
+	protected void dispose() {
+		WebBrowserUIPlugin.getInstance().getPluginPreferences()
+				.removePropertyChangeListener(pcl);
+
+		// clear the cache
+		if (browsers != null) {
+			Iterator iterator = browsers.iterator();
+			while (iterator.hasNext()) {
+				Object obj = iterator.next();
+				if (obj instanceof IInternalWebBrowser) {
+					IInternalWebBrowser wb = (IInternalWebBrowser) obj;
+					if (wb.getClearHistoryOnExit())
+						WebBrowserPreference.setInternalWebBrowserHistory(null);
+				}
+			}
+		}
+	}
+
+	public IExternalWebBrowserWorkingCopy createExternalWebBrowser() {
+		return new ExternalWebBrowserWorkingCopy();
+	}
+
+	public List getWebBrowsers() {
+		if (browsers == null)
+			loadBrowsers();
+		return new ArrayList(browsers);
+	}
+
+	protected void loadBrowsers() {
+		Trace.trace(Trace.FINEST, "Loading web browsers");
+
+		Preferences prefs = WebBrowserUIPlugin.getInstance()
+				.getPluginPreferences();
+		String xmlString = prefs.getString("browsers");
+		if (xmlString != null && xmlString.length() > 0) {
+			browsers = new ArrayList();
+
+			try {
+				ByteArrayInputStream in = new ByteArrayInputStream(xmlString
+						.getBytes());
+				Reader reader = new InputStreamReader(in);
+				IMemento memento = XMLMemento.createReadRoot(reader);
+
+				IMemento child = memento.getChild("internal");
+				if (child != null) {
+					InternalWebBrowser browser = new InternalWebBrowser();
+					browser.load(child);
+					browsers.add(browser);
+				}
+
+				IMemento[] children = memento.getChildren("external");
+				int size = children.length;
+				for (int i = 0; i < size; i++) {
+					ExternalWebBrowser browser = new ExternalWebBrowser();
+					browser.load(children[i]);
+					browsers.add(browser);
+				}
+
+				Integer current = memento.getInteger("current");
+				if (current != null) {
+					currentBrowser = (IWebBrowser) browsers.get(current
+							.intValue());
+				}
+			} catch (Exception e) {
+				Trace.trace(Trace.WARNING, "Could not load browsers: "
+						+ e.getMessage());
+			}
+			addInternalBrowser(browsers);
+			if (currentBrowser == null && browsers.size() > 0)
+				currentBrowser = (IWebBrowser) browsers.get(0);
+		} else {
+			setupDefaultBrowsers();
+			saveBrowsers();
+			return;
+		}
+	}
+
+	protected void saveBrowsers() {
+		try {
+			ignorePreferenceChanges = true;
+			XMLMemento memento = XMLMemento.createWriteRoot("web-browsers");
+
+			Iterator iterator = browsers.iterator();
+			while (iterator.hasNext()) {
+				Object obj = iterator.next();
+				if (obj instanceof InternalWebBrowser) {
+					InternalWebBrowser browser = (InternalWebBrowser) obj;
+					IMemento child = memento.createChild("internal");
+					browser.save(child);
+				} else if (obj instanceof ExternalWebBrowser) {
+					ExternalWebBrowser browser = (ExternalWebBrowser) obj;
+					IMemento child = memento.createChild("external");
+					browser.save(child);
+				}
+			}
+
+			memento.putInteger("current", browsers.indexOf(currentBrowser));
+
+			StringWriter writer = new StringWriter();
+			memento.save(writer);
+			String xmlString = writer.getBuffer().toString();
+			Preferences prefs = WebBrowserUIPlugin.getInstance()
+					.getPluginPreferences();
+			prefs.setValue("browsers", xmlString);
+			WebBrowserUIPlugin.getInstance().savePluginPreferences();
+		} catch (Exception e) {
+			Trace.trace(Trace.SEVERE, "Could not save browsers", e);
+		}
+		ignorePreferenceChanges = false;
+	}
+
+	protected void addInternalBrowser(List browserList) {
+		if (browserList == null)
+			return;
+
+		Iterator iterator = browserList.iterator();
+		while (iterator.hasNext()) {
+			IWebBrowser browser = (IWebBrowser) iterator.next();
+			if (browser instanceof IInternalWebBrowser)
+				return;
+		}
+
+		// add the internal browser if we can
+		// WebBrowserUIPlugin.getInstance().getLog().log(
+		// new Status(IStatus.INFO, WebBrowserUIPlugin.PLUGIN_ID, 0,
+		// WebBrowserUtil.canUseInternalWebBrowser() + "/"
+		// + WebBrowserUtil.isInternalBrowserOperational(), null));
+		// if (!WebBrowserUtil.canUseInternalWebBrowser() ||
+		// !WebBrowserUtil.isInternalBrowserOperational())
+		// return;
+		WebBrowserUIPlugin.getInstance().getLog().log(
+				new Status(IStatus.INFO, WebBrowserUIPlugin.PLUGIN_ID, 0, "-"
+						+ WebBrowserUtil.isInternalBrowserOperational(), null));
+		if (!WebBrowserUtil.isInternalBrowserOperational())
+			return;
+		browserList.add(0, new InternalWebBrowser());
+	}
+
+	private void setupDefaultBrowsers() {
+		browsers = new ArrayList();
+
+		addInternalBrowser(browsers);
+
+		// handle all the EXTERNAL browsers by criteria and add those too at
+		// startup
+		WebBrowserUtil.addFoundBrowsers(browsers);
+
+		// by default, if internal is there, that is current, else set the first
+		// external one
+		if (!browsers.isEmpty())
+			currentBrowser = (IWebBrowser) browsers.get(0);
+	}
+
+	protected void addBrowser(IExternalWebBrowser browser) {
+		if (browsers == null)
+			loadBrowsers();
+		if (!browsers.contains(browser))
+			browsers.add(browser);
+		fireWebBrowserEvent(browser, ADD);
+		saveBrowsers();
+	}
+
+	protected void removeWebBrowser(IExternalWebBrowser browser) {
+		if (browsers == null)
+			loadBrowsers();
+		browsers.remove(browser);
+		fireWebBrowserEvent(browser, REMOVE);
+	}
+
+	// Internal Web browser CAN be "edited", just not created or removed
+	protected void browserChanged(IWebBrowser browser) {
+		fireWebBrowserEvent(browser, CHANGE);
+		saveBrowsers();
+	}
+
+	/**
+	 * Add Web browser listener.
+	 * 
+	 * @param listener
+	 */
+//	public void addWebBrowserListener(IWebBrowserListener listener) {
+//		browserListeners.add(listener);
+//	}
+
+	/**
+	 * Remove Web browser listener.
+	 * 
+	 * @param listener
+	 */
+//	public void removeWebBrowserListener(IWebBrowserListener listener) {
+//		browserListeners.remove(listener);
+//	}
+
+	/**
+	 * Fire a Web browser event.
+	 * 
+	 * @param browser
+	 * @param type
+	 */
+	protected void fireWebBrowserEvent(IWebBrowser browser, int type) {
+		Object[] obj = browserListeners.toArray();
+
+		int size = obj.length;
+		for (int i = 0; i < size; i++) {
+			IWebBrowserListener listener = (IWebBrowserListener) obj[i];
+			if (type == ADD)
+				listener.browserAdded(browser);
+			else if (type == CHANGE)
+				listener.browserChanged(browser);
+			else if (type == REMOVE)
+				listener.browserRemoved(browser);
+		}
+	}
+
+	public IWebBrowser getCurrentWebBrowser() {
+		if (browsers == null)
+			loadBrowsers();
+
+		return currentBrowser;
+	}
+
+	public void setCurrentWebBrowser(IWebBrowser wb) {
+		if (browsers.contains(wb))
+			currentBrowser = wb;
+		saveBrowsers();
+	}
 }
\ No newline at end of file