diff --git a/src/Main/Base/Project/Src/Gui/Dialogs/ReferenceDialog/ServiceReference/AddServiceReferenceDialog.xaml.cs b/src/Main/Base/Project/Src/Gui/Dialogs/ReferenceDialog/ServiceReference/AddServiceReferenceDialog.xaml.cs index 310372a896..8a62b4a638 100644 --- a/src/Main/Base/Project/Src/Gui/Dialogs/ReferenceDialog/ServiceReference/AddServiceReferenceDialog.xaml.cs +++ b/src/Main/Base/Project/Src/Gui/Dialogs/ReferenceDialog/ServiceReference/AddServiceReferenceDialog.xaml.cs @@ -22,8 +22,16 @@ namespace ICSharpCode.SharpDevelop.Gui.Dialogs.ReferenceDialog.ServiceReference void okButtonClick(object sender, RoutedEventArgs e) { - this.DialogResult = true; - Close(); + if (CanAddServiceReference()) { + this.DialogResult = true; + Close(); + } + } + + bool CanAddServiceReference() + { + var dc = (AddServiceReferenceViewModel)DataContext; + return dc.CanAddServiceReference(); } void cancelButtonClick(object sender, RoutedEventArgs e) diff --git a/src/Main/Base/Project/Src/Gui/Dialogs/ReferenceDialog/ServiceReference/AddServiceReferenceViewModel.cs b/src/Main/Base/Project/Src/Gui/Dialogs/ReferenceDialog/ServiceReference/AddServiceReferenceViewModel.cs index fd92825dba..2708421cb7 100644 --- a/src/Main/Base/Project/Src/Gui/Dialogs/ReferenceDialog/ServiceReference/AddServiceReferenceViewModel.cs +++ b/src/Main/Base/Project/Src/Gui/Dialogs/ReferenceDialog/ServiceReference/AddServiceReferenceViewModel.cs @@ -61,13 +61,18 @@ namespace ICSharpCode.SharpDevelop.Gui.Dialogs.ReferenceDialog.ServiceReference void DiscoverServices() { - Uri uri = TryGetUri(SelectedService); + Uri uri = TryGetUri(); if (uri != null) { ServiceDescriptionMessage = waitMessage; StartDiscovery(uri); } } + Uri TryGetUri() + { + return TryGetUri(selectedService); + } + Uri TryGetUri(string url) { if (String.IsNullOrEmpty(url)) { @@ -264,19 +269,35 @@ namespace ICSharpCode.SharpDevelop.Gui.Dialogs.ReferenceDialog.ServiceReference ServiceItems = items; } + public bool CanAddServiceReference() + { + return GetServiceUri() != null; + } + public void AddServiceReference() { CompilerMessageView.Instance.BringToFront(); + Uri uri = GetServiceUri(); + if (uri == null) + return; try { serviceGenerator.Options.Namespace = defaultNameSpace; - serviceGenerator.Options.Url = discoveryUri.ToString(); + serviceGenerator.Options.Url = uri.ToString(); serviceGenerator.AddServiceReference(); new RefreshProjectBrowser().Run(); } catch (Exception ex) { ICSharpCode.Core.LoggingService.Error("Failed to add service reference.", ex); } } + + Uri GetServiceUri() + { + if (discoveryUri != null) { + return discoveryUri; + } + return TryGetUri(); + } } public class ImageAndDescription