Browse Source

Change discovery of ServiceDescription from Port to PortType

pull/23/head
PeterForstmeier 14 years ago
parent
commit
1ccfcd682a
  1. 8
      src/Main/Base/Project/Src/Gui/Dialogs/ReferenceDialog/AddServiceReferenceDialog.xaml
  2. 93
      src/Main/Base/Project/Src/Gui/Dialogs/ReferenceDialog/AddServiceReferenceViewModel.cs

8
src/Main/Base/Project/Src/Gui/Dialogs/ReferenceDialog/AddServiceReferenceDialog.xaml

@ -87,8 +87,8 @@ http://www.codeproject.com/KB/WPF/TreeViewWithViewModel.aspx?msg=3663052
<ColumnDefinition Width="*"></ColumnDefinition> <ColumnDefinition Width="*"></ColumnDefinition>
<ColumnDefinition Width="2*"></ColumnDefinition> <ColumnDefinition Width="2*"></ColumnDefinition>
</Grid.ColumnDefinitions> </Grid.ColumnDefinitions>
<TextBlock Text="Service:" Margin="4,0,4,0"></TextBlock> <TextBlock Text="Services:" Margin="4,0,4,0"></TextBlock>
<TextBlock Grid.Column="1" Text="Service:" Margin="4,0,4,0"></TextBlock> <TextBlock Grid.Column="1" Text="Operations:" Margin="4,0,4,0"></TextBlock>
<TreeView <TreeView
Grid.Row="1" Grid.Row="1"
Grid.Column="0" Grid.Column="0"
@ -110,8 +110,10 @@ http://www.codeproject.com/KB/WPF/TreeViewWithViewModel.aspx?msg=3663052
ItemsSource="{Binding Path=TwoValues}"> ItemsSource="{Binding Path=TwoValues}">
<ListView.View> <ListView.View>
<GridView> <GridView>
<GridViewColumn Header="Poperty" Width="150" DisplayMemberBinding="{Binding LeftValue}"></GridViewColumn> <GridViewColumn Header="" Width="150" DisplayMemberBinding="{Binding LeftValue}"></GridViewColumn>
<!--
<GridViewColumn Header="Value" Width="150" DisplayMemberBinding="{Binding RightValue}"></GridViewColumn> <GridViewColumn Header="Value" Width="150" DisplayMemberBinding="{Binding RightValue}"></GridViewColumn>
-->
</GridView> </GridView>
</ListView.View> </ListView.View>
</ListView> </ListView>

93
src/Main/Base/Project/Src/Gui/Dialogs/ReferenceDialog/AddServiceReferenceViewModel.cs

