public void ConstructMenu(GetSmartTagItemsEventArgs ea)
        {
            var artifacts = new ApprovalArtifacts(CodeRush.Source.ActiveMethod);

            ea.Add(new RunTestItem("Test"));

            if (artifacts.HasReceivedFile())
            {
                var received = new SmartTagItem("Received File");
                received.AddItem(new OpenFileItem("View", artifacts.Received));
                received.AddItem(new CopyPathItem("Copy File Path", artifacts.Received));
                received.AddItem(new OpenInExplorerItem("Show in Explorer", artifacts.Received));
                ea.Add(received);
            }

            var approved = new SmartTagItem("Approved File");
            approved.AddItem(new OpenFileItem("View", artifacts.Approved));
            approved.AddItem(new CopyPathItem("Copy File Path", artifacts.Approved));
            approved.AddItem(new OpenInExplorerItem("Show in Explorer", artifacts.Approved));
            approved.AddItem(new LoadApproveItem("Set Approval", artifacts.Approved));
            ea.Add(approved);

            if (artifacts.HasReceivedFile() && artifacts.HasApprovalFile())
                ea.Add(new DiffItem("Diff", artifacts.Received, artifacts.Approved));

            if (artifacts.HasReceivedFile()) {
                ea.Add(new OpenFileItem("View Received", artifacts.Received));
                ea.Add(new ApproveItem("Approve", artifacts.Received, artifacts.Approved));
            }
        }
        private void ApprovalTestsPlugin_EditorPaintLanguageElement(EditorPaintLanguageElementEventArgs ea)
        {
            LanguageElement element = ea.LanguageElement;

            if (IsApproveCall(element) && element.ElementType == LanguageElementType.MethodCall)
            {
                var approvalFiles = new ApprovalArtifacts(element.GetMethod());
                Color lineColor = GetColorForApproval(approvalFiles.TestStatus);

                SourceRange range = element.Range;
                ea.PaintArgs.DrawLine(range.Start.Line, range.Start.Offset, range.End.Offset - range.Start.Offset, lineColor,
                                      LineStyle.SolidUnderline);
            }
        }