Пример #1
0
        private IResource SearchEnumerator(bool forward, JetListViewNode node, JetListViewNode stopNode,
                                           LocateMatchCallback callback, bool skipFirst)
        {
            IEnumerator enumerator = forward? EnumerateItemsForward(node) : EnumerateItemsBackward(node);

            if (skipFirst)
            {
                enumerator.MoveNext();
            }
            while (enumerator.MoveNext())
            {
                JetListViewNode childNode = (JetListViewNode)enumerator.Current;
                if (childNode == stopNode)
                {
                    return(null);
                }
                IResource childResource = (IResource)childNode.Data;
                if (callback(childResource))
                {
                    return(childResource);
                }
            }
            return(null);
        }
Пример #2
0
        private IResource LocateNextResourceInDirection(bool isForward, IResource start, LocateMatchCallback callback,
                                                        bool skipFirst, bool searchBackAlso)
        {
            IResource       result = null;
            JetListViewNode node   = NodeFromItem(start);

            if (node != null)
            {
                lock (JetListView.NodeCollection)
                {
                    result = SearchEnumerator(isForward, node, null, callback, skipFirst);
                    if (result == null && searchBackAlso)
                    {
                        result = SearchEnumerator(isForward, null, node, callback, false);
                    }
                }
            }
            return(result);
        }
Пример #3
0
 public IResource LocatePrevResource(IResource startResource, LocateMatchCallback callback,
                                     bool skipFirst, bool searchBackAlso)
 {
     return(LocateNextResourceInDirection(false, startResource, callback, skipFirst, searchBackAlso));
 }