コード例 #1
0
        private bool SufficientCapabilities(IEnumerable <TreeNode> nodes, GroupCapabilities commonCaps)
        {
            bool commonContainer = CommonContainer(nodes);
            bool commonType      = CommonType(nodes);

            bool pass = true;

            if (commonContainer && commonType)
            {
                pass &= ((commonCaps & GroupCapabilities.SiblingSameType) == GroupCapabilities.SiblingSameType);
            }
            else if (commonContainer && !commonType)
            {
                pass &= ((commonCaps & GroupCapabilities.SiblingMixedType) == GroupCapabilities.SiblingMixedType);
            }
            else if (!commonContainer && commonType)
            {
                pass &= ((commonCaps & GroupCapabilities.MultiSameType) == GroupCapabilities.MultiSameType);
            }
            else if (!commonContainer && !commonType)
            {
                pass &= ((commonCaps & GroupCapabilities.MultiMixedType) == GroupCapabilities.MultiMixedType);
            }

            return(pass);
        }
コード例 #2
0
        private GroupCapabilities CommonCapabilities(IEnumerable <GroupCapabilities> capabilities)
        {
            GroupCapabilities caps = GroupCapabilities.All;

            foreach (GroupCapabilities cap in capabilities)
            {
                caps &= cap;
            }
            return(caps);
        }
コード例 #3
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);
        }
コード例 #4
0
 public static bool CreateStringNodePred(DataNode dataNode, out GroupCapabilities caps)
 {
     caps = GroupCapabilities.Single;
     return((dataNode != null) && dataNode.CanCreateTag(TagType.TAG_STRING));
 }
コード例 #5
0
ファイル: MainForm.cs プロジェクト: emps2222/NBTExplorer
 private bool PasteIntoNodePred(DataNode dataNode, out GroupCapabilities caps)
 {
     caps = dataNode.PasteIntoNodeCapabilities;
     return (dataNode != null) && dataNode.CanPasteIntoNode;
 }
コード例 #6
0
ファイル: MainForm.cs プロジェクト: emps2222/NBTExplorer
 private bool DeleteNodePred(DataNode dataNode, out GroupCapabilities caps)
 {
     caps = dataNode.DeleteNodeCapabilities;
     return (dataNode != null) && dataNode.CanDeleteNode;
 }
コード例 #7
0
ファイル: MainForm.cs プロジェクト: emps2222/NBTExplorer
 private bool CreateIntArrayNodePred(DataNode dataNode, out GroupCapabilities caps)
 {
     caps = GroupCapabilities.Single;
     return (dataNode != null) && dataNode.CanCreateTag(TagType.TAG_INT_ARRAY);
 }
コード例 #8
0
ファイル: MainForm.cs プロジェクト: emps2222/NBTExplorer
 private bool CreateDoubleNodePred(DataNode dataNode, out GroupCapabilities caps)
 {
     caps = GroupCapabilities.Single;
     return (dataNode != null) && dataNode.CanCreateTag(TagType.TAG_DOUBLE);
 }
コード例 #9
0
ファイル: MainForm.cs プロジェクト: emps2222/NBTExplorer
        private bool SufficientCapabilities(IEnumerable<TreeNode> nodes, GroupCapabilities commonCaps)
        {
            bool commonContainer = CommonContainer(nodes);
            bool commonType = CommonType(nodes);

            bool pass = true;
            if (commonContainer && commonType)
                pass &= ((commonCaps & GroupCapabilities.SiblingSameType) == GroupCapabilities.SiblingSameType);
            else if (commonContainer && !commonType)
                pass &= ((commonCaps & GroupCapabilities.SiblingMixedType) == GroupCapabilities.SiblingMixedType);
            else if (!commonContainer && commonType)
                pass &= ((commonCaps & GroupCapabilities.MultiSameType) == GroupCapabilities.MultiSameType);
            else if (!commonContainer && !commonType)
                pass &= ((commonCaps & GroupCapabilities.MultiMixedType) == GroupCapabilities.MultiMixedType);

            return pass;
        }
コード例 #10
0
 public static bool CreateListNodePred (DataNode dataNode, out GroupCapabilities caps)
 {
     caps = GroupCapabilities.Single;
     return (dataNode != null) && dataNode.CanCreateTag(TagType.TAG_LIST);
 }
コード例 #11
0
 public static bool CreateByteArrayNodePred (DataNode dataNode, out GroupCapabilities caps)
 {
     caps = GroupCapabilities.Single;
     return (dataNode != null) && dataNode.CanCreateTag(TagType.TAG_BYTE_ARRAY);
 }
コード例 #12
0
 public static bool ReorderNodePred(DataNode dataNode, out GroupCapabilities caps)
 {
     caps = dataNode.ReorderNodeCapabilities;
     return((dataNode != null) && dataNode.CanReoderNode);
 }
コード例 #13
0
 public static bool SearchNodePred(DataNode dataNode, out GroupCapabilities caps)
 {
     caps = dataNode.SearchNodeCapabilites;
     return((dataNode != null) && dataNode.CanSearchNode);
 }
