Пример #1
0
        public DiffBinding(IDiffSource diffSource, DiffViewer diffViewer, DiffOptions diffOptions)
        {
            Verify.Argument.IsNotNull(diffSource, "diffSource");
            Verify.Argument.IsNotNull(diffViewer, "diffViewer");
            Verify.Argument.IsNotNull(diffOptions, "diffOptions");

            _diffSource  = diffSource;
            _diffViewer  = diffViewer;
            _diffOptions = diffOptions;

            _allDiffPanels = new List <FileDiffPanel>();
            _progressPanel = new FlowProgressPanel();
            Progress       = _progressPanel.ProgressMonitor;
        }
Пример #2
0
 protected override void DetachViewModel(object viewModel)
 {
     if (viewModel is DiffViewModel vm)
     {
         DiffBinding = null;
         if (_diffSource != null)
         {
             _diffSource.Updated -= OnDiffSourceUpdated;
             _diffSource.Dispose();
             _diffSource = null;
         }
         UpdateText();
     }
     base.DetachViewModel(viewModel);
 }
Пример #3
0
        public SplitDiffBinding(IDiffSource diffSource, DiffViewer diffViewerHeaders, DiffViewer diffViewerFiles, DiffOptions diffOptions)
        {
            Verify.Argument.IsNotNull(diffSource, nameof(diffSource));
            Verify.Argument.IsNotNull(diffViewerHeaders, nameof(diffViewerHeaders));
            Verify.Argument.IsNotNull(diffViewerFiles, nameof(diffViewerFiles));
            Verify.Argument.IsNotNull(diffOptions, nameof(diffOptions));

            _diffSource        = diffSource;
            _diffViewerHeaders = diffViewerHeaders;
            _diffViewerFiles   = diffViewerFiles;
            _diffOptions       = diffOptions;

            _allDiffPanels = new List <FileDiffPanel>();
            _progressPanel = new FlowProgressPanel();
            Progress       = _progressPanel.ProgressMonitor;
        }
Пример #4
0
        public DiffFileMenu(IDiffSource diffSource, DiffFile diffFile)
        {
            Verify.Argument.IsNotNull(diffSource, "diffSource");
            Verify.Argument.IsNotNull(diffFile, "diffFile");

            _diffSource = diffSource;
            _diffFile = diffFile;

            string fileName = diffFile.Status != FileStatus.Removed ? diffFile.TargetFile : diffFile.SourceFile;

            var indexDiff = diffSource as IIndexDiffSource;
            if(indexDiff != null)
            {
                var repository = indexDiff.Repository;
                if(diffFile.Status != FileStatus.Removed)
                {
                    try
                    {
                        var fullPath = Path.Combine(diffSource.Repository.WorkingDirectory, diffFile.TargetFile);
                        if(File.Exists(fullPath))
                        {
                            Items.Add(GuiItemFactory.GetOpenUrlItem<ToolStripMenuItem>(
                                Resources.StrOpen, null, fullPath));
                            Items.Add(GuiItemFactory.GetOpenUrlWithItem<ToolStripMenuItem>(
                                Resources.StrOpenWith.AddEllipsis(), null, fullPath));
                            Items.Add(GuiItemFactory.GetOpenUrlItem<ToolStripMenuItem>(
                                Resources.StrOpenContainingFolder, null, Path.GetDirectoryName(fullPath)));
                            Items.Add(new ToolStripSeparator());
                        }
                    }
                    catch(Exception exc)
                    {
                        if(exc.IsCritical())
                        {
                            throw;
                        }
                    }
                }
                if(indexDiff.Cached)
                {
                    var item = indexDiff.Repository.Status.TryGetStaged(fileName);
                    if(item != null)
                    {
                        Items.Add(GuiItemFactory.GetUnstageItem<ToolStripMenuItem>(item));
                        Items.Add(new ToolStripSeparator());
                    }
                }
                else
                {
                    var item = indexDiff.Repository.Status.TryGetUnstaged(fileName);
                    if(item != null)
                    {
                        Items.Add(GuiItemFactory.GetStageItem<ToolStripMenuItem>(item));
                        Items.Add(new ToolStripSeparator());
                    }
                }
                if(diffFile.Status != FileStatus.Removed)
                {
                    Items.Add(GuiItemFactory.GetBlameItem<ToolStripMenuItem>(
                        indexDiff.Repository.Head, fileName));
                }
                Items.Add(GuiItemFactory.GetPathHistoryItem<ToolStripMenuItem>(
                    indexDiff.Repository.Head, fileName));
            }
            else
            {
                var revisionDiff = diffSource as IRevisionDiffSource;
                if(revisionDiff != null)
                {
                    if(diffFile.Status != FileStatus.Removed)
                    {
                        Items.Add(GuiItemFactory.GetBlameItem<ToolStripMenuItem>(
                            revisionDiff.Revision, diffFile.TargetFile));
                        Items.Add(GuiItemFactory.GetPathHistoryItem<ToolStripMenuItem>(
                            revisionDiff.Revision, diffFile.TargetFile));
                    }
                    else
                    {
                        Items.Add(GuiItemFactory.GetPathHistoryItem<ToolStripMenuItem>(
                            revisionDiff.Revision, diffFile.SourceFile));
                    }
                }
            }
            Items.Add(new ToolStripMenuItem(Resources.StrCopyToClipboard, null,
                new ToolStripItem[]
                {
                    GuiItemFactory.GetCopyToClipboardItem<ToolStripMenuItem>(Resources.StrSourceFileName, diffFile.SourceFile),
                    GuiItemFactory.GetCopyToClipboardItem<ToolStripMenuItem>(Resources.StrDestinationFileName, diffFile.TargetFile),
                }));
        }
