void EventNexus_DecorateLanguageElement(object sender, DecorateLanguageElementEventArgs args)
        {
            //Debug.WriteLine("EventNexus_DecorateLanguageElement");

            var settings = DrawLinesBetweenMethodsSettings.Current;

            if (!settings.Enabled)
                return;

            LanguageElement langElement = args.LanguageElement;

            //CodeRush.Documents.ActiveTextDocument.ge
            if ((langElement is Class) && settings.EnableOnClass
                || (langElement is Property) && settings.EnableOnProperty
                || (langElement is Method) && settings.EnableOnMethod
                || (langElement is Enumeration) && settings.EnableOnEnum)
            {
                //Debug.WriteLine("langElement: " + langElement);

                // Skip up over Comment, AttributeSection, XmlDocComment
                var commentsAndStuff = previousSiblings(langElement)
                    .TakeWhile(sibling => sibling is Comment || sibling is XmlDocComment || sibling is AttributeSection);

                langElement = commentsAndStuff.LastOrDefault() ?? langElement;

                //Debug.WriteLine(" > AddBackgroundAdornment ...");
                var adornment = new HorizontalLineDocAdornment(langElement);
                args.AddBackgroundAdornment(adornment);
            }
        }
        private void BlockPainterPlugIn_DecorateLanguageElement(object sender, DecorateLanguageElementEventArgs args)
        {
            DelimiterCapableBlock block = args.LanguageElement as DelimiterCapableBlock;

            if (block != null && block.HasDelimitedBlock && !_processedLines.Contains(block.EndLine))
            {
                IList<DelimiterCapableBlock> blocksOnLine = GetBlocksOnLine(block);
                DelimiterCapableBlock lastBlockOnLine = blocksOnLine[blocksOnLine.Count - 1];
                SourcePoint startPointToPaint = new SourcePoint(block.EndLine, lastBlockOnLine.EndOffset + 1);
                
                for (int i = 0; i < blocksOnLine.Count; i++)
                {
                    block = blocksOnLine[i];

                    IParameter blockTypeNameParameter = new Ninject.Parameters.Parameter(ParameterNames.BlockTypeName, block.GetType().Name, true);
                    IBlockPaintingStrategy strategy = _kernel.Get<IBlockPaintingStrategy>(blockTypeNameParameter);

                    if (i == 0)
                    {
                        startPointToPaint = strategy.PaintPrefix(block, args, startPointToPaint);
                    }

                    startPointToPaint = strategy.PaintBlock(block, args, startPointToPaint, blocksOnLine.Count > 1);
                }

                _processedLines.Add(block.EndLine);
            }
        }
        private void BlockPainterPlugIn_DecorateLanguageElement(object sender, DecorateLanguageElementEventArgs args)
        {
            DelimiterCapableBlock block = args.LanguageElement as DelimiterCapableBlock;

            if (block != null && block.HasDelimitedBlock && !_processedLines.Contains(block.EndLine))
            {
                IList <DelimiterCapableBlock> blocksOnLine    = GetBlocksOnLine(block);
                DelimiterCapableBlock         lastBlockOnLine = blocksOnLine[blocksOnLine.Count - 1];
                SourcePoint startPointToPaint = new SourcePoint(block.EndLine, lastBlockOnLine.EndOffset + 1);

                for (int i = 0; i < blocksOnLine.Count; i++)
                {
                    block = blocksOnLine[i];

                    IParameter             blockTypeNameParameter = new Ninject.Parameters.Parameter(ParameterNames.BlockTypeName, block.GetType().Name, true);
                    IBlockPaintingStrategy strategy = _kernel.Get <IBlockPaintingStrategy>(blockTypeNameParameter);

                    if (i == 0)
                    {
                        startPointToPaint = strategy.PaintPrefix(block, args, startPointToPaint);
                    }

                    startPointToPaint = strategy.PaintBlock(block, args, startPointToPaint, blocksOnLine.Count > 1);
                }

                _processedLines.Add(block.EndLine);
            }
        }
示例#4
0
        void EventNexus_DecorateLanguageElement(object sender, DecorateLanguageElementEventArgs args)
        {
            //Debug.WriteLine("EventNexus_DecorateLanguageElement");

            var settings = DrawLinesBetweenMethodsSettings.Current;

            if (!settings.Enabled)
            {
                return;
            }

            LanguageElement langElement = args.LanguageElement;

            //CodeRush.Documents.ActiveTextDocument.ge
            if ((langElement is Class) && settings.EnableOnClass ||
                (langElement is Property) && settings.EnableOnProperty ||
                (langElement is Method) && settings.EnableOnMethod ||
                (langElement is Enumeration) && settings.EnableOnEnum)
            {
                //Debug.WriteLine("langElement: " + langElement);

                // Skip up over Comment, AttributeSection, XmlDocComment
                var commentsAndStuff = previousSiblings(langElement)
                                       .TakeWhile(sibling => sibling is Comment || sibling is XmlDocComment || sibling is AttributeSection);

                langElement = commentsAndStuff.LastOrDefault() ?? langElement;

                //Debug.WriteLine(" > AddBackgroundAdornment ...");
                var adornment = new HorizontalLineDocAdornment(langElement);
                args.AddBackgroundAdornment(adornment);
            }
        }
