|
@@ -107,8 +107,17 @@ namespace InABox.DynamicGrid
|
|
|
return node;
|
|
|
}
|
|
|
|
|
|
+ public void GetChildren(List<Guid> nodes, Guid id)
|
|
|
+ {
|
|
|
+ nodes.Add(id);
|
|
|
+ var children = GetChilden(id);
|
|
|
+ foreach (var child in children)
|
|
|
+ GetChildren(nodes, child.ID);
|
|
|
+ }
|
|
|
+
|
|
|
public ObservableCollection<DynamicTreeNode> GetChilden(Guid id)
|
|
|
{
|
|
|
+
|
|
|
return new ObservableCollection<DynamicTreeNode>(_nodes.Where(x => x.Parent.Equals(id) && (x.ID != id)));
|
|
|
}
|
|
|
|
|
@@ -210,7 +219,7 @@ namespace InABox.DynamicGrid
|
|
|
|
|
|
_menu = new ContextMenu();
|
|
|
var additem = new MenuItem() { Header = "Add Child Folder" };
|
|
|
- additem.Click += (o, e) => { AddItem((_tree.SelectedItem as DynamicTreeNode)!.ID); };
|
|
|
+ additem.Click += (o, e) => { DoAddItem((_tree.SelectedItem as DynamicTreeNode)!.ID, true); };
|
|
|
_menu.Items.Add(additem);
|
|
|
|
|
|
_tree.ContextMenuOpening += _tree_ContextMenuOpening;
|
|
@@ -236,7 +245,7 @@ namespace InABox.DynamicGrid
|
|
|
_dock.SetValue(Grid.RowProperty, 1);
|
|
|
_grid.Children.Add(_dock);
|
|
|
|
|
|
- _add = CreateButton(Properties.Resources.add.AsBitmapImage(System.Drawing.Color.White), "", "Add Item", (o) => AddItem(Guid.Empty));
|
|
|
+ _add = CreateButton(Properties.Resources.add.AsBitmapImage(System.Drawing.Color.White), "", "Add Item", (o) => DoAddItem(Guid.Empty, true));
|
|
|
_add.Margin = new Thickness(0, 2, 2, 0);
|
|
|
_add.Visibility = Visibility.Collapsed;
|
|
|
_add.SetValue(DockPanel.DockProperty, Dock.Left);
|
|
@@ -268,28 +277,8 @@ namespace InABox.DynamicGrid
|
|
|
public void AddItem(DynamicTreeNode? parentNode = null, bool edit = true)
|
|
|
{
|
|
|
var id = parentNode?.ID ?? Guid.Empty;
|
|
|
-
|
|
|
- try
|
|
|
- {
|
|
|
- T item = DoCreateItem(id);
|
|
|
- if (edit)
|
|
|
- {
|
|
|
- if (DoEditItem(item))
|
|
|
- {
|
|
|
- DoSaveItem(item);
|
|
|
- Refresh();
|
|
|
- }
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- DoSaveItem(item);
|
|
|
- Refresh();
|
|
|
- }
|
|
|
- }
|
|
|
- catch (Exception e)
|
|
|
- {
|
|
|
- MessageBox.Show(e.Message);
|
|
|
- }
|
|
|
+ DoAddItem(id, edit);
|
|
|
+
|
|
|
}
|
|
|
|
|
|
#endregion
|
|
@@ -307,7 +296,7 @@ namespace InABox.DynamicGrid
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- _menu.AddItem("Add Item", null, (_tree.SelectedItem as DynamicTreeNode)!.ID, AddItem);
|
|
|
+ _menu.AddItem("Add Item", null, (_tree.SelectedItem as DynamicTreeNode)!.ID, (id) => DoAddItem(id,true));
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -393,13 +382,21 @@ namespace InABox.DynamicGrid
|
|
|
protected abstract void DoSaveItem(T item);
|
|
|
|
|
|
protected abstract bool DoDeleteItem(Guid id);
|
|
|
-
|
|
|
- private void AddItem(Guid id)
|
|
|
+
|
|
|
+ protected virtual void DoAddItem(Guid id, bool edit)
|
|
|
{
|
|
|
try
|
|
|
{
|
|
|
T item = DoCreateItem(id);
|
|
|
- if (DoEditItem(item))
|
|
|
+ if (edit)
|
|
|
+ {
|
|
|
+ if (DoEditItem(item))
|
|
|
+ {
|
|
|
+ DoSaveItem(item);
|
|
|
+ Refresh();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
{
|
|
|
DoSaveItem(item);
|
|
|
Refresh();
|
|
@@ -410,7 +407,7 @@ namespace InABox.DynamicGrid
|
|
|
MessageBox.Show(e.Message);
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
private void EditItem(Button button)
|
|
|
{
|
|
|
var node = _tree.SelectedItem as DynamicTreeNode;
|