示例#1
0
        private void OnToolTipRequest(object sender, ToolTipRequestEventArgs e)
        {
            if (e.InDocument && !e.ToolTipShown)
            {
                IExpressionFinder expressionFinder;
                if (MainForm.IsVisualBasic)
                {
                    expressionFinder = new VBExpressionFinder();
                }
                else
                {
                    expressionFinder = new CSharpExpressionFinder(mainForm.parseInformation);
                }
                ExpressionResult expression = expressionFinder.FindFullExpression(
                    editor.Text,
                    editor.Document.PositionToOffset(e.LogicalPosition));
                if (expression.Region.IsEmpty)
                {
                    expression.Region = new DomRegion(e.LogicalPosition.Line + 1, e.LogicalPosition.Column + 1);
                }

                TextArea           textArea = editor.ActiveTextAreaControl.TextArea;
                NRefactoryResolver resolver = new NRefactoryResolver(mainForm.myProjectContent.Language);
                ResolveResult      rr       = resolver.Resolve(expression,
                                                               mainForm.parseInformation,
                                                               textArea.MotherTextEditorControl.Text);
                string toolTipText = GetText(rr);
                if (toolTipText != null)
                {
                    e.ShowToolTip(toolTipText);
                }
            }
        }
示例#2
0
        private void OnToolTipRequest(object sender, ToolTipRequestEventArgs e)
        {
            if (e.InDocument == false || e.ToolTipShown == true)
            {
                return;
            }

            int         offset = mEditor.Document.PositionToOffset(e.LogicalPosition);
            LineSegment line   = mEditor.Document.GetLineSegmentForOffset(offset);
            TextWord    word   = line.GetWord(e.LogicalPosition.Column);

            if (word == null)
            {
                return;
            }

            string lineText = word.Word;

            if (lineText.Length > 0)
            {
                if (TextArea.ToolTipWnd == null)
                {
                }
                e.ShowToolTip(lineText);
            }
        }
示例#3
0
        // was part of Tool Tip Provider

        void OnToolTipRequest(object sender, ToolTipRequestEventArgs e)
        {
            O2Thread.mtaThread(
                () =>
            {
                try
                {
                    if (e.InDocument && !e.ToolTipShown)
                    {
                        var logicalPosition = e.LogicalPosition;

                        // parseSourceCode(CodeCompleteTargetText);
                        ResolveResult rr   = resolveLocation(logicalPosition);
                        string toolTipText = GetText(rr);
                        if (toolTipText != null)
                        {
                            e.ShowToolTip(toolTipText);
                            //}
                            //if (toolTipText.valid())
                            "ToolTipText: {0}".format(toolTipText).info();
                        }
                    }
                }
                catch (Exception ex)
                {
                    ex.log("in OnToolTipRequest");
                }
            });
        }
示例#4
0
        public override void HandleToolTipRequest(ToolTipRequestEventArgs e)
        {
            if (!(IsDebugging && CurrentProcess.IsPaused))
            {
                return;
            }
            if (CurrentStackFrame == null)
            {
                return;
            }
            if (!e.InDocument)
            {
                return;
            }
            var resolveResult = SD.ParserService.Resolve(e.Editor, e.LogicalPosition, CurrentStackFrame.AppDomain.Compilation);

            if (resolveResult == null)
            {
                return;
            }
            if (resolveResult is LocalResolveResult || resolveResult is MemberResolveResult)
            {
                string       text     = ResolveResultPrettyPrinter.Print(resolveResult);
                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);
                }
            }
        }
示例#5
0
        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);
                    }
                }
            }
        }
示例#6
0
 public void HandleToolTipRequest(ToolTipRequestEventArgs e)
 {
     if (SD.Debugger.IsDebuggerLoaded)
     {
         SD.Debugger.HandleToolTipRequest(e);
     }
 }
