/******************************************************************************* * Copyright (c) 2000, 2010 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.jdt.internal.ui.actions; import java.net.URL; import org.eclipse.swt.custom.BusyIndicator; import org.eclipse.swt.widgets.Display; import org.eclipse.ui.PartInitException; import org.eclipse.ui.PlatformUI; import org.eclipse.ui.browser.IWebBrowser; import org.eclipse.ui.browser.IWorkbenchBrowserSupport; import org.eclipse.jdt.internal.ui.JavaPlugin; public class OpenBrowserUtil { /** * Opens the given url in the browser as choosen in the preferences. * * @param url the URL * @param display the display * @since 3.6 */ public static void open(final URL url, Display display) { display.syncExec(new Runnable() { public void run() { internalOpen(url, false); } }); } /** * Opens the given URL in an external browser. * * @param url the URL * @param display the display * @since 3.6 */ public static void openExternal(final URL url, Display display) { display.syncExec(new Runnable() { public void run() { internalOpen(url, true); } }); } private static void internalOpen(final URL url, final boolean useExternalBrowser) { BusyIndicator.showWhile(null, new Runnable() { public void run() { URL helpSystemUrl= PlatformUI.getWorkbench().getHelpSystem().resolve(url.toExternalForm(), true); try { IWorkbenchBrowserSupport browserSupport= PlatformUI.getWorkbench().getBrowserSupport(); IWebBrowser browser; if (useExternalBrowser) browser= browserSupport.getExternalBrowser(); else browser= browserSupport.createBrowser(null); browser.openURL(helpSystemUrl); } catch (PartInitException ex) { // XXX: show dialog? JavaPlugin.logErrorStatus("Opening Javadoc failed", ex.getStatus()); //$NON-NLS-1$ } } }); } /** * DO NOT REMOVE, used in a product. * * @param url the URL * @param display the display * @param title the title * @deprecated As of 3.6, replaced by {@link #open(URL, Display)} */ public static void open(final URL url, Display display, String title) { open(url, display); } }