Ejemplo n.º 1
0
 /// <summary>
 /// Reseta o enumerador.
 /// </summary>
 public void Reset()
 {
     _current = null;
     if (_itemEnumerator != null)
     {
         _itemEnumerator.Reset();
     }
 }
Ejemplo n.º 2
0
 public void Dispose()
 {
     if (_itemEnumerator is IDisposable)
     {
         ((IDisposable)_itemEnumerator).Dispose();
     }
     _current        = null;
     _itemEnumerator = null;
 }
Ejemplo n.º 3
0
 /// <summary>
 /// Libera a instancia.
 /// </summary>
 /// <param name="disposing"></param>
 protected virtual void Dispose(bool disposing)
 {
     _firstChild = null;
     _owner      = null;
     _left       = null;
     _right      = null;
     if (_item is System.ComponentModel.INotifyPropertyChanged)
     {
         ((System.ComponentModel.INotifyPropertyChanged)_item).PropertyChanged -= ItemPropertyChanged;
     }
 }
Ejemplo n.º 4
0
 /// <summary>
 /// Cria um nó filho.
 /// </summary>
 /// <param name="owner"></param>
 /// <param name="left">Nó da esquerda.</param>
 /// <param name="item"></param>
 private TreeViewSourceNode(TreeViewSourceNode owner, TreeViewSourceNode left, object item)
 {
     _owner = owner;
     _left  = left;
     _item  = item;
     if (item is System.ComponentModel.INotifyPropertyChanged)
     {
         ((System.ComponentModel.INotifyPropertyChanged)item).PropertyChanged += ItemPropertyChanged;
     }
     Initialize();
 }
Ejemplo n.º 5
0
 private TreeViewSource(System.Collections.IEnumerable items, Func <object, object> keyGetter, string keyPropertyName, Func <object, object> ownerKeyGetter, string ownerKeyPropertyName, Func <object, IMessageFormattable> nameGetter, string namePropertyName, object rootItem, bool isInitializeExpanded, bool isLazyLoad, System.Collections.IEqualityComparer keyEqualityComparer)
 {
     items.Require("items");
     _items                     = items;
     _keyGetter                 = keyGetter;
     _keyPropertyName           = keyPropertyName;
     _ownerKeyGetter            = ownerKeyGetter;
     _ownerPropertyName         = ownerKeyPropertyName;
     _nameGetter                = nameGetter;
     _namePropertyName          = namePropertyName;
     _isInitializeExpanded      = isInitializeExpanded;
     _keyEqualityComparer       = keyEqualityComparer;
     _isLazyLoad                = isLazyLoad;
     _collectionChangedHandlers = new Dictionary <NotifyCollectionChangedEventHandler, CollectionChangedWrapperEventData>();
     _root = new TreeViewSourceNode(this, rootItem);
     _root.CollectionChanged += RootCollectionChanged;
 }
Ejemplo n.º 6
0
            /// <summary>
            /// Move para o próximo nó.
            /// </summary>
            public bool MoveNext()
            {
                var oldCount = _node._count;

                if (_tree == null)
                {
                    return(false);
                }
                if (_tree.IsLazyLoad && !_node.IsExpanded)
                {
                    if (_current == null)
                    {
                        _current = TreeViewSourceNode.Empty;
                        return(true);
                    }
                    return(false);
                }
                if (_itemEnumerator == null)
                {
                    _node.FirstChild = null;
                    if (_tree.Items is IIndexedObservableCollection)
                    {
                        var indexedCollection = ((IIndexedObservableCollection)_tree.Items);
                        if (indexedCollection.ContainsIndex(_tree.OwnerPropertyName, DefaultIndexType))
                        {
                            _itemEnumerator         = indexedCollection.Search(_tree.OwnerPropertyName, DefaultIndexType, _node.Key).GetEnumerator();
                            _isOwnerPropertyIndexed = true;
                        }
                        else
                        {
                            _isOwnerPropertyIndexed = false;
                        }
                    }
                    else
                    {
                        _isOwnerPropertyIndexed = false;
                    }
                    if (!_isOwnerPropertyIndexed)
                    {
                        _itemEnumerator = _tree.Items.GetEnumerator();
                    }
                }
                object ownerKey = null;

                while (_itemEnumerator.MoveNext())
                {
                    if (!_isOwnerPropertyIndexed)
                    {
                        ownerKey = _tree.GetOwnerKey(_itemEnumerator.Current);
                    }
                    if (_isOwnerPropertyIndexed || KeysEquals(_tree, _node.Key, ownerKey))
                    {
                        var old = _current;
                        _current = new TreeViewSourceNode(_current == null ? _node : null, _current == null ? null : _current, _itemEnumerator.Current);
                        if (_node.FirstChild == null)
                        {
                            _node.FirstChild = _current;
                        }
                        if (old != null)
                        {
                            old.Right = _current;
                        }
                        _node._count++;
                        return(true);
                    }
                }
                _node._isEmpty = (_node._count == 0);
                if (_node._count != oldCount)
                {
                    _node.RaisePropertyChanged("Count");
                }
                return(false);
            }
Ejemplo n.º 7
0
 /// <summary>
 /// Construtor padrão.
 /// </summary>
 /// <param name="node"></param>
 public Enumerator(TreeViewSourceNode node)
 {
     _tree = node.GetTree();
     _node = node;
 }
Ejemplo n.º 8
0
 /// <summary>
 /// Construtor padrão.
 /// </summary>
 /// <param name="owner"></param>
 public ReentracyMonitor(TreeViewSourceNode owner)
 {
     _owner = owner;
     lock (_owner._reentrancyThreads)
         _owner._reentrancyThreads.Add(System.Threading.Thread.CurrentThread);
 }