/[RomCheater]/trunk/RomCheater.Core/IWebBrowserProvider.cs
ViewVC logotype

Diff of /trunk/RomCheater.Core/IWebBrowserProvider.cs

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 696 by william, Mon Jun 17 11:47:23 2013 UTC revision 740 by william, Wed Jun 19 21:20:22 2013 UTC
# Line 3  using System.Collections.Generic; Line 3  using System.Collections.Generic;
3  using System.Linq;  using System.Linq;
4  using System.Text;  using System.Text;
5  using System.Windows.Forms;  using System.Windows.Forms;
6    using RomCheater.Logging;
7    
8  namespace RomCheater.Core  namespace RomCheater.Core
9  {  {
# Line 11  namespace RomCheater.Core Line 12  namespace RomCheater.Core
12          IWebBrowserInterface GetProvider();          IWebBrowserInterface GetProvider();
13      }      }
14      public interface IWebBrowserInterface      public interface IWebBrowserInterface
15      {      {        
         //WebBrowser Provider { get; }  
16          void Navigate(string urlString);              void Navigate(string urlString);    
17          void Navigate(Uri url);          void Navigate(Uri url);
         //void Navigate(string urlString, bool newWindow);  
         //void Navigate(string urlString, string targetFrameName);  
         //void Navigate(Uri url, bool newWindow);  
         //void Navigate(Uri url, string targetFrameName);          
         //void Navigate(string urlString, string targetFrameName, byte[] postData, string additionalHeaders);  
         //void Navigate(Uri url, string targetFrameName, byte[] postData, string additionalHeaders);  
   
18      }      }
19    
20      //public class WebBrowserProvider : IWebBrowserProvider      internal class EmptyWebBrowserProvider : IWebBrowserInterface, IWebBrowserProvider
     //{  
     //    public WebBrowserProvider(IWebBrowserInterface provider)  
     //    {  
     //        _provider = provider;  
     //    }  
   
     //    #region IWebBrowserProvider Members  
     //    private IWebBrowserInterface _provider;  
     //    public IWebBrowserInterface GetProvider()  
     //    {  
     //        return _provider;  
     //    }  
     //    #endregion  
     //}  
   
     public class EmptyWebBrowserProvider : BaseWebBrowserProvider, IWebBrowserInterface  
