AllTreeView.xaml.cs 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. using System.ComponentModel.Composition;
  2. using System.Configuration;
  3. using System.IO;
  4. using System.Windows;
  5. using System.Windows.Forms;
  6. using System.Windows.Input;
  7. using Infrastructure;
  8. using Application = System.Windows.Application;
  9. namespace Modules.BehaviorTreeModule
  10. {
  11. /// <summary>
  12. /// BehaviorTreeView.xaml 的交互逻辑
  13. /// </summary>
  14. [ViewExport(RegionName = "BehaviorTreeRegion"), PartCreationPolicy(CreationPolicy.NonShared)]
  15. public partial class AllTreeView
  16. {
  17. public AllTreeView()
  18. {
  19. this.InitializeComponent();
  20. this.nodeDataEditor.AllTreeView = this;
  21. this.treeView.AllTreeView = this;
  22. this.ViewModel = AllTreeViewModel.Instance;
  23. }
  24. private AllTreeViewModel ViewModel
  25. {
  26. get
  27. {
  28. return this.DataContext as AllTreeViewModel;
  29. }
  30. set
  31. {
  32. this.DataContext = value;
  33. }
  34. }
  35. private void MenuItem_Open(object sender, RoutedEventArgs e)
  36. {
  37. string nodePath = Path.Combine(ConfigurationManager.AppSettings["NodePath"], "TreeProto.txt");
  38. this.ViewModel.Open(nodePath);
  39. this.lbTrees.SelectedIndex = -1;
  40. this.treeView.ViewModel = null;
  41. }
  42. private void MenuItem_Save(object sender, RoutedEventArgs e)
  43. {
  44. string nodePath = Path.Combine(ConfigurationManager.AppSettings["NodePath"], "TreeProto.txt");
  45. this.ViewModel.Save(nodePath);
  46. }
  47. private void MenuItem_New(object sender, RoutedEventArgs e)
  48. {
  49. TreeViewModel treeViewModel = this.ViewModel.New();
  50. this.lbTrees.SelectedItem = treeViewModel;
  51. this.treeView.ViewModel = treeViewModel;
  52. }
  53. private void MenuItem_Clone(object sender, RoutedEventArgs e)
  54. {
  55. if (this.lbTrees.SelectedItem == null)
  56. {
  57. return;
  58. }
  59. TreeViewModel treeViewModel = this.lbTrees.SelectedItem as TreeViewModel;
  60. TreeViewModel newTreeViewModel = this.ViewModel.Clone(treeViewModel);
  61. this.treeView.ViewModel = newTreeViewModel;
  62. }
  63. private void MenuItem_Path(object sender, RoutedEventArgs e)
  64. {
  65. FolderBrowserDialog dialog = new FolderBrowserDialog();
  66. dialog.SelectedPath = ConfigurationManager.AppSettings["NodePath"];
  67. dialog.ShowDialog();
  68. string path = dialog.SelectedPath;
  69. if (path.Length < 1 || !Directory.Exists(path))
  70. {
  71. System.Windows.MessageBox.Show("选择的目录无效");
  72. return;
  73. }
  74. Configuration cfg = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
  75. cfg.AppSettings.Settings["NodePath"].Value = path;
  76. cfg.Save();
  77. ConfigurationManager.AppSettings["NodePath"] = path;
  78. Application.Current.MainWindow.Title = $"行为树编辑器 当前工作目录[{ConfigurationManager.AppSettings["NodePath"]}]";
  79. }
  80. private void MenuItem_Remove(object sender, RoutedEventArgs e)
  81. {
  82. if (this.lbTrees.SelectedItem == null)
  83. {
  84. return;
  85. }
  86. TreeViewModel treeViewModel = this.lbTrees.SelectedItem as TreeViewModel;
  87. this.ViewModel.Remove(treeViewModel);
  88. this.lbTrees.SelectedItem = null;
  89. e.Handled = true;
  90. }
  91. private void ListBoxItem_OnMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
  92. {
  93. FrameworkElement item = (FrameworkElement) sender;
  94. TreeViewModel treeViewModel = item.DataContext as TreeViewModel;
  95. if (this.treeView.ViewModel != null)
  96. {
  97. if (this.treeView.ViewModel.Id == treeViewModel.Id)
  98. {
  99. return;
  100. }
  101. }
  102. this.lbTrees.SelectedItem = treeViewModel;
  103. this.treeView.ViewModel = treeViewModel;
  104. }
  105. }
  106. }