コード例 #1
0
ファイル: NodeGroupCollection.cs プロジェクト: mo5h/omeo
        public IVisibleNodeEnumerator GetDirectionalEnumerator(IViewNode startNode, MoveDirection direction)
        {
            Guard.NullArgument(startNode, "startNode");
            JetListViewNode startLvNode = startNode as JetListViewNode;

            if (startLvNode != null)
            {
                return(new GroupedItemEnumerator(this,
                                                 _nodeCollection.GetDirectionalEnumerator(startLvNode, direction), direction,
                                                 (direction == MoveDirection.Down)));
            }

            GroupHeaderNode startHeaderNode = startNode as GroupHeaderNode;

            Debug.Assert(startHeaderNode.TopNode != null);
            if (startHeaderNode.TopNode == null)
            {
                return(new GroupedItemEnumerator(this, new EmptyEnumerator(), direction, false));
            }

            GroupedItemEnumerator enumerator = new GroupedItemEnumerator(this,
                                                                         _nodeCollection.GetDirectionalEnumerator(startHeaderNode.TopNode, direction),
                                                                         direction, false);

            if (direction == MoveDirection.Up)
            {
                // move from first node of current group to last node of previous group
                enumerator.MoveNext();
            }
            return(enumerator);
        }
コード例 #2
0
ファイル: IncrementalSearcher.cs プロジェクト: mo5h/omeo
        public bool IncrementalSearchNext(string text, MoveDirection dir)
        {
            JetListViewNode curNode    = _selection.ActiveNode;
            IEnumerator     enumerator = (dir == MoveDirection.Down)
                ? _nodeCollection.EnumerateNodesForward(curNode)
                : _nodeCollection.EnumerateNodesBackward(curNode);

            enumerator.MoveNext();

            if (SearchEnumerator(text, enumerator, null))
            {
                return(true);
            }

            JetListViewNode startNode = (dir == MoveDirection.Down)
                ? _nodeCollection.Nodes [0]
                : _nodeCollection.LastNode;

            if (curNode == startNode)
            {
                return(false);
            }

            enumerator = _nodeCollection.GetDirectionalEnumerator(startNode, dir);
            return(SearchEnumerator(text, enumerator, curNode));
        }