示例#7
0
        public void HandleToolTipRequest(ToolTipRequestEventArgs args)
        {
            if (!args.InDocument)
            {
                return;
            }
            var offset = _editor.Document.GetOffset(args.LogicalPosition);

            //FoldingManager foldings = _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));
            //    }
            //}

            var markersAtOffset   = _textMarkerService.GetMarkersAtOffset(offset);
            var markerWithToolTip = markersAtOffset.FirstOrDefault(marker => marker.ToolTip != null);

            if (markerWithToolTip != null)
            {
                args.SetToolTip(markerWithToolTip.ToolTip);
            }
        }
示例#8
0
        /// <summary>
        /// ツールチップ表示リクエストが発生したとき
        /// </summary>
        void ActiveTextArea_ToolTipRequest(object sender, ToolTipRequestEventArgs e)
        {
            if (m_useCodeComp == false)
            {
                return;                 //入力補完が無効なときはTipは表示しない
            }
            if (e.ToolTipShown)
            {
                return;                 //Tipが表示中は新たに表示しない
            }
            if (e.InDocument == false)
            {
                return;
            }

            string tip = "";

            switch (FileType.GetKrkrType(this.FileName))
            {
            case FileType.KrkrType.Kag:
                tip = KagToolTip.GetText(Document, e.LogicalPosition.Y, e.LogicalPosition.X);
                break;

            case FileType.KrkrType.Tjs:
                //未実装
                break;
            }

            if (tip != "")
            {
                e.ShowToolTip(tip);
            }
        }
示例#9
0
        private static string GetPopupHintText(TextArea textArea, ToolTipRequestEventArgs e)
        {
            ICSharpCode.TextEditor.TextLocation logicPos = e.LogicalPosition;
            IDocument   doc      = textArea.Document;
            LineSegment seg      = doc.GetLineSegment(logicPos.Y);
            string      FileName = textArea.MotherTextEditorControl.FileName;

            PascalABCCompiler.Parsers.KeywordKind keyw = PascalABCCompiler.Parsers.KeywordKind.None;
            if (logicPos.X > seg.Length - 1)
            {
                return(null);
            }
            //string expr = FindFullExpression(doc.TextContent, seg.Offset + logicPos.X,e.LogicalPosition.Line,e.LogicalPosition.Column);
            string expr_without_brackets = null;
            string expr = CodeCompletion.CodeCompletionController.CurrentParser.LanguageInformation.FindExpressionFromAnyPosition(seg.Offset + logicPos.X, doc.TextContent, e.LogicalPosition.Line, e.LogicalPosition.Column, out keyw, out expr_without_brackets);

            if (expr == null)
            {
                expr = expr_without_brackets;
            }
            if (expr_without_brackets == null)
            {
                return(null);
            }
            List <PascalABCCompiler.Errors.Error> Errors = new List <PascalABCCompiler.Errors.Error>();

            PascalABCCompiler.SyntaxTree.expression tree = WorkbenchServiceFactory.Workbench.VisualEnvironmentCompiler.StandartCompiler.ParsersController.GetExpression("test" + Path.GetExtension(FileName), expr, Errors, new List <PascalABCCompiler.Errors.CompilerWarning>());
            bool header = false;

            if (tree == null || Errors.Count > 0)
            {
                Errors.Clear();
                tree   = WorkbenchServiceFactory.Workbench.VisualEnvironmentCompiler.StandartCompiler.ParsersController.GetExpression("test" + Path.GetExtension(FileName), expr_without_brackets, Errors, new List <PascalABCCompiler.Errors.CompilerWarning>());
                header = true;
                if (tree == null || Errors.Count > 0)
                {
                    return(null);
                }
            }
            else
            {
                Errors.Clear();
                PascalABCCompiler.SyntaxTree.expression tree2 = WorkbenchServiceFactory.Workbench.VisualEnvironmentCompiler.StandartCompiler.ParsersController.GetExpression("test" + Path.GetExtension(FileName), expr_without_brackets, Errors, new List <PascalABCCompiler.Errors.CompilerWarning>());
                //header = true;
                if (tree2 == null || Errors.Count > 0)
                {
                    return(null);
                }
                //if (tree is PascalABCCompiler.SyntaxTree.new_expr && (tree as PascalABCCompiler.SyntaxTree.new_expr).params_list == null)
                //	tree = tree2;
            }
            CodeCompletion.DomConverter dconv = (CodeCompletion.DomConverter)CodeCompletion.CodeCompletionController.comp_modules[FileName];
            if (dconv == null)
            {
                return(null);
            }
            return(dconv.GetDescription(tree, FileName, expr_without_brackets, WorkbenchServiceFactory.Workbench.VisualEnvironmentCompiler.StandartCompiler.ParsersController, e.LogicalPosition.Line, e.LogicalPosition.Column, keyw, header));
        }
