private void Course_ManifestChanged(ManifestChangedEventArgs e) { // TODO: UGLY HACK, problem consists of nodes of tree ignored using event OnBeforeNodeAdded // cannot be solved more elegant for now :( [Volodya Shtenyovych] if (e.ChangedNode is OrganizationType && ((e.ChangeType & (ManifestChangeTypes.ChildrenAdded | ManifestChangeTypes.ChildrenRemoved | ManifestChangeTypes.ChildrenReordered)) > 0) && ((Course.State & CourseStates.Opened) > 0)) { tvItems.Manifest_Changed(new ManifestChangedEventArgs(Course.Manifest, e.Nodes, e.ChangeType)); } }
public void Manifest_Changed(ManifestChangedEventArgs e) { var nodes = Nodes.Find(e.ChangedNode.UID, true); switch (nodes.Length) { case 0: break; case 1: var treeNode = nodes[0]; switch (e.ChangeType) { case ManifestChangeTypes.Changed: treeNode.Text = e.ChangedNode.ToString(); break; case ManifestChangeTypes.ChildrenRemoved: nodes = Nodes.Find(e.ChangedNode.UID, true); if (nodes.Length == 1) { var pNode = nodes[0]; foreach (var n in e.Nodes) { nodes = pNode.Nodes.Find(n.UID, false); if (nodes.Length == 1) { nodes[0].Remove(); } } } break; default: treeNode.Nodes.Clear(); BuildChildrens(e.ChangedNode, treeNode, 3); break; } break; default: throw new FireFlyException("Two or more tree node with key '{0}' found (Node: {0})", e.ChangedNode.UID, e.ChangedNode); } }