Thursday, 1 March 2012

Creating your own Web-browser


The WebBrowser control provides all of the functionality required
to load and display HTML pages and other file types, as well as
the functionality needed to navigate to locations on the World
Wide Web.
 The .NET control WebBrowser will be used for the actual Web browsing functionality.
One of the primary demands for the UI is the ability to have only a single instance of the
application running but to be able to have multiple Web pages open that the user can rapidly
switch between without having to navigate back and forth.

Tasks: Design a user friendly Web UI with the following functionality:
-          Be able to bookmark the web page ( Favorite)

-          Be able to have multiple Web pages open that the user can rapidly switch between without having to navigate back and forth (Use container controls)

-          Have the following button: back, forward and home

-          Make your application fully functional
 
   using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Xml.XPath;
using System.Net;
using System.IO;

namespace test1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        WebBrowser browse = new WebBrowser();
        int i = 0;
        private void Form1_Load(object sender, EventArgs e)
        {

            browse.ScriptErrorsSuppressed = true;
            browse.Dock = DockStyle.Fill;
            browse.Visible = true;
            browse.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(browse_DocumentCompleted);
            webBrowser.Navigated += new WebBrowserNavigatedEventHandler(webBrowser_Navigated);
            browse.ProgressChanged += new WebBrowserProgressChangedEventHandler(webBrowser_ProgressChanged);

            //webBrowser.GoHome();

            tabControl1.TabPages.Add("New Tab");
            tabControl1.SelectTab(i);
            tabControl1.SelectedTab.Controls.Add(browse);
            i = i + 1;

            treeView1.Hide();

        }

        private void Back_Click(object sender, EventArgs e)
        {
            ((WebBrowser)tabControl1.SelectedTab.Controls[0]).GoBack();
        }

        private void Forward_Click(object sender, EventArgs e)
        {
            ((WebBrowser)tabControl1.SelectedTab.Controls[0]).GoForward();
        }

        private void Refresh_Click(object sender, EventArgs e)
        {
            ((WebBrowser)tabControl1.SelectedTab.Controls[0]).Refresh();
        }

        private void Stop_Click(object sender, EventArgs e)
        {
            ((WebBrowser)tabControl1.SelectedTab.Controls[0]).Stop();
        }

        private void Home_Click(object sender, EventArgs e)
        {
            ((WebBrowser)tabControl1.SelectedTab.Controls[0]).GoHome();
        }
        private void GoButton_Click(object sender, EventArgs e)
        {
            ((WebBrowser)tabControl1.SelectedTab.Controls[0]).Navigate(urlCombo.Text);
            if (!urlCombo.Items.Contains(urlCombo.Text))
            {
                urlCombo.Items.Add(urlCombo.Text);
            }
        }


        private void browse_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
        {
            tabControl1.SelectedTab.Text = ((WebBrowser)tabControl1.SelectedTab.Controls[0]).DocumentTitle;
        }

        private void openToolStripMenuItem_Click(object sender, EventArgs e)
        {
            DialogResult result;
            result = openFileDialog1.ShowDialog();
            if (result == System.Windows.Forms.DialogResult.OK)
                ((WebBrowser)tabControl1.SelectedTab.Controls[0]).Navigate(openFileDialog1.FileName);
        }

        private void saveToolStripMenuItem_Click(object sender, EventArgs e)
        {
            ((WebBrowser)tabControl1.SelectedTab.Controls[0]).ShowSaveAsDialog();
        }

        private void exitToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Close();
        }

        private void sourceToolStripMenuItem_Click(object sender, EventArgs e)
        {
            //Declare sourceForm as a new Form
            Form sourceForm = new Form();
            //Declare sourceCode as a new TextBox
            RichTextBox sourceCode = new RichTextBox();
            //Fill the TextBox throughout the form
            sourceCode.Dock = DockStyle.Fill;
            //Allow the TextBox to contain more than one line
            sourceCode.Multiline = true;
            //Set the width of the form to 450
            sourceForm.Width = 450;
            //Set the height of the form to 350
            sourceForm.Height = 350;
            //Set the start Position
            sourceForm.StartPosition = FormStartPosition.CenterParent;
            //Do not show the Icon
            sourceForm.ShowIcon = false;
            //Show in the Taskbar
            sourceForm.ShowInTaskbar = true;
            //Set the text of the form to Source Code for and the URL
            sourceForm.Text = "Source Code for " + webBrowser.Url;
            //Set the text of sourceCode to the DocumentText of webBrowser
            sourceCode.Text = webBrowser.DocumentText;
            //Add the sourceCode TextBox to the form
            sourceForm.Controls.Add(sourceCode);
            //Show the sourceForm
            sourceForm.Show(this);
            string address = urlCombo.Text;
            if (String.IsNullOrEmpty(address)) return;
            if (address.Equals("about:blank")) return;
            if (!address.StartsWith("http://") &&
            !address.StartsWith("https://"))
            {
                address = "http://" + address;
            }
            try
            {
                ((WebBrowser)tabControl1.SelectedTab.Controls[0]).Navigate(new Uri(address));
            }
            catch (System.UriFormatException)
            {
                return;
            }

            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(address);
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            StreamReader sr = new StreamReader(response.GetResponseStream());
            sourceCode.Text = sr.ReadToEnd();
            sr.Close();
        }

        private void printToolStripMenuItem_Click(object sender, EventArgs e)
        {
            ((WebBrowser)tabControl1.SelectedTab.Controls[0]).ShowPrintDialog();
        }

        private void printPreviewToolStripMenuItem_Click(object sender, EventArgs e)
        {
            ((WebBrowser)tabControl1.SelectedTab.Controls[0]).ShowPrintPreviewDialog();
        }

        private void propertiesToolStripMenuItem_Click(object sender, EventArgs e)
        {
            ((WebBrowser)tabControl1.SelectedTab.Controls[0]).ShowPropertiesDialog();
        }
        private void webBrowser_ProgressChanged(object sender, WebBrowserProgressChangedEventArgs e)
        {
            statusProgress.Value = (int)e.CurrentProgress;
        }


        private void addTab_Click(object sender, EventArgs e)
        {
            urlCombo.Text = "about blank";
            browse = new WebBrowser();
            browse.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(browse_DocumentCompleted);
            browse.Dock = DockStyle.Fill;

            tabControl1.TabPages.Add("New Tab");
            tabControl1.SelectTab(i);
            tabControl1.SelectedTab.Controls.Add(browse);
            i = i + 1;
        }

        private void closeTab_Click(object sender, EventArgs e)
        {
            if (tabControl1.TabPages.Count - 1 > 0)
            {
                tabControl1.TabPages.RemoveAt(tabControl1.SelectedIndex);
                tabControl1.SelectTab(tabControl1.TabPages.Count - 1);
                i--;
            }
        }
        private void contextMenuStrip1_MouseClick(object sender, MouseEventArgs e)
        {
            treeView1.Show();
        }
        private void treeView1_NodeMouseDoubleClick(object sender, TreeNodeMouseClickEventArgs e)
        {
            ((WebBrowser)tabControl1.SelectedTab.Controls[0]).Navigate(treeView1.SelectedNode.Text);
        }

        private void urlTxt_Click(object sender, EventArgs e)
        {
            treeView1.Hide();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            treeView1.Nodes.Add(urlCombo.Text);
        }

        private void removeToolStripMenuItem_Click(object sender, EventArgs e)
        {
            treeView1.Nodes.Remove(treeView1.SelectedNode);
        }

        private void openToolStripMenuItem1_Click(object sender, EventArgs e)
        {
            ((WebBrowser)tabControl1.SelectedTab.Controls[0]).Navigate(treeView1.SelectedNode.Text);
        }

        private void openInTabToolStripMenuItem_Click(object sender, EventArgs e)
        {
            browse = new WebBrowser();
            browse.Dock = DockStyle.Fill;
            browse.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(browse_DocumentCompleted);
            tabControl1.TabPages.Add("New Tab");
            tabControl1.SelectTab(i);
            tabControl1.SelectedTab.Controls.Add(browse);
            i = i + 1;
            ((WebBrowser)tabControl1.SelectedTab.Controls[0]).Navigate(treeView1.SelectedNode.Text);
        }

        private void contextMenuStrip3_MouseClick(object sender, MouseEventArgs e)
        {
            treeView1.Nodes.Add(tabControl1.SelectedTab.Text);
        }

        private void urlCombo_Click_1(object sender, EventArgs e)
        {
            treeView1.Hide();
        }

        private void urlCombo_KeyPress_1(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == 13)
            {
                webBrowser.ScriptErrorsSuppressed = true;
                ((WebBrowser)tabControl1.SelectedTab.Controls[0]).Navigate(urlCombo.Text);
                if (!urlCombo.Items.Contains(urlCombo.Text))
                {
                    urlCombo.Items.Add(urlCombo.Text);
                }
            }
        }

        private void googlecomToolStripMenuItem_Click(object sender, EventArgs e)
        {
            ((WebBrowser)tabControl1.SelectedTab.Controls[0]).Navigate(@"http://www.google.ca/#sclient=psy-ab&hl=en&site=&source=hp&q=" + searchTxt.Text);
        }
        private void youtbeolStripMenuItem_Click(object sender, EventArgs e)
        {
            ((WebBrowser)tabControl1.SelectedTab.Controls[0]).Navigate(@"http://www.youtube.com/results?search_query=" + searchTxt.Text);
        }


        private void mSNToolStripMenuItem_Click(object sender, EventArgs e)
        {
            ((WebBrowser)tabControl1.SelectedTab.Controls[0]).Navigate(@"http://search.msn.com/results.aspx?q=" + searchTxt.Text);
        }


        private void webBrowser_Navigated(object sender, WebBrowserNavigatedEventArgs e)
        {
            urlCombo.Text = webBrowser.Url.ToString();
        }



        private void mSDNToolStripMenuItem_Click(object sender, EventArgs e)
        {
            ((WebBrowser)tabControl1.SelectedTab.Controls[0]).Navigate(@"http://social.msdn.microsoft.com/Search/en-US?query=" + searchTxt.Text);
        }

        private void Favorites_Click_1(object sender, EventArgs e)
        {

            treeView1.Nodes.Add(new TreeNode((tabControl1.SelectedTab.Text)));
        }
    }
}

No comments:

Post a Comment