From 11c36f38c5da3d59517c3eb2d1857fe1f8be93b4 Mon Sep 17 00:00:00 2001 From: Matt Ward Date: Tue, 23 Oct 2012 20:32:58 +0100 Subject: [PATCH] Allow user to connect to database without using auto-discovery. Changed the Add New Database Connection dialog so when a driver is selected the data source control is shown. This allows the user to enter connection details, such as the username and password, without having to use the auto-discover button. --- .../Windows/ConnectionWizardWindow.xaml.cs | 31 ++++++++++++++----- .../SQLServerDatabaseDriver.cs | 5 +++ 2 files changed, 28 insertions(+), 8 deletions(-) diff --git a/src/AddIns/DisplayBindings/Data/ICSharpCode.Data.Core.UI/Windows/ConnectionWizardWindow.xaml.cs b/src/AddIns/DisplayBindings/Data/ICSharpCode.Data.Core.UI/Windows/ConnectionWizardWindow.xaml.cs index 061afe1907..6d5526f6d1 100644 --- a/src/AddIns/DisplayBindings/Data/ICSharpCode.Data.Core.UI/Windows/ConnectionWizardWindow.xaml.cs +++ b/src/AddIns/DisplayBindings/Data/ICSharpCode.Data.Core.UI/Windows/ConnectionWizardWindow.xaml.cs @@ -31,6 +31,7 @@ namespace ICSharpCode.Data.Core.UI.Windows private IDatasource _selectedDatasource = null; private IDatabase _selectedDatabase = null; private bool _isLoading = false; + IDatasource defaultDataSource = null; #endregion @@ -47,22 +48,34 @@ namespace ICSharpCode.Data.Core.UI.Windows get { return _selectedDatabaseDriver; } set { + if (_selectedDatabaseDriver != value) { + defaultDataSource = GetDefaultDatasource(value); + _selectedDatasource = defaultDataSource; + } else if (value == null) { + defaultDataSource = null; + _selectedDatasource = null; + } _selectedDatabaseDriver = value; OnPropertyChanged("SelectedDatabaseDriver"); + OnPropertyChanged("SelectedDatasource"); } } - - public IDatasource SelectedDatasource + + IDatasource GetDefaultDatasource(IDatabaseDriver driver) { + if (driver != null) { + return driver.CreateNewIDatasource(""); + } + return null; + } + + public IDatasource SelectedDatasource { get { return _selectedDatasource; } - set - { + set { if (value != null) - btnConnect.IsEnabled = true; + _selectedDatasource = value; else - btnConnect.IsEnabled = false; - - _selectedDatasource = value; + _selectedDatasource = defaultDataSource; OnPropertyChanged("SelectedDatasource"); } } @@ -177,6 +190,8 @@ namespace ICSharpCode.Data.Core.UI.Windows private void btnConnect_Click(object sender, RoutedEventArgs e) { + if (!_selectedDatabaseDriver.IDatasources.Contains(_selectedDatasource)) + _selectedDatasource.Name = cboDatasources.Text; PopulateDatabases(); } diff --git a/src/AddIns/DisplayBindings/Data/ICSharpCode.Data.SQLServer/SQLServerDatabaseDriver.cs b/src/AddIns/DisplayBindings/Data/ICSharpCode.Data.SQLServer/SQLServerDatabaseDriver.cs index 5b818094fe..08a117acbe 100644 --- a/src/AddIns/DisplayBindings/Data/ICSharpCode.Data.SQLServer/SQLServerDatabaseDriver.cs +++ b/src/AddIns/DisplayBindings/Data/ICSharpCode.Data.SQLServer/SQLServerDatabaseDriver.cs @@ -122,6 +122,11 @@ namespace ICSharpCode.Data.Core.DatabaseDrivers.SQLServer #endregion + public SQLServerDatabaseDriver() + { + Datasources = new DatabaseObjectsCollection(null); + } + public override string Name { get { return "MS SQL Server"; }