Undo Feature Finish

This commit is contained in:
2023-06-07 14:15:49 +02:00
parent 752f307acf
commit 6534312e22
5 changed files with 117 additions and 59 deletions

View File

@@ -56,7 +56,6 @@ namespace BeWo.View.Controls
private void UpdateControls() private void UpdateControls()
{ {
bool zeigeKatalogAuswahl = RBtnKatalog.IsChecked.HasValue && RBtnKatalog.IsChecked.Value; bool zeigeKatalogAuswahl = RBtnKatalog.IsChecked.HasValue && RBtnKatalog.IsChecked.Value;
LabelKatalog.Visibility = zeigeKatalogAuswahl ? Visibility.Visible : Visibility.Collapsed; LabelKatalog.Visibility = zeigeKatalogAuswahl ? Visibility.Visible : Visibility.Collapsed;
CboCatalog.Visibility = zeigeKatalogAuswahl ? Visibility.Visible : Visibility.Collapsed; CboCatalog.Visibility = zeigeKatalogAuswahl ? Visibility.Visible : Visibility.Collapsed;

View File

@@ -6,6 +6,7 @@ using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
using static BeWo.View.Detail.MassnahmenHistoryRecord;
namespace BeWo.View.Detail namespace BeWo.View.Detail
{ {
@@ -77,11 +78,12 @@ namespace BeWo.View.Detail
public bool GotNextAction => LastChange is object && LastChange.Next is object; public bool GotNextAction => LastChange is object && LastChange.Next is object;
public bool GotChanges => LastChange is object && (GotNextAction || GotPrevAction); public bool GotChanges => LastChange is object && (GotNextAction || GotPrevAction);
public void RecordAdd(MassnahmenHistoryNodeParameter param) => RecordAction(new MassnahmenHistoryRecordAdd(param)); public void RecordAdd(NodeRelation param) => RecordAction(new MassnahmenHistoryRecordAdd(param));
public void RecordMove(MassnahmenHistoryRecordMove move) => RecordAction(move); public void RecordMove(MassnahmenHistoryRecordMove move) => RecordAction(move);
public void RecordImport(List<MassnahmenHistoryNodeParameter> param) => RecordAction(new MassnahmenHistoryRecordImport(param)); public void RecordImport(List<NodeRelation> param) => RecordAction(new MassnahmenHistoryRecordImport(param));
public void RecordDelete(MassnahmenHistoryRecordDelete del) => RecordAction(del); public void RecordDelete(MassnahmenHistoryRecordDelete del) => RecordAction(del);
public void RecordCopy(MassnahmenHistoryNodeParameter root, List<MassnahmenHistoryNodeParameter> param) => RecordAction(new MassnahmenHistoryRecordCopy(root, param)); public void RecordCopy(NodeRelation root, List<NodeRelation> param) => RecordAction(new MassnahmenHistoryRecordCopy(root, param));
public void RecordEdit(MassnahmenHistoryRecordEdit edit) => RecordAction(edit);
private void RecordAction(MassnahmenHistoryRecord val) private void RecordAction(MassnahmenHistoryRecord val)
{ {

View File

@@ -1,4 +1,5 @@
using BeWo.Core; using BeWo.Core;
using BeWo.ViewModel;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
@@ -9,6 +10,29 @@ namespace BeWo.View.Detail
{ {
public abstract class MassnahmenHistoryRecord public abstract class MassnahmenHistoryRecord
{ {
public struct NodeRelation
{
public SupportConceptGoalTreeItem Current { get; set; }
public SupportConceptGoalTreeItem Parent { get; set; }
public NodeRelation(SupportConceptGoalTreeItem newitem, SupportConceptGoalTreeItem parent)
{
Current = newitem;
Parent = parent;
}
public NodeRelation(SupportConceptGoalTreeItem newitem)
{
Current = newitem;
Parent = newitem.ParentGoal as SupportConceptGoalTreeItem;
}
}
public struct NodeEditInformation
{
public string Abbreviation { get; set; }
public string Description { get; set; }
public string Notice { get; set; }
}
} }
public class MassnahmenHistoryRecordOrigin : MassnahmenHistoryRecord public class MassnahmenHistoryRecordOrigin : MassnahmenHistoryRecord
@@ -18,13 +42,13 @@ namespace BeWo.View.Detail
public class MassnahmenHistoryRecordAdd : MassnahmenHistoryRecord public class MassnahmenHistoryRecordAdd : MassnahmenHistoryRecord
{ {
public MassnahmenHistoryNodeParameter Parameter { get; set; } public NodeRelation Parameter { get; set; }
public MassnahmenHistoryRecordAdd(SupportConceptGoalTreeItem newitem, SupportConceptGoalTreeItem parent) public MassnahmenHistoryRecordAdd(SupportConceptGoalTreeItem newitem, SupportConceptGoalTreeItem parent)
{ {
Parameter = new MassnahmenHistoryNodeParameter(newitem, parent); Parameter = new NodeRelation(newitem, parent);
} }
public MassnahmenHistoryRecordAdd(MassnahmenHistoryNodeParameter param) public MassnahmenHistoryRecordAdd(NodeRelation param)
{ {
Parameter = param; Parameter = param;
} }
@@ -32,22 +56,22 @@ namespace BeWo.View.Detail
public class MassnahmenHistoryRecordImport : MassnahmenHistoryRecord public class MassnahmenHistoryRecordImport : MassnahmenHistoryRecord
{ {
public List<MassnahmenHistoryNodeParameter> Parameters { get; set; } public List<NodeRelation> Parameters { get; set; }
public List<MassnahmenHistoryNodeParameter> ParametersReversed { get; set; } public List<NodeRelation> ParametersReversed { get; set; }
public MassnahmenHistoryRecordImport(List<MassnahmenHistoryNodeParameter> list) public MassnahmenHistoryRecordImport(List<NodeRelation> list)
{ {
Parameters = list; Parameters = list;
ParametersReversed = new Stack<MassnahmenHistoryNodeParameter>(list).ToList(); ParametersReversed = new Stack<NodeRelation>(list).ToList();
} }
} }
public class MassnahmenHistoryRecordDelete : MassnahmenHistoryRecord public class MassnahmenHistoryRecordDelete : MassnahmenHistoryRecord
{ {
public MassnahmenHistoryNodeParameter ExNode { get; set; } public NodeRelation ExNode { get; set; }
public List<MassnahmenHistoryNodeParameter> Parameters { get; set; } public List<NodeRelation> Parameters { get; set; }
public MassnahmenHistoryRecordDelete(MassnahmenHistoryNodeParameter exnode, List<MassnahmenHistoryNodeParameter> list) public MassnahmenHistoryRecordDelete(NodeRelation exnode, List<NodeRelation> list)
{ {
Parameters = list; Parameters = list;
ExNode = exnode; ExNode = exnode;
@@ -70,35 +94,36 @@ namespace BeWo.View.Detail
public class MassnahmenHistoryRecordCopy : MassnahmenHistoryRecord public class MassnahmenHistoryRecordCopy : MassnahmenHistoryRecord
{ {
public MassnahmenHistoryNodeParameter CurrentNode { get; set; } public NodeRelation CurrentNode { get; set; }
public List<MassnahmenHistoryNodeParameter> Parameters { get; set; } public List<NodeRelation> Parameters { get; set; }
public MassnahmenHistoryRecordCopy(MassnahmenHistoryNodeParameter root, List<MassnahmenHistoryNodeParameter> list) public MassnahmenHistoryRecordCopy(NodeRelation root, List<NodeRelation> list)
{ {
Parameters = list; Parameters = list;
CurrentNode = root; CurrentNode = root;
} }
} }
public abstract class MassnahmenHistoryParameter public class MassnahmenHistoryRecordEdit : MassnahmenHistoryRecord
{ {
public ValueListEntryVM VM { get; set; }
} public NodeEditInformation Before { get; set; }
public NodeEditInformation After { get; set; }
public class MassnahmenHistoryNodeParameter : MassnahmenHistoryParameter
{ public MassnahmenHistoryRecordEdit(ValueListEntryVM vm, NodeEditInformation b, NodeEditInformation a)
public SupportConceptGoalTreeItem Current { get; set; }
public SupportConceptGoalTreeItem Parent { get; set; }
public MassnahmenHistoryNodeParameter(SupportConceptGoalTreeItem newitem, SupportConceptGoalTreeItem parent)
{ {
Current = newitem; Before = b;
Parent = parent; After = a;
VM = vm;
} }
public MassnahmenHistoryNodeParameter(SupportConceptGoalTreeItem newitem)
public void SetVM(NodeEditInformation info)
{ {
Current = newitem; VM.Abbreviation = info.Abbreviation;
Parent = newitem.ParentGoal as SupportConceptGoalTreeItem; VM.Description = info.Description;
VM.Notice = info.Notice;
VM.CommitToDataContract();
} }
} }
} }

View File

@@ -1,11 +1,14 @@
using BeWo.Core; using BeWo.Core;
using BeWo.ViewModel;
using BeWo.ViewModel.ListViewModel; using BeWo.ViewModel.ListViewModel;
using BS.Shared; using BS.Shared;
using BS.Shared.Core; using BS.Shared.Core;
using BS.Shared.DataContracts;
using BS.Shared.DataContracts.ClientPartials; using BS.Shared.DataContracts.ClientPartials;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using static BeWo.View.Detail.MassnahmenHistoryRecord;
namespace BeWo.View.Detail namespace BeWo.View.Detail
{ {
@@ -29,6 +32,7 @@ namespace BeWo.View.Detail
{ typeof(MassnahmenHistoryRecordDelete), GetTuple<MassnahmenHistoryRecordDelete>(UndoDeleteAction, RedoDeleteAction) }, { typeof(MassnahmenHistoryRecordDelete), GetTuple<MassnahmenHistoryRecordDelete>(UndoDeleteAction, RedoDeleteAction) },
{ typeof(MassnahmenHistoryRecordImport), GetTuple<MassnahmenHistoryRecordImport>(UndoImportAction, RedoImportAction) }, { typeof(MassnahmenHistoryRecordImport), GetTuple<MassnahmenHistoryRecordImport>(UndoImportAction, RedoImportAction) },
{ typeof(MassnahmenHistoryRecordMove), GetTuple<MassnahmenHistoryRecordMove>(UndoMoveAction, RedoMoveAction) }, { typeof(MassnahmenHistoryRecordMove), GetTuple<MassnahmenHistoryRecordMove>(UndoMoveAction, RedoMoveAction) },
{ typeof(MassnahmenHistoryRecordEdit), GetTuple<MassnahmenHistoryRecordEdit>(UndoEditAction, RedoEditAction) },
}; };
} }
@@ -36,13 +40,12 @@ namespace BeWo.View.Detail
{ {
Type2Actions[action.GetType()].Item1(action); Type2Actions[action.GetType()].Item1(action);
} }
public void RedoAction(MassnahmenHistoryRecord action) public void RedoAction(MassnahmenHistoryRecord action)
{ {
Type2Actions[action.GetType()].Item2(action); Type2Actions[action.GetType()].Item2(action);
} }
public MassnahmenHistoryNodeParameter DoAddAction(SupportConceptGoalTreeItem parent, ValueListEntryType valueListEntryType, public NodeRelation DoAddAction(SupportConceptGoalTreeItem parent, ValueListEntryType valueListEntryType,
string description, string abbreviation, string notice) string description, string abbreviation, string notice)
{ {
if (!valueListEntryType.HasFlag(ValueListEntryType.SupportConceptGoalCategoryType) && if (!valueListEntryType.HasFlag(ValueListEntryType.SupportConceptGoalCategoryType) &&
@@ -63,7 +66,7 @@ namespace BeWo.View.Detail
ParentGoal = parent ParentGoal = parent
}; };
var rtn = new MassnahmenHistoryNodeParameter(newItem, parent); var rtn = new NodeRelation(newItem, parent);
ViewModel.AddNewVMToList(); ViewModel.AddNewVMToList();
@@ -86,17 +89,17 @@ namespace BeWo.View.Detail
DeactivateNode(record.Parameter); DeactivateNode(record.Parameter);
} }
private void RedoAddAction(MassnahmenHistoryRecordAdd param) => RedoAddAction(param.Parameter); private void RedoAddAction(MassnahmenHistoryRecordAdd param) => RedoAddAction(param.Parameter);
private void RedoAddAction(MassnahmenHistoryNodeParameter addParam) private void RedoAddAction(NodeRelation addParam)
{ {
ActivateNode(addParam); ActivateNode(addParam);
} }
public List<MassnahmenHistoryNodeParameter> DoCopyAction(SupportConceptGoalTreeItem parent, SupportConceptGoalTreeItem source, public List<NodeRelation> DoCopyAction(SupportConceptGoalTreeItem parent, SupportConceptGoalTreeItem source,
MassnahmenTreeCopyType copyType, bool force_deep_copy, MassnahmenTreeCopyType copyType, bool force_deep_copy,
out MassnahmenHistoryNodeParameter current, Stack<MassnahmenHistoryNodeParameter> records = null) out NodeRelation current, Stack<NodeRelation> records = null)
{ {
if (records is null) if (records is null)
records = new Stack<MassnahmenHistoryNodeParameter>(); records = new Stack<NodeRelation>();
if (source == null || parent == null) if (source == null || parent == null)
throw new NotImplementedException("#43298467891364987"); throw new NotImplementedException("#43298467891364987");
@@ -105,7 +108,7 @@ namespace BeWo.View.Detail
var childs = source.Items.ToList(); var childs = source.Items.ToList();
var param = DoAddAction(parent, wm.Type, wm.Description, wm.Abbreviation, wm.Notice); var param = DoAddAction(parent, wm.Type, wm.Description, wm.Abbreviation, wm.Notice);
var node = param.Current; var node = param.Current;
var parameter = new MassnahmenHistoryNodeParameter(node, parent); var parameter = new NodeRelation(node, parent);
current = parameter; current = parameter;
@@ -130,11 +133,11 @@ namespace BeWo.View.Detail
ActivateSubtree(record.CurrentNode, record.Parameters); ActivateSubtree(record.CurrentNode, record.Parameters);
} }
public MassnahmenHistoryRecordDelete DoDeleteAction(MassnahmenHistoryNodeParameter param) public MassnahmenHistoryRecordDelete DoDeleteAction(NodeRelation param)
{ {
// Delete Full Subtree // Delete Full Subtree
var stack = new Stack<MassnahmenHistoryNodeParameter>(); var stack = new Stack<NodeRelation>();
var queue = new Queue<MassnahmenHistoryNodeParameter>(); var queue = new Queue<NodeRelation>();
DoDeleteActionRec(param.Current, ref stack, ref queue); DoDeleteActionRec(param.Current, ref stack, ref queue);
@@ -142,18 +145,18 @@ namespace BeWo.View.Detail
DeactivateSubtree(param, queue); DeactivateSubtree(param, queue);
//var list = stack.Select(x => new MassnahmenHistoryNodeParameter(x, View.GetParent(x))).ToList(); //var list = stack.Select(x => new MassnahmenHistoryNodeParameter(x, View.GetParent(x))).ToList();
var node = new MassnahmenHistoryNodeParameter(param.Current, param.Parent); var node = new NodeRelation(param.Current, param.Parent);
return new MassnahmenHistoryRecordDelete(node, stack.ToList()); return new MassnahmenHistoryRecordDelete(node, stack.ToList());
} }
public void DoDeleteActionRec(SupportConceptGoalTreeItem item, ref Stack<MassnahmenHistoryNodeParameter> stack, ref Queue<MassnahmenHistoryNodeParameter> queue) public void DoDeleteActionRec(SupportConceptGoalTreeItem item, ref Stack<NodeRelation> stack, ref Queue<NodeRelation> queue)
{ {
foreach (var child in item.Items) foreach (var child in item.Items)
{ {
DoDeleteActionRec(child, ref stack, ref queue); DoDeleteActionRec(child, ref stack, ref queue);
} }
var param = new MassnahmenHistoryNodeParameter(item); var param = new NodeRelation(item);
stack.Push(param); stack.Push(param);
queue.Enqueue(param); queue.Enqueue(param);
} }
@@ -166,13 +169,13 @@ namespace BeWo.View.Detail
DeactivateSubtree(param.ExNode, param.Parameters); DeactivateSubtree(param.ExNode, param.Parameters);
} }
public List<MassnahmenHistoryNodeParameter> DoImportAction(SupportConceptGoalDC goal, List<MassnahmenHistoryNodeParameter> records = null) public List<NodeRelation> DoImportAction(SupportConceptGoalDC goal, List<NodeRelation> records = null)
{ {
if (goal == null) if (goal == null)
return null; return null;
if (records == null) if (records == null)
records = new List<MassnahmenHistoryNodeParameter>(); records = new List<NodeRelation>();
goal.Children?.ForEach(x => DoImportAction(x, records)); goal.Children?.ForEach(x => DoImportAction(x, records));
@@ -225,9 +228,25 @@ namespace BeWo.View.Detail
DoMoveAction(move.Child, move.ExParent, move.Parent); DoMoveAction(move.Child, move.ExParent, move.Parent);
} }
public MassnahmenHistoryRecordEdit DoEditAction(ValueListEntryDC b, ValueListEntryVM a)
{
var before = new NodeEditInformation { Abbreviation = b.Abbreviation, Description = b.TypeDescription, Notice = b.Notice };
var after = new NodeEditInformation { Abbreviation = a.Abbreviation, Description = a.Description, Notice = a.Notice };
return new MassnahmenHistoryRecordEdit(a, before, after);
}
private void UndoEditAction(MassnahmenHistoryRecordEdit edit)
{
edit.SetVM(edit.Before);
}
private void RedoEditAction(MassnahmenHistoryRecordEdit edit)
{
edit.SetVM(edit.After);
}
private Tuple<Action<MassnahmenHistoryRecord>, Action<MassnahmenHistoryRecord>> GetTuple<T1>(Action<T1> a, Action<T1> b) where T1 : MassnahmenHistoryRecord private Tuple<Action<MassnahmenHistoryRecord>, Action<MassnahmenHistoryRecord>> GetTuple<T1>(Action<T1> a, Action<T1> b) where T1 : MassnahmenHistoryRecord
=> new Tuple<Action<MassnahmenHistoryRecord>, Action<MassnahmenHistoryRecord>>(x => a(x as T1), x => b(x as T1)); => new Tuple<Action<MassnahmenHistoryRecord>, Action<MassnahmenHistoryRecord>>(x => a(x as T1), x => b(x as T1));
private SupportConceptGoalTreeItem AddIcf(SupportConceptGoalDC goal, List<MassnahmenHistoryNodeParameter> records) private SupportConceptGoalTreeItem AddIcf(SupportConceptGoalDC goal, List<NodeRelation> records)
{ {
if (goal == null) return null; if (goal == null) return null;
@@ -270,7 +289,7 @@ namespace BeWo.View.Detail
return record2.Current; return record2.Current;
} }
private void ActivateSubtree(MassnahmenHistoryNodeParameter currentNode, List<MassnahmenHistoryNodeParameter> param) private void ActivateSubtree(NodeRelation currentNode, List<NodeRelation> param)
{ {
foreach (var item in param) foreach (var item in param)
{ {
@@ -282,7 +301,7 @@ namespace BeWo.View.Detail
else else
GoalTree.Add(currentNode.Current); GoalTree.Add(currentNode.Current);
} }
private void ActivateNode(MassnahmenHistoryNodeParameter currentNode) private void ActivateNode(NodeRelation currentNode)
{ {
var newItem = currentNode.Current; var newItem = currentNode.Current;
var parent = currentNode.Parent; var parent = currentNode.Parent;
@@ -295,7 +314,7 @@ namespace BeWo.View.Detail
GoalTree.Add(newItem); GoalTree.Add(newItem);
} }
private void DeactivateSubtree(MassnahmenHistoryNodeParameter currentNode, IEnumerable<MassnahmenHistoryNodeParameter> param) private void DeactivateSubtree(NodeRelation currentNode, IEnumerable<NodeRelation> param)
{ {
foreach (var item in param) foreach (var item in param)
{ {
@@ -307,7 +326,7 @@ namespace BeWo.View.Detail
else else
GoalTree.Remove(currentNode.Current); GoalTree.Remove(currentNode.Current);
} }
private void DeactivateNode(MassnahmenHistoryNodeParameter currentNode) private void DeactivateNode(NodeRelation currentNode)
{ {
var newItem = currentNode.Current; var newItem = currentNode.Current;
var parent = currentNode.Parent; var parent = currentNode.Parent;

View File

@@ -174,7 +174,7 @@ namespace BeWo.View.Detail
break; break;
case "Bearbeiten": case "Bearbeiten":
if (selectedItem != null) if (selectedItem != null)
EditTreeItem(selectedItem.GoalEntryVM); StartEditTreeItem(selectedItem.GoalEntryVM);
break; break;
case "Einzelnes Element kopieren": case "Einzelnes Element kopieren":
if (selectedItem != null) if (selectedItem != null)
@@ -480,7 +480,7 @@ namespace BeWo.View.Detail
} }
item.Items.Sort(CompareToCustom); item.Items.Sort(CompareToCustom);
//item.Items.Sort((x, y) => x.GoalEntryVM?.DisplayName?.CompareTo(y.GoalEntryVM?.DisplayName) ?? string.Compare(string.Empty, y.GoalEntryVM?.DisplayName, StringComparison.Ordinal)); //item.Items.Sort((x, y) => x.GoalEntryVM?.DisplayName?.CompareTo(y.GoalEntryVM?.DisplayName) ?? string.Compare(string.Empty, y.GoalEntryVM?.DisplayName, StringComparison.Ordinal));
} }
} }
@@ -574,7 +574,7 @@ namespace BeWo.View.Detail
_History.ClearHistory(); _History.ClearHistory();
} }
private static void EditTreeItem(ValueListEntryVM valueListEntry) private void StartEditTreeItem(ValueListEntryVM valueListEntry)
{ {
if (valueListEntry == null) return; if (valueListEntry == null) return;
if (valueListEntry.IsNew) if (valueListEntry.IsNew)
@@ -595,7 +595,14 @@ namespace BeWo.View.Detail
beWoWindow.Close(); beWoWindow.Close();
}; };
control.SaveButtonClicked += () => beWoWindow.Close(); control.SaveButtonClicked += () =>
{
EditTreeItem(valueListEntry);
valueListEntry.CommitToDataContract();
beWoWindow.Close();
};
beWoWindow.Height = 200; beWoWindow.Height = 200;
beWoWindow.Width = 500; beWoWindow.Width = 500;
@@ -762,7 +769,7 @@ namespace BeWo.View.Detail
TraverseTreeViewItem(child); TraverseTreeViewItem(child);
} }
} }
public void AddTreeItemWithControl(SupportConceptGoalTreeItem parent, ValueListEntryType valueListEntryType, string viewHeader) public void AddTreeItemWithControl(SupportConceptGoalTreeItem parent, ValueListEntryType valueListEntryType, string viewHeader)
{ {
var control = new ValueListEntryEditControl(new ValueListEntryVM(new ValueListEntryDC()), null); var control = new ValueListEntryEditControl(new ValueListEntryVM(new ValueListEntryDC()), null);
@@ -797,7 +804,7 @@ namespace BeWo.View.Detail
beWoWindow.rootGroupBox.Header = viewHeader; beWoWindow.rootGroupBox.Header = viewHeader;
beWoWindow.ShowDialog(); beWoWindow.ShowDialog();
} }
private void AddTreeItem(SupportConceptGoalTreeItem parent, ValueListEntryType valueListEntryType, string description = null, string abbreviation = null, string notice = null) private void AddTreeItem(SupportConceptGoalTreeItem parent, ValueListEntryType valueListEntryType, string description = null, string abbreviation = null, string notice = null)
{ {
var param = _TreeTrimmer.DoAddAction(parent, valueListEntryType, description, abbreviation, notice); var param = _TreeTrimmer.DoAddAction(parent, valueListEntryType, description, abbreviation, notice);
@@ -812,7 +819,7 @@ namespace BeWo.View.Detail
} }
private void DeleteTreeItem(SupportConceptGoalTreeItem selectedItem) private void DeleteTreeItem(SupportConceptGoalTreeItem selectedItem)
{ {
var del = _TreeTrimmer.DoDeleteAction(new MassnahmenHistoryNodeParameter(selectedItem)); var del = _TreeTrimmer.DoDeleteAction(new MassnahmenHistoryRecord.NodeRelation(selectedItem));
_History.RecordDelete(del); _History.RecordDelete(del);
} }
@@ -833,6 +840,12 @@ namespace BeWo.View.Detail
_History.RecordMove(record); _History.RecordMove(record);
} }
private void EditTreeItem(ValueListEntryVM valueListEntry)
{
var param = _TreeTrimmer.DoEditAction(valueListEntry.DataContract, valueListEntry);
_History.RecordEdit(param);
}
private SupportConceptGoalTreeItem GetNearestContainer(UIElement element) private SupportConceptGoalTreeItem GetNearestContainer(UIElement element)
{ {