private void OnStatusFilterChanged(object sender, EventArgs e) { var changedFilesPanel = (ChangedFilesPanel)sender; var index = 0; DiffViewerFiles.BeginUpdate(); if (index < DiffViewerFiles.Panels.Count) { DiffViewerFiles.Panels.RemoveRange(index, DiffViewerFiles.Panels.Count - index); } FlowPanelSeparator separator = null; for (int i = 0; i < _allDiffPanels.Count; ++i) { if ((_allDiffPanels[i].DiffFile.Status & changedFilesPanel.StatusFilter) != FileStatus.Unknown) { DiffViewerFiles.Panels.Add(_allDiffPanels[i]); DiffViewerFiles.Panels.Add(separator = new FlowPanelSeparator() { SeparatorStyle = FlowPanelSeparatorStyle.Simple }); } } if (separator != null) { separator.Height = 6; } DiffViewerFiles.EndUpdate(); }
protected override void OnFetchCompleted(Diff diff) { if (DiffViewerHeaders.IsDisposed || DiffViewerFiles.IsDisposed) { return; } DiffViewerFiles.BeginUpdate(); _allDiffPanels.Clear(); _progressPanel.Remove(); if (diff != null) { FlowPanelSeparator separator = null; var changedFilesPanel = new ChangedFilesPanel() { Diff = diff }; changedFilesPanel.FileNavigationRequested += (s, e) => { foreach (var panel in DiffViewerFiles.Panels) { var diffpanel = panel as FileDiffPanel; if (diffpanel != null && diffpanel.DiffFile == e.DiffFile) { diffpanel.ScrollIntoView(); break; } } }; changedFilesPanel.StatusFilterChanged += OnStatusFilterChanged; DiffViewerHeaders.Panels.Add(changedFilesPanel); foreach (var file in diff) { var fileDiffPanel = new FileDiffPanel(DiffSource.Repository, file, diff.Type); _allDiffPanels.Add(fileDiffPanel); DiffViewerFiles.Panels.Add(fileDiffPanel); DiffViewerFiles.Panels.Add(separator = new FlowPanelSeparator() { SeparatorStyle = FlowPanelSeparatorStyle.Simple }); } if (separator != null) { separator.Height = 6; } } DiffViewerFiles.EndUpdate(); if (_scrollPosAfterReload != 0) { DiffViewerFiles.BeginInvoke(new Action <int>(SetScrollPos), _scrollPosAfterReload); } }
protected override void OnFetchCompleted(Diff diff) { if (DiffViewer.IsDisposed) { return; } DiffViewer.BeginUpdate(); _allDiffPanels.Clear(); _progressPanel.Remove(); if (diff != null) { FlowPanelSeparator separator = null; var changedFilesPanel = new ChangedFilesPanel() { Diff = diff }; changedFilesPanel.StatusFilterChanged += OnStatusFilterChanged; DiffViewer.Panels.Add(changedFilesPanel); DiffViewer.Panels.Add(new FlowPanelSeparator() { SeparatorStyle = FlowPanelSeparatorStyle.Line }); foreach (var file in diff) { var fileDiffPanel = new FileDiffPanel(DiffSource.Repository, file, diff.Type); _allDiffPanels.Add(fileDiffPanel); DiffViewer.Panels.Add(fileDiffPanel); DiffViewer.Panels.Add(separator = new FlowPanelSeparator() { SeparatorStyle = FlowPanelSeparatorStyle.Simple }); } if (separator != null) { separator.Height = 6; } } DiffViewer.EndUpdate(); if (_scrollPosAfterReload != 0) { DiffViewer.BeginInvoke(new Action <int>(SetScrollPos), _scrollPosAfterReload); } }