示例#5
0
        private void PlugIn1_DecorateLanguageElement(object sender, DecorateLanguageElementEventArgs args)
        {
            LanguageElement element = args.LanguageElement;

            if (_DisplayTile && element.ElementType == LanguageElementType.Method && CanBeRun((Method)element))
            {
                DocPoint start = new DocPoint(element.StartLine, element.StartOffset);
                args.AddAdornment(new RunMethodTileDocumentAdornment(start, start, this, (Method)element));
            }
        }
        public virtual SourcePoint PaintPrefix(DelimiterCapableBlock block, DecorateLanguageElementEventArgs args, SourcePoint startPointToPaint)
        {
            SourcePoint result = startPointToPaint;
            if (Settings.Enabled && MeetsLengthRquirement(block)) 
            {
                args.AddForegroundAdornment( new BlockPrefixDocumentAdornment(startPointToPaint, Settings));

                result = startPointToPaint.OffsetPoint(0, Settings.PrefixText.Length + 1);
            }
            return result;
        }
 private SourceRange GetMethodBoxRange(DecorateLanguageElementEventArgs args, Method Method)
 {
     // Get all the lines of the method
     var Lines = args.TextDocument.GetLines(Method.StartLine, Method.EndLine - Method.StartLine);
     // determine the longest of these
     string Longest = (from line in Lines orderby line.Length descending select line).First();
     // Build and return a SourceRange around the method
     SourcePoint EndPoint = new SourcePoint(Method.EndLine, Longest.Length);
     SourcePoint StartPoint = new SourcePoint(Method.StartLine, Method.StartOffset);
     return new SourceRange(StartPoint, EndPoint);
 }
示例#8
0
 private void PlugIn1_DecorateLanguageElement(object sender, DecorateLanguageElementEventArgs args)
 {
     if (args.LanguageElement == null)
         return;
     if (args.LanguageElement.Parent == null)
         return;
     LanguageElementType[] Types = { LanguageElementType.Class, LanguageElementType.Struct, LanguageElementType.Method, LanguageElementType.Property };
     if (!Types.Contains(args.LanguageElement.Parent.ElementType))
         return;
     if (LineStartsWith(args.LanguageElement.StartLine, _settings.Prefixes))
         args.AddAdornment(new FadeOutAdornmentFactory(args.LanguageElement.Range));
 }
 private void PlugIn1_DecorateLanguageElement(object sender, DecorateLanguageElementEventArgs args)
 {
     // You must decide if it//s appropriate to decorate the LanguageElement in question.
     if (args.LanguageElement ==  null)
         return;
     // You must select a suitable TextDocumentAdornment derived class and pass it to the AddAdornment method.
     if (args.LanguageElement.ElementType != LanguageElementType.Method)
         return;
     var Method = (Method) args.LanguageElement;
     SourceRange range = GetMethodBoxRange(args, Method);
     args.AddAdornment(new BlueBoxAdornmentFactory(range));
 }
        public virtual SourcePoint PaintPrefix(DelimiterCapableBlock block, DecorateLanguageElementEventArgs args, SourcePoint startPointToPaint)
        {
            SourcePoint result = startPointToPaint;

            if (Settings.Enabled && MeetsLengthRquirement(block))
            {
                args.AddForegroundAdornment(new BlockPrefixDocumentAdornment(startPointToPaint, Settings));

                result = startPointToPaint.OffsetPoint(0, Settings.PrefixText.Length + 1);
            }
            return(result);
        }
