Exemple #1
0
        public static ISelectedIssueLocationTag CreateSelectedLocationTag(IAnalysisIssueLocationVisualization locViz)
        {
            var tagMock = new Mock <ISelectedIssueLocationTag>();

            tagMock.Setup(x => x.Location).Returns(locViz);
            return(tagMock.Object);
        }
        public bool TryNavigate(IAnalysisIssueLocationVisualization locationVisualization)
        {
            if (locationVisualization == null)
            {
                throw new ArgumentNullException(nameof(locationVisualization));
            }

            try
            {
                var textView     = documentNavigator.Open(locationVisualization.CurrentFilePath);
                var locationSpan = GetOrCalculateLocationSpan(locationVisualization, textView);

                if (!locationSpan.IsEmpty)
                {
                    documentNavigator.Navigate(textView, locationSpan);

                    return(true);
                }
            }
            catch (Exception ex) when(!ErrorHandler.IsCriticalException(ex))
            {
                logger.WriteLine(Resources.ERR_OpenDocumentException, locationVisualization.CurrentFilePath, ex.Message);
                locationVisualization.InvalidateSpan();
            }

            return(false);
        }
Exemple #3
0
 public SelectionChangedEventArgs(SelectionChangeLevel selectionChangeLevel, IAnalysisIssueVisualization selectedIssue, IAnalysisIssueFlowVisualization selectedFlow, IAnalysisIssueLocationVisualization selectedLocation)
 {
     SelectedIssue        = selectedIssue;
     SelectedFlow         = selectedFlow;
     SelectedLocation     = selectedLocation;
     SelectionChangeLevel = selectionChangeLevel;
 }
Exemple #4
0
        public IssueLocationAdornment(IAnalysisIssueLocationVisualization locationViz, IFormattedLineSource formattedLineSource)
        {
            // We can't store the formatted line source since it might change
            // e.g. if the user changes the font size
            LocationViz = locationViz;

            Margin          = new Thickness(3, 0, 3, 0); // Space between this UI element and the editor text
            Padding         = new Thickness(0);          // Space between the side of the control and its content
            BorderThickness = new Thickness(1);
            CornerRadius    = new CornerRadius(1);

            // Visible content of the adornment
            Child = new TextBlock
            {
                Text       = LocationViz.StepNumber.ToString(),
                FontWeight = FontWeights.SemiBold,
                Padding    = new Thickness(4, 0, 4, 0)
            };

            ToolTip = new TextBlock
            {
                Text = LocationViz.Location.Message
            };

            Update(formattedLineSource);
        }
 private void RaiseSelectionChangedEvent(SelectionChangeLevel changeLevel,
                                         IAnalysisIssueVisualization issue            = null,
                                         IAnalysisIssueFlowVisualization flow         = null,
                                         IAnalysisIssueLocationVisualization location = null)
 {
     selectionServiceMock.Raise(x => x.SelectionChanged += null,
                                new SelectionChangedEventArgs(changeLevel, issue, flow, location));
 }
            private IssueLocationAdornment CreateAdornment(IAnalysisIssueLocationVisualization locationViz)
            {
                var adornment = new IssueLocationAdornment(locationViz, wpfTextView.FormattedLineSource);

                // If we don't call Measure here the tag is positioned incorrectly
                adornment.Measure(new System.Windows.Size(double.PositiveInfinity, double.PositiveInfinity));
                return(adornment);
            }
        private FileNameLocationListItem CreateTestSubject(IAnalysisIssueLocationVisualization location)
        {
            var testSubject = new FileNameLocationListItem(location, imageServiceMock.Object, logger);

            testSubject.PropertyChanged += propertyChangedEventHandler.Object;

            return(testSubject);
        }
        public FileNameLocationListItem(IAnalysisIssueLocationVisualization location, IVsImageService2 vsImageService, ILogger logger)
        {
            this.location             = location;
            this.vsImageService       = vsImageService;
            this.logger               = logger;
            location.PropertyChanged += Location_PropertyChanged;

            UpdateState();
        }
        private IFileNameLocationListItem CreateMockFileNameListItem(IAnalysisIssueLocationVisualization location)
        {
            var listItem = Mock.Of <IFileNameLocationListItem>();

            fileNameLocationListItemCreatorMock
            .Setup(x => x.Create(location))
            .Returns(listItem);

            return(listItem);
        }
Exemple #10
0
        private void VerifyExceptionCaughtAndLogged(Exception setupException, IAnalysisIssueLocationVisualization location)
        {
            var    result = true;
            Action act    = () => result = testSubject.TryNavigate(location);

            act.Should().NotThrow();

            result.Should().BeFalse();

            logger.AssertPartialOutputStringExists(setupException.Message);
        }
        private SnapshotSpan GetOrCalculateLocationSpan(IAnalysisIssueLocationVisualization locationVisualization, ITextView textView)
        {
            var shouldCalculateSpan = !locationVisualization.Span.HasValue;

            if (shouldCalculateSpan)
            {
                locationVisualization.Span = spanCalculator.CalculateSpan(locationVisualization.Location, textView.TextBuffer.CurrentSnapshot);
            }

            return(locationVisualization.Span.Value);
        }
            public IssueLocationAdornment CreateOrUpdate(IAnalysisIssueLocationVisualization locationViz)
            {
                // As long as the cache is always accessed on the same thread we don't need to worry
                // about synchronising access to it. Currently VS is always running this code on the
                // main thread. The assertion is to detect if this behaviour changes.
                Debug.Assert(ThreadHelper.CheckAccess(), "Expected cache to be accessed on the UI thread");

                if (locVizToAdornmentMap.TryGetValue(locationViz, out var existingAdornment))
                {
                    existingAdornment.Update(wpfTextView.FormattedLineSource);
                    return(existingAdornment);
                }

                var newAdornment = CreateAdornment(locationViz);

                locVizToAdornmentMap[locationViz] = newAdornment;
                return(newAdornment);
            }
Exemple #13
0
 public IFileNameLocationListItem Create(IAnalysisIssueLocationVisualization location)
 {
     return(new FileNameLocationListItem(location, vsImageService, logger));
 }
 public LocationListItem(IAnalysisIssueLocationVisualization location)
 {
     Location = location;
 }
 private void VerifyNavigation(IAnalysisIssueLocationVisualization expectedNavigation)
 {
     selectionServiceMock.VerifySet(x => x.SelectedLocation = expectedNavigation, Times.Once);
 }
 private void SetupCurrentLocation(IAnalysisIssueLocationVisualization location)
 {
     selectionServiceMock.Setup(x => x.SelectedLocation).Returns(location);
 }
Exemple #17
0
 private static bool IsValidPrimaryLocation(IAnalysisIssueLocationVisualization locViz) =>
 locViz is IAnalysisIssueVisualization && locViz.Span.HasValue;
 public SelectedIssueLocationTag(IAnalysisIssueLocationVisualization location)
 {
     Location = location ?? throw new ArgumentNullException(nameof(location));
 }
Exemple #19
0
        private static IMappingTagSpan <ISelectedIssueLocationTag> CreateSelectedIssueTagSpan(IAnalysisIssueLocationVisualization locViz)
        {
            var tag = CreateSelectedLocationTag(locViz);

            return(CreateMappingTagSpan(locViz.Span.Value.Snapshot, tag, locViz.Span.Value.Span));
        }
 private static ITagSpan <IIssueLocationTag> CreateTagSpan(IAnalysisIssueLocationVisualization locViz) =>
 new TagSpan <IIssueLocationTag>(locViz.Span.Value, new IssueLocationTag(locViz));