// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using ICSharpCode.Core;
using ICSharpCode.SharpDevelop.Debugging;
namespace ICSharpCode.SharpDevelop.Editor
{
///
/// Static class for the ToolTipRequested event.
///
public static class ToolTipRequestService
{
const string ToolTipProviderAddInTreePath = "/SharpDevelop/ViewContent/TextEditor/ToolTips";
///
/// This event occurs on a tool tip request,
/// after any registered in the addintree have run.
/// This event is still raised if AddIns handled it, so please check the Handled property.
///
public static event EventHandler ToolTipRequested;
public static void RequestToolTip(ToolTipRequestEventArgs e)
{
if (e == null)
throw new ArgumentNullException("e");
if (!CodeCompletionOptions.EnableCodeCompletion) return;
if (!CodeCompletionOptions.TooltipsEnabled) return;
if (CodeCompletionOptions.TooltipsOnlyWhenDebugging) {
if (!DebuggerService.IsDebuggerLoaded) return;
if (!DebuggerService.CurrentDebugger.IsDebugging) return;
}
// Query all registered tooltip providers using the AddInTree.
// The first one that does not return null will be used.
foreach (ITextAreaToolTipProvider toolTipProvider in AddInTree.BuildItems(ToolTipProviderAddInTreePath, null, false)) {
toolTipProvider.HandleToolTipRequest(e);
if (e.Handled)
break;
}
EventHandler eh = ToolTipRequested;
if (eh != null)
eh(null, e);
}
}
}