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)); }
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; }
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); }
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); } }