X-Git-Url: http://git.phpeclipse.com diff --git a/net.sourceforge.phpeclipse.webbrowser/src/org/eclipse/webbrowser/internal/BrowserManager.java b/net.sourceforge.phpeclipse.webbrowser/src/org/eclipse/webbrowser/internal/BrowserManager.java deleted file mode 100644 index 55b33d9..0000000 --- a/net.sourceforge.phpeclipse.webbrowser/src/org/eclipse/webbrowser/internal/BrowserManager.java +++ /dev/null @@ -1,274 +0,0 @@ -/********************************************************************** - * 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 org.eclipse.webbrowser.internal; - -import java.io.ByteArrayInputStream; -import java.io.InputStreamReader; -import java.io.Reader; -import java.io.StringWriter; -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; - -import org.eclipse.core.runtime.IStatus; -import org.eclipse.core.runtime.Preferences; -import org.eclipse.core.runtime.Status; -import org.eclipse.ui.IMemento; -import org.eclipse.ui.XMLMemento; -import org.eclipse.webbrowser.IExternalWebBrowser; -import org.eclipse.webbrowser.IExternalWebBrowserWorkingCopy; -import org.eclipse.webbrowser.IInternalWebBrowser; -import org.eclipse.webbrowser.IWebBrowser; -/** - * - */ -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 - 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(); - } -} \ No newline at end of file