Пример #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
 private bool PasteIntoNodePred(DataNode dataNode, out GroupCapabilities caps)
 {
     caps = dataNode.PasteIntoNodeCapabilities;
     return (dataNode != null) && dataNode.CanPasteIntoNode;
 }
Пример #6
0
 private bool DeleteNodePred(DataNode dataNode, out GroupCapabilities caps)
 {
     caps = dataNode.DeleteNodeCapabilities;
     return (dataNode != null) && dataNode.CanDeleteNode;
 }
Пример #7
0
 private bool CreateIntArrayNodePred(DataNode dataNode, out GroupCapabilities caps)
 {
     caps = GroupCapabilities.Single;
     return (dataNode != null) && dataNode.CanCreateTag(TagType.TAG_INT_ARRAY);
 }
Пример #8
0
 private bool CreateDoubleNodePred(DataNode dataNode, out GroupCapabilities caps)
 {
     caps = GroupCapabilities.Single;
     return (dataNode != null) && dataNode.CanCreateTag(TagType.TAG_DOUBLE);
 }
Пример #9
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;
        }
Пример #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
 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
 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
 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
 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
 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
 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));
 }