public void Init()
        {
            ServiceContainer container = new ServiceContainer();

            markerService = new MockTextMarkerService();
            container.AddService(typeof(ITextMarkerService), markerService);

            // Add xpath marker to document.
            AvalonEditDocumentAdapter doc = new AvalonEditDocumentAdapter(new ICSharpCode.AvalonEdit.Document.TextDocument(), container);

            doc.Text = "<Test/>";
            XPathNodeTextMarker xpathNodeMarker = new XPathNodeTextMarker(doc);
            XPathNodeMatch      nodeMatch       = new XPathNodeMatch("Test", "<Test/>", 0, 1, XPathNodeType.Element);

            xpathNodeMarker.AddMarker(nodeMatch);

            // Add non text editor provider view to workbench.
            workbench = new MockWorkbench();

            nonTextEditorProviderView = new MockViewContent();
            workbench.ViewContentCollection.Add(nonTextEditorProviderView);

            // Add document to view content.
            textEditorView = new MockTextEditorProviderViewContent();
            textEditorView.MockTextEditor.SetDocument(doc);
            workbench.ViewContentCollection.Add(textEditorView);

            command = new RemoveXPathHighlightingCommand(workbench);
        }
        public EditorView(ITextMarkerService textMarkerService)
        {
            _textMarkerService = textMarkerService;

            InitializeComponent();

            ErrorsRow.Height = new GridLength(0);

            var rowStyle = new Style(typeof(DataGridRow), (Style)FindResource("MetroDataGridRow"));

            rowStyle.Setters.Add(new EventSetter(MouseDoubleClickEvent,
                                                 new MouseButtonEventHandler(OnErrorsGridMouseDoubleClick)));
            ErrorsGrid.RowStyle = rowStyle;

            _foldingManager  = FoldingManager.Install(TextEditor.TextArea);
            _foldingStrategy = new XmlFoldingStrategy();

            TextEditor.TextChanged += (sender, args) =>
            {
                _foldingStrategy.UpdateFoldings(_foldingManager, TextEditor.Document);
            };

            _textMarkerService.SetTextEditor(TextEditor);

            var textView = TextEditor.TextArea.TextView;

            textView.BackgroundRenderers.Add(_textMarkerService);
            textView.LineTransformers.Add(_textMarkerService);
            textView.Services.AddService(typeof(ITextMarkerService), _textMarkerService);

            textView.MouseHover         += MouseHover;
            textView.MouseHoverStopped  += TextEditorMouseHoverStopped;
            textView.VisualLinesChanged += VisualLinesChanged;
        }
        public void NamespaceQuery()
        {
            string xml =
                "<?xml version='1.0'?>\r\n" +
                "<Xml1></Xml1>";
            XPathQuery query = new XPathQuery(xml);

            XPathNodeMatch[] nodes = query.FindNodes("//namespace::*");

            ServiceContainer container = new ServiceContainer();

            container.AddService(typeof(MockTextMarkerService), new MockTextMarkerService());

            AvalonEditDocumentAdapter doc = new AvalonEditDocumentAdapter(new ICSharpCode.AvalonEdit.Document.TextDocument(), container);

            doc.Text = xml;
            XPathNodeTextMarker xpathNodeMarker = new XPathNodeTextMarker(doc);

            xpathNodeMarker.AddMarkers(nodes);

            ITextMarkerService service = doc.GetService(typeof(MockTextMarkerService)) as ITextMarkerService;
            List <ITextMarker> markers = new List <ITextMarker>(service.TextMarkers);

            Assert.AreEqual(0, markers.Count);
            Assert.AreEqual(1, nodes.Length);
        }
        public void EmptyCommentNode()
        {
            string     xml   = "<!----><root/>";
            XPathQuery query = new XPathQuery(xml);

            XPathNodeMatch[] nodes = query.FindNodes("//comment()");

            ServiceContainer container = new ServiceContainer();

            container.AddService(typeof(MockTextMarkerService), new MockTextMarkerService());

            IDocument doc = new ICSharpCode.AvalonEdit.Document.TextDocument()
            {
                ServiceProvider = container
            };

            doc.Text = xml;
            XPathNodeTextMarker xpathNodeMarker = new XPathNodeTextMarker(doc);

            xpathNodeMarker.AddMarkers(nodes);

            ITextMarkerService service = doc.GetService(typeof(MockTextMarkerService)) as ITextMarkerService;
            List <ITextMarker> markers = new List <ITextMarker>(service.TextMarkers);

            Assert.AreEqual(0, markers.Count);
            Assert.AreEqual(1, nodes.Length);
        }
        public void ShowExample(TextArea exampleTextArea)
        {
            string exampleText            = StringParser.Parse(color.ExampleText, GetXshdProperties().ToArray());
            int    semanticHighlightStart = exampleText.IndexOf("#{#", StringComparison.OrdinalIgnoreCase);
            int    semanticHighlightEnd   = exampleText.IndexOf("#}#", StringComparison.OrdinalIgnoreCase);

            if (semanticHighlightStart > -1 && semanticHighlightEnd >= semanticHighlightStart + 3)
            {
                semanticHighlightEnd -= 3;
                exampleText           = exampleText.Remove(semanticHighlightStart, 3).Remove(semanticHighlightEnd, 3);
                ITextMarkerService svc = exampleTextArea.GetService(typeof(ITextMarkerService)) as ITextMarkerService;
                exampleTextArea.Document.Text = exampleText;
                if (svc != null)
                {
                    ITextMarker m = svc.Create(semanticHighlightStart, semanticHighlightEnd - semanticHighlightStart);
                    m.Tag = (Action <IHighlightingItem, ITextMarker>)(
                        (IHighlightingItem item, ITextMarker marker) => {
                        marker.BackgroundColor = item.Background;
                        marker.ForegroundColor = item.Foreground;
                        marker.FontStyle       = item.Italic ? FontStyles.Italic : FontStyles.Normal;
                        marker.FontWeight      = item.Bold ? FontWeights.Bold : FontWeights.Normal;
                        if (item.Underline)
                        {
                            marker.MarkerColor = item.Foreground;
                            marker.MarkerTypes = TextMarkerTypes.NormalUnderline;
                        }
                    });
                }
            }
            else
            {
                exampleTextArea.Document.Text = exampleText;
            }
        }
		public void SetUpTestFixture()
		{
			try {
				string configFolder = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "NCoverAddIn.Tests");
				PropertyService.InitializeService(configFolder, Path.Combine(configFolder, "data"), "NCoverAddIn.Tests");
			} catch (Exception) {}
			
			document = MockTextMarkerService.CreateDocumentWithMockService();
			markerStrategy = document.GetService(typeof(ITextMarkerService)) as ITextMarkerService;
			string code = "\t\t{\r\n" +
				"\t\t\tint count = 0;\r\n" +
				"\t\t}\r\n";
			document.Text = code;
			
			string xml = "<PartCoverReport>\r\n" +
				"\t<File id=\"1\" url=\"c:\\Projects\\Foo\\FooTestFixture.cs\"/>\r\n" +
				"\t<Assembly id=\"1\" name=\"Foo.Tests\" module=\"C:\\Projects\\Test\\bin\\Foo.Tests.DLL\" domain=\"test-domain-Foo.Tests.dll\" domainIdx=\"1\" />\r\n" +
				"\t<Type name=\"Foo.Tests.FooTestFixture\" asmref=\"1\">\r\n" +
				"\t\t<Method name=\"SimpleTest\">\r\n" +
				"\t\t\t<pt visit=\"1\" sl=\"1\" sc=\"3\" el=\"1\" ec=\"4\" fid=\"1\" />\r\n" +
				"\t\t\t<pt visit=\"1\" sl=\"2\" sc=\"4\" el=\"2\" ec=\"18\" fid=\"1\" />\r\n" +
				"\t\t\t<pt visit=\"0\" sl=\"3\" sc=\"3\" el=\"3\" ec=\"4\" fid=\"1\" />\r\n" +
				"\t\t</Method>\r\n" +
				"\t</Type>\r\n" +
				"</PartCoverReport>";
			CodeCoverageResults results = new CodeCoverageResults(new StringReader(xml));
			CodeCoverageMethod method = results.Modules[0].Methods[0];
			CodeCoverageHighlighter highlighter = new CodeCoverageHighlighter();
			highlighter.AddMarkers(document, method.SequencePoints);	
			
			// Add non-code coverage markers.
			markerStrategy.Create(0, 2);
			markerStrategy.Create(4, 5);
		}
