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); } }
/// <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(); }