示例#11
0
 private void CreateAttributeShadeAdornment(DecorateLanguageElementEventArgs args,
                                            DevExpress.CodeRush.StructuralParser.Attribute attribute,
                                            Method target,
                                            TestStatus status)
 {
     if (ShadeAttribute && status != TestStatus.Pending && status != TestStatus.PassedWithChanges && status != TestStatus.FailedWithChanges)
     {
         SourceRange shadedArea = new SourceRange(
             attribute.Parent.Range.Start,
             new SourcePoint(attribute.Range.End.Line, target.NameRange.End.Offset - 1));
         args.AddAdornment(new TestAttributeShaderAdornmentDocumentAdornment(shadedArea, status, AttributeColors));
     }
 }
        public override SourcePoint PaintBlock(DelimiterCapableBlock block, DecorateLanguageElementEventArgs args, SourcePoint startPointToPaint, bool multipleBlocksOnLine)
        {
            SourcePoint result = startPointToPaint;
            if (Settings.Enabled && MeetsLengthRquirement(block))
            {
                string customMetaString = String.Format("{0} '{1}'", Settings.BlockTypeName, (block as Struct).Name);
                
                args.AddForegroundAdornment(
                    new BlockMetaDataDocumentAdornment(startPointToPaint, Settings, customMetaString));

                result.OffsetPoint(0, customMetaString.Length);
            }
            return result;
        }
        public override SourcePoint PaintBlock(DelimiterCapableBlock block, DecorateLanguageElementEventArgs args, SourcePoint startPointToPaint, bool multipleBlocksOnLine)
        {
            SourcePoint result = startPointToPaint;

            if (Settings.Enabled && MeetsLengthRquirement(block))
            {
                string customMetaString = GetMethodMetaString(block as Method);

                args.AddForegroundAdornment(new BlockMetaDataDocumentAdornment(startPointToPaint, Settings, customMetaString));

                result = startPointToPaint.OffsetPoint(0, customMetaString.Length);
            }

            return(result);
        }
        public override SourcePoint PaintBlock(DelimiterCapableBlock block, DecorateLanguageElementEventArgs args, SourcePoint startPointToPaint, bool multipleBlocksOnLine)
        {
            SourcePoint result = startPointToPaint;
            if (Settings.Enabled && MeetsLengthRquirement(block))
            {
                StringBuilder customMetaBuilder = new StringBuilder();
                customMetaBuilder.Append(String.Format("{0} '{1}'", Settings.BlockTypeName, (block as Class).Name));
                GenericBlock.AppendGenericTypes(block as AccessSpecifiedElement, customMetaBuilder);
                GenericBlock.AppendGenericTemplate(block as AccessSpecifiedElement, customMetaBuilder);

                args.AddForegroundAdornment(
                    new BlockMetaDataDocumentAdornment(startPointToPaint, Settings, customMetaBuilder.ToString()));

                result = startPointToPaint.OffsetPoint(0, customMetaBuilder.Length);
            }
            return result;
        }
示例#15
0
        public override SourcePoint PaintBlock(DelimiterCapableBlock block, DecorateLanguageElementEventArgs args, SourcePoint startPointToPaint, bool multipleBlocksOnLine)
        {
            SourcePoint result = startPointToPaint;

            if (Settings.Enabled && MeetsLengthRquirement(block))
            {
                StringBuilder customMetaBuilder = new StringBuilder();
                customMetaBuilder.Append(String.Format("{0} '{1}'", Settings.BlockTypeName, (block as Class).Name));
                GenericBlock.AppendGenericTypes(block as AccessSpecifiedElement, customMetaBuilder);
                GenericBlock.AppendGenericTemplate(block as AccessSpecifiedElement, customMetaBuilder);

                args.AddForegroundAdornment(
                    new BlockMetaDataDocumentAdornment(startPointToPaint, Settings, customMetaBuilder.ToString()));

                result = startPointToPaint.OffsetPoint(0, customMetaBuilder.Length);
            }
            return(result);
        }
