Beispiel #1
0
        /// <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);
            }
        }
Beispiel #2
0
        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);
            }
        }
Beispiel #3
0
        TaskBindingTreeNode(TaskRunnerInformation task, TaskRunnerBindingInformation binding, string taskName)
        {
            this.task    = task;
            this.binding = binding;

            BindEvent      = binding.BindEvent;
            Name           = taskName;
            hasChildren    = false;
            IsTaskNameNode = true;
        }
Beispiel #4
0
        TaskBindingTreeNode(TaskRunnerInformation task, TaskRunnerBindingInformation binding)
        {
            this.task    = task;
            this.binding = binding;

            BindEvent   = binding.BindEvent;
            Name        = task.Name;
            Icon        = task.Icon;
            hasChildren = true;
        }
Beispiel #5
0
 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));
         }
     }
 }
Beispiel #6
0
        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);
        }