Exemple #7
0
        public void Init()
        {
            IDocument doc = MockTextMarkerService.CreateDocumentWithMockService();

            markerService = doc.GetRequiredService <ITextMarkerService>();

            // Add xpath marker to document.
            doc.Text = "<Test/>";
            XPathNodeTextMarker xpathNodeMarker = new XPathNodeTextMarker(doc);
            XPathNodeMatch      nodeMatch       = new XPathNodeMatch("Test", "<Test/>", 0, 1, XPathNodeType.Element);

            xpathNodeMarker.AddMarker(nodeMatch);

            // Add non text editor provider view to workbench.
            workbench = MockRepository.GenerateStrictMock <IWorkbench>();
            workbench.Stub(w => w.ViewContentCollection).Return(new List <IViewContent>());

            nonTextEditorProviderView = new MockViewContent();
            workbench.ViewContentCollection.Add(nonTextEditorProviderView);

            // Add document to view content.
            textEditorView = new MockTextEditorProviderViewContent();
            textEditorView.MockTextEditor.SetDocument(doc);
            workbench.ViewContentCollection.Add(textEditorView);

            command = new RemoveXPathHighlightingCommand(workbench);
        }
        public void Init()
        {
            try {
                string configFolder = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "NCoverAddIn.Tests");
                PropertyService.InitializeService(configFolder, Path.Combine(configFolder, "data"), "NCoverAddIn.Tests");
            } catch (Exception) {}

            IDocument          document       = MockTextMarkerService.CreateDocumentWithMockService();
            ITextMarkerService markerStrategy = document.GetService(typeof(ITextMarkerService)) as ITextMarkerService;

            string xml = "<PartCoverReport>\r\n" +
                         "\t<File id=\"1\" url=\"c:\\Projects\\XmlEditor\\Test\\Schema\\SingleElementSchemaTestFixture.cs\"/>\r\n" +
                         "\t<Assembly id=\"1\" name=\"XmlEditor.Tests\" module=\"C:\\Projects\\Test\\XmlEditor.Tests\\bin\\XmlEditor.Tests.DLL\" domain=\"test-domain-XmlEditor.Tests.dll\" domainIdx=\"1\" />\r\n" +
                         "\t<Type name=\"XmlEditor.Tests.Schema.SingleElementSchemaTestFixture\" asmref=\"1\">\r\n" +
                         "\t\t<Method name=\"GetSchema\">\r\n" +
                         "\t\t\t<pt visit=\"1\" fid=\"1\" sl=\"0\" sc=\"3\" el=\"0\" ec=\"4\" />\r\n" +
                         "\t\t\t<pt visit=\"1\" fid=\"1\" sl=\"-1\" sc=\"4\" el=\"9\" ec=\"20\" />\r\n" +
                         "\t\t\t<pt visit=\"1\" fid=\"1\" sl=\"10\" sc=\"3\" el=\"10\" ec=\"4\" />\r\n" +
                         "\t\t</Method>\r\n" +
                         "\t</Type>\r\n" +
                         "</PartCoverReport>";

            CodeCoverageResults     results     = new CodeCoverageResults(new StringReader(xml));
            CodeCoverageMethod      method      = results.Modules[0].Methods[0];
            CodeCoverageHighlighter highlighter = new CodeCoverageHighlighter();

            highlighter.AddMarkers(document, method.SequencePoints);

            markers = new List <ITextMarker>();
            foreach (ITextMarker marker in markerStrategy.TextMarkers)
            {
                markers.Add(marker);
            }
        }
        public void Init()
        {
            IDocument doc = MockTextMarkerService.CreateDocumentWithMockService();
            markerService = doc.GetRequiredService<ITextMarkerService>();

            // Add xpath marker to document.
            doc.Text = "<Test/>";
            XPathNodeTextMarker xpathNodeMarker = new XPathNodeTextMarker(doc);
            XPathNodeMatch nodeMatch = new XPathNodeMatch("Test", "<Test/>", 0, 1, XPathNodeType.Element);
            xpathNodeMarker.AddMarker(nodeMatch);

            // Add non text editor provider view to workbench.
            workbench = MockRepository.GenerateStrictMock<IWorkbench>();
            workbench.Stub(w => w.ViewContentCollection).Return(new List<IViewContent>());

            nonTextEditorProviderView = new MockViewContent();
            workbench.ViewContentCollection.Add(nonTextEditorProviderView);

            // Add document to view content.
            textEditorView = new MockTextEditorProviderViewContent();
            textEditorView.MockTextEditor.SetDocument(doc);
            workbench.ViewContentCollection.Add(textEditorView);

            command = new RemoveXPathHighlightingCommand(workbench);
        }
		public void Init()
		{
			ServiceContainer container = new ServiceContainer();
			markerService = new MockTextMarkerService();
			container.AddService(typeof(ITextMarkerService), markerService);
			
			// Add xpath marker to document.
			AvalonEditDocumentAdapter doc = new AvalonEditDocumentAdapter(new ICSharpCode.AvalonEdit.Document.TextDocument(), container);
			doc.Text = "<Test/>";
			XPathNodeTextMarker xpathNodeMarker = new XPathNodeTextMarker(doc);
			XPathNodeMatch nodeMatch = new XPathNodeMatch("Test", "<Test/>", 0, 1, XPathNodeType.Element);
			xpathNodeMarker.AddMarker(nodeMatch);
			
			// Add non text editor provider view to workbench.
			workbench = new MockWorkbench();
			
			nonTextEditorProviderView = new MockViewContent();
			workbench.ViewContentCollection.Add(nonTextEditorProviderView);

			// Add document to view content.
			textEditorView = new MockTextEditorProviderViewContent();
			textEditorView.MockTextEditor.SetDocument(doc);
			workbench.ViewContentCollection.Add(textEditorView);
			
			command = new RemoveXPathHighlightingCommand(workbench);
		}
		/// <summary>
		/// <inheritdoc/>
		/// </summary>
		/// <param name="markerService"><inheritdoc/></param>
		/// <returns><inheritdoc/></returns>
		protected override ITextMarker CreateMarker(ITextMarkerService markerService)
		{
			IDocumentLine line = this.Document.GetLine(this.LineNumber);
			ITextMarker marker = markerService.Create(line.Offset, line.Length);
			marker.BackgroundColor = Color.FromRgb(162, 208, 80);
			marker.ForegroundColor = Colors.White;
			return marker;
		}
