private void InitializePreviewElement(object previewContent) { FrameworkElement previewElement = null; if (previewContent is IWpfDifferenceViewer) { _previewDiffViewer = previewContent as IWpfDifferenceViewer; previewElement = _previewDiffViewer.VisualElement; PreviewDockPanel.Background = _previewDiffViewer.InlineView.Background; } else if (previewContent is string) { previewElement = GetPreviewForString(previewContent as string); } else if (previewContent is FrameworkElement) { previewElement = previewContent as FrameworkElement; } if (previewElement != null) { HeaderSeparator.Visibility = Visibility.Visible; PreviewDockPanel.Visibility = Visibility.Visible; PreviewScrollViewer.Content = previewElement; previewElement.VerticalAlignment = VerticalAlignment.Top; previewElement.HorizontalAlignment = HorizontalAlignment.Left; } // 1. Width of the header section should not exceed the width of the preview content. // In other words, the text we put in the header at the top of the preview pane // should not cause the preview pane itself to grow wider than the width required to // display the preview content at the bottom of the pane. // 2. Adjust the height of the header section so that it displays only three lines worth // by default. AdjustWidthAndHeight(previewElement); }
private void InitializePreviewElement(object previewContent) { FrameworkElement previewElement = null; if (previewContent is IWpfDifferenceViewer) { _previewDiffViewer = previewContent as IWpfDifferenceViewer; previewElement = _previewDiffViewer.VisualElement; PreviewDockPanel.Background = _previewDiffViewer.InlineView.Background; } else if (previewContent is string) { previewElement = GetPreviewForString(previewContent as string); } else if (previewContent is FrameworkElement) { previewElement = previewContent as FrameworkElement; } if (previewElement != null) { PreviewDockPanel.Visibility = Visibility.Visible; PreviewScrollViewer.Content = previewElement; previewElement.VerticalAlignment = VerticalAlignment.Top; previewElement.HorizontalAlignment = HorizontalAlignment.Left; } // 1. Width of the header section should not exceed the width of the preview content. // In other words, the text we put in the header at the top of the preview pane // should not cause the preview pane itself to grow wider than the width required to // display the preview content at the bottom of the pane. // 2. Adjust the height of the header section so that it displays only three lines worth // by default. AdjustWidthAndHeight(previewElement); }
public SizeToFitHelper(IWpfDifferenceViewer diffViewer, double minWidth) { _calculationStarted = 0; _diffViewer = diffViewer; _minWidth = minWidth; _taskCompletion = new TaskCompletionSource <object>(); }
/// <summary> /// Initializes a new instance of the <see cref="DisposableDifferenceViewerControl"/> class. /// </summary> /// <param name="differenceViewer"><see cref="IWpfDifferenceViewer"/> instance.</param> /// <param name="description">Description of the changes. Optional.</param> /// <param name="additionalContent">Additional content to display at the bottom. Optional.</param> internal DisposableDifferenceViewerControl( IWpfDifferenceViewer differenceViewer, string description = null, FrameworkElement additionalContent = null) { this.InitializeComponent(); this.differenceViewer = Requires.NotNull(differenceViewer, nameof(differenceViewer)); if (!string.IsNullOrWhiteSpace(description)) { var descriptionBlock = new TextBlock { TextWrapping = TextWrapping.Wrap, Padding = new Thickness(5), }; descriptionBlock.Inlines.Add(new Run() { Text = description, }); this.StackPanelContent.Children.Add(descriptionBlock); } this.StackPanelContent.Children.Add(this.differenceViewer.VisualElement); if (additionalContent != null) { this.StackPanelContent.Children.Add(additionalContent); } }
public SizeToFitHelper(IWpfDifferenceViewer diffViewer, double minWidth) { _calculationStarted = 0; _diffViewer = diffViewer; _minWidth = minWidth; _taskCompletion = new TaskCompletionSource<object>(); }
/// <inheritdoc/> public void Dispose() { if (this.differenceViewer != null) { this.differenceViewer.Close(); this.differenceViewer = null; } }
public SizeToFitHelper(IThreadingContext threadingContext, IWpfDifferenceViewer diffViewer, double minWidth) : base(threadingContext) { _calculationStarted = 0; _diffViewer = diffViewer; _minWidth = minWidth; _taskCompletion = new TaskCompletionSource <object>(); }
public SizeToFitHelper( IThreadingContext threadingContext, IWpfDifferenceViewer diffViewer, double minWidth ) : base(threadingContext) { _diffViewer = diffViewer; _minWidth = minWidth; }
private FrameworkElement CreatePreviewElement(IReadOnlyList <object> previewItems) { if (previewItems == null || previewItems.Count == 0) { return(null); } const int MaxItems = 3; if (previewItems.Count > MaxItems) { previewItems = previewItems.Take(MaxItems).Concat("...").ToList(); } var grid = new Grid(); for (var i = 0; i < previewItems.Count; i++) { var previewItem = previewItems[i]; FrameworkElement previewElement = null; if (previewItem is IWpfDifferenceViewer) { _previewDiffViewer = (IWpfDifferenceViewer)previewItem; previewElement = _previewDiffViewer.VisualElement; PreviewDockPanel.Background = _previewDiffViewer.InlineView.Background; } else if (previewItem is string) { previewElement = GetPreviewForString((string)previewItem); } else if (previewItem is FrameworkElement) { previewElement = (FrameworkElement)previewItem; } var rowDefinition = i == 0 ? new RowDefinition() : new RowDefinition() { Height = GridLength.Auto }; grid.RowDefinitions.Add(rowDefinition); Grid.SetRow(previewElement, grid.RowDefinitions.IndexOf(rowDefinition)); grid.Children.Add(previewElement); if (i == 0) { grid.Width = previewElement.Width; } } var preview = grid.Children.Count == 0 ? (FrameworkElement)grid.Children[0] : grid; return(preview); }
public void Dispose() { GC.SuppressFinalize(this); if (_viewer != null && !_viewer.IsClosed) { _viewer.Close(); } _viewer = null; }
public static Task SizeToFitAsync( this IWpfDifferenceViewer diffViewer, IThreadingContext threadingContext, double minWidth = 400.0, CancellationToken cancellationToken = default ) { var helper = new SizeToFitHelper(threadingContext, diffViewer, minWidth); return(helper.SizeToFitAsync(cancellationToken)); }
/// <inheritdoc/> public void Dispose() { if (this.differenceViewer != null) { this.differenceViewer.Close(); this.differenceViewer = null; } if (ApplyFixesInDocument != null) { foreach (Delegate x in ApplyFixesInDocument?.GetInvocationList()) { ApplyFixesInDocument -= (EventHandler <ApplyFixEventArgs>)x; } System.Diagnostics.Debug.Assert(ApplyFixesInDocument == null, "Should not have hooked events."); } }
public DifferenceViewerPreview(IWpfDifferenceViewer viewer) { Contract.ThrowIfNull(viewer); _viewer = viewer; }
public static void SizeToFit(this IWpfDifferenceViewer diffViewer, double minWidth = 400.0) { var helper = new SizeToFitHelper(diffViewer, minWidth); helper.SizeToFit(); }
private FrameworkElement CreatePreviewElement(IReadOnlyList<object> previewItems) { if (previewItems == null || previewItems.Count == 0) { return null; } const int MaxItems = 3; if (previewItems.Count > MaxItems) { previewItems = previewItems.Take(MaxItems).Concat("...").ToList(); } var grid = new Grid(); for (var i = 0; i < previewItems.Count; i++) { var previewItem = previewItems[i]; FrameworkElement previewElement = null; if (previewItem is IWpfDifferenceViewer) { _previewDiffViewer = (IWpfDifferenceViewer)previewItem; previewElement = _previewDiffViewer.VisualElement; PreviewDockPanel.Background = _previewDiffViewer.InlineView.Background; } else if (previewItem is string) { previewElement = GetPreviewForString((string)previewItem); } else if (previewItem is FrameworkElement) { previewElement = (FrameworkElement)previewItem; } var rowDefinition = i == 0 ? new RowDefinition() : new RowDefinition() { Height = GridLength.Auto }; grid.RowDefinitions.Add(rowDefinition); Grid.SetRow(previewElement, grid.RowDefinitions.IndexOf(rowDefinition)); grid.Children.Add(previewElement); if (i == 0) { grid.Width = previewElement.Width; } } var preview = grid.Children.Count == 0 ? (FrameworkElement)grid.Children[0] : grid; return preview; }
public DifferenceViewerPreview(IWpfDifferenceViewer viewer) { _viewer = viewer ?? throw new FormatException("Viewer null"); }
public static Task SizeToFitAsync(this IWpfDifferenceViewer diffViewer, IThreadingContext threadingContext, double minWidth = 400.0) { var helper = new SizeToFitHelper(threadingContext, diffViewer, minWidth); return(helper.SizeToFitAsync()); }
public PreviewPane(Image severityIcon, string id, string title, string helpMessage, string description, string helpLink, bool telemetry, object previewContent, IServiceProvider serviceProvider) { InitializeComponent(); InitializeHyperlinkStyles(); if ((severityIcon != null) && !string.IsNullOrWhiteSpace(id) && !string.IsNullOrWhiteSpace(title)) { HeaderStackPanel.Visibility = Visibility.Visible; SeverityIconBorder.Child = severityIcon; // Set the initial title text to three lines worth so that we can measure the pixel height // that WPF requires to render three lines of text under the current font and DPI settings. TitleRun.Text = s_dummyThreeLineTitle; TitleTextBlock.Measure(availableSize: s_infiniteSize); _heightForThreeLineTitle = TitleTextBlock.DesiredSize.Height; // Now set the actual title text. TitleRun.Text = title; Uri helpUri; if (BrowserHelper.TryGetUri(helpLink, out helpUri)) { InitializeDiagnosticIdHyperLink(id, helpUri, bingLink: false); } else { InitializeDiagnosticIdHyperLink(id, BrowserHelper.CreateBingQueryUri(id, helpMessage), bingLink: true); } if (!string.IsNullOrWhiteSpace(description)) { DescriptionParagraph.Inlines.Add(description); } } FrameworkElement previewElement = null; if (previewContent is IWpfDifferenceViewer) { _previewDiffViewer = previewContent as IWpfDifferenceViewer; previewElement = _previewDiffViewer.VisualElement; PreviewDockPanel.Background = _previewDiffViewer.InlineView.Background; } else if (previewContent is string) { previewElement = GetPreviewForString(previewContent as string); } else if (previewContent is FrameworkElement) { previewElement = previewContent as FrameworkElement; } else { // previewContent is either null or some type that we don't know how to display. previewElement = GetEmptyPreview(); } PreviewScrollViewer.Content = previewElement; previewElement.VerticalAlignment = VerticalAlignment.Top; previewElement.HorizontalAlignment = HorizontalAlignment.Left; // 1. Width of the header section should not exceed the width of the preview content. // In other words, the text we put in the header at the top of the preview pane // should not cause the preview pane itself to grow wider than the width required to // display the preview content at the bottom of the pane. // 2. Adjust the height of the header section so that it displays only three lines worth // by default. AdjustWidthAndHeight(previewElement); _serviceProvider = serviceProvider; _errorId = id; // save permission whether we are allowed to save data as it is or not. _telemetry = telemetry; }