21      {      {
22          public EmptyWebBrowserProvider() :base()          private WebBrowserProvider BackingProvider;
23            public EmptyWebBrowserProvider() : base() { this.BackingProvider = new WebBrowserProvider(this); }
24            //public IWebBrowserInterface Provider
25            //{
26            //    get { return this.BackingProvider; }
27            //}
28    
29            #region IWebBrowserInterface Members
30    
31            public void Navigate(string urlString) { logger.Debug.WriteLine("called::NavigateInternal(string urlString)::{0}", urlString); System.Diagnostics.Process.Start(urlString); }
32            public void Navigate(Uri url) { logger.Debug.WriteLine("called::NavigateInternal(Uri url)::{0}", url.ToString()); Navigate(url.ToString()); }
33            #endregion
34    
35            public IWebBrowserInterface GetProvider()
36          {          {
37                return this.BackingProvider.GetProvider();
38          }          }
39      }      }
40    
41      public class WebBrowserProvider : BaseWebBrowserProvider, IWebBrowserInterface      public class WebBrowserProvider : BaseWebBrowserProvider, IWebBrowserInterface
42      {      {
43          public WebBrowserProvider() : this(new WebBrowser()) { }          public static IWebBrowserProvider DefaultProvider { get { return WebBrowserProvider.EmptyProvider; } }
44          public WebBrowserProvider(IWebBrowserInterface provider) { }          public static IWebBrowserProvider EmptyProvider { get { return WebBrowserProvider.Empty; } }
45          public WebBrowserProvider(WebBrowser provider)          public static IWebBrowserProvider Empty { get { return new EmptyWebBrowserProvider(); } }
46              : base(provider)          protected WebBrowserProvider() : this(new EmptyWebBrowserProvider()) { }
47          {          public WebBrowserProvider(IWebBrowserInterface provider) : base(provider) { }
48          }          //#region IWebBrowserInterface Members
49            //public virtual void Navigate(string urlString) { base.Navigate(urlString); }
50            //public virtual void Navigate(Uri url) { base.Navigate(url); }
51            //#endregion
52      }      }
53    
54      public class BaseWebBrowserProvider : IWebBrowserInterface, IWebBrowserProvider      public abstract class BaseWebBrowserProvider : IWebBrowserInterface, IWebBrowserProvider
55      {      {
56            
57          public BaseWebBrowserProvider() : this(new WebBrowser()) { }          public BaseWebBrowserProvider() { }
58          protected BaseWebBrowserProvider(WebBrowser provider)          protected BaseWebBrowserProvider(IWebBrowserInterface provider)
59          {          {
60              this.Provider = provider;              this.Provider = provider;
61          }          }
62          #region IWebBrowserInterface Members          #region IWebBrowserInterface Members
63          private WebBrowser _Provider;          private IWebBrowserInterface _Provider;
64          public WebBrowser Provider { get { return _Provider; } protected set { _Provider = value; } }          public IWebBrowserInterface Provider { get { return _Provider; } protected set { _Provider = value; } }
65    
66          #region Extensions to WebBrowser provider          #region Extensions to WebBrowser provider
67          public void Navigate(string urlString) { this.Provider.Navigate(urlString); }          public void Navigate(string urlString) { logger.Debug.WriteLine("called::Navigate(string urlString)::{0}", urlString); NavigateInternal(urlString); }
68          public void Navigate(Uri url) { this.Provider.Navigate(url); }          public void Navigate(Uri url) { logger.Debug.WriteLine("called::Navigate(Uri url)::{0}", url.ToString()); NavigateInternal(url.ToString()); }  
69          //public void Navigate(string urlString, bool newWindow) { this.Provider.Navigate(urlString, newWindow); }  
70          //public void Navigate(string urlString, string targetFrameName) { this.Provider.Navigate(urlString, targetFrameName); }          private void NavigateInternal(string url)
71          //public void Navigate(Uri url, bool newWindow) { this.Provider.Navigate(url, newWindow); }          {
72          //public void Navigate(Uri url, string targetFrameName) { this.Provider.Navigate(url, targetFrameName); }              logger.Debug.WriteLine("called::NavigateInternal(string url)::{0}", url);
73          //public void Navigate(string urlString, string targetFrameName, byte[] postData, string additionalHeaders) { this.Provider.Navigate(urlString, targetFrameName, postData, additionalHeaders); }              try
74          //public void Navigate(Uri url, string targetFrameName, byte[] postData, string additionalHeaders) { this.Provider.Navigate(url, targetFrameName, postData, additionalHeaders); }              {
75                    try
76                    {
77                        Uri uri = new Uri(url);
78                        this.Provider.Navigate(uri);
79                    }
80                    catch (UriFormatException)
81                    {
82                        try
83                        {
84                            UriBuilder builder = new UriBuilder(url);
85                            var proto = builder.Uri.Scheme;
86                            this.Provider.Navigate(builder.Uri);
87                        }
88                        catch (Exception ex)
89                        {
90                            throw ex;
91                        }
92                    }
93                }
94                catch (UriFormatException ex)
95                {
96                    MessageBox.Show(string.Format("Could not navigate to url: '{0}'", url), string.Format("A Uri Format Exception Occurred in '{0}'", this.GetType().Name), MessageBoxButtons.OK, MessageBoxIcon.Error);
97                    logger.Error.WriteLine("Unable to navigate to url: '{0}'", url);
98                    logger.VerboseError.WriteLine(ex.ToString());
99                }
100                catch (Exception ex)
101                {
102                    MessageBox.Show(string.Format("Could not navigate to url: '{0}'", url), string.Format("An {0} Exception Occurred in '{1}'",ex.GetType().Name, this.GetType().Name), MessageBoxButtons.OK, MessageBoxIcon.Error);
103                    logger.Error.WriteLine("Unable to navigate to url: '{0}'", url);
104                    logger.VerboseError.WriteLine(ex.ToString());
105                }
106            }
107    
108          #endregion          #endregion
109          #endregion          #endregion
110    

Legend:
Removed from v.696  
changed lines
  Added in v.740

  ViewVC Help
Powered by ViewVC 1.1.22