示例#10
0
        // Tooltip for opcodes and macros
        private void TextArea_ToolTipRequest(object sender, ToolTipRequestEventArgs e)
        {
            if (!e.InDocument)
            {
                return;
            }

            ToolTipRequest.Show(sourceTab, textEditor.Document, e);
        }
示例#11
0
        public static void ToolTipService_TextAreaToolTipRequest(object sender, ToolTipRequestEventArgs e)
        {
            if (!VisualPABCSingleton.MainForm.UserOptions.CodeCompletionHint)
            {
                return;
            }
            if (CodeCompletion.CodeCompletionController.CurrentParser == null)
            {
                return;
            }
            try
            {
                TextArea textArea = sender as TextArea;
                if (dvw != null && dvw.Description != null)
                {
                    hideToolTip();
                    return;
                }
                if (e.ToolTipShown && dvw != null)
                {
                    hideToolTip();
                    return;
                }
                if (e.InDocument)
                {
                    if (dvw == null)
                    {
                        dvw      = new DeclarationWindow(VisualPABCSingleton.MainForm);
                        dvw.Font = new System.Drawing.Font(Constants.CompletionWindowDeclarationViewWindowFontName, dvw.Font.Size);

                        dvw.HideOnClick = true;
                        //dvw.ShowDeclarationViewWindow();
                    }
                    int ypos = (textArea.Document.GetVisibleLine(e.LogicalPosition.Y) + 1) * textArea.TextView.FontHeight - textArea.VirtualTop.Y;
                    System.Drawing.Point p = new System.Drawing.Point(0, ypos);
                    p    = textArea.PointToScreen(p);
                    p.X  = Control.MousePosition.X + 3;
                    p.Y += 5;
                    string txt = GetPopupHintText(textArea, e);
                    dvw.Location    = choose_location(p, txt);
                    dvw.Description = txt;

                    _hint_hide_d   = dvw.Font.Height / 2;
                    _mouse_hint_x  = e.MousePosition.X;
                    _mouse_hint_y  = e.MousePosition.Y;
                    toolTipVisible = true;
                }
            }
            catch (System.Exception ex)
            {
                //VisualPABCSingleton.MainForm.WriteToOutputBox(ex.Message);// ICSharpCode.Core.MessageService.ShowError(ex);
            }
            finally
            {
            }
        }
        private void TextArea_ToolTipRequest(object sender, ToolTipRequestEventArgs e)
        {
            if (!e.InDocument)
            {
                return;
            }

            var segment = Document.GetLineSegment(e.LogicalPosition.Line);
            var word    = segment.GetWord(e.LogicalPosition.Column);

            if (word == null || string.IsNullOrEmpty(word.Word))
            {
                return;
            }

            string text = word.Word;
            string tooltip;

            try
            {
                IParserData data = _parserService.GetParserData(text, Settings.Default.CaseSensitive).FirstOrDefault();

                if (data == null)
                {
                    var address = _symbolService.SymbolTable.GetAddressFromLabel(text);
                    tooltip = address == null ? string.Empty : address.Value.ToString();
                }
                else
                {
                    tooltip = data.Description;
                }
            }
            catch (Exception)
            {
                return;
            }

            if (string.IsNullOrEmpty(tooltip))
            {
                if (_debuggerService.CurrentDebugger == null)
                {
                    return;
                }

                ushort?regValue = _debuggerService.CurrentDebugger.GetRegisterValue(text);
                if (!regValue.HasValue)
                {
                    return;
                }

                tooltip = "$" + regValue.Value.ToString("X");
            }

            e.ShowToolTip(tooltip);
        }
