public static void RequestToolTip(ToolTipRequestEventArgs e) { if (e == null) throw new ArgumentNullException("e"); if (!CodeCompletionOptions.EnableCodeCompletion || !CodeCompletionOptions.TooltipsEnabled) { e.Handled = true; return; } if (CodeCompletionOptions.TooltipsOnlyWhenDebugging) { if (!DebuggerService.IsDebuggerLoaded || !DebuggerService.CurrentDebugger.IsDebugging) { e.Handled = true; 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<ITextAreaToolTipProvider>(ToolTipProviderAddInTreePath, null, false)) { toolTipProvider.HandleToolTipRequest(e); if (e.Handled) break; } EventHandler<ToolTipRequestEventArgs> eh = ToolTipRequested; if (eh != null) eh(null, e); }
public void HandleToolTipRequest(ToolTipRequestEventArgs args) { if (args.InDocument) { int offset = args.Editor.Document.GetOffset(args.LogicalPosition); FoldingManager foldings = args.Editor.GetService(typeof(FoldingManager)) as FoldingManager; if (foldings != null) { var foldingsAtOffset = foldings.GetFoldingsAt(offset); FoldingSection collapsedSection = foldingsAtOffset.FirstOrDefault(section => section.IsFolded); if (collapsedSection != null) { args.SetToolTip(GetTooltipTextForCollapsedSection(args, collapsedSection)); } } TextMarkerService textMarkerService = args.Editor.GetService(typeof(ITextMarkerService)) as TextMarkerService; if (textMarkerService != null) { var markersAtOffset = textMarkerService.GetMarkersAtOffset(offset); ITextMarker markerWithToolTip = markersAtOffset.FirstOrDefault(marker => marker.ToolTip != null); if (markerWithToolTip != null) { args.SetToolTip(markerWithToolTip.ToolTip); } } } }
public void HandleToolTipRequest(ToolTipRequestEventArgs e) { if (e.ResolveResult == null) return; TypeResolveResult trr = e.ResolveResult as TypeResolveResult; MemberResolveResult mrr = e.ResolveResult as MemberResolveResult; LocalResolveResult lrr = e.ResolveResult as LocalResolveResult; if (trr != null && trr.Type.GetDefinition() != null) { e.SetToolTip(CreateTooltip(trr.Type)); } else if (mrr != null) { e.SetToolTip(CreateTooltip(mrr.Member)); } else if (lrr != null) { e.SetToolTip(new FlowDocumentTooltip(XmlDocFormatter.CreateTooltip(lrr.Variable))); } }
public void HandleToolTipRequest(ToolTipRequestEventArgs e) { if (e.ResolveResult == null) return; TypeResolveResult trr = e.ResolveResult as TypeResolveResult; MemberResolveResult mrr = e.ResolveResult as MemberResolveResult; LocalResolveResult lrr = e.ResolveResult as LocalResolveResult; if (trr != null && trr.Type.GetDefinition() != null) { e.SetToolTip(CreateTooltip(trr.Type)); } else if (mrr != null) { e.SetToolTip(CreateTooltip(mrr.Member)); } else if (lrr != null) { var ambience = AmbienceService.GetCurrentAmbience(); e.SetToolTip(ambience.ConvertVariable(lrr.Variable)); } }
public void HandleToolTipRequest(ToolTipRequestEventArgs e) { if (!e.InDocument) return; Location logicPos = e.LogicalPosition; IDocument doc = e.Editor.Document; if (logicPos.X > doc.GetLine(logicPos.Y).Length) { return; } ResourceResolveResult result = ResourceResolverService.Resolve(e.Editor.FileName, doc, logicPos.Y - 1, logicPos.X - 1, null); if (result != null && result.ResourceFileContent != null) { e.SetToolTip(ResourceResolverService.FormatResourceDescription(result.ResourceFileContent, result.Key)); } }
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 <ITextAreaToolTipProvider>(ToolTipProviderAddInTreePath, null, false)) { toolTipProvider.HandleToolTipRequest(e); if (e.Handled) { break; } } EventHandler <ToolTipRequestEventArgs> eh = ToolTipRequested; if (eh != null) { eh(null, e); } }
public override void HandleToolTipRequest(ToolTipRequestEventArgs e) { }
public void HandleToolTipRequest(ToolTipRequestEventArgs e) { if (SD.Debugger.IsDebuggerLoaded) SD.Debugger.HandleToolTipRequest(e); }
string GetTooltipTextForCollapsedSection(ToolTipRequestEventArgs args, FoldingSection foldingSection) { // This fixes SD-1394: // Each line is checked for leading indentation whitespaces. If // a line has the same or more indentation than the first line, // it is reduced. If a line is less indented than the first line // the indentation is removed completely. // // See the following example: // line 1 // line 2 // line 3 // line 4 // // is reduced to: // line 1 // line 2 // line 3 // line 4 const int maxLineCount = 15; TextDocument document = (TextDocument)args.Editor.Document; int startOffset = foldingSection.StartOffset; int endOffset = foldingSection.EndOffset; DocumentLine startLine = document.GetLineByOffset(startOffset); DocumentLine endLine = document.GetLineByOffset(endOffset); StringBuilder builder = new StringBuilder(); DocumentLine current = startLine; ISegment startIndent = TextUtilities.GetLeadingWhitespace(document, startLine); int lineCount = 0; while (current != endLine.NextLine && lineCount < maxLineCount) { ISegment currentIndent = TextUtilities.GetLeadingWhitespace(document, current); if (current == startLine && current == endLine) builder.Append(document.GetText(startOffset, endOffset - startOffset)); else if (current == startLine) { if (current.EndOffset - startOffset > 0) builder.AppendLine(document.GetText(startOffset, current.EndOffset - startOffset).TrimStart()); } else if (current == endLine) { if (startIndent.Length <= currentIndent.Length) builder.Append(document.GetText(current.Offset + startIndent.Length, endOffset - current.Offset - startIndent.Length)); else builder.Append(document.GetText(current.Offset + currentIndent.Length, endOffset - current.Offset - currentIndent.Length)); } else { if (startIndent.Length <= currentIndent.Length) builder.AppendLine(document.GetText(current.Offset + startIndent.Length, current.Length - startIndent.Length)); else builder.AppendLine(document.GetText(current.Offset + currentIndent.Length, current.Length - currentIndent.Length)); } current = current.NextLine; lineCount++; } if (current != endLine.NextLine) builder.Append("..."); return builder.ToString(); }
void TextEditorMouseHover(object sender, MouseEventArgs e) { Debug.Assert(sender == this); if (!TryCloseExistingPopup(false)) { return; } ToolTipRequestEventArgs args = new ToolTipRequestEventArgs(this.Adapter); var pos = this.TextArea.TextView.GetPositionFloor(e.GetPosition(this.TextArea.TextView) + this.TextArea.TextView.ScrollOffset); args.InDocument = pos.HasValue; if (pos.HasValue) { args.LogicalPosition = pos.Value.Location; } if (!args.Handled) { // if request wasn't handled by a marker, pass it to the ToolTipRequestService ToolTipRequestService.RequestToolTip(args); } if (args.ContentToShow != null) { popupToolTip = args.ContentToShow as Popup; if (popupToolTip != null) { var popupPosition = GetPopupPosition(e); popupToolTip.Closed += ToolTipClosed; popupToolTip.HorizontalOffset = popupPosition.X; popupToolTip.VerticalOffset = popupPosition.Y; popupToolTip.StaysOpen = true; // We will close it ourselves e.Handled = true; popupToolTip.IsOpen = true; distanceToPopupLimit = double.PositiveInfinity; // reset limit; we'll re-calculate it on the next mouse movement } else { if (toolTip == null) { toolTip = new ToolTip(); toolTip.Closed += ToolTipClosed; } toolTip.PlacementTarget = this; // required for property inheritance if(args.ContentToShow is string) { toolTip.Content = new TextBlock { Text = args.ContentToShow as string, TextWrapping = TextWrapping.Wrap }; } else toolTip.Content = args.ContentToShow; e.Handled = true; toolTip.IsOpen = true; } } }
public void HandleToolTipRequest(ToolTipRequestEventArgs e) { if (!(IsDebugging && CurrentProcess.IsPaused)) return; var resolveResult = e.ResolveResult; if (resolveResult == null) return; if (resolveResult is LocalResolveResult || resolveResult is MemberResolveResult) { string text = string.Empty; try { text = new ResolveResultPrettyPrinter().Print(resolveResult); } catch (NotImplementedException ex) { SD.Log.Warn(ex); } Func<Value> getValue = delegate { ExpressionEvaluationVisitor eval = new ExpressionEvaluationVisitor(CurrentStackFrame, EvalThread, CurrentStackFrame.AppDomain.Compilation); return eval.Convert(resolveResult); }; try { var rootNode = new ValueNode(ClassBrowserIconService.LocalVariable, text, getValue); e.SetToolTip(new DebuggerTooltipControl(rootNode)); } catch (InvalidOperationException ex) { SD.Log.Warn(ex); } } }
public void HandleToolTipRequest(ToolTipRequestEventArgs e) { if (DebuggerService.IsDebuggerLoaded) DebuggerService.CurrentDebugger.HandleToolTipRequest(e); }
public void HandleToolTipRequest(ToolTipRequestEventArgs e) { }
void TextEditorMouseHover(object sender, MouseEventArgs e) { ToolTipRequestEventArgs args = new ToolTipRequestEventArgs(this.adapter); var pos = adapter.TextEditor.GetPositionFromPoint(e.GetPosition(this)); args.InDocument = pos.HasValue; if (pos.HasValue) { args.LogicalPosition = AvalonEditDocumentAdapter.ToLocation(pos.Value.Location); } if (!args.Handled) { // if request wasn't handled by a marker, pass it to the ToolTipRequestService ToolTipRequestService.RequestToolTip(args); } if (args.ContentToShow != null) { var contentToShowITooltip = args.ContentToShow as ITooltip; if (contentToShowITooltip != null && contentToShowITooltip.ShowAsPopup) { if (!(args.ContentToShow is UIElement)) { throw new NotSupportedException("Content to show in Popup must be UIElement: " + args.ContentToShow); } if (popup == null) { popup = CreatePopup(); } if (TryCloseExistingPopup(false)) { // when popup content decides to close, close the popup contentToShowITooltip.Closed += (closedSender, closedArgs) => { popup.IsOpen = false; }; popup.Child = (UIElement)args.ContentToShow; //ICSharpCode.SharpDevelop.Debugging.DebuggerService.CurrentDebugger.IsProcessRunningChanged SetPopupPosition(popup, e); popup.IsOpen = true; } e.Handled = true; } else { if (toolTip == null) { toolTip = new ToolTip(); toolTip.Closed += delegate { toolTip = null; }; } toolTip.PlacementTarget = this.adapter.TextEditor; // required for property inheritance if(args.ContentToShow is string) { toolTip.Content = new TextBlock { Text = args.ContentToShow as string, TextWrapping = TextWrapping.Wrap }; } else toolTip.Content = args.ContentToShow; toolTip.IsOpen = true; e.Handled = true; } } else { // close popup if mouse hovered over empty area if (popup != null) { e.Handled = true; } TryCloseExistingPopup(false); } }
public abstract void HandleToolTipRequest(ToolTipRequestEventArgs e);
public void HandleToolTipRequest(ToolTipRequestEventArgs e) { if(!e.InDocument) return; }
public void HandleToolTipRequest(ToolTipRequestEventArgs e) { DebuggerService.HandleToolTipRequest(e); }
/// <summary> /// Gets debugger tooltip information for the specified position. /// A descriptive string for the element or a DebuggerTooltipControl /// showing its current value (when in debugging mode) can be returned /// through the ToolTipRequestEventArgs.SetTooltip() method. /// </summary> internal static void HandleToolTipRequest(ToolTipRequestEventArgs e) { if (!e.InDocument) return; Location logicPos = e.LogicalPosition; var doc = e.Editor.Document; FileName fileName = e.Editor.FileName; IExpressionFinder expressionFinder = ParserService.GetExpressionFinder(fileName); if (expressionFinder == null) return; var currentLine = doc.GetLine(logicPos.Y); if (logicPos.X > currentLine.Length) return; string textContent = doc.Text; ExpressionResult expressionResult = expressionFinder.FindFullExpression(textContent, doc.PositionToOffset(logicPos.Line, logicPos.Column)); string expression = (expressionResult.Expression ?? "").Trim(); if (expression.Length > 0) { // Look if it is variable ResolveResult result = ParserService.Resolve(expressionResult, logicPos.Y, logicPos.X, fileName, textContent); bool debuggerCanShowValue; string toolTipText = GetText(result, expression, out debuggerCanShowValue); if (Control.ModifierKeys == Keys.Control) { toolTipText = "expr: " + expressionResult.ToString() + "\n" + toolTipText; debuggerCanShowValue = false; } if (toolTipText != null) { if (debuggerCanShowValue && currentDebugger != null) { object toolTip = currentDebugger.GetTooltipControl(e.LogicalPosition, expressionResult.Expression); if (toolTip != null) e.SetToolTip(toolTip); else e.SetToolTip(toolTipText); } else { e.SetToolTip(toolTipText); } } } else { #if DEBUG if (Control.ModifierKeys == Keys.Control) { e.SetToolTip("no expr: " + expressionResult.ToString()); } #endif } }
void TextEditorMouseHover(object sender, MouseEventArgs e) { Debug.Assert(sender == this); ToolTipRequestEventArgs args = new ToolTipRequestEventArgs(this.Adapter); var pos = GetPositionFromPoint(e.GetPosition(this)); args.InDocument = pos.HasValue; if (pos.HasValue) { args.LogicalPosition = AvalonEditDocumentAdapter.ToLocation(pos.Value); } if (args.InDocument) { int offset = args.Editor.Document.PositionToOffset(args.LogicalPosition.Line, args.LogicalPosition.Column); FoldingManager foldings = this.Adapter.GetService(typeof(FoldingManager)) as FoldingManager; if (foldings != null) { var foldingsAtOffset = foldings.GetFoldingsContaining(offset); FoldingSection collapsedSection = foldingsAtOffset.FirstOrDefault(section => section.IsFolded); if (collapsedSection != null) { args.SetToolTip(collapsedSection.TooltipText); } } TextMarkerService textMarkerService = this.Adapter.GetService(typeof(ITextMarkerService)) as TextMarkerService; if (textMarkerService != null) { var markersAtOffset = textMarkerService.GetMarkersAtOffset(offset); ITextMarker markerWithToolTip = markersAtOffset.FirstOrDefault(marker => marker.ToolTip != null); if (markerWithToolTip != null) { args.SetToolTip(markerWithToolTip.ToolTip); } } } if (!args.Handled) { // if request wasn't handled by a marker, pass it to the ToolTipRequestService ToolTipRequestService.RequestToolTip(args); } if (args.ContentToShow != null) { var contentToShowITooltip = args.ContentToShow as ITooltip; if (contentToShowITooltip != null && contentToShowITooltip.ShowAsPopup) { if (!(args.ContentToShow is UIElement)) { throw new NotSupportedException("Content to show in Popup must be UIElement: " + args.ContentToShow); } if (popup == null) { popup = CreatePopup(); } // if popup was only first level, hovering somewhere else closes it if (TryCloseExistingPopup(false)) { // when popup content decides to close, close the popup contentToShowITooltip.Closed += (closedSender, closedArgs) => { popup.IsOpen = false; }; popup.Child = (UIElement)args.ContentToShow; //ICSharpCode.SharpDevelop.Debugging.DebuggerService.CurrentDebugger.IsProcessRunningChanged SetPopupPosition(popup, e); popup.IsOpen = true; } e.Handled = true; } else { if (toolTip == null) { toolTip = new ToolTip(); toolTip.Closed += ToolTipClosed; } toolTip.PlacementTarget = this; // required for property inheritance if(args.ContentToShow is string) { toolTip.Content = new TextBlock { Text = args.ContentToShow as string, TextWrapping = TextWrapping.Wrap }; } else toolTip.Content = args.ContentToShow; toolTip.IsOpen = true; e.Handled = true; } } else { // close popup if mouse hovered over empty area if (popup != null) { e.Handled = true; } TryCloseExistingPopup(false); } }
string GetTooltipTextForCollapsedSection(ToolTipRequestEventArgs args, FoldingSection foldingSection) { return ToolTipUtils.GetAlignedText(args.Editor.Document, foldingSection.StartOffset, foldingSection.EndOffset); }