Exemple #12
0
 public IssueManager(ITextEditor editor)
 {
     this.editor        = editor;
     this.markerService = editor.GetService(typeof(ITextMarkerService)) as ITextMarkerService;
     //SD.ParserService.ParserUpdateStepFinished += ParserService_ParserUpdateStepFinished;
     SD.ParserService.ParseInformationUpdated += new EventHandler <ParseInformationEventArgs>(SD_ParserService_ParseInformationUpdated);
     editor.ContextActionProviders.Add(this);
 }
Exemple #13
0
        protected override ITextMarker CreateMarker(ITextMarkerService markerService)
        {
            ITextMarker marker = null;

            marker.BackgroundColor = System.Windows.Media.Color.FromRgb(180, 38, 38);
            marker.ForegroundColor = Colors.White;
            return(marker);
        }
		static bool ContainsNonCodeCoverageMarkers(ITextMarkerService markerStrategy)
		{			
			foreach (ITextMarker marker in markerStrategy.TextMarkers) {
				if ((Type)marker.Tag != typeof(CodeCoverageHighlighter)) {
					return true;
				}
			}
			return false;
		}
Exemple #15
0
 public void Init()
 {
     document      = MockTextMarkerService.CreateDocumentWithMockService();
     markerService = document.GetService(typeof(ITextMarkerService)) as ITextMarkerService;
     document.Text =
         "{\r\n" +
         "    int count = 0;\r\n" +
         "}\r\n";
 }
		public void SetUpFixture()
		{
			try {
				string configFolder = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "NCoverAddIn.Tests");
				PropertyService.InitializeService(configFolder, Path.Combine(configFolder, "data"), "NCoverAddIn.Tests");
			} catch (Exception) {}
			
			document = MockTextMarkerService.CreateDocumentWithMockService();
			string code = "\t\t{\r\n" +
				"\t\t\tint count = 0;\r\n" +
				"\t\t}\r\n";
			document.Text = code;
			markerStrategy = document.GetService(typeof(ITextMarkerService)) as ITextMarkerService;
			
			string xml = "<CoverageSession xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">\r\n" +
				"\t<Modules>\r\n" +
				"\t\t<Module hash=\"44-54-B6-13-97-49-45-F8-6A-74-9E-49-0C-77-87-C6-9C-54-47-7A\">\r\n" +
				"\t\t\t<FullName>C:\\Projects\\Test\\Foo.Tests\\bin\\Foo.Tests.DLL</FullName>\r\n" +
				"\t\t\t<ModuleName>Foo.Tests</ModuleName>\r\n" +
				"\t\t\t<Files>\r\n" +
				"\t\t\t\t<File uid=\"1\" fullPath=\"c:\\Projects\\Foo\\FooTestFixture.cs\" />\r\n" +
				"\t\t\t</Files>\r\n" +
				"\t\t\t<Classes>\r\n" +
				"\t\t\t\t<Class>\r\n" +
				"\t\t\t\t\t<FullName>Foo.Tests.FooTestFixture</FullName>\r\n" +
				"\t\t\t\t\t<Methods>\r\n" +
				"\t\t\t\t\t\t<Method visited=\"true\" cyclomaticComplexity=\"1\" sequenceCoverage=\"100\" branchCoverage=\"100\" isConstructor=\"false\" isStatic=\"false\" isGetter=\"false\" isSetter=\"false\">\r\n" +
				"\t\t\t\t\t\t\t<MetadataToken>100663297</MetadataToken>\r\n" +
				"\t\t\t\t\t\t\t<Name>System.Void Foo.Tests.FooTestFixture::SimpleTest()</Name>\r\n" +
				"\t\t\t\t\t\t\t<FileRef uid=\"1\" />\r\n" +
				"\t\t\t\t\t\t\t<SequencePoints>\r\n" +
				"\t\t\t\t\t\t\t\t<SequencePoint vc=\"1\" sl=\"1\" sc=\"3\" el=\"1\" ec=\"4\" />\r\n" +
				"\t\t\t\t\t\t\t\t<SequencePoint vc=\"1\" sl=\"2\" sc=\"4\" el=\"2\" ec=\"18\" />\r\n" +
				"\t\t\t\t\t\t\t\t<SequencePoint vc=\"0\" sl=\"3\" sc=\"3\" el=\"3\" ec=\"4\" />\r\n" +
				"\t\t\t\t\t\t\t</SequencePoints>\r\n" +
				"\t\t\t\t\t\t</Method>\r\n" +
				"\t\t\t\t\t</Methods>\r\n" +
				"\t\t\t\t</Class>\r\n" +
				"\t\t\t</Classes>\r\n" +
				"\t\t</Module>\r\n" +
				"\t</Modules>\r\n" +
				"</CoverageSession>";
			CodeCoverageResults results = new CodeCoverageResults(new StringReader(xml));
			CodeCoverageMethod method = results.Modules[0].Methods[0];
			CodeCoverageHighlighter highlighter = new CodeCoverageHighlighter();
			highlighter.AddMarkers(document, method.SequencePoints);
			
			foreach (ITextMarker marker in markerStrategy.TextMarkers) {
				if (markerOne == null) {
					markerOne = marker;
				} else if (markerTwo == null) {
					markerTwo = marker;
				} else if (markerThree == null) {
					markerThree = marker;
				}
			}
		}
		public void Init()
		{
			document = MockTextMarkerService.CreateDocumentWithMockService();
			markerService = document.GetService(typeof(ITextMarkerService)) as ITextMarkerService;
			document.Text = 
				"{\r\n" +
				"    int count = 0;\r\n" +
				"}\r\n";
		}
        /// <summary>
        /// Removes all markers from the given view content or text editor.
        /// </summary>
        public static void RemoveMarkers(IServiceProvider serviceProvider)
        {
            ITextMarkerService markerService = serviceProvider.GetService(typeof(ITextMarkerService)) as ITextMarkerService;

            if (markerService != null)
            {
                markerService.RemoveAll(IsXPathNodeTextMarker);
            }
        }
Exemple #19
0
		public ITextMarker CreateMarker(DecompilerTextView textView, ITextMarkerService markerService) {
			var marker = CreateMarkerInternal(markerService, textView);
			var cm = textView == null ? null : textView.CodeMappings;
			marker.ZOrder = ZOrder;
			marker.IsVisible = b => cm != null && cm.ContainsKey(MethodKey);
			marker.TextMarkerObject = this;
			Initialize(textView, markerService, marker);
			return marker;
		}
Exemple #20
0
		public ITextMarker CreateMarker(ITextEditorUIContext uiContext, ITextMarkerService markerService) {
			var marker = CreateMarkerInternal(markerService, uiContext);
			var cm = uiContext.GetCodeMappings();
			marker.ZOrder = ZOrder;
			marker.IsVisible = b => cm.TryGetMapping(SerializedDnToken) != null;
			marker.TextMarkerObject = this;
			Initialize(uiContext, markerService, marker);
			return marker;
		}
        protected override ITextMarker CreateMarker(ITextMarkerService markerService)
        {
            IDocumentLine line   = this.Document.GetLine(startLine);
            ITextMarker   marker = markerService.Create(line.Offset + startColumn - 1, Math.Max(endColumn - startColumn, 1));

            marker.BackgroundColor = Colors.Yellow;
            marker.ForegroundColor = Colors.Blue;
            return(marker);
        }