示例#13
0
        private async Task AsyncToolTipRequest(ToolTipRequestEventArgs arg)
        {
            // TODO: consider invoking this with a delay, then showing the tool-tip without one
            var document = _roslynHost.GetDocument(_viewModel.DocumentId);
            var info     = await _quickInfoProvider.GetItemAsync(document, arg.Position, CancellationToken.None).ConfigureAwait(true);

            if (info != null)
            {
                arg.SetToolTip(info.Create());
            }
        }
示例#14
0
        /// <summary>
        /// Gets debugger tooltip information for the specified position.
        /// A descriptive text for the element or a DebuggerGridControl
        /// showing its current value (when in debugging mode) can be returned
        /// through the ToolTipInfo object.
        /// Returns <c>null</c>, if no tooltip information is available.
        /// </summary>
        internal static ToolTipInfo GetToolTipInfo(TextArea textArea, ToolTipRequestEventArgs e)
        {
            TextLocation      logicPos         = e.LogicalPosition;
            IDocument         doc              = textArea.Document;
            IExpressionFinder expressionFinder = ParserService.GetExpressionFinder(textArea.MotherTextEditorControl.FileName);

            if (expressionFinder == null)
            {
                return(null);
            }
            LineSegment seg = doc.GetLineSegment(logicPos.Y);

            if (logicPos.X > seg.Length - 1)
            {
                return(null);
            }
            string           textContent      = doc.TextContent;
            ExpressionResult expressionResult = expressionFinder.FindFullExpression(textContent, seg.Offset + logicPos.X);
            string           expression       = (expressionResult.Expression ?? "").Trim();

            if (expression.Length > 0)
            {
                // Look if it is variable
                ResolveResult result = ParserService.Resolve(expressionResult, logicPos.Y + 1, logicPos.X + 1, textArea.MotherTextEditorControl.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)
                    {
                        return(new ToolTipInfo(currentDebugger.GetTooltipControl(expressionResult.Expression)));
                    }
                    return(new ToolTipInfo(toolTipText));
                }
            }
            else
            {
                                #if DEBUG
                if (Control.ModifierKeys == Keys.Control)
                {
                    return(new ToolTipInfo("no expr: " + expressionResult.ToString()));
                }
                                #endif
            }
            return(null);
        }
        protected override void OnToolTipRequest(object sender, ToolTipRequestEventArgs e)
        {
            if (!e.InDocument || e.LogicalPosition.IsEmpty)
            {
                return;
            }

            var text = (TextArea)sender;

            if (text.Document == null)
            {
                return;
            }

            var lineSegment = text.Document.GetLineSegment(e.LogicalPosition.Line);
            var lineText    = text.Document.GetText(lineSegment);

            string word = GetWordAtColumn(lineText, e.LogicalPosition.Column);

            if (word == null)
            {
                return;
            }

            // register-variable?
            if (_formatter != null)
            {
                string varName = _formatter.GetVariableByRegisterName(word);
                if (varName != null)
                {
                    e.ShowToolTip(varName);
                    return;
                }
            }

            // opcode-mnemonic?
            var opcode = Opcodes.Lookup(word);

            if (opcode != null)
            {
                string toolTip = string.Format("{0}\n\n{1}\n\n{2}", opcode.Syntax, opcode.Arguments, opcode.Description);
                e.ShowToolTip(toolTip);
                return;
            }
        }
示例#16
0
 void OnToolTipRequest(object sender, ToolTipRequestEventArgs e)
 {
     if (e.InDocument && !e.ToolTipShown)
     {
         try
         {
             string toolTipText = FToolTipProvider.GetToolTip(Document, e.LogicalPosition);
             if (toolTipText != null)
             {
                 e.ShowToolTip(toolTipText);
             }
         }
         catch (Exception)
         {
             // Ignore
         }
     }
 }
