コード例 #1
0
        public async Task <Optional <ExplicitConnection> > Select(DependencyObject nearTo)
        {
            if (nearTo == null)
            {
                throw new ArgumentNullException(nameof(nearTo));
            }

            ExplicitConnection explicitConnection;

            if (!_explicitConnectionCache.Any())
            {
                var connectionEditor = new ConnectionEditor();
                explicitConnection = await nearTo.ShowDialog(connectionEditor, delegate(object sender, DialogOpenedEventArgs args)
                {
                    var connectionEditorViewModel = new ConnectionEditorViewModel(vm => SaveHandler(vm, args.Session), args.Session.Close);
                    connectionEditor.DataContext  = connectionEditorViewModel;
                }) as ExplicitConnection;

                return(Optional <ExplicitConnection> .Create(explicitConnection));
            }

            var connectionsManager = new ConnectionsManager();

            explicitConnection = await nearTo.ShowDialog(connectionsManager, delegate(object sender, DialogOpenedEventArgs args)
            {
                var connectionsManagerViewModel = new ConnectionsManagerViewModel(_explicitConnectionCache);
                connectionsManager.DataContext  = connectionsManagerViewModel;
            }) as ExplicitConnection;

            return(Optional <ExplicitConnection> .Create(explicitConnection));
        }
コード例 #2
0
        private void SaveConnection(ConnectionEditorViewModel viewModel)
        {
            var connection = new ExplicitConnection(viewModel.Id.GetValueOrDefault(Guid.NewGuid()), viewModel.Label, viewModel.Host,
                                                    viewModel.AuthorisationKey, viewModel.DatabaseId, viewModel.CollectionId);

            _explicitConnectionCache.AddOrUpdate(connection);
            Mode = ConnectionsManagerMode.Selector;
        }
コード例 #3
0
        private void SaveHandler(ConnectionEditorViewModel connectionEditorViewModel, DialogSession dialogSession)
        {
            var connection = new ExplicitConnection(connectionEditorViewModel.Id.GetValueOrDefault(Guid.NewGuid()),
                                                    connectionEditorViewModel.Label, connectionEditorViewModel.Host,
                                                    connectionEditorViewModel.AuthorisationKey, connectionEditorViewModel.DatabaseId,
                                                    connectionEditorViewModel.CollectionId);

            _explicitConnectionCache.AddOrUpdate(connection);
            dialogSession.Close(connection);
        }
コード例 #4
0
        public ConnectionsManagerViewModel(IExplicitConnectionCache explicitConnectionCache)
        {
            if (explicitConnectionCache == null)
            {
                throw new ArgumentNullException(nameof(explicitConnectionCache));
            }

            _explicitConnectionCache = explicitConnectionCache;

            AddConnectionCommand = new Command(_ =>
            {
                var vm = new ConnectionEditorViewModel(SaveConnection, () => Mode = ConnectionsManagerMode.Selector)
                {
                    DisplayMode = ConnectionEditorDisplayMode.MultiEdit
                };
                ConnectionEditor = vm;
                Mode             = ConnectionsManagerMode.ItemEditor;
            });
            EditConnectionCommand = new Command(o =>
            {
                var connection = o as ExplicitConnection;
                if (connection == null)
                {
                    return;
                }
                ConnectionEditor = new ConnectionEditorViewModel(connection, SaveConnection, () => Mode = ConnectionsManagerMode.Selector)
                {
                    DisplayMode = ConnectionEditorDisplayMode.MultiEdit
                };
                Mode = ConnectionsManagerMode.ItemEditor;
            }, o => o is ExplicitConnection);
            DeleteConnectionCommand = new Command(DeleteConnection, o => o is ExplicitConnection);

            _connectionCacheSubscription =
                explicitConnectionCache.Connect()
                .Sort(SortExpressionComparer <ExplicitConnection> .Ascending(c => c.Label))
                .Bind(out _connections)
                .Subscribe();

            if (_connections.Count == 0)
            {
                AddConnectionCommand.Execute(null);
            }
        }