示例#16
0
 private void CreateErrorArrowAdornment(DecorateLanguageElementEventArgs args,
                                        DevExpress.CodeRush.StructuralParser.Attribute attribute,
                                        Method target,
                                        TestMethod test)
 {
     if (test.Status == TestStatus.Failure && DrawArrowToAssert)
     {
         ArrowDescription visibleArrow = new ArrowDescription(
             attribute,
             target,
             test.TestResults[0],
             new MessageLimiter(ShortenLongStrings, MaxContextLength, ConvertEscapeCharacters));
         args.AddAdornment(
             new FailedTestInspectorDocumentAdornment(
                 new DocPoint(attribute.StartLine, attribute.StartOffset),
                 new DocPoint(visibleArrow.End.Start.Line, visibleArrow.End.Start.Offset),
                 this,
                 visibleArrow));
     }
 }
        public virtual SourcePoint PaintBlock(DelimiterCapableBlock block, DecorateLanguageElementEventArgs args, SourcePoint startPointToPaint, bool multipleBlocksOnLine)
        {
            SourcePoint result = startPointToPaint;
            if (Settings.Enabled && MeetsLengthRquirement(block))
            {
                StringBuilder metaDataBuilder = new StringBuilder();
                metaDataBuilder.Append(Settings.BlockTypeName);

                if(Settings.ShowDetailedBlockMetaData)
                {
                    DetailedBlockMetaData.AppendDetailedBlockMetaData(block,multipleBlocksOnLine,metaDataBuilder);
                }

                args.AddForegroundAdornment( new BlockMetaDataDocumentAdornment(startPointToPaint, Settings, metaDataBuilder.ToString()));

                result = new SourcePoint(block.EndLine,  startPointToPaint.Offset + Settings.BlockTypeName.Length);
            }

            return result;
        }
		private void CreateErrorArrowAdornment(DecorateLanguageElementEventArgs args,
			DevExpress.CodeRush.StructuralParser.Attribute attribute,
			Method target,
			TestMethod test)
		{
			if (test.Status == TestStatus.Failure && DrawArrowToAssert)
			{
				ArrowDescription visibleArrow = new ArrowDescription(
													attribute,
													target,
													test.TestResults[0],
													new MessageLimiter(ShortenLongStrings, MaxContextLength, ConvertEscapeCharacters));
				args.AddAdornment(
					new FailedTestInspectorDocumentAdornment(
						new DocPoint(attribute.StartLine, attribute.StartOffset),
						new DocPoint(visibleArrow.End.Start.Line, visibleArrow.End.Start.Offset),
						this,
						visibleArrow));
			}
		}
        public virtual SourcePoint PaintBlock(DelimiterCapableBlock block, DecorateLanguageElementEventArgs args, SourcePoint startPointToPaint, bool multipleBlocksOnLine)
        {
            SourcePoint result = startPointToPaint;

            if (Settings.Enabled && MeetsLengthRquirement(block))
            {
                StringBuilder metaDataBuilder = new StringBuilder();
                metaDataBuilder.Append(Settings.BlockTypeName);

                if (Settings.ShowDetailedBlockMetaData)
                {
                    DetailedBlockMetaData.AppendDetailedBlockMetaData(block, multipleBlocksOnLine, metaDataBuilder);
                }

                args.AddForegroundAdornment(new BlockMetaDataDocumentAdornment(startPointToPaint, Settings, metaDataBuilder.ToString()));

                result = new SourcePoint(block.EndLine, startPointToPaint.Offset + Settings.BlockTypeName.Length);
            }

            return(result);
        }
示例#20
0
        private void PlugIn1_DecorateLanguageElement(object sender, DecorateLanguageElementEventArgs args)
        {
            LanguageElement element = args.LanguageElement;

            if (element.ElementType == LanguageElementType.Attribute)
            {
                DevExpress.CodeRush.StructuralParser.Attribute attribute = (DevExpress.CodeRush.StructuralParser.Attribute)element;
                if (attribute.TargetNode.ElementType == LanguageElementType.Method)
                {
                    Method target = (Method)attribute.TargetNode;
                    TestMethodCollection tests = CodeRush.UnitTests.Tests;
                    foreach (TestMethod test in tests)
                    {
                        if (target.Location == test.FullName)
                        {
                            CreateErrorArrowAdornment(args, attribute, target, test);
                            CreateAttributeShadeAdornment(args, attribute, target, test.Status);
                            //OverlayErrorNextToAssert(ea, test);
                        }
                    }
                }
            }
        }
		private void CreateAttributeShadeAdornment(DecorateLanguageElementEventArgs args, 
            DevExpress.CodeRush.StructuralParser.Attribute attribute, 
            Method target, 
            TestStatus status)
		{
			if (ShadeAttribute && status != TestStatus.Pending && status != TestStatus.PassedWithChanges && status != TestStatus.FailedWithChanges)
			{
				SourceRange shadedArea = new SourceRange(
					attribute.Parent.Range.Start, 
					new SourcePoint(attribute.Range.End.Line, target.NameRange.End.Offset - 1));
				args.AddAdornment(new TestAttributeShaderAdornmentDocumentAdornment(shadedArea, status, AttributeColors));
			}
		}
		private void PlugIn1_DecorateLanguageElement(object sender, DecorateLanguageElementEventArgs args)
		{
			LanguageElement element = args.LanguageElement;
			if (element.ElementType == LanguageElementType.Attribute)
			{
				DevExpress.CodeRush.StructuralParser.Attribute attribute = (DevExpress.CodeRush.StructuralParser.Attribute)element;
				if (attribute.TargetNode.ElementType == LanguageElementType.Method)
				{
					Method target = (Method)attribute.TargetNode;
					TestMethodCollection tests = CodeRush.UnitTests.Tests;
					foreach (TestMethod test in tests)
					{
						if (target.Location == test.FullName)
						{
							CreateErrorArrowAdornment(args, attribute, target, test);
							CreateAttributeShadeAdornment(args, attribute, target, test.Status);
							//OverlayErrorNextToAssert(ea, test);
						}
					}
				}
			}

		}
 private void PlugIn1_DecorateLanguageElement(object sender, DecorateLanguageElementEventArgs args)
 {
     LanguageElement element = args.LanguageElement;
     if (_DisplayTile && element.ElementType == LanguageElementType.Method && CanBeRun((Method)element))
     {
         DocPoint start = new DocPoint(element.StartLine, element.StartOffset);
         args.AddAdornment(new RunMethodTileDocumentAdornment(start, start, this, (Method)element));
     }
 }