示例#17
0
        void TextEditorControl_ToolTipRequest(object sender, ToolTipRequestEventArgs e)
        {
            if (!e.InDocument || e.ToolTipShown)
            {
                return;
            }
            // Get word under cursor
            TextLocation position = e.LogicalPosition;
            LineSegment  line     = this.TextEditorControl.Document.GetLineSegment(position.Y);

            if (line != null)
            {
                TextWord word = line.GetWord(position.X);
                if (word != null && !String.IsNullOrEmpty(word.Word))
                {
                    e.ShowToolTip("Current word: \"" + word.Word + "\"\n" + "\nRow: " + (position.Y + 1) + " Column: " + (position.X + 1));
                }
            }
        }
示例#18
0
 void TextArea_ToolTipRequest(object sender, ToolTipRequestEventArgs e)
 {
     if (e.ToolTipShown)
     {
         return;
     }
     if (e.InDocument)
     {
         var         area = sender as TextArea;
         var         pos  = e.LogicalPosition;
         var         doc  = area.Document;
         LineSegment seg  = doc.GetLineSegment(pos.Y);
         var         txt  = seg.GetWord(pos.X);
         if (txt != null && !string.IsNullOrEmpty(txt.Word))
         {
             e.ShowToolTip(GetDescription(txt.Word));
         }
     }
 }
示例#19
0
        public ToolTipInfo GetToolTipInfo(TextArea textArea, ToolTipRequestEventArgs e)
        {
            TextLocation logicPos = e.LogicalPosition;
            IDocument    doc      = textArea.Document;

            if (logicPos.X > doc.GetLineSegment(logicPos.Y).Length - 1)
            {
                return(null);
            }

            ResourceResolveResult result = ResourceResolverService.Resolve(textArea.MotherTextEditorControl.FileName, doc, logicPos.Y, logicPos.X, null);

            if (result != null && result.ResourceFileContent != null)
            {
                return(new ToolTipInfo(ResourceResolverService.FormatResourceDescription(result.ResourceFileContent, result.Key)));
            }

            return(null);
        }
        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));
            }
        }
示例#21
0
        /// <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>
        public static void HandleToolTipRequest(ToolTipRequestEventArgs e)
        {
            if (!e.InDocument)
            {
                return;
            }

            var logicPos = e.LogicalPosition;
            var doc      = (TextDocument)e.Editor.Document;
            var line     = doc.GetLineByNumber(logicPos.Line);

            if (line.Offset + logicPos.Column >= doc.TextLength)
            {
                return;
            }

            var c = doc.GetText(line.Offset + logicPos.Column, 1);

            if (string.IsNullOrEmpty(c) || c == "\n" || c == "\t")
            {
                return;
            }

            string variable =
                ParserService.SimpleParseAt(doc.Text, doc.GetOffset(new TextLocation(logicPos.Line, logicPos.Column)));

            if (currentDebugger == null || !currentDebugger.IsDebugging || !currentDebugger.CanEvaluate)
            {
                e.ContentToShow = null;
            }
            else
            {
                try {
                    e.ContentToShow = currentDebugger.GetTooltipControl(e.LogicalPosition, variable);
                } catch {
                    return;
                }
            }
        }
        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 static void Show(TabInfo ti, IDocument document, ToolTipRequestEventArgs args)
        {
            if (ColorTheme.CheckColorPosition(document, new TextLocation(args.LogicalPosition.Column, args.LogicalPosition.Line), true))
            {
                return;
            }

            string word = TextUtilities.GetWordAt(document, document.PositionToOffset(args.LogicalPosition));

            if (word.Length == 0)
            {
                return;
            }

            if (ti.messages.Count > 0)
            {
                int msg;
                if (int.TryParse(word, out msg) && ti.messages.ContainsKey(msg))
                {
                    args.ShowToolTip("\"" + ti.messages[msg] + "\"");
                    return;
                }
            }

            document.TextEditorProperties.BoldFontTipsTile = true;
            string lookup = ProgramInfo.LookupOpcodesToken(word); // show opcodes help

            if (lookup == null && ti.parseInfo != null)
            {
                lookup = ti.parseInfo.LookupToken(word, ti.filepath, args.LogicalPosition.Line + 1);
                document.TextEditorProperties.BoldFontTipsTile = false;
            }
            if (lookup != null)
            {
                args.ShowToolTip(lookup);
            }
        }
