/// <summary> /// Removes the binding child nodes and then adds the children back again if there are any. /// </summary> void RefreshBindingNode(TaskRunnerTreeNode taskRunnerNode, TaskRunnerBindEvent bindEvent) { // Ensure binding tab is displayed. notebook.CurrentTab = notebook.Tabs [0]; TaskRunnerBindingInformation binding = taskRunnerNode.TaskInfo.Bindings.FindBinding(bindEvent); TaskBindingTreeNode bindingNode = GetBindingTreeNode(bindEvent); TreeNavigator navigator = GetNavigator(bindingNode); if (navigator == null) { return; } navigator.RemoveChildren(); if (binding != null) { AddBindingChildNodes(taskRunnerNode.TaskInfo, binding, navigator, bindingNode); bindingsTreeView.ExpandRow(navigator.CurrentPosition, true); } else { // No more bindings. Last binding has been removed. RefreshBindingNodeName(bindingNode, navigator); } }
void AddBindingChildNodes( TaskRunnerInformation task, TaskRunnerBindingInformation binding, TreeNavigator navigator, TaskBindingTreeNode node) { foreach (TaskBindingTreeNode childNode in node.CreateChildNodes(task, binding)) { TreeNavigator childNavigator = navigator.AddChild(); if (!childNode.Icon.IsNull) { childNavigator.SetValue(bindingNodeIconField, ImageService.GetIcon(childNode.Icon, Gtk.IconSize.Menu)); } childNavigator.SetValue(bindingNodeNameField, childNode.Name); childNavigator.SetValue(bindingNodeField, childNode); AddBindingChildNodes(task, binding, childNavigator, childNode); navigator.MoveToParent(); } if (node.IsRootNode) { RefreshBindingNodeName(node, navigator); } }
TaskBindingTreeNode(TaskRunnerInformation task, TaskRunnerBindingInformation binding, string taskName) { this.task = task; this.binding = binding; BindEvent = binding.BindEvent; Name = taskName; hasChildren = false; IsTaskNameNode = true; }
TaskBindingTreeNode(TaskRunnerInformation task, TaskRunnerBindingInformation binding) { this.task = task; this.binding = binding; BindEvent = binding.BindEvent; Name = task.Name; Icon = task.Icon; hasChildren = true; }
public IEnumerable <TaskBindingTreeNode> CreateChildNodes( TaskRunnerInformation task, TaskRunnerBindingInformation binding) { if (IsRootNode) { tasks.Add(task); yield return(new TaskBindingTreeNode(task, binding)); } else if (hasChildren) { foreach (string taskName in binding.GetTasks()) { yield return(new TaskBindingTreeNode(task, binding, taskName)); } } }
void AddBindingNodes(TaskRunnerInformation task, TaskRunnerBindingInformation binding) { TaskBindingTreeNode parentNode = GetBindingTreeNode(binding.BindEvent); if (parentNode == null) { return; } TreeNavigator navigator = GetNavigator(parentNode); if (navigator == null) { return; } AddBindingChildNodes(task, binding, navigator, parentNode); }