コード例 #14
0
 public static bool DeleteNodePred(DataNode dataNode, out GroupCapabilities caps)
 {
     caps = dataNode.DeleteNodeCapabilities;
     return((dataNode != null) && dataNode.CanDeleteNode);
 }
コード例 #15
0
 public static bool PasteIntoNodePred(DataNode dataNode, out GroupCapabilities caps)
 {
     caps = dataNode.PasteIntoNodeCapabilities;
     return(dataNode != null && dataNode.CanPasteIntoNode);
 }
コード例 #16
0
 public static bool RenameNodePred (DataNode dataNode, out GroupCapabilities caps)
 {
     caps = dataNode.RenameNodeCapabilities;
     return (dataNode != null) && dataNode.CanRenameNode;
 }
コード例 #17
0
 public static bool RefreshNodePred(DataNode dataNode, out GroupCapabilities caps)
 {
     caps = dataNode.RefreshNodeCapabilites;
     return(dataNode != null && dataNode.CanRefreshNode);
 }
コード例 #18
0
 public static bool MoveNodeUpPred (DataNode dataNode, out GroupCapabilities caps)
 {
     caps = dataNode.ReorderNodeCapabilities;
     return (dataNode != null) && dataNode.CanMoveNodeUp;
 }
コード例 #19
0
ファイル: MainForm.cs プロジェクト: emps2222/NBTExplorer
 private bool SearchNodePred(DataNode dataNode, out GroupCapabilities caps)
 {
     caps = dataNode.SearchNodeCapabilites;
     return (dataNode != null) && dataNode.CanSearchNode;
 }
コード例 #20
0
 public static bool CreateLongArrayNodePred(DataNode dataNode, out GroupCapabilities caps)
 {
     caps = GroupCapabilities.Single;
     return(dataNode != null && dataNode.CanCreateTag(TagType.TAG_LONG_ARRAY));
 }
コード例 #21
0
ファイル: MainForm.cs プロジェクト: emps2222/NBTExplorer
 private bool CreateCompoundNodePred(DataNode dataNode, out GroupCapabilities caps)
 {
     caps = GroupCapabilities.Single;
     return (dataNode != null) && dataNode.CanCreateTag(TagType.TAG_COMPOUND);
 }
コード例 #22
0
 public static bool CreateListNodePred(DataNode dataNode, out GroupCapabilities caps)
 {
     caps = GroupCapabilities.Single;
     return(dataNode != null && dataNode.CanCreateTag(TagType.TAG_LIST));
 }
コード例 #23
0
ファイル: MainForm.cs プロジェクト: emps2222/NBTExplorer
 private bool CreateFloatNodePred(DataNode dataNode, out GroupCapabilities caps)
 {
     caps = GroupCapabilities.Single;
     return (dataNode != null) && dataNode.CanCreateTag(TagType.TAG_FLOAT);
 }
コード例 #24
0
 public static bool CreateCompoundNodePred(DataNode dataNode, out GroupCapabilities caps)
 {
     caps = GroupCapabilities.Single;
     return(dataNode != null && dataNode.CanCreateTag(TagType.TAG_COMPOUND));
 }
コード例 #25
0
ファイル: MainForm.cs プロジェクト: emps2222/NBTExplorer
 private bool CreateStringNodePred(DataNode dataNode, out GroupCapabilities caps)
 {
     caps = GroupCapabilities.Single;
     return (dataNode != null) && dataNode.CanCreateTag(TagType.TAG_STRING);
 }
コード例 #26
0
 public static bool MoveNodeDownPred(DataNode dataNode, out GroupCapabilities caps)
 {
     caps = dataNode.ReorderNodeCapabilities;
     return(dataNode != null && dataNode.CanMoveNodeDown);
 }
コード例 #27
0
ファイル: MainForm.cs プロジェクト: emps2222/NBTExplorer
 private bool EditNodePred(DataNode dataNode, out GroupCapabilities caps)
 {
     caps = dataNode.EditNodeCapabilities;
     return (dataNode != null) && dataNode.CanEditNode;
 }
コード例 #28
0
 public static bool CopyNodePred(DataNode dataNode, out GroupCapabilities caps)
 {
     caps = dataNode.CopyNodeCapabilities;
     return(dataNode != null && dataNode.CanCopyNode);
 }
コード例 #29
0
ファイル: MainForm.cs プロジェクト: emps2222/NBTExplorer
 private bool ReorderNodePred(DataNode dataNode, out GroupCapabilities caps)
 {
     caps = dataNode.ReorderNodeCapabilities;
     return (dataNode != null) && dataNode.CanReoderNode;
 }
コード例 #30
0
 public static bool CreateByteArrayNodePred(DataNode dataNode, out GroupCapabilities caps)
 {
     caps = GroupCapabilities.Single;
     return((dataNode != null) && dataNode.CanCreateTag(TagType.TAG_BYTE_ARRAY));
 }