Exemple #22
0
        public void RemoveMarkers()
        {
            ITextMarkerService markerService = document.GetService(typeof(ITextMarkerService)) as ITextMarkerService;

            if (markerService != null)
            {
                markerService.RemoveAll(IsXPathNodeTextMarker);
            }
        }
Exemple #23
0
        /// <summary>
        /// Removes all CodeCoverageMarkers from the marker strategy.
        /// </summary>
        public void RemoveMarkers(IDocument document)
        {
            ITextMarkerService markerService = document.GetService(typeof(ITextMarkerService)) as ITextMarkerService;

            if (markerService != null)
            {
                markerService.RemoveAll(IsCodeCoverageTextMarker);
            }
        }
        protected override ITextMarker CreateMarker(ITextMarkerService markerService)
        {
            IDocumentLine line   = this.Document.GetLine(this.LineNumber);
            ITextMarker   marker = markerService.Create(line.Offset, line.Length);

            marker.BackgroundColor = Color.FromRgb(180, 38, 38);
            marker.ForegroundColor = Colors.White;
            return(marker);
        }
Exemple #25
0
 public IssueManager(ITextEditor editor)
 {
     this.editor        = editor;
     this.markerService = editor.GetService(typeof(ITextMarkerService)) as ITextMarkerService;
     //SD.ParserService.ParserUpdateStepFinished += ParserService_ParserUpdateStepFinished;
     SD.ParserService.ParseInformationUpdated             += SD_ParserService_ParseInformationUpdated;
     SD.ParserService.LoadSolutionProjectsThread.Finished += RerunAnalysis;
     IssueSeveritySettingsSaved += RerunAnalysis;             // re-run analysis when settings are changed
     editor.ContextActionProviders.Add(this);
 }
        public void Init()
        {
            try {
                //string configFolder = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "NCoverAddIn.Tests");
                //PropertyService.InitializeService(configFolder, Path.Combine(configFolder, "data"), "NCoverAddIn.Tests");
            } catch (Exception) {}

            IDocument          document       = MockTextMarkerService.CreateDocumentWithMockService();
            ITextMarkerService markerStrategy = document.GetService(typeof(ITextMarkerService)) as ITextMarkerService;

            // Give doc 3 lines (end line seems to be counted as an extra line).
            document.Text = "abc\r\ndef";

            string xml = "<CoverageSession xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">\r\n" +
                         "\t<Modules>\r\n" +
                         "\t\t<Module hash=\"44-54-B6-13-97-49-45-F8-6A-74-9E-49-0C-77-87-C6-9C-54-47-7A\">\r\n" +
                         "\t\t\t<FullName>C:\\Projects\\Test\\Foo.Tests\\bin\\Foo.Tests.DLL</FullName>\r\n" +
                         "\t\t\t<ModuleName>Foo.Tests</ModuleName>\r\n" +
                         "\t\t\t<Files>\r\n" +
                         "\t\t\t\t<File uid=\"1\" fullPath=\"c:\\Projects\\Foo\\FooTestFixture.cs\" />\r\n" +
                         "\t\t\t</Files>\r\n" +
                         "\t\t\t<Classes>\r\n" +
                         "\t\t\t\t<Class>\r\n" +
                         "\t\t\t\t\t<FullName>Foo.Tests.FooTestFixture</FullName>\r\n" +
                         "\t\t\t\t\t<Methods>\r\n" +
                         "\t\t\t\t\t\t<Method visited=\"true\" cyclomaticComplexity=\"1\" sequenceCoverage=\"100\" branchCoverage=\"100\" isConstructor=\"false\" isStatic=\"false\" isGetter=\"false\" isSetter=\"false\">\r\n" +
                         "\t\t\t\t\t\t\t<MetadataToken>100663297</MetadataToken>\r\n" +
                         "\t\t\t\t\t\t\t<Name>System.Void Foo.Tests.FooTestFixture::SimpleTest()</Name>\r\n" +
                         "\t\t\t\t\t\t\t<FileRef uid=\"1\" />\r\n" +
                         "\t\t\t\t\t\t\t<SequencePoints>\r\n" +
                         "\t\t\t\t\t\t\t\t<SequencePoint vc=\"1\" sl=\"3\" sc=\"3\" el=\"4\" ec=\"4\" />\r\n" +
                         "\t\t\t\t\t\t\t\t<SequencePoint vc=\"1\" sl=\"1\" sc=\"4\" el=\"5\" ec=\"20\" />\r\n" +
                         "\t\t\t\t\t\t\t\t<SequencePoint vc=\"1\" sl=\"1\" sc=\"4\" el=\"-1\" ec=\"20\" />\r\n" +
                         "\t\t\t\t\t\t\t\t<SequencePoint vc=\"1\" sl=\"1\" sc=\"4\" el=\"0\" ec=\"20\" />\r\n" +
                         "\t\t\t\t\t\t\t</SequencePoints>\r\n" +
                         "\t\t\t\t\t\t</Method>\r\n" +
                         "\t\t\t\t\t</Methods>\r\n" +
                         "\t\t\t\t</Class>\r\n" +
                         "\t\t\t</Classes>\r\n" +
                         "\t\t</Module>\r\n" +
                         "\t</Modules>\r\n" +
                         "</CoverageSession>";

            CodeCoverageResults     results     = new CodeCoverageResults(new StringReader(xml));
            CodeCoverageMethod      method      = results.Modules[0].Methods[0];
            CodeCoverageHighlighter highlighter = new CodeCoverageHighlighter();

            highlighter.AddMarkers(document, method.SequencePoints);

            markers = new List <ITextMarker>();
            foreach (ITextMarker marker in markerStrategy.TextMarkers)
            {
                markers.Add(marker);
            }
        }
Exemple #27
0
        public override ITextMarker CreateMarker(ITextMarkerService markerService, DecompilerTextView textView)
        {
            ITextMarker marker = CreateMarkerInternal(markerService, textView);
            var         cm     = textView == null ? null : textView.CodeMappings;

            marker.ZOrder            = ZOrder;
            marker.HighlightingColor = () => IsEnabled ? HighlightingColor : DisabledHighlightingColor;
            marker.IsVisible         = b => cm != null && b is BreakpointBookmark && cm.ContainsKey(((BreakpointBookmark)b).MethodKey);
            marker.Bookmark          = this;
            return(marker);
        }
 static bool ContainsNonCodeCoverageMarkers(ITextMarkerService markerStrategy)
 {
     foreach (ITextMarker marker in markerStrategy.TextMarkers)
     {
         if ((Type)marker.Tag != typeof(CodeCoverageHighlighter))
         {
             return(true);
         }
     }
     return(false);
 }
Exemple #29
0
		public override ITextMarker CreateMarker(ITextMarkerService markerService, int offset, int length)
		{
			ITextMarker marker = markerService.Create(offset + startColumn - 1, length + 1);
			marker.BackgroundColor = Colors.Yellow;
			marker.ForegroundColor = Colors.Blue;
			marker.IsVisible = b => b is MarkerBookmark && DebugInformation.DecompiledMemberReferences != null &&
				DebugInformation.DecompiledMemberReferences.ContainsKey(((MarkerBookmark)b).MemberReference.MetadataToken.ToInt32());
			marker.Bookmark = this;
			this.Marker = marker;
			return marker;
		}