Пример #5
0
 protected void ShowContextualDiffView(IDiffSource diffSource)
 {
     WorkingEnvironment.ViewDockService.ShowView(Guids.ContextualDiffViewGuid, new DiffViewModel(diffSource, null), false);
 }
Пример #6
0
 protected void ShowDiffView(IDiffSource diffSource)
 {
     WorkingEnvironment.ViewDockService.ShowView(Guids.DiffViewGuid, new DiffViewModel(diffSource, null));
 }
Пример #7
0
 protected override void DetachViewModel(object viewModel)
 {
     var vm = viewModel as DiffViewModel;
     if(vm != null)
     {
         DiffBinding = null;
         if(_diffSource != null)
         {
             _diffSource.Updated -= OnDiffSourceUpdated;
             _diffSource.Dispose();
             _diffSource = null;
         }
         UpdateText();
     }
     base.DetachViewModel(viewModel);
 }
Пример #8
0
        public DiffFileMenu(IDiffSource diffSource, DiffFile diffFile)
        {
            Verify.Argument.IsNotNull(diffSource, "diffSource");
            Verify.Argument.IsNotNull(diffFile, "diffFile");

            _diffSource = diffSource;
            _diffFile   = diffFile;

            string fileName = diffFile.Status != FileStatus.Removed ? diffFile.TargetFile : diffFile.SourceFile;

            var indexDiff = diffSource as IIndexDiffSource;

            if (indexDiff != null)
            {
                var repository = indexDiff.Repository;
                if (diffFile.Status != FileStatus.Removed)
                {
                    try
                    {
                        var fullPath = Path.Combine(diffSource.Repository.WorkingDirectory, diffFile.TargetFile);
                        if (File.Exists(fullPath))
                        {
                            Items.Add(GuiItemFactory.GetOpenUrlItem <ToolStripMenuItem>(
                                          Resources.StrOpen, null, fullPath));
                            Items.Add(GuiItemFactory.GetOpenUrlWithItem <ToolStripMenuItem>(
                                          Resources.StrOpenWith.AddEllipsis(), null, fullPath));
                            Items.Add(GuiItemFactory.GetOpenUrlItem <ToolStripMenuItem>(
                                          Resources.StrOpenContainingFolder, null, Path.GetDirectoryName(fullPath)));
                            Items.Add(new ToolStripSeparator());
                        }
                    }
                    catch (Exception exc)
                    {
                        if (exc.IsCritical())
                        {
                            throw;
                        }
                    }
                }
                if (indexDiff.Cached)
                {
                    var item = indexDiff.Repository.Status.TryGetStaged(fileName);
                    if (item != null)
                    {
                        Items.Add(GuiItemFactory.GetUnstageItem <ToolStripMenuItem>(item));
                        Items.Add(new ToolStripSeparator());
                    }
                }
                else
                {
                    var item = indexDiff.Repository.Status.TryGetUnstaged(fileName);
                    if (item != null)
                    {
                        Items.Add(GuiItemFactory.GetStageItem <ToolStripMenuItem>(item));
                        Items.Add(new ToolStripSeparator());
                    }
                }
                if (diffFile.Status != FileStatus.Removed)
                {
                    Items.Add(GuiItemFactory.GetBlameItem <ToolStripMenuItem>(
                                  indexDiff.Repository.Head, fileName));
                }
                Items.Add(GuiItemFactory.GetPathHistoryItem <ToolStripMenuItem>(
                              indexDiff.Repository.Head, fileName));
            }
            else
            {
                var revisionDiff = diffSource as IRevisionDiffSource;
                if (revisionDiff != null)
                {
                    if (diffFile.Status != FileStatus.Removed)
                    {
                        Items.Add(GuiItemFactory.GetBlameItem <ToolStripMenuItem>(
                                      revisionDiff.Revision, diffFile.TargetFile));
                        Items.Add(GuiItemFactory.GetPathHistoryItem <ToolStripMenuItem>(
                                      revisionDiff.Revision, diffFile.TargetFile));
                    }
                    else
                    {
                        Items.Add(GuiItemFactory.GetPathHistoryItem <ToolStripMenuItem>(
                                      revisionDiff.Revision, diffFile.SourceFile));
                    }
                }
            }
            Items.Add(new ToolStripMenuItem(Resources.StrCopyToClipboard, null,
                                            new ToolStripItem[]
            {
                GuiItemFactory.GetCopyToClipboardItem <ToolStripMenuItem>(Resources.StrSourceFileName, diffFile.SourceFile),
                GuiItemFactory.GetCopyToClipboardItem <ToolStripMenuItem>(Resources.StrDestinationFileName, diffFile.TargetFile),
            }));
        }
Пример #9
0
 public DiffViewModel(IDiffSource diffSource, DiffOptions diffOptions)
 {
     DiffSource  = diffSource;
     DiffOptions = diffOptions;
 }
Пример #10
0
 protected void ShowDiffView(IDiffSource diffSource)
 {
     WorkingEnvironment.ViewDockService.ShowView(Guids.DiffViewGuid, new DiffViewModel(diffSource, null));
 }
Пример #11
0
 protected void ShowContextualDiffView(IDiffSource diffSource)
 {
     WorkingEnvironment.ViewDockService.ShowView(Guids.ContextualDiffViewGuid, new DiffViewModel(diffSource, null), false);
 }