/******************************************************************************* * Copyright (c) 2005, 2007 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: * IBM Corporation - initial API and implementation *******************************************************************************/ package org.eclipse.ui.internal.browser; import java.util.Hashtable; import org.eclipse.ui.PartInitException; import org.eclipse.ui.browser.AbstractWorkbenchBrowserSupport; import org.eclipse.ui.browser.IWebBrowser; /** * Extends the abstract browser support class by providing minimal support for * external browsers. This class is used when no alternative implementation is * plugged in via the 'org.eclipse.ui.browserSupport' extension point. * * @since 3.1 */ public class DefaultWorkbenchBrowserSupport extends AbstractWorkbenchBrowserSupport { private Hashtable browsers; private static final String DEFAULT_BROWSER_ID_BASE = "org.eclipse.ui.defaultBrowser"; //$NON-NLS-1$ /** * The default constructor. */ public DefaultWorkbenchBrowserSupport() { browsers = new Hashtable(); } void registerBrowser(IWebBrowser browser) { browsers.put(browser.getId(), browser); } void unregisterBrowser(IWebBrowser browser) { browsers.remove(browser.getId()); } IWebBrowser findBrowser(String id) { return (IWebBrowser) browsers.get(id); } protected IWebBrowser doCreateBrowser(int style, String browserId, String name, String tooltip) throws PartInitException { return new DefaultWebBrowser(this, browserId); } /* * (non-Javadoc) * * @see org.eclipse.ui.browser.IWorkbenchBrowserSupport#createBrowser(int, * java.lang.String, java.lang.String, java.lang.String) */ public IWebBrowser createBrowser(int style, String browserId, String name, String tooltip) throws PartInitException { IWebBrowser browser = findBrowser(browserId == null? getDefaultId():browserId); if (browser != null) { return browser; } browser = doCreateBrowser(style, browserId, name, tooltip); registerBrowser(browser); return browser; } /* * (non-Javadoc) * * @see org.eclipse.ui.browser.IWorkbenchBrowserSupport#createBrowser(java.lang.String) */ public IWebBrowser createBrowser(String browserId) throws PartInitException { return createBrowser(AS_EXTERNAL, browserId, null, null); } private String getDefaultId() { String id = null; for (int i = 0; i < Integer.MAX_VALUE; i++) { id = DEFAULT_BROWSER_ID_BASE + i; if (browsers.get(id) == null) break; } return id; } }