Exemple #30
0
        public ITextMarker CreateMarker(DecompilerTextView textView, ITextMarkerService markerService)
        {
            var marker = CreateMarkerInternal(markerService, textView);
            var cm     = textView == null ? null : textView.CodeMappings;

            marker.ZOrder           = ZOrder;
            marker.IsVisible        = b => cm != null && cm.ContainsKey(SerializedDnSpyToken);
            marker.TextMarkerObject = this;
            Initialize(textView, markerService, marker);
            return(marker);
        }
Exemple #31
0
        public ITextMarker CreateMarker(ITextEditorUIContext uiContext, ITextMarkerService markerService)
        {
            var marker = CreateMarkerInternal(markerService, uiContext);
            var cm     = uiContext.GetCodeMappings();

            marker.ZOrder           = ZOrder;
            marker.IsVisible        = b => cm.TryGetMapping(SerializedDnToken) != null;
            marker.TextMarkerObject = this;
            Initialize(uiContext, markerService, marker);
            return(marker);
        }
Exemple #32
0
        void InitializeTextMarkerService()
        {
            var textMarkerService = new TextMarkerService(CodeEditor.Document);

            CodeEditor.TextArea.TextView.BackgroundRenderers.Add(textMarkerService);
            CodeEditor.TextArea.TextView.LineTransformers.Add(textMarkerService);
            var services = (IServiceContainer)CodeEditor.Document.ServiceProvider.GetService(typeof(IServiceContainer));

            services?.AddService(typeof(ITextMarkerService), textMarkerService);

            _textMarkerService = textMarkerService;
        }
 private void SetMarker()
 {
     RemoveMarker();
     if (this.Document != null)
     {
         ITextMarkerService markerService = this.Document.GetService(typeof(ITextMarkerService)) as ITextMarkerService;
         if (markerService != null)
         {
             marker = CreateMarker(markerService);
         }
     }
 }
Exemple #34
0
        public override ITextMarker CreateMarker(ITextMarkerService markerService, int offset, int length)
        {
            ITextMarker marker = markerService.Create(offset + startColumn - 1, length + 1);

            marker.BackgroundColor = Colors.Yellow;
            marker.ForegroundColor = Colors.Blue;
            marker.IsVisible       = b => b is MarkerBookmark && DebugInformation.CodeMappings != null &&
                                     DebugInformation.CodeMappings.ContainsKey(((MarkerBookmark)b).MemberReference.MDToken.ToInt32());
            marker.Bookmark = this;
            this.Marker     = marker;
            return(marker);
        }
        public override ITextMarker CreateMarker(ITextMarkerService markerService, int offset, int length)
        {
            ITextMarker marker = markerService.Create(offset, length);

            marker.BackgroundColor = Color.FromRgb(180, 38, 38);
            marker.ForegroundColor = Colors.White;
            marker.IsVisible       = b => b is BreakpointBookmark && DebugInformation.CodeMappings != null &&
                                     DebugInformation.CodeMappings.ContainsKey(((BreakpointBookmark)b).FunctionToken);
            marker.Bookmark = this;
            this.Marker     = marker;

            return(marker);
        }
Exemple #36
0
        public override ITextMarker CreateMarker(ITextMarkerService markerService, int offset, int length)
        {
            ITextMarker marker = markerService.Create(offset, length);

            marker.BackgroundColor = Color.FromRgb(180, 38, 38);
            marker.ForegroundColor = Colors.White;
            marker.IsVisible       = b => b is MarkerBookmark && DebugInformation.DecompiledMemberReferences != null &&
                                     DebugInformation.DecompiledMemberReferences.ContainsKey(((MarkerBookmark)b).MemberReference.MetadataToken.ToInt32());
            marker.Bookmark = this;
            this.Marker     = marker;

            return(marker);
        }
Exemple #37
0
        private void InitializeTextMarkerService(TextEditor textEditor)
        {
            var textMarkerService = new TextMarkerService(textEditor.Document);

            textEditor.TextArea.TextView.BackgroundRenderers.Add(textMarkerService);
            textEditor.TextArea.TextView.LineTransformers.Add(textMarkerService);
            IServiceContainer services = (IServiceContainer)textEditor.Document.ServiceProvider.GetService(typeof(IServiceContainer));

            if (services != null)
            {
                services.AddService(typeof(ITextMarkerService), textMarkerService);
            }
            this.textMarkerService = textMarkerService;
        }
Exemple #38
0
		protected override void Initialize(DecompilerTextView textView, ITextMarkerService markerService, ITextMarker marker) {
			marker.HighlightingColor = () => {
				switch (type) {
				case StackFrameLineType.CurrentStatement:
					return DebuggerColors.StackFrameCurrentHighlightingColor;
				case StackFrameLineType.SelectedReturnStatement:
					return DebuggerColors.StackFrameSelectedHighlightingColor;
				case StackFrameLineType.ReturnStatement:
					return DebuggerColors.StackFrameReturnHighlightingColor;
				default:
					throw new InvalidOperationException();
				}
			};
		}
Exemple #39
0
        private void IniciarMarcadoDeErrores()
        {
            var textMarkerService = new TextMarkerService(Texto.Document);

            Texto.TextView.BackgroundRenderers.Add(textMarkerService);
            Texto.TextView.LineTransformers.Add(textMarkerService);
            IServiceContainer services = (IServiceContainer)Texto.Document.ServiceProvider.GetService(typeof(IServiceContainer));

            if (services != null)
            {
                services.AddService(typeof(ITextMarkerService), textMarkerService);
            }
            this.TextMarkerService = textMarkerService;
        }
Exemple #40
0
        public void SetUpFixture()
        {
            try {
                string configFolder = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "NCoverAddIn.Tests");
                PropertyService.InitializeService(configFolder, Path.Combine(configFolder, "data"), "NCoverAddIn.Tests");
            } catch (Exception) {}

            IDocument          document       = MockTextMarkerService.CreateDocumentWithMockService();
            ITextMarkerService markerStrategy = document.GetService(typeof(ITextMarkerService)) as ITextMarkerService;
            string             code           = "\t\t{\r\n" +
                                                "\t\t\tAssert.AreEqual(0, childElementCompletionData.Length, \"\" +\r\n" +
                                                "\t\t\t                \"Not expecting any child elements.\");\r\n" +
                                                "\t\t}\r\n";

            document.Text = code;

            string xml = "<PartCoverReport>\r\n" +
                         "\t<file id=\"1\" url=\"c:\\Projects\\XmlEditor\\Test\\Schema\\SingleElementSchemaTestFixture.cs\" />\r\n" +
                         "\t<Assembly id=\"1\" name=\"XmlEditor.Tests\" module=\"C:\\Projects\\Test\\XmlEditor.Tests\\bin\\XmlEditor.Tests.DLL\" domain=\"test-domain-XmlEditor.Tests.dll\" domainIdx=\"1\" />\r\n" +
                         "\t<Type asmref=\"1\" name=\"XmlEditor.Tests.Schema.SingleElementSchemaTestFixture\">\r\n" +
                         "\t\t<Method name=\"NoteElementHasNoChildElements\">\r\n" +
                         "\t\t\t<pt visit=\"1\" fid=\"1\" sl=\"1\" sc=\"3\" el=\"1\" ec=\"4\" />\r\n" +
                         "\t\t\t<pt visit=\"1\" fid=\"1\" sl=\"2\" sc=\"4\" el=\"3\" ec=\"57\" />\r\n" +
                         "\t\t\t<pt visit=\"1\" fid=\"1\" sl=\"4\" sc=\"3\" el=\"4\" ec=\"4\" />\r\n" +
                         "\t\t</Method>\r\n" +
                         "\t</Type>\r\n" +
                         "</PartCoverReport>";

            CodeCoverageResults     results     = new CodeCoverageResults(new StringReader(xml));
            CodeCoverageMethod      method      = results.Modules[0].Methods[0];
            CodeCoverageHighlighter highlighter = new CodeCoverageHighlighter();

            highlighter.AddMarkers(document, method.SequencePoints);

            foreach (ITextMarker marker in markerStrategy.TextMarkers)
            {
                if (markerOne == null)
                {
                    markerOne = marker;
                }
                else if (markerTwo == null)
                {
                    markerTwo = marker;
                }
                else if (markerThree == null)
                {
                    markerThree = marker;
                }
            }
        }
