private void CollectionMessageHandler(NotificationMessage <MongoDbCollectionViewModel> message)
        {
            LoggerHelper.Logger.Debug("MongoDbCollectionViewModel message received");
            switch (message.Notification)
            {
            case Constants.ConfirmDropCollectionMessage:
                var result = MessageBox.Show("Drop collection " + message.Content.Name + "?", "Drop confirm", MessageBoxButton.YesNo, MessageBoxImage.Question);
                if (result == MessageBoxResult.Yes)
                {
                    LoggerHelper.Logger.Debug("Sending DropCollection message, collection name:" + message.Content.Name);
                    Messenger.Default.Send(new NotificationMessage <MongoDbCollectionViewModel>(this, message.Content.Database, message.Content, Constants.DropCollectionMessage));
                }
                break;

            case Constants.OpenCreateIndexMessage:
                CreateIndexDialog wnd = new CreateIndexDialog();
                wnd.Title = "Create index";
                var vm = GalaSoft.MvvmLight.Ioc.SimpleIoc.Default.GetInstanceWithoutCaching <CreateIndexViewModel>();
                vm.Collection   = message.Content;
                vm.IsNew        = true;
                wnd.DataContext = vm;
                wnd.ShowDialog();
                break;
            }
        }
        private void IndexMessageHandler(NotificationMessage <MongoDbIndexViewModel> message)
        {
            switch (message.Notification)
            {
            case Constants.ConfirmDropIndexMessage:
                var result = MessageBox.Show("Drop index " + message.Content.Name + "?", "Drop confirm", MessageBoxButton.YesNo, MessageBoxImage.Question);
                if (result == MessageBoxResult.Yes)
                {
                    LoggerHelper.Logger.Debug("Sending DropIndex message, index name:" + message.Content.Name);
                    Messenger.Default.Send(new NotificationMessage <MongoDbIndexViewModel>(this, message.Content.Collection, message.Content, Constants.DropIndexMessage));
                }
                break;

            case Constants.EditIndexMessage:
                CreateIndexDialog wnd = new CreateIndexDialog();
                wnd.Title = "Edit index";
                var vm = GalaSoft.MvvmLight.Ioc.SimpleIoc.Default.GetInstanceWithoutCaching <CreateIndexViewModel>();
                vm.Collection      = message.Content.Collection;
                vm.Name            = message.Content.Name;
                vm.IsNew           = false;
                vm.IsExpanded      = true;
                vm.IndexDefinition = message.Content.Index["key"].ToJson(new MongoDB.Bson.IO.JsonWriterSettings()
                {
                    Indent = true
                });
                if (message.Content.Index.Contains("unique"))
                {
                    vm.Unique = message.Content.Index["unique"].AsBoolean;
                }

                if (message.Content.Index.Contains("sparse"))
                {
                    vm.Sparse = message.Content.Index["sparse"].AsBoolean;
                }

                if (message.Content.Index.Contains("expireAfterSeconds"))
                {
                    vm.ExpireAfter = message.Content.Index["expireAfterSeconds"].AsInt32;
                }

                if (message.Content.Index.Contains("v"))
                {
                    vm.Version = message.Content.Index["v"].AsInt32;
                }

                if (message.Content.Index.Contains("storageEngine"))
                {
                    vm.StorageEngine = message.Content.Index["storageEngine"].ToJson(new MongoDB.Bson.IO.JsonWriterSettings()
                    {
                        Indent = true
                    });
                }

                if (message.Content.Index.Contains("weights"))
                {
                    vm.Weights = message.Content.Index["weights"].ToJson(new MongoDB.Bson.IO.JsonWriterSettings()
                    {
                        Indent = true
                    });
                }

                if (message.Content.Index.Contains("default_language"))
                {
                    vm.DefaultLanguage = message.Content.Index["default_language"].AsString;
                }

                if (message.Content.Index.Contains("language_override"))
                {
                    vm.LanguageOverride = message.Content.Index["language_override"].AsString;
                }

                if (message.Content.Index.Contains("textIndexVersion"))
                {
                    vm.TextIndexVersion = message.Content.Index["textIndexVersion"].AsInt32;
                }

                if (message.Content.Index.Contains("2dsphereIndexVersion"))
                {
                    vm.SphereIndexVersion = message.Content.Index["2dsphereIndexVersion"].AsInt32;
                }

                if (message.Content.Index.Contains("bits"))
                {
                    vm.Bits = message.Content.Index["bits"].AsInt32;
                }

                if (message.Content.Index.Contains("min"))
                {
                    vm.Min = message.Content.Index["min"].AsInt32;
                }

                if (message.Content.Index.Contains("max"))
                {
                    vm.Max = message.Content.Index["max"].AsInt32;
                }

                if (message.Content.Index.Contains("bucketSize"))
                {
                    vm.BucketSize = message.Content.Index["bucketSize"].AsInt32;
                }

                wnd.DataContext = vm;
                wnd.ShowDialog();
                break;
            }
        }