示例#24
0
        void OnToolTipRequest(object sender, ToolTipRequestEventArgs e)
        {
            if (e.InDocument && !e.ToolTipShown && _xdebugClient.State == XdebugClientState.Break)
            {
                ICSharpCode.TextEditor.TextArea area_obj = (ICSharpCode.TextEditor.TextArea)sender;

                string s = ICSharpCode.TextEditor.Document.TextUtilities.GetWordAt(area_obj.Document, area_obj.Document.PositionToOffset(new Point(e.LogicalPosition.X, e.LogicalPosition.Y)));

                if (area_obj.Document.GetCharAt(MyFindWordStart(area_obj.Document, area_obj.Document.PositionToOffset(new Point(e.LogicalPosition.X, e.LogicalPosition.Y))) - 1).ToString() == "$")
                {
                    s = "$" + s;
                }

                if (s != "")
                {
                    Property p = _xdebugClient.GetPropertyValue(s, 0);

                    if (p != null)
                    {
                        e.ShowToolTip(p.Value);
                    }
                }
            }
        }
示例#25
0
        private void EditorOnToolTipRequest(object sender, ToolTipRequestEventArgs args)
        {
            var offset = _document.GetOffset(args.LogicalPosition);

            //FoldingManager foldings = _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));
            //    }
            //}

            var markersAtOffset   = GetMarkersAtOffset(offset);
            var markerWithToolTip = markersAtOffset.FirstOrDefault(marker => marker.ToolTip != null);

            if (markerWithToolTip != null)
            {
                args.SetToolTip(markerWithToolTip.ToolTip);
            }
        }
示例#26
0
        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);
            }

            TextMarkerService textMarkerService = this.Adapter.GetService(typeof(ITextMarkerService)) as TextMarkerService;

            if (args.InDocument && textMarkerService != null)
            {
                var markersAtOffset = textMarkerService.GetMarkersAtOffset(args.Editor.Document.PositionToOffset(args.LogicalPosition.Line, args.LogicalPosition.Column));

                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);
            }
        }
示例#27
0
        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);
            }
        }
示例#28
0
 public override void HandleToolTipRequest(ToolTipRequestEventArgs e)
 {
 }
示例#29
0
        /// <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>
        public static void HandleToolTipRequest(ToolTipRequestEventArgs e)
        {
            if (!e.InDocument)
            {
                return;
            }

            var logicPos = e.LogicalPosition;
            var doc      = (TextDocument)e.Editor.Document;
            var line     = doc.GetLineByNumber(logicPos.Line);

            if (line.Offset + logicPos.Column >= doc.TextLength)
            {
                return;
            }

            var c = doc.GetText(line.Offset + logicPos.Column, 1);

            if (string.IsNullOrEmpty(c) || c == "\n" || c == "\t")
            {
                return;
            }

            string variable =
                ParserService.SimpleParseAt(doc.Text, doc.GetOffset(new TextLocation(logicPos.Line, logicPos.Column)));

            if (currentDebugger == null || !currentDebugger.IsDebugging || !currentDebugger.CanEvaluate)
            {
                e.ContentToShow = null;
            }
            else
            {
                try {
                    e.ContentToShow = currentDebugger.GetTooltipControl(e.LogicalPosition, variable);
                } catch {
                    return;
                }
            }

            // FIXME Do proper parsing
//
//			using (var sr = new StringReader(doc.Text))
//			{
//				var parser = new CSharpParser();
//				parser.Parse(sr);
//
//				IExpressionFinder expressionFinder = ParserService.GetExpressionFinder();
//				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.GetOffset(new TextLocation(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, e.Editor.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
//				}
//			}
        }
示例#30
0
 public void HandleToolTipRequest(ToolTipRequestEventArgs e)
 {
     DebuggerService.HandleToolTipRequest(e);
 }