コード例 #1
0
 public bool CanOperateOnSelection(DataNodePredicate pred)
 {
     if (_multiTree != null)
     {
         return(CanOperateOnNodes(_multiTree.SelectedNodes, pred));
     }
     else
     {
         return(CanOperateOnNodes(new List <TreeNode>()
         {
             _nodeTree.SelectedNode
         }, pred));
     }
 }
コード例 #2
0
        private bool CanOperateOnNodesEx(IList <TreeNode> nodes, DataNodePredicate pred, out bool?elideChildren)
        {
            GroupCapabilities caps = GroupCapabilities.All;

            elideChildren = null;

            foreach (TreeNode node in nodes)
            {
                if (node == null || !(node.Tag is DataNode))
                {
                    return(false);
                }

                DataNode          dataNode = node.Tag as DataNode;
                GroupCapabilities dataCaps;
                if (!pred(dataNode, out dataCaps))
                {
                    return(false);
                }

                caps &= dataCaps;

                bool elideChildrenFlag = (dataNode.DeleteNodeCapabilities & GroupCapabilities.ElideChildren) == GroupCapabilities.ElideChildren;
                if (elideChildren == null)
                {
                    elideChildren = elideChildrenFlag;
                }
                if (elideChildren != elideChildrenFlag)
                {
                    return(false);
                }
            }

            if (nodes.Count > 1 && !SufficientCapabilities(nodes, caps))
            {
                return(false);
            }

            return(true);
        }
コード例 #3
0
ファイル: MainForm.cs プロジェクト: emps2222/NBTExplorer
        private bool CanOperateOnNodesEx(IList<TreeNode> nodes, DataNodePredicate pred, out bool? elideChildren)
        {
            GroupCapabilities caps = GroupCapabilities.All;
            elideChildren = null;

            foreach (TreeNode node in nodes) {
                if (node == null || !(node.Tag is DataNode))
                    return false;

                DataNode dataNode = node.Tag as DataNode;
                GroupCapabilities dataCaps;
                if (!pred(dataNode, out dataCaps))
                    return false;

                caps &= dataCaps;

                bool elideChildrenFlag = (dataNode.DeleteNodeCapabilities & GroupCapabilities.ElideChildren) == GroupCapabilities.ElideChildren;
                if (elideChildren == null)
                    elideChildren = elideChildrenFlag;
                if (elideChildren != elideChildrenFlag)
                    return false;
            }

            if (nodes.Count > 1 && !SufficientCapabilities(nodes, caps))
                return false;

            return true;
        }
コード例 #4
0
ファイル: MainForm.cs プロジェクト: emps2222/NBTExplorer
 /*private bool CreateTagNodePred (DataNode dataNode, out GroupCapabilities caps)
 {
     caps = GroupCapabilities.Single;
     return (dataNode != null) && dataNode.CanCreateTag
 }*/
 private bool CanOperateOnNodes(IList<TreeNode> nodes, DataNodePredicate pred)
 {
     bool? elideChildren = null;
     return CanOperateOnNodesEx(nodes, pred, out elideChildren);
 }
コード例 #5
0
 public bool CanOperateOnSelection (DataNodePredicate pred)
 {
     if (_multiTree != null)
         return CanOperateOnNodes(_multiTree.SelectedNodes, pred);
     else
         return CanOperateOnNodes(new List<TreeNode>() { _nodeTree.SelectedNode }, pred);
 }
コード例 #6
0
        private bool CanOperateOnNodes(IList <TreeNode> nodes, DataNodePredicate pred)
        {
            bool?elideChildren = null;

            return(CanOperateOnNodesEx(nodes, pred, out elideChildren));
        }