DeleteLayerHistoryMemento.cs 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. /////////////////////////////////////////////////////////////////////////////////
  2. // Paint.NET //
  3. // Copyright (C) dotPDN LLC, Rick Brewster, Tom Jackson, and contributors. //
  4. // Portions Copyright (C) Microsoft Corporation. All Rights Reserved. //
  5. // See src/Resources/Files/License.txt for full licensing and attribution //
  6. // details. //
  7. // . //
  8. /////////////////////////////////////////////////////////////////////////////////
  9. using System;
  10. namespace PaintDotNet.Measurement.HistoryMementos
  11. {
  12. /// <summary>
  13. /// Provides the ability to undo deleting a layer.
  14. /// </summary>
  15. public class DeleteLayerHistoryMemento
  16. : HistoryMemento
  17. {
  18. private int index;
  19. private IDocumentWorkspace historyWorkspace;
  20. [Serializable]
  21. private sealed class DeleteLayerHistoryMementoData
  22. : HistoryMementoData
  23. {
  24. private Layer layer;
  25. public Layer Layer
  26. {
  27. get
  28. {
  29. return layer;
  30. }
  31. }
  32. public DeleteLayerHistoryMementoData(Layer layer)
  33. {
  34. this.layer = layer;
  35. }
  36. protected override void Dispose(bool disposing)
  37. {
  38. if (disposing)
  39. {
  40. if (layer != null)
  41. {
  42. layer.Dispose();
  43. layer = null;
  44. }
  45. }
  46. }
  47. }
  48. protected override HistoryMemento OnUndo()
  49. {
  50. DeleteLayerHistoryMementoData data = (DeleteLayerHistoryMementoData)this.Data;
  51. HistoryMemento ha = new NewLayerHistoryMemento(Name, Image, this.historyWorkspace, this.index);
  52. this.historyWorkspace.GetDocument().Layers.Insert(index, data.Layer);
  53. ((Layer)this.historyWorkspace.GetDocument().Layers[index]).Invalidate();
  54. return ha;
  55. }
  56. public DeleteLayerHistoryMemento(string name, ImageResource image, IDocumentWorkspace historyWorkspace, Layer deleteMe)
  57. : base(name, image)
  58. {
  59. this.historyWorkspace = historyWorkspace;
  60. this.index = historyWorkspace.GetDocument().Layers.IndexOf(deleteMe);
  61. this.Data = new DeleteLayerHistoryMementoData(deleteMe);
  62. }
  63. }
  64. }