Пример #1
0
        /// <summary>
        /// Tells the instance to validate the text referenced by the given <paramref name="changedRange"/>.
        /// </summary>
        /// <param name="changedRange">Range of changed text</param>
        protected virtual void ProcessSyntaxValidation(Range changedRange)
        {
            IContentSyntaxValidator syntaxValidator = ((IContentAssistTextBox)this).ContentSyntaxValidator;

            if (syntaxValidator == null)
            {
                return;
            }

            // Clean all styles
            Range.ClearStyle(iErrorLineStyle);
            iSyntaxHints.Clear();

            // Check for syntax errors again
            string text = Range.Text;
            IEnumerable <IContentSyntaxValidationHint> hints = syntaxValidator.Validate(text);
            Place start = new Place(0, 0);

            using (IEnumerator <IContentSyntaxValidationHint> itr = hints.GetEnumerator()) {
                while (itr.MoveNext())
                {
                    IContentSyntaxValidationHint hint = itr.Current;
                    iSyntaxHints.Add(hint.BeginLine, hint);

                    Range hintRange = GetRange(new Place(hint.BeginColumn, hint.BeginLine), new Place(hint.EndColumn, hint.EndLine));
                    while (string.IsNullOrEmpty(hintRange.Text) && hintRange.Start > start)
                    {
                        hintRange.GoLeft(true);
                    }

                    Style style = null;

                    if (hint.Type == EContentValidationSyntaxHintType.Error)
                    {
                        style = iErrorLineStyle;
                    }

                    if (hint.Type == EContentValidationSyntaxHintType.Warning)
                    {
                        style = iWarningLineStyle;
                    }

                    if (hint.Type == EContentValidationSyntaxHintType.Info)
                    {
                        style = iInfoLineStyle;
                    }

                    if (style == null)
                    {
                        continue;
                    }

                    hintRange.SetStyle(style);
                }
            }
        }
Пример #2
0
        /// <summary>
        /// Tells the instance that the <see cref="IContentAssistTextBox.ContentSyntaxValidator"/> property has been changed.
        /// </summary>
        /// <param name="validator">New validator</param>
        protected virtual void OnContentSyntaxValidatorChanged(IContentSyntaxValidator validator)
        {
            if (validator == null)
            {
                return;
            }

            // Lazy initialize resources
            if (iErrorLineStyle == null)
            {
                SyntaxHighlighter.AddResilientStyle(iErrorLineStyle   = new WavyLineStyle(255, Color.Red));
                SyntaxHighlighter.AddResilientStyle(iWarningLineStyle = new WavyLineStyle(255, Color.Yellow));
                SyntaxHighlighter.AddResilientStyle(iInfoLineStyle    = new WavyLineStyle(255, Color.Green));

                iErrorBitmap   = LoadBitmap("Error-32.png");
                iWarningBitmap = LoadBitmap("Warning-32.png");
                iInfoBitmap    = LoadBitmap("Info-32.png");
            }
        }