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

Reply via email to