Exemple #41
0
        void InitializeTextMarkerService()
        {
            var textMarkerService = new TextMarkerService(_avEdit.Document);

            _avEdit.TextArea.TextView.BackgroundRenderers.Add(textMarkerService);
            _avEdit.TextArea.TextView.LineTransformers.Add(textMarkerService);

            var services = (IServiceContainer)_avEdit.Document.ServiceProvider.GetService(typeof(IServiceContainer));

            if (services != null)
            {
                services.AddService(typeof(ITextMarkerService), textMarkerService);
            }
            _textMarkerService = textMarkerService;
        }
		public ErrorPainter(ITextEditor textEditor)
		{
			this.textEditor = textEditor;
			this.markerService = this.textEditor.GetService(typeof(ITextMarkerService)) as ITextMarkerService;
			
			if (this.markerService == null)
				throw new InvalidOperationException("this ITextEditor has no text marker service!");
			
			TaskService.Added   += OnAdded;
			TaskService.Removed += OnRemoved;
			TaskService.Cleared += OnCleared;
			DebuggerService.DebugStarted += OnDebugStartedStopped;
			DebuggerService.DebugStopped += OnDebugStartedStopped;
			textEditor.Options.PropertyChanged += textEditor_Options_PropertyChanged;
			
			UpdateEnabled();
		}
		public ErrorPainter(ITextEditor textEditor)
		{
			instances.Add(this);
			this.textEditor = textEditor;
			this.markerService = this.textEditor.GetRequiredService<ITextMarkerService>();
			
			TaskService.Added   += OnAdded;
			TaskService.Removed += OnRemoved;
			TaskService.Cleared += OnCleared;
			DebuggerService.DebugStarted += OnDebugStartedStopped;
			DebuggerService.DebugStopped += OnDebugStartedStopped;
			textEditor.Options.PropertyChanged += textEditor_Options_PropertyChanged;
			
			ErrorColor = Colors.Red;
			WarningColor = Colors.Orange;
			MessageColor = Colors.Blue;
			
			UpdateEnabled();
		}
		void DisplayTooltip(MouseEventArgs e)
		{
			int line = GetLineFromMousePosition(e);
			
			if (line == 0)
				return;
			
			int startLine;
			bool added;
			string oldText = changeWatcher.GetOldVersionFromLine(line, out startLine, out added);
			
			TextEditor editor = this.TextView.Services.GetService(typeof(TextEditor)) as TextEditor;
			markerService = this.TextView.Services.GetService(typeof(ITextMarkerService)) as ITextMarkerService;
			
			LineChangeInfo zeroLineInfo = changeWatcher.GetChange(0);
			
			int offset, length;
			bool hasNewVersion = changeWatcher.GetNewVersionFromLine(line, out offset, out length);
			
			if (line == 1 && zeroLineInfo.Change == ChangeType.Deleted) {
				int zeroStartLine; bool zeroAdded;
				startLine = 1;
				string deletedText = changeWatcher.GetOldVersionFromLine(0, out zeroStartLine, out zeroAdded);
				var docLine = editor.Document.GetLineByNumber(line);
				string newLine = DocumentUtilitites.GetLineTerminator(changeWatcher.CurrentDocument, 1);
				deletedText += newLine;
				deletedText += editor.Document.GetText(docLine.Offset, docLine.Length);
				if (oldText != null)
					oldText = deletedText + newLine + oldText;
				else
					oldText = deletedText;
				
				if (!hasNewVersion) {
					offset = 0;
					length = docLine.Length;
					hasNewVersion = true;
				}
			}
			
			if (hasNewVersion) {
				if (marker != null)
					markerService.Remove(marker);
				if (length <= 0) {
					marker = null;
					length = 0;
				} else {
					marker = markerService.Create(offset, length);
					marker.BackgroundColor = Colors.LightGreen;
				}
			}
			
			if (oldText != null) {
				LineChangeInfo currLineInfo = changeWatcher.GetChange(startLine);
				
				if (currLineInfo.Change == ChangeType.Deleted && !(line == 1 && zeroLineInfo.Change == ChangeType.Deleted)) {
					var docLine = editor.Document.GetLineByNumber(startLine);
					if (docLine.DelimiterLength == 0)
						oldText = DocumentUtilitites.GetLineTerminator(changeWatcher.CurrentDocument, startLine) + oldText;
					oldText = editor.Document.GetText(docLine.Offset, docLine.TotalLength) + oldText;
				}
				
				DiffControl differ = new DiffControl();
				differ.editor.SyntaxHighlighting = editor.SyntaxHighlighting;
				differ.editor.HorizontalScrollBarVisibility = ScrollBarVisibility.Hidden;
				differ.editor.VerticalScrollBarVisibility = ScrollBarVisibility.Hidden;
				differ.editor.Document.Text = oldText;
				differ.Background = Brushes.White;
				
				if (oldText == string.Empty) {
					differ.editor.Visibility = Visibility.Collapsed;
					differ.copyButton.Visibility = Visibility.Collapsed;
				} else {
					var baseDocument = new TextDocument(DocumentUtilitites.GetTextSource(changeWatcher.BaseDocument));
					if (differ.editor.SyntaxHighlighting != null) {
						var mainHighlighter = new DocumentHighlighter(baseDocument, differ.editor.SyntaxHighlighting.MainRuleSet);
						var popupHighlighter = differ.editor.TextArea.GetService(typeof(IHighlighter)) as DocumentHighlighter;
						
						popupHighlighter.InitialSpanStack = mainHighlighter.GetSpanStack(currLineInfo.OldStartLineNumber);
					}
				}
				
				differ.revertButton.Click += delegate {
					if (hasNewVersion) {
						Document.Replace(offset, length, oldText);
						tooltip.IsOpen = false;
					}
				};
				
				tooltip.Child = new Border() {
					Child = differ,
					BorderBrush = Brushes.Black,
					BorderThickness = new Thickness(1)
				};
				
				if (tooltip.IsOpen)
					tooltip.IsOpen = false;
				
				tooltip.IsOpen = true;
				
				tooltip.Closed += delegate {
					if (marker != null) markerService.Remove(marker);
				};
				tooltip.HorizontalOffset = -10;
				tooltip.VerticalOffset =
					TextView.GetVisualTopByDocumentLine(startLine) - TextView.ScrollOffset.Y;
				tooltip.Placement = PlacementMode.Top;
				tooltip.PlacementTarget = this.TextView;
			}
		}
 public XPathNodeTextMarker(IDocument document)
 {
     this.document = document;
     markerService = document.GetService(typeof(ITextMarkerService)) as ITextMarkerService;
 }
Exemple #46
0
 public abstract ITextMarker CreateMarker(ITextMarkerService markerService, DecompilerTextView textView);
		protected override ITextMarker CreateMarker(ITextMarkerService markerService)
		{
			IDocumentLine line = this.Document.GetLine(startLine);
			ITextMarker marker = markerService.Create(line.Offset + startColumn - 1, Math.Max(endColumn - startColumn, 1));
			marker.BackgroundColor = Colors.Yellow;
			marker.ForegroundColor = Colors.Blue;
			return marker;
		}
		protected override ITextMarker CreateMarker(ITextMarkerService markerService)
		{
			IDocumentLine line = this.Document.GetLineByNumber(this.LineNumber);
			ITextMarker marker = markerService.Create(line.Offset, line.Length);
			IHighlighter highlighter = this.Document.GetService(typeof(IHighlighter)) as IHighlighter;
			marker.BackgroundColor = DefaultBackground;
			marker.ForegroundColor = DefaultForeground;
			marker.MarkerColor = DefaultBackground;
			marker.MarkerTypes = TextMarkerTypes.CircleInScrollBar;
			
			if (highlighter != null) {
				var color = highlighter.GetNamedColor(BreakpointMarker);
				if (color != null) {
					marker.BackgroundColor = color.Background.GetColor(null);
					marker.MarkerColor = color.Background.GetColor(null) ?? DefaultBackground;
					marker.ForegroundColor = color.Foreground.GetColor(null);
				}
			}
			return marker;
		}
		protected override ITextMarker CreateMarker(ITextMarkerService markerService)
		{
			IDocumentLine line = this.Document.GetLine(startLine);
			ITextMarker marker = markerService.Create(line.Offset + startColumn - 1, Math.Max(endColumn - startColumn, 1));
			ISyntaxHighlighter highlighter = this.Document.GetService(typeof(ISyntaxHighlighter)) as ISyntaxHighlighter;
			marker.BackgroundColor = DefaultBackground;
			marker.ForegroundColor = DefaultForeground;
			
			if (highlighter != null) {
				var color = highlighter.GetNamedColor(Name);
				if (color != null) {
					marker.BackgroundColor = color.Background.GetColor(null);
					marker.ForegroundColor = color.Foreground.GetColor(null);
				}
			}
			return marker;
		}
 public override ITextMarker CreateMarker(ITextMarkerService markerService, DecompilerTextView textView)
 {
     ITextMarker marker = CreateMarkerInternal(markerService, textView);
     var cm = textView == null ? null : textView.CodeMappings;
     marker.ZOrder = ZOrder;
     marker.HighlightingColor = () => {
         switch (type) {
         case StackFrameStatementType.CurrentStatement:
             return CurrentHighlightingColor;
         case StackFrameStatementType.SelectedReturnStatement:
             return SelectedHighlightingColor;
         case StackFrameStatementType.ReturnStatement:
             return ReturnHighlightingColor;
         default:
             throw new InvalidOperationException();
         }
     };
     marker.IsVisible = b => {
         if (cm == null)
             return false;
         var mbm = b as MarkerBookmark;
         if (mbm == null)
             return false;
         var key = MethodKey.Create(mbm.MemberReference);
         return key != null && cm.ContainsKey(key.Value);
     };
     marker.Bookmark = this;
     return marker;
 }
 public abstract ITextMarker CreateMarker(ITextMarkerService markerService, int offset, int length);
 public override ITextMarker CreateMarker(ITextMarkerService markerService, DecompilerTextView textView)
 {
     ITextMarker marker = CreateMarkerInternal(markerService, textView);
     var cm = textView == null ? null : textView.CodeMappings;
     marker.ZOrder = ZOrder;
     marker.HighlightingColor = () => IsEnabled ? HighlightingColor : DisabledHighlightingColor;
     marker.IsVisible = b => cm != null && b is BreakpointBookmark && cm.ContainsKey(((BreakpointBookmark)b).MethodKey);
     marker.Bookmark = this;
     return marker;
 }
		protected override void OnMouseMove(MouseEventArgs e)
		{
			int line = GetLineFromMousePosition(e);
			
			if (line == 0)
				return;
			
			int startLine;
			string oldText = changeWatcher.GetOldVersionFromLine(line, out startLine);
			
			int offset, length;
			
			TextEditor editor = this.TextView.Services.GetService(typeof(TextEditor)) as TextEditor;
			markerService = this.TextView.Services.GetService(typeof(ITextMarkerService)) as ITextMarkerService;

			
			if (changeWatcher.GetNewVersionFromLine(line, out offset, out length)) {
				if (marker != null)
					markerService.Remove(marker);
				marker = markerService.Create(offset, length);
				marker.BackgroundColor = Colors.LightGreen;
			}
			
			if (oldText != null) {
				DiffControl differ = new DiffControl();
				differ.editor.SyntaxHighlighting = editor.SyntaxHighlighting;
				differ.editor.HorizontalScrollBarVisibility = ScrollBarVisibility.Hidden;
				differ.editor.VerticalScrollBarVisibility = ScrollBarVisibility.Hidden;
				differ.editor.Document.Text = oldText;
				differ.Background = Brushes.White;
				
				DocumentHighlighter mainHighlighter = TextView.Services.GetService(typeof(IHighlighter)) as DocumentHighlighter;
				DocumentHighlighter popupHighlighter = differ.editor.TextArea.GetService(typeof(IHighlighter)) as DocumentHighlighter;
				
//				popupHighlighter.InitialSpanStack = mainHighlighter.GetSpanStack(
				
				if (oldText == string.Empty) {
					differ.editor.Visibility = Visibility.Collapsed;
				}
				
				differ.undoButton.Click += delegate {
					if (marker != null) {
						int delimiter = 0;
						if (oldText == string.Empty)
							delimiter = Document.GetLineByOffset(offset + length).DelimiterLength;
						Document.Replace(offset, length + delimiter, oldText);
						tooltip.IsOpen = false;
					}
				};
				
				tooltip.Child = new Border() {
					Child = differ,
					BorderBrush = Brushes.Black,
					BorderThickness = new Thickness(1)
				};
				
				if (tooltip.IsOpen)
					tooltip.IsOpen = false;
				
				tooltip.IsOpen = true;
				
				tooltip.Closed += delegate {
					if (marker != null) markerService.Remove(marker);
				};
				
				tooltip.HorizontalOffset = -10;
				tooltip.VerticalOffset =
					TextView.GetVisualTopByDocumentLine(startLine) - TextView.ScrollOffset.Y;
				tooltip.Placement = PlacementMode.Top;
				tooltip.PlacementTarget = this.TextView;
			}
			
			base.OnMouseMove(e);
		}
