Author: lluis
Date: 2007-12-14 07:42:52 -0500 (Fri, 14 Dec 2007)
New Revision: 91280
Modified:
trunk/monodevelop/main/src/addins/MonoDevelop.WebReferences/ChangeLog
trunk/monodevelop/main/src/addins/MonoDevelop.WebReferences/MonoDevelop.WebReferences.Dialogs/WebReferenceDialog.cs
trunk/monodevelop/main/src/addins/MonoDevelop.WebReferences/MonoDevelop.WebReferences/Library.cs
trunk/monodevelop/main/src/addins/MonoDevelop.WebReferences/gtk-gui/MonoDevelop.WebReferences.Dialogs.WebReferenceDialog.cs
trunk/monodevelop/main/src/addins/MonoDevelop.WebReferences/gtk-gui/gui.stetic
Log:
* MonoDevelop.WebReferences/Library.cs,
MonoDevelop.WebReferences.Dialogs/WebReferenceDialog.cs,
gtk-gui/MonoDevelop.WebReferences.Dialogs.WebReferenceDialog.cs,
gtk-gui/gui.stetic: Make it work when a browser is not installed.
Modified: trunk/monodevelop/main/src/addins/MonoDevelop.WebReferences/ChangeLog
===================================================================
--- trunk/monodevelop/main/src/addins/MonoDevelop.WebReferences/ChangeLog
2007-12-14 12:03:33 UTC (rev 91279)
+++ trunk/monodevelop/main/src/addins/MonoDevelop.WebReferences/ChangeLog
2007-12-14 12:42:52 UTC (rev 91280)
@@ -1,5 +1,12 @@
2007-12-14 Lluis Sanchez Gual <[EMAIL PROTECTED]>
+ * MonoDevelop.WebReferences/Library.cs,
+ MonoDevelop.WebReferences.Dialogs/WebReferenceDialog.cs,
+ gtk-gui/MonoDevelop.WebReferences.Dialogs.WebReferenceDialog.cs,
+ gtk-gui/gui.stetic: Make it work when a browser is not installed.
+
+2007-12-14 Lluis Sanchez Gual <[EMAIL PROTECTED]>
+
* MonoDevelop.WebReferences.mdp: Updated project files. The order of
extended properties won't change anymore.
Modified:
trunk/monodevelop/main/src/addins/MonoDevelop.WebReferences/MonoDevelop.WebReferences/Library.cs
===================================================================
---
trunk/monodevelop/main/src/addins/MonoDevelop.WebReferences/MonoDevelop.WebReferences/Library.cs
2007-12-14 12:03:33 UTC (rev 91279)
+++
trunk/monodevelop/main/src/addins/MonoDevelop.WebReferences/MonoDevelop.WebReferences/Library.cs
2007-12-14 12:42:52 UTC (rev 91280)
@@ -1,5 +1,6 @@
using System;
using System.CodeDom;
+using System.Text;
using System.IO;
using System.Net;
using System.Web.Services.Description;
@@ -7,6 +8,7 @@
using System.Xml;
using System.Xml.Schema;
using MonoDevelop.Projects;
+using MonoDevelop.Core;
namespace MonoDevelop.WebReferences
@@ -54,37 +56,28 @@
return importer;
}
- /// <summary>Generate a XmlDocument for the a
DiscoverDocument.</summary>
+ /// <summary>Generate a text description for the a
DiscoverDocument.</summary>
/// <param name="discovery">A DiscoveryDocument containing the
details for the disco services.</param>
/// <returns>An XmlDocument containing the generated xml for
the specified discovery document.</returns>
- public static XmlDocument GenerateDiscoXml (DiscoveryDocument
discovery)
+ public static void GenerateDiscoXml (StringBuilder text,
DiscoveryDocument doc)
{
- XmlDocument xdoc = new XmlDocument ();
- XmlElement docelem = xdoc.CreateElement ("services");
- xdoc.AppendChild (docelem);
- foreach (DiscoveryReference dref in
discovery.References)
+ text.Append ("<big><b>" + GettextCatalog.GetString
("Web Service References") + "</b></big>\n\n");
+ foreach (DiscoveryReference dref in doc.References)
{
- if (dref is ContractReference)
- {
- XmlElement service = xdoc.CreateElement
("service");
- docelem.AppendChild (service);
- service.SetAttribute ("name",
Path.GetFileNameWithoutExtension (dref.DefaultFilename));
- service.SetAttribute ("url", dref.Url);
+ if (dref is ContractReference) {
+ text.AppendFormat ("<b>Service:
{0}</b>\n<span size='small'>{1}</span>",
System.IO.Path.GetFileNameWithoutExtension (dref.DefaultFilename), dref.Url);
}
- if (dref is DiscoveryDocumentReference)
- {
- XmlElement service = xdoc.CreateElement
("disco");
- docelem.AppendChild (service);
- service.SetAttribute ("url", dref.Url);
+ else if (dref is DiscoveryDocumentReference) {
+ text.AppendFormat ("<b>Discovery
document</b>\n<small>{0}</small>", dref.Url);
}
+ text.Append ("\n\n");
}
- return xdoc;
}
- /// <summary>Generate an XmlDocument for the specified
DiscoveryClientProtocol.</summary>
+ /// <summary>Generate a text description for the specified
DiscoveryClientProtocol.</summary>
/// <param name="protocol">A DiscoveryClientProtocol containing
the information for the service.</param>
/// <returns>An XmlDocument containing the generated xml for
the specified discovery protocol.</returns>
- public static XmlDocument GenerateWsdlXml
(DiscoveryClientProtocol protocol)
+ public static void GenerateWsdlXml (StringBuilder text,
DiscoveryClientProtocol protocol)
{
// Code Namespace & Compile Unit
CodeNamespace codeNamespace = new CodeNamespace();
@@ -95,72 +88,75 @@
ServiceDescriptionImporter importer =
ReadServiceDescriptionImporter(protocol);
importer.Import(codeNamespace, codeUnit);
- // Create Xml Document
- XmlDocument xdoc = new XmlDocument ();
- XmlElement docelem = xdoc.CreateElement ("services");
- xdoc.AppendChild (docelem);
-
foreach (CodeTypeDeclaration type in
codeNamespace.Types)
{
- XmlElement service = xdoc.CreateElement
("service");
- service.SetAttribute ("name", type.Name);
+ if (type.BaseTypes.Count == 0 ||
type.BaseTypes[0].BaseType !=
"System.Web.Services.Protocols.SoapHttpClientProtocol")
+ continue;
+
+ text.AppendFormat
("<big><b><u>{0}</u></b></big>\n\n", type.Name);
+ string coms = GetCommentElements (type);
+ if (coms != null)
+ text.Append (coms).Append ("\n\n");
+
foreach (CodeTypeMember mem in type.Members)
{
CodeMemberMethod met = mem as
CodeMemberMethod;
if (met != null && !(mem is
CodeConstructor))
{
// Method
- XmlElement xmet =
xdoc.CreateElement ("method");
- xmet.SetAttribute ("name",
met.Name);
// Asynch Begin & End Results
string returnType =
met.ReturnType.BaseType;
if (met.Name.StartsWith
("Begin") && returnType == "System.IAsyncResult")
continue; //
BeginXXX method
+ if (met.Name.EndsWith ("Async"))
+ continue;
+ if (met.Name.StartsWith ("On")
&& met.Name.EndsWith ("Completed"))
+ continue;
if (met.Parameters.Count > 0)
{
CodeParameterDeclarationExpression par = met.Parameters
[met.Parameters.Count-1];
if (met.Name.StartsWith
("End") && par.Type.BaseType == "System.IAsyncResult")
continue;
// EndXXX method
}
- xmet.SetAttribute ("return",
returnType);
+ text.AppendFormat ("<b>{0}</b>
(", met.Name);
// Parameters
- foreach
(CodeParameterDeclarationExpression par in met.Parameters)
- {
- XmlElement xpar =
xdoc.CreateElement ("parameter");
- xmet.AppendChild (xpar);
- xpar.SetAttribute
("name", par.Name);
- xpar.SetAttribute
("type", par.Type.BaseType);
+ for (int n=0; n <
met.Parameters.Count; n++) {
+
CodeParameterDeclarationExpression par = met.Parameters [n];
+ if (n > 0)
+ text.Append (",
");
+ text.AppendFormat
("{0}: <i>{1}</i>", par.Name, par.Type.BaseType);
}
+ text.Append (")");
+ if (returnType != "System.Void")
+ text.AppendFormat (":
<i>{0}</i>", returnType);
+
// Comments
- AddCommentElements (xdoc, xmet,
met);
- service.AppendChild (xmet);
+ coms = GetCommentElements (met);
+ if (coms != null)
+ text.Append
("\n").Append (coms);
+ text.Append ("\n\n");
}
}
- if (service.ChildNodes.Count > 0)
- {
- AddCommentElements (xdoc, service,
type);
- docelem.AppendChild (service);
- }
}
- return xdoc;
}
- /// <summary>Add CodeTypeMember comment elements to the
specified XmlDocument.</summary>
- /// <param name="xdoc">An XmlDocument that will be used to add
the comment to.</param>
- /// <param name="xmet">An XmlElement that the comment elements
will be appended to.</param>
- /// <param name="member">A CodeTypeMember containg all the
comments that will be added to the xmet element.</param>
- public static void AddCommentElements (XmlDocument xdoc,
XmlElement xmet, CodeTypeMember member)
+ public static string GetCommentElements (CodeTypeMember member)
{
+ StringBuilder coms = new StringBuilder ();
foreach (CodeCommentStatement comment in
member.Comments)
{
- XmlElement xcom = xdoc.CreateElement
("comment");
- xmet.AppendChild (xcom);
string com = comment.Comment.Text;
com = com.Replace ("<remarks>","");
com = com.Replace ("</remarks>","");
com = com.Replace ("<remarks/>","");
- xcom.SetAttribute ("text", com);
+ com = com.Trim (' ', '\n', '\t', '\r');
+ if (com.Length > 0)
+ coms.Append (com);
}
+ if (coms.Length > 0)
+ return coms.ToString ();
+ else
+ return null;
}
/// <summary>Gets the path where all web references will be
stored for the specified project.</summary>
Modified:
trunk/monodevelop/main/src/addins/MonoDevelop.WebReferences/MonoDevelop.WebReferences.Dialogs/WebReferenceDialog.cs
===================================================================
---
trunk/monodevelop/main/src/addins/MonoDevelop.WebReferences/MonoDevelop.WebReferences.Dialogs/WebReferenceDialog.cs
2007-12-14 12:03:33 UTC (rev 91279)
+++
trunk/monodevelop/main/src/addins/MonoDevelop.WebReferences/MonoDevelop.WebReferences.Dialogs/WebReferenceDialog.cs
2007-12-14 12:42:52 UTC (rev 91280)
@@ -1,7 +1,8 @@
using System;
using System.Collections;
using System.IO;
-using System.Net;
using System.Runtime.Remoting.Messaging;
+using System.Net;
using System.Text;
+using System.Runtime.Remoting.Messaging;
using System.Threading;
using System.Web.Services.Description;
using System.Web.Services.Discovery;
@@ -37,6 +38,8 @@
protected IWebBrowser browser = null;
#endregion
+ Label docLabel;
+
#region Properties
/// <summary>Gets or Sets whether the current location of the
browser is a valid web service or not.</summary>
/// <value>True if the current location of the browser is a Web
Service, otherwise false.</value>
@@ -162,9 +165,19 @@
btnStop.Sensitive = false;
btnHome.Sensitive = false;
- Label l = new Label (GettextCatalog.GetString
("Cannot display Web Browser, because no Browser Addin is available."));
- frmBrowser.Add (l);
- l.Show ();
+ ScrolledWindow sw = new ScrolledWindow ();
+ sw.ShadowType = ShadowType.In;
+ docLabel = new Label ();
+ docLabel.Xpad = 6;
+ docLabel.Ypad = 6;
+ docLabel.Xalign = 0;
+ docLabel.Yalign = 0;
+ sw.AddWithViewport (docLabel);
+ sw.ShowAll ();
+
+ frmBrowser.Add (sw);
+ tbxReferenceURL.Text = homeUrl;
+ UpdateLocation ();
}
frmBrowser.Show();
@@ -196,6 +209,8 @@
{
if (browser != null)
browser.LoadUrl(tbxReferenceURL.Text);
+ else
+ UpdateLocation ();
}
/// <summary>Execute the event when the Enter key has been
pressed on the Url Entry</summary>
@@ -224,6 +239,12 @@
}
}
+ void UpdateLocation ()
+ {
+ ThreadPool.QueueUserWorkItem(new
WaitCallback(QueryService), this.tbxReferenceURL.Text);
+ }
+
+
/// <summary>Execute when the browser starts loading a
document</summary>
/// <param name="sender">An object that contains the sender
data.</param>
/// <param name="e">An EventArgs object that contains the event
data.</param>
@@ -303,50 +324,53 @@
try
{
protocol.DiscoverAny (url);
+ }
+ catch (Exception)
+ {
+ protocol = null;
+ }
+
+ Application.Invoke (delegate {
+ UpdateService (protocol, url);
+ });
+ }
+
+ void UpdateService (DiscoveryClientProtocol protocol, string
url)
+ {
+ StringBuilder text = new StringBuilder ();
+
+ if (protocol == null) {
+ this.IsWebService = false;
+ this.selectedService = null;
+ }
+ else {
// Set the Default Namespace and Reference
this.tbxNamespace.Text = this.DefaultNamespace;
this.tbxReferenceName.Text =
this.DefaultReferenceName;
this.IsWebService = true;
this.selectedService = protocol;
-// object doc = protocol.Documents [url];
-// if (doc is ServiceDescription)
-// this.RenderBrowserData(new object[2] {
Library.GenerateWsdlXml(protocol), "wsdl.html" });
-// else if (doc is DiscoveryDocument)
-// this.RenderBrowserData(new object[2] {
Library.GenerateDiscoXml((DiscoveryDocument)doc), "disco.html" });
- return;
+ if (docLabel != null) {
+ foreach (object dd in
protocol.Documents.Values) {
+ if (dd is ServiceDescription) {
+ Library.GenerateWsdlXml
(text, protocol);
+ break;
+ }
+ else if (dd is
DiscoveryDocument) {
+
Library.GenerateDiscoXml(text, (DiscoveryDocument)dd);
+ break;
+ }
+ }
+ }
}
- catch (Exception)
- {
- this.IsWebService = false;
- this.selectedService = null;
- return;
+ if (docLabel != null) {
+ if (text.Length >= 0)
+ docLabel.Markup = text.ToString ();
+ else
+ docLabel.Markup =
GettextCatalog.GetString ("Web service not found.");
}
+ return;
}
-
-// private void RenderBrowserData (object param)
-// {
-// object[] parameters = param as object[];
-// try
-// {
-// // Load the specified resource as an
XslTransform class
-// Stream stream =
GetType().Assembly.GetManifestResourceStream ((string)parameters[1]);
-// XmlTextReader reader = new XmlTextReader
(stream);
-// XslTransform xslt = new XslTransform ();
-// xslt.Load (reader, null, null);
-//
-// // Transform Html
-// StringWriter htmlWriter = new StringWriter ();
-// xslt.Transform ((XmlDocument)parameters[0],
null, htmlWriter, null);
-//
this.cstBrowser.RenderData(htmlWriter.ToString(), this.ServiceUrl, "text/html");
-// htmlWriter.Close();
-// htmlWriter.Dispose();
-// }
-// catch (Exception exception)
-// {
-// Console.WriteLine(exception.Message);
-// }
-// }
}
}
Modified:
trunk/monodevelop/main/src/addins/MonoDevelop.WebReferences/gtk-gui/MonoDevelop.WebReferences.Dialogs.WebReferenceDialog.cs
===================================================================
---
trunk/monodevelop/main/src/addins/MonoDevelop.WebReferences/gtk-gui/MonoDevelop.WebReferences.Dialogs.WebReferenceDialog.cs
2007-12-14 12:03:33 UTC (rev 91279)
+++
trunk/monodevelop/main/src/addins/MonoDevelop.WebReferences/gtk-gui/MonoDevelop.WebReferences.Dialogs.WebReferenceDialog.cs
2007-12-14 12:42:52 UTC (rev 91280)
@@ -119,6 +119,7 @@
bindings["frmBrowser"] = w20;
w20.Name = "frmBrowser";
w20.ShadowType = ((Gtk.ShadowType)(0));
+ w20.LabelXalign = 0F;
w20.LabelYalign = 0F;
w9.Add(w20);
Gtk.Box.BoxChild w21 = ((Gtk.Box.BoxChild)(w9[w20]));
@@ -129,6 +130,7 @@
w22.Name = "tblReferenceName";
w22.RowSpacing = ((uint)(4));
w22.ColumnSpacing = ((uint)(4));
+ w22.BorderWidth = ((uint)(9));
// Container child tblReferenceName.Gtk.Table+TableChild
Gtk.Label w23 = new Gtk.Label();
bindings["lblNamespace"] = w23;
@@ -232,6 +234,7 @@
w6.Activated +=
((System.EventHandler)(System.Delegate.CreateDelegate(typeof(System.EventHandler),
cobj, "Browser_StopButtonClicked")));
w7.Activated +=
((System.EventHandler)(System.Delegate.CreateDelegate(typeof(System.EventHandler),
cobj, "Browser_HomeButtonClicked")));
w17.KeyReleaseEvent +=
((Gtk.KeyReleaseEventHandler)(System.Delegate.CreateDelegate(typeof(Gtk.KeyReleaseEventHandler),
cobj, "Browser_URLKeyReleased")));
+ w13.Clicked +=
((System.EventHandler)(System.Delegate.CreateDelegate(typeof(System.EventHandler),
cobj, "Browser_GoButtonClicked")));
System.Reflection.FieldInfo[] fields =
cobj.GetType().GetFields(((System.Reflection.BindingFlags.Public |
System.Reflection.BindingFlags.NonPublic) |
System.Reflection.BindingFlags.Instance));
for (int n = 0; (n < fields.Length); n = (n + 1)) {
System.Reflection.FieldInfo field = fields[n];
Modified:
trunk/monodevelop/main/src/addins/MonoDevelop.WebReferences/gtk-gui/gui.stetic
===================================================================
---
trunk/monodevelop/main/src/addins/MonoDevelop.WebReferences/gtk-gui/gui.stetic
2007-12-14 12:03:33 UTC (rev 91279)
+++
trunk/monodevelop/main/src/addins/MonoDevelop.WebReferences/gtk-gui/gui.stetic
2007-12-14 12:42:52 UTC (rev 91280)
@@ -5,9 +5,9 @@
<target-gtk-version>2.8.3</target-gtk-version>
</configuration>
<import>
- <widget-library name="../../../build/bin/MonoDevelop.Projects.Gui.dll" />
- <widget-library name="../../../build/bin/MonoDevelop.Components.dll" />
- <widget-library name="../../../build/bin/MonoDevelop.Ide.dll" />
+ <widget-library name="../../../../build/bin/MonoDevelop.Projects.Gui.dll"
/>
+ <widget-library name="../../../../build/bin/MonoDevelop.Components.dll" />
+ <widget-library name="../../../../build/bin/MonoDevelop.Ide.dll" />
</import>
<widget class="Gtk.Dialog"
id="MonoDevelop.WebReferences.Dialogs.WebReferenceDialog" design-size="639 472">
<action-group name="Default">
@@ -99,6 +99,7 @@
<property name="UseStock">True</property>
<property name="Type">StockItem</property>
<property name="StockId">gtk-jump-to</property>
+ <signal name="Clicked" handler="Browser_GoButtonClicked" />
<property name="label">gtk-jump-to</property>
</widget>
<packing>
@@ -170,6 +171,7 @@
<widget class="Gtk.Frame" id="frmBrowser">
<property name="MemberName">frmBrowser</property>
<property name="ShadowType">None</property>
+ <property name="LabelXalign">0</property>
<property name="LabelYalign">0</property>
<child>
<placeholder />
@@ -187,6 +189,7 @@
<property name="NColumns">2</property>
<property name="RowSpacing">4</property>
<property name="ColumnSpacing">4</property>
+ <property name="BorderWidth">9</property>
<child>
<widget class="Gtk.Label" id="lblNamespace">
<property name="MemberName" />
_______________________________________________
Mono-patches maillist - [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches