@ -38,13 +38,33 @@ namespace ICSharpCode.SharpDevelop.Gui.Dialogs.ReferenceDialog
string header1 = "To see a list of available services on an specific Server, " ;
string header1 = "To see a list of available services on an specific Server, " ;
string header2 = "enter a service URL and click Go. To browse for available services click Discover" ;
string header2 = "enter a service URL and click Go. To browse for available services click Discover" ;
string noUrl = "Please enter the address of the Service." ;
string noUrl = "Please enter the address of the Service." ;
// string discoverMenu ="Services in Solution";
string title = "Add Service Reference" ;
string defaultNameSpace ;
string serviceDescriptionMessage ;
string namespacePrefix = String . Empty ;
private ObservableCollection < TwoValue > twoValues ;
private List < string > mruServices = new List < string > ( ) ;
private string selectedService ;
private IProject project ;
List < ServiceItem > items = new List < ServiceItem > ( ) ;
ServiceItem myItem ;
Uri discoveryUri ;
Uri discoveryUri ;
ServiceDescriptionCollection serviceDescriptionCollection = new ServiceDescriptionCollection ( ) ;
CredentialCache credentialCache = new CredentialCache ( ) ;
WebServiceDiscoveryClientProtocol discoveryClientProtocol ;
delegate DiscoveryDocument DiscoverAnyAsync ( string url ) ;
delegate void DiscoveredWebServicesHandler ( DiscoveryClientProtocol protocol ) ;
delegate void AuthenticationHandler ( Uri uri , string authenticationType ) ;
public AddServiceReferenceViewModel ( IProject project )
public AddServiceReferenceViewModel ( IProject project )
{
{
Project = project ;
project = project ;
title = "Add Service Reference" ;
discoverButtonContend = "Disvover" ;
discoverButtonContend = "Disvover" ;
HeadLine = header1 + header2 ;
HeadLine = header1 + header2 ;
@ -56,70 +76,6 @@ namespace ICSharpCode.SharpDevelop.Gui.Dialogs.ReferenceDialog
TwoValues = new ObservableCollection < TwoValue > ( ) ;
TwoValues = new ObservableCollection < TwoValue > ( ) ;
}
}
private string art ;
public string Art {
get { return art ; }
set { art = value ;
base . RaisePropertyChanged ( ( ) = > Art ) ;
}
}
private string title ;
public string Title
{
get { return title ; }
set { title = value ;
base . RaisePropertyChanged ( ( ) = > Title ) ;
}
}
public string HeadLine { get ; private set ; }
private string discoverButtonContend ;
public string DiscoverButtonContend {
get { return discoverButtonContend ; }
set { discoverButtonContend = value ;
base . RaisePropertyChanged ( ( ) = > DiscoverButtonContend ) ; }
}
private IProject project ;
public IProject Project
{
get { return project ; }
set { project = value ;
base . RaisePropertyChanged ( ( ) = > Project ) ;
}
}
#region Create List of services
private List < string > mruServices = new List < string > ( ) ;
public List < string > MruServices {
get {
return mruServices ; }
set { mruServices = value ;
base . RaisePropertyChanged ( ( ) = > MruServices ) ;
}
}
private string selectedService ;
public string SelectedService {
get { return selectedService ; }
set { selectedService = value ;
base . RaisePropertyChanged ( ( ) = > SelectedService ) ; }
}
#endregion
#region Go
#region Go
@ -134,6 +90,7 @@ namespace ICSharpCode.SharpDevelop.Gui.Dialogs.ReferenceDialog
StartDiscovery ( uri , new DiscoveryNetworkCredential ( CredentialCache . DefaultNetworkCredentials , DiscoveryNetworkCredential . DefaultAuthenticationType ) ) ;
StartDiscovery ( uri , new DiscoveryNetworkCredential ( CredentialCache . DefaultNetworkCredentials , DiscoveryNetworkCredential . DefaultAuthenticationType ) ) ;
}
}
private bool CanExecuteGo ( )
private bool CanExecuteGo ( )
{
{
return true ;
return true ;
@ -142,7 +99,7 @@ namespace ICSharpCode.SharpDevelop.Gui.Dialogs.ReferenceDialog
#endregion
#endregion
#region Discover
#region Discover Command
public System . Windows . Input . ICommand DiscoverCommand { get ; private set ; }
public System . Windows . Input . ICommand DiscoverCommand { get ; private set ; }
@ -160,18 +117,7 @@ namespace ICSharpCode.SharpDevelop.Gui.Dialogs.ReferenceDialog
#region discover service Code from Matt
#region discover service Code from Matt
CredentialCache credentialCache = new CredentialCache ( ) ;
WebServiceDiscoveryClientProtocol discoveryClientProtocol ;
// ICSharpCode.SharpDevelop.Gui.WebReference webReference;
string namespacePrefix = String . Empty ;
delegate DiscoveryDocument DiscoverAnyAsync ( string url ) ;
delegate void DiscoveredWebServicesHandler ( DiscoveryClientProtocol protocol ) ;
delegate void AuthenticationHandler ( Uri uri , string authenticationType ) ;
void StartDiscovery ( Uri uri , DiscoveryNetworkCredential credential )
void StartDiscovery ( Uri uri , DiscoveryNetworkCredential credential )
{
{
// Abort previous discovery.
// Abort previous discovery.
@ -262,7 +208,7 @@ namespace ICSharpCode.SharpDevelop.Gui.Dialogs.ReferenceDialog
}
}
void AddCredential ( Uri uri , DiscoveryNetworkCredential credential )
void AddCredential ( Uri uri , DiscoveryNetworkCredential credential )
{
{
NetworkCredential matchedCredential = credentialCache . GetCredential ( uri , credential . AuthenticationType ) ;
NetworkCredential matchedCredential = credentialCache . GetCredential ( uri , credential . AuthenticationType ) ;
if ( matchedCredential ! = null ) {
if ( matchedCredential ! = null ) {
@ -275,22 +221,14 @@ namespace ICSharpCode.SharpDevelop.Gui.Dialogs.ReferenceDialog
void DiscoveredWebServices ( DiscoveryClientProtocol protocol )
void DiscoveredWebServices ( DiscoveryClientProtocol protocol )
{
{
if ( protocol ! = null ) {
if ( protocol ! = null ) {
// webServicesView.Add(GetServiceDescriptions(protocol));
serviceDescriptionCollection = ServiceReferenceHelper . GetServiceDescriptions ( protocol ) ;
ServiceDescriptionCollection = ServiceReferenceHelper . GetServiceDescriptions ( protocol ) ;
ServiceDescriptionMessage = String . Format ( "{0} service(s) found at address {1}" ,
FillItems ( ServiceDescriptionCollection ) ;
serviceDescriptionCollection . Count ,
var defaultNameSpace = GetDefaultNamespace ( ) ;
discoveryUri ) ;
DefaultNameSpace = GetDefaultNamespace ( ) ;
FillItems ( serviceDescriptionCollection ) ;
var referenceName = GetReferenceName ( discoveryUri ) ;
var referenceName = GetReferenceName ( discoveryUri ) ;
/ *
webReference = new ICSharpCode . SharpDevelop . Gui . WebReference ( project ,
discoveryUri . AbsoluteUri ,
defaultNameSpace ,
referenceName , protocol ) ;
* /
}
else
{
// webReference = null;
}
}
}
}
@ -315,37 +253,49 @@ namespace ICSharpCode.SharpDevelop.Gui.Dialogs.ReferenceDialog
return uri . Host ;
return uri . Host ;
}
}
return String . Empty ;
return String . Empty ;
/ *
if ( discoveryUri ! = null ) {
return discoveryUri . Host ;
}
return String . Empty ;
* /
}
}
#endregion
ServiceDescriptionCollection serviceDescriptionCollection = new ServiceDescriptionCollection ( ) ;
public ServiceDescriptionCollection ServiceDescriptionCollection
#region new binding
public string Title
{
{
get {
get { return title ; }
return serviceDescriptionCollection ;
set { title = value ;
}
base . RaisePropertyChanged ( ( ) = > Title ) ;
set
{
serviceDescriptionCollection = value ;
RaisePropertyChanged ( ( ) = > ServiceDescriptionCollection ) ;
}
}
}
}
#endregion
public string HeadLine { get ; set ; }
private string discoverButtonContend ;
#region new binding
public string DiscoverButtonContend {
get { return discoverButtonContend ; }
set { discoverButtonContend = value ;
base . RaisePropertyChanged ( ( ) = > DiscoverButtonContend ) ; }
}
List < ServiceItem > items = new List < ServiceItem > ( ) ;
public List < string > MruServices {
get {
return mruServices ; }
set { mruServices = value ;
base . RaisePropertyChanged ( ( ) = > MruServices ) ;
}
}
public string SelectedService {
get { return selectedService ; }
set { selectedService = value ;
base . RaisePropertyChanged ( ( ) = > SelectedService ) ; }
}
public List < ServiceItem > ServiceItems {
public List < ServiceItem > ServiceItems {
get { return items ; }
get { return items ; }
@ -356,8 +306,6 @@ namespace ICSharpCode.SharpDevelop.Gui.Dialogs.ReferenceDialog
}
}
ServiceItem myItem ;
public ServiceItem ServiceItem {
public ServiceItem ServiceItem {
get { return myItem ; }
get { return myItem ; }
set { myItem = value ;
set { myItem = value ;
@ -367,7 +315,20 @@ namespace ICSharpCode.SharpDevelop.Gui.Dialogs.ReferenceDialog
}
}
private ObservableCollection < TwoValue > twoValues ;
public string ServiceDescriptionMessage {
get { return serviceDescriptionMessage ; }
set { serviceDescriptionMessage = value ;
base . RaisePropertyChanged ( ( ) = > ServiceDescriptionMessage ) ;
}
}
public string DefaultNameSpace {
get { return defaultNameSpace ; }
set { defaultNameSpace = value ;
base . RaisePropertyChanged ( ( ) = > DefaultNameSpace ) ; }
}
public ObservableCollection < TwoValue > TwoValues {
public ObservableCollection < TwoValue > TwoValues {
get { return twoValues ; }
get { return twoValues ; }
@ -378,7 +339,7 @@ namespace ICSharpCode.SharpDevelop.Gui.Dialogs.ReferenceDialog
}
}
public void UpdateListView ( )
void UpdateListView ( )
{
{
TwoValues . Clear ( ) ;
TwoValues . Clear ( ) ;
string l ;
string l ;
@ -440,14 +401,14 @@ namespace ICSharpCode.SharpDevelop.Gui.Dialogs.ReferenceDialog
{
{
Add ( element ) ;
Add ( element ) ;
}
}
}
}
void Add ( ServiceDescription description )
void Add ( ServiceDescription description )
{
{
List < ServiceItem > l = new List < ServiceItem > ( ) ;
List < ServiceItem > l = new List < ServiceItem > ( ) ;
var rootNode = new ServiceItem ( GetName ( description ) ) ;
var name = ServiceReferenceHelper . GetServiceName ( description ) ;
var rootNode = new ServiceItem ( name ) ;
rootNode . Tag = description ;
rootNode . Tag = description ;
l . Add ( rootNode ) ;
l . Add ( rootNode ) ;
@ -479,25 +440,8 @@ namespace ICSharpCode.SharpDevelop.Gui.Dialogs.ReferenceDialog
}
}
ServiceItems = l ;
ServiceItems = l ;
}
}
string GetName ( ServiceDescription description )
{
if ( description . Name ! = null ) {
return description . Name ;
} else if ( description . RetrievalUrl ! = null ) {
Uri uri = new Uri ( description . RetrievalUrl ) ;
if ( uri . Segments . Length > 0 ) {
return uri . Segments [ uri . Segments . Length - 1 ] ;
} else {
return uri . Host ;
}
}
return String . Empty ;
}
#endregion
#endregion
}
}