From c7ccb1c5f1febdb78e9d9007c17bbd467954af67 Mon Sep 17 00:00:00 2001 From: Sergey Prigogin Date: Mon, 25 Mar 2013 08:41:41 -0400 Subject: [PATCH] Bug 45203. Navigation to external URL in Include Pragmas preference page. --- .../ui/preferences/IncludePragmasBlock.java | 30 ++++++++++++++++--- 1 file changed, 26 insertions(+), 4 deletions(-) diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/IncludePragmasBlock.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/IncludePragmasBlock.java index c23ac53164a..418469b5029 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/IncludePragmasBlock.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/IncludePragmasBlock.java @@ -10,9 +10,13 @@ *******************************************************************************/ package org.eclipse.cdt.internal.ui.preferences; +import java.net.MalformedURLException; +import java.net.URL; + import org.eclipse.core.resources.IProject; import org.eclipse.jface.layout.PixelConverter; import org.eclipse.swt.SWT; +import org.eclipse.swt.custom.BusyIndicator; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Composite; @@ -20,9 +24,14 @@ import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Event; import org.eclipse.swt.widgets.Link; import org.eclipse.swt.widgets.Listener; +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.ui.preferences.IWorkbenchPreferenceContainer; import org.eclipse.cdt.core.CCorePreferenceConstants; +import org.eclipse.cdt.ui.CUIPlugin; import org.eclipse.cdt.internal.ui.dialogs.IStatusChangeListener; import org.eclipse.cdt.internal.ui.dialogs.StatusInfo; @@ -83,10 +92,23 @@ public class IncludePragmasBlock extends OptionsConfigurationBlock { link.setText(text); link.addListener(SWT.Selection, new Listener() { @Override - public void handleEvent(Event event) { - // TODO(sprigogin): Implement opening of browser. - String u = event.text; -// PreferencesUtil.createPreferenceDialogOn(getShell(), u, null, null); + public void handleEvent(final Event event) { + BusyIndicator.showWhile(null, new Runnable() { + @Override + public void run() { + try { + URL url = new URL(event.text); + IWorkbenchBrowserSupport browserSupport= PlatformUI.getWorkbench().getBrowserSupport(); + IWebBrowser browser= browserSupport.getExternalBrowser(); + browser.openURL(url); + } catch (PartInitException e) { + // TODO(sprigogin): Should we show an error dialog? + CUIPlugin.log(e.getStatus()); + } catch (MalformedURLException e) { + CUIPlugin.log(e); + } + } + }); } }); // TODO replace by link-specific tooltips when