Exemple #54
0
		public override ITextMarker CreateMarker(ITextMarkerService markerService, int offset, int length)
		{
			ITextMarker marker = markerService.Create(offset, length);
			marker.BackgroundColor = Color.FromRgb(180, 38, 38);
			marker.ForegroundColor = Colors.White;
			marker.IsVisible = b => b is BreakpointBookmark && DebugInformation.CodeMappings != null &&
				DebugInformation.CodeMappings.ContainsKey(((BreakpointBookmark)b).FunctionToken);
			marker.Bookmark = this;
			this.Marker = marker;
			
			return marker;
		}
		protected override ITextMarker CreateMarker(ITextMarkerService markerService)
		{
			IDocumentLine sLine = this.Document.GetLineByNumber(startLine);
			IDocumentLine eLine = this.Document.GetLineByNumber(endLine);
			int sOffset = Math.Min(sLine.Offset + startColumn - 1, sLine.EndOffset);
			int eOffset = Math.Min(eLine.Offset + endColumn - 1, eLine.EndOffset);
			ITextMarker marker = markerService.Create(sOffset, Math.Max(eOffset - sOffset, 1));
			IHighlighter highlighter = this.Document.GetService(typeof(IHighlighter)) as IHighlighter;
			marker.BackgroundColor = BookmarkBase.CurrentLineDefaultBackground;
			marker.ForegroundColor = BookmarkBase.CurrentLineDefaultForeground;
			
			if (highlighter != null) {
				var color = highlighter.GetNamedColor(BookmarkBase.CurrentLineBookmarkName);
				if (color != null) {
					marker.BackgroundColor = color.Background.GetColor(null);
					marker.ForegroundColor = color.Foreground.GetColor(null);
				}
			}
			return marker;
		}
		public IssueManager(ITextEditor editor)
		{
			this.editor = editor;
			this.markerService = editor.GetService(typeof(ITextMarkerService)) as ITextMarkerService;
			//SD.ParserService.ParserUpdateStepFinished += ParserService_ParserUpdateStepFinished;
			SD.ParserService.ParseInformationUpdated += new EventHandler<ParseInformationEventArgs>(SD_ParserService_ParseInformationUpdated);
			editor.ContextActionProviders.Add(this);
		}
			public void CreateMarker(IDocument document, ITextMarkerService markerService)
			{
				int startOffset = InspectedVersion.MoveOffsetTo(document.Version, this.StartOffset, AnchorMovementType.Default);
				int endOffset = InspectedVersion.MoveOffsetTo(document.Version, this.EndOffset, AnchorMovementType.Default);
				if (this.StartOffset != this.EndOffset && startOffset >= endOffset)
					return;
				marker = markerService.Create(startOffset, endOffset - startOffset);
				marker.ToolTip = this.Description;
				
				Color color = GetColor(this.Severity);
				color.A = 186;
				marker.MarkerColor = color;
				if (!Provider.IsRedundancy)
					marker.MarkerTypes = TextMarkerTypes.ScrollBarRightTriangle;
				switch (MarkerType) {
					case IssueMarker.WavedLine:
						marker.MarkerTypes |= TextMarkerTypes.SquigglyUnderline;
						break;
					case IssueMarker.DottedLine:
						marker.MarkerTypes |= TextMarkerTypes.DottedUnderline;
						break;
					case IssueMarker.GrayOut:
						marker.ForegroundColor = SystemColors.GrayTextColor;
						break;
				}
				marker.Tag = this;
			}
		protected abstract ITextMarker CreateMarker(ITextMarkerService markerService);
Exemple #59
0
        protected ITextMarker CreateMarkerInternal(ITextMarkerService markerService, DecompilerTextView textView)
        {
            TextLocation location, endLocation;
            if (!GetLocation(textView, out location, out endLocation))
                throw new InvalidOperationException();

            var line = markerService.TextView.Document.GetLineByNumber(location.Line);
            var endLine = markerService.TextView.Document.GetLineByNumber(endLocation.Line);
            int startOffset = line.Offset + location.Column - 1;
            int endOffset = endLine.Offset + endLocation.Column - 1;

            return markerService.Create(startOffset, endOffset - startOffset);
        }
		protected override void OnMouseMove(MouseEventArgs e)
		{
			int line = GetLineFromMousePosition(e);
			
			if (line == 0)
				return;
			
			int startLine;
			bool added;
			string oldText = changeWatcher.GetOldVersionFromLine(line, out startLine, out added);
			
			TextEditor editor = this.TextView.Services.GetService(typeof(TextEditor)) as TextEditor;
			markerService = this.TextView.Services.GetService(typeof(ITextMarkerService)) as ITextMarkerService;
			
			int offset, length;
			bool hasNewVersion = changeWatcher.GetNewVersionFromLine(line, out offset, out length);
			
			if (hasNewVersion) {
				if (marker != null)
					markerService.Remove(marker);
				if (length <= 0) {
					marker = null;
					length = 0;
				} else {
					marker = markerService.Create(offset, length);
					marker.BackgroundColor = Colors.LightGreen;
				}
			}
			
			if (oldText != null) {
				DiffControl differ = new DiffControl();
				differ.editor.SyntaxHighlighting = editor.SyntaxHighlighting;
				differ.editor.HorizontalScrollBarVisibility = ScrollBarVisibility.Hidden;
				differ.editor.VerticalScrollBarVisibility = ScrollBarVisibility.Hidden;
				differ.editor.Document.Text = oldText;
				differ.Background = Brushes.White;
				
				// TODO : deletions on line 0 cannot be displayed.
				
				LineChangeInfo prevLineInfo = changeWatcher.GetChange(startLine - 1);
				LineChangeInfo lineInfo = changeWatcher.GetChange(startLine);
				
				if (prevLineInfo.Change == ChangeType.Deleted) {
					var docLine = editor.Document.GetLineByNumber(startLine - 1);
					differ.editor.Document.Insert(0, editor.Document.GetText(docLine.Offset, docLine.TotalLength));
				}
				
				if (oldText == string.Empty) {
					differ.editor.Visibility = Visibility.Collapsed;
					differ.copyButton.Visibility = Visibility.Collapsed;
				} else {
					var baseDocument = new TextDocument(changeWatcher.BaseDocument.Text);
					var mainHighlighter = new DocumentHighlighter(baseDocument, differ.editor.SyntaxHighlighting.MainRuleSet);
					var popupHighlighter = differ.editor.TextArea.GetService(typeof(IHighlighter)) as DocumentHighlighter;
					
					if (prevLineInfo.Change == ChangeType.Deleted)
						popupHighlighter.InitialSpanStack = mainHighlighter.GetSpanStack(prevLineInfo.OldStartLineNumber);
					else
						popupHighlighter.InitialSpanStack = mainHighlighter.GetSpanStack(lineInfo.OldStartLineNumber);
				}
				
				differ.revertButton.Click += delegate {
					if (hasNewVersion) {
						int delimiter = 0;
						DocumentLine l = Document.GetLineByOffset(offset + length);
						if (added)
							delimiter = l.DelimiterLength;
						if (length == 0)
							oldText += DocumentUtilitites.GetLineTerminator(new AvalonEditDocumentAdapter(Document, null), l.LineNumber);
						Document.Replace(offset, length + delimiter, oldText);
						tooltip.IsOpen = false;
					}
				};
				
				tooltip.Child = new Border() {
					Child = differ,
					BorderBrush = Brushes.Black,
					BorderThickness = new Thickness(1)
				};
				
				if (tooltip.IsOpen)
					tooltip.IsOpen = false;
				
				tooltip.IsOpen = true;
				
				tooltip.Closed += delegate {
					if (marker != null) markerService.Remove(marker);
				};
				
				tooltip.HorizontalOffset = -10;
				tooltip.VerticalOffset =
					TextView.GetVisualTopByDocumentLine(startLine) - TextView.ScrollOffset.Y;
				tooltip.Placement = PlacementMode.Top;
				tooltip.PlacementTarget = this.TextView;
			}
			
			base.OnMouseMove(e);
		}