@ -35,10 +35,11 @@ namespace ICSharpCode.SharpDevelop.Gui.Dialogs.ReferenceDialog
/// </summary> /// </summary>
public class AddServiceReferenceViewModel:ViewModelBase public class AddServiceReferenceViewModel:ViewModelBase
{ {
string header1 = "To see a list of available services on an specific Server, "; string header1 = "To see a list of available services on a 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 title = "Add Service Reference"; string title = "Add Service Reference";
string waitMessage = "Please wait....";
string defaultNameSpace; string defaultNameSpace;
string serviceDescriptionMessage; string serviceDescriptionMessage;
string namespacePrefix = String.Empty; string namespacePrefix = String.Empty;
@ -86,6 +87,7 @@ namespace ICSharpCode.SharpDevelop.Gui.Dialogs.ReferenceDialog
if (String.IsNullOrEmpty(SelectedService)) { if (String.IsNullOrEmpty(SelectedService)) {
MessageBox.Show (noUrl); MessageBox.Show (noUrl);
} }
ServiceDescriptionMessage = waitMessage;
Uri uri = new Uri(SelectedService); Uri uri = new Uri(SelectedService);
StartDiscovery(uri, new DiscoveryNetworkCredential(CredentialCache.DefaultNetworkCredentials, DiscoveryNetworkCredential.DefaultAuthenticationType)); StartDiscovery(uri, new DiscoveryNetworkCredential(CredentialCache.DefaultNetworkCredentials, DiscoveryNetworkCredential.DefaultAuthenticationType));
} }
@ -232,7 +234,6 @@ namespace ICSharpCode.SharpDevelop.Gui.Dialogs.ReferenceDialog
} }
} }
/// <summary> /// <summary>
/// Gets the namespace to be used with the generated web reference code. /// Gets the namespace to be used with the generated web reference code.
/// </summary> /// </summary>
@ -341,56 +342,24 @@ namespace ICSharpCode.SharpDevelop.Gui.Dialogs.ReferenceDialog
void UpdateListView () void UpdateListView ()
{ {
ServiceDescription desc = null;
TwoValues.Clear(); TwoValues.Clear();
string l; string l = String.Empty;
string r; string r;
if(ServiceItem.Tag is ServiceDescription) { if(ServiceItem.Tag is ServiceDescription) {
ServiceDescription desc = (ServiceDescription)ServiceItem.Tag; desc = (ServiceDescription)ServiceItem.Tag;
l = StringParser.Parse("${res:ICSharpCode.SharpDevelop.Gui.Dialogs.AddWebReferenceDialog.RetrievalUriProperty}"); r = desc.RetrievalUrl;
r = desc.RetrievalUrl;
var tv = new TwoValue(l,r); var tv = new TwoValue(l,r);
TwoValues.Add(tv); TwoValues.Add(tv);
} }
else if(ServiceItem.Tag is Service) { else if(ServiceItem.Tag is PortType) {
Service service = (Service)ServiceItem.Tag; PortType portType = (PortType)ServiceItem.Tag;
l = StringParser.Parse("${res:ICSharpCode.SharpDevelop.Gui.Dialogs.AddWebReferenceDialog.DocumentationProperty}"); foreach (Operation op in portType.Operations)
r =service.Documentation; {
var tv1 = new TwoValue(l,r); l = op.Name;
TwoValues.Add(tv1); r = op.Documentation;
} TwoValues.Add(new TwoValue(l,r));
}
else if(ServiceItem.Tag is Port) {
Port port = (Port)ServiceItem.Tag;
l = StringParser.Parse("${res:ICSharpCode.SharpDevelop.Gui.Dialogs.AddWebReferenceDialog.DocumentationProperty}");
r = port.Documentation;
var tv2 = new TwoValue(l,r);
TwoValues.Add(tv2);
l = StringParser.Parse("${res:ICSharpCode.SharpDevelop.Gui.Dialogs.AddWebReferenceDialog.BindingProperty}");
r = port.Binding.Name;
var tv3 = new TwoValue(l,r);
TwoValues.Add(tv3);
l = StringParser.Parse("${res:ICSharpCode.SharpDevelop.Gui.Dialogs.AddWebReferenceDialog.ServiceNameProperty}");
r = port.Service.Name;
var tv4 = new TwoValue(l,r);
TwoValues.Add(tv4);
}
else if(ServiceItem.Tag is Operation) {
Operation operation = (Operation)ServiceItem.Tag;
l = StringParser.Parse("${res:ICSharpCode.SharpDevelop.Gui.Dialogs.AddWebReferenceDialog.DocumentationProperty}");
r = operation.Documentation;
var tv5 = new TwoValue(l,r);
TwoValues.Add(tv5);
l = StringParser.Parse("${res:ICSharpCode.SharpDevelop.Gui.Dialogs.AddWebReferenceDialog.ParametersProperty}");
r = operation.ParameterOrderString;
var tv6 = new TwoValue(l,r);
TwoValues.Add(tv6);
} }
} }
@ -410,37 +379,21 @@ namespace ICSharpCode.SharpDevelop.Gui.Dialogs.ReferenceDialog
var name = ServiceReferenceHelper.GetServiceName(description); var name = ServiceReferenceHelper.GetServiceName(description);
var rootNode = new ServiceItem(name); var rootNode = new ServiceItem(name);
rootNode.Tag = description; rootNode.Tag = description;
l.Add(rootNode);
foreach(Service service in description.Services) { foreach(Service service in description.Services) {
var serviceNode = new ServiceItem(service.Name); var serviceNode = new ServiceItem(service.Name);
serviceNode.Tag = service; serviceNode.Tag = service;
rootNode.SubItems.Add(serviceNode); l.Add(serviceNode);
foreach (PortType portType in description.PortTypes) {
foreach(Port port in service.Ports) { var portNode = new ServiceItem(portType.Name);
var portNode = new ServiceItem(port.Name); portNode.Tag = portType;
portNode.Tag = port;
serviceNode.SubItems.Add(portNode); serviceNode.SubItems.Add(portNode);
// Get the operations
System.Web.Services.Description.Binding binding = description.Bindings[port.Binding.Name];
if (binding != null) {
PortType portType = description.PortTypes[binding.Type.Name];
if (portType != null) {
foreach(Operation operation in portType.Operations) {
var operationNode = new ServiceItem(operation.Name);
operationNode.Tag = operation;
// operationNode.ImageIndex = OperationImageIndex;
// operationNode.SelectedImageIndex = OperationImageIndex;
portNode.SubItems.Add(operationNode);
}
}
}
} }
} }
ServiceItems = l; ServiceItems = l;
} }
#endregion #endregion
} }
@ -458,6 +411,8 @@ namespace ICSharpCode.SharpDevelop.Gui.Dialogs.ReferenceDialog
} }
public class ServiceItem public class ServiceItem
{ {
public ServiceItem (string name) public ServiceItem (string name)

Loading…
Cancel
Save