public DocumentNode CreateRevision([CanBeNull] string filePath)
        {
            if (string.IsNullOrEmpty(filePath))
            {
                return(null);
            }
            else
            {
                filePath = Utils.NormalizePath(filePath);
                DocumentNode newNode = null;

                try
                {
                    var dateTime = DateTime.Now;
                    newNode = this.CreateRevisionNode(filePath, dateTime);
                    if (newNode is null)
                    {
                        return(null);
                    }
                    else
                    {
                        // Create the parent directory if it doesn't exist
                        if (!Directory.Exists(newNode.RepositoryPath))
                        {
                            Directory.CreateDirectory(newNode.RepositoryPath);
                        }

                        // Copy the file to the repository
                        File.Copy(filePath, newNode.VersionFileFullFilePath, true);

                        if (this.Control == null)
                        {
                            this.Control = (LocalHistoryControl)LocalHistoryPackage.Instance.ToolWindow?.Content;
                        }

                        if (this.Control?.LatestDocument?.OriginalPath?.Equals(newNode.OriginalPath) == true)
                        {
                            this.Control.DocumentItems.Insert(0, newNode);
                        }
                    }
                }
                catch (Exception ex)
                {
                    LocalHistoryPackage.Log(ex.Message);
                }

                return(newNode);
            }
        }
Beispiel #2
0
        /// <summary>
        ///     Standard constructor for the tool window.
        /// </summary>
        public LocalHistoryToolWindow() :
            base(null)
        {
            SetWindowCaption();

            // Set the image that will appear on the tab of the window frame
            // when docked with an other window
            // The resource ID correspond to the one defined in the resx file
            // while the Index is the offset in the bitmap strip. Each image in
            // the strip being 16x16.
            BitmapResourceID = 301;
            BitmapIndex      = 1;

            // This is the user control hosted by the tool window; Note that, even if this class implements IDisposable,
            // we are not calling Dispose on this object. This is because ToolWindowPane calls Dispose on
            // the object returned by the Content property.
            Content = new LocalHistoryControl();
        }