Exemplo n.º 1
0
        private void Databases_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
        {
            if (e.Action == NotifyCollectionChangedAction.Add)
            {
                foreach (var database in SessionData.Current.Databases)
                {
                    var dbNav = new DbNavigationNode
                    {
                        InstanceId = database.InstanceId,
                        Name       = database.Name,
                        NodeType   = DbNavigationNodeType.Database
                    };

                    foreach (var collection in database.Collections)
                    {
                        var nodeType = collection is FileCollectionReference ? DbNavigationNodeType.FileCollection : DbNavigationNodeType.Collection;
                        dbNav.AddChildren(new DbNavigationNode
                        {
                            InstanceId = collection.InstanceId,
                            Name       = collection.Name,
                            NodeType   = nodeType
                        });
                    }

                    AddDatabase(dbNav);
                }
            }
            else if (e.Action == NotifyCollectionChangedAction.Remove)
            {
                if (e.OldItems == null)
                {
                    return;
                }

                var indexToRemove = new HashSet <nuint>();
                foreach (var dbRef in e.OldItems.OfType <DatabaseReference>())
                {
                    for (nuint i = 0; i < _databases.Count; i++)
                    {
                        var dbNavNode = _databases.GetItem <DbNavigationNode>(i);
                        if (dbNavNode != null && dbNavNode.InstanceId.Equals(dbRef.InstanceId))
                        {
                            indexToRemove.Add(i);
                        }
                    }
                }
                foreach (var index in indexToRemove)
                {
                    RemoveDatabase((nint)index);
                }
            }
            else if (e.Action == NotifyCollectionChangedAction.Reset)
            {
                ClearDatabases();
            }
        }
Exemplo n.º 2
0
 public void InsertDatabase(DbNavigationNode node, nint index)
 {
     WillChangeValue(nameof(Databases));
     _databases.Insert(node, index);
     DidChangeValue(nameof(Databases));
 }
Exemplo n.º 3
0
 public void AddDatabase(DbNavigationNode node)
 {
     WillChangeValue(nameof(Databases));
     _databases.Add(node);
     DidChangeValue(nameof(Databases));
 }