AllTreeViewModel.cs 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. using System;
  2. using System.Collections.ObjectModel;
  3. using System.IO;
  4. using Common.Helper;
  5. namespace Modules.BehaviorTreeModule
  6. {
  7. public class AllTreeViewModel
  8. {
  9. private static readonly AllTreeViewModel instance = new AllTreeViewModel();
  10. public static AllTreeViewModel Instance
  11. {
  12. get
  13. {
  14. return instance;
  15. }
  16. }
  17. public int MaxTreeId { get; set; }
  18. private readonly ObservableCollection<TreeViewModel> treeViewModels =
  19. new ObservableCollection<TreeViewModel>();
  20. public ObservableCollection<TreeViewModel> TreeViewModels
  21. {
  22. get
  23. {
  24. return this.treeViewModels;
  25. }
  26. }
  27. public void Open(string file)
  28. {
  29. this.treeViewModels.Clear();
  30. string content = File.ReadAllText(file);
  31. foreach (string line in content.Split(new[] { "\r\n" }, StringSplitOptions.None))
  32. {
  33. if (line.Trim() == "")
  34. {
  35. continue;
  36. }
  37. TreeViewModel treeViewModel = MongoHelper.FromJson<TreeViewModel>(line);
  38. this.treeViewModels.Add(treeViewModel);
  39. TreeLayout layout = new TreeLayout(treeViewModel);
  40. layout.ExcuteLayout();
  41. if (treeViewModel.Id > this.MaxTreeId)
  42. {
  43. this.MaxTreeId = treeViewModel.Id;
  44. }
  45. }
  46. }
  47. public void Save(string file)
  48. {
  49. using (StreamWriter stream = new StreamWriter(new FileStream(file, FileMode.Create, FileAccess.Write)))
  50. {
  51. foreach (TreeViewModel value in this.treeViewModels)
  52. {
  53. string content = MongoHelper.ToJson(value);
  54. stream.Write(content);
  55. stream.Write("\r\n");
  56. }
  57. }
  58. }
  59. public TreeViewModel New()
  60. {
  61. TreeViewModel treeViewModel = new TreeViewModel();
  62. treeViewModel.Id = ++this.MaxTreeId;
  63. this.treeViewModels.Add(treeViewModel);
  64. return treeViewModel;
  65. }
  66. public void Remove(TreeViewModel treeViewModel)
  67. {
  68. this.treeViewModels.Remove(treeViewModel);
  69. }
  70. public TreeViewModel Clone(TreeViewModel treeViewModel)
  71. {
  72. TreeViewModel newTreeViewModel = (TreeViewModel)treeViewModel.Clone();
  73. newTreeViewModel.Id = ++this.MaxTreeId;
  74. this.treeViewModels.Add(newTreeViewModel);
  75. return newTreeViewModel;
  76. }
  77. }
  78. }