This is for an expert in visual studio. Please follow the instructions and create a web browser, name it whatever and please do as much as you can.
Instructions: Build a fully functioning web browser application. Use a three- tier architecture, to organize your solution into three logical layers. Create a project in your solution for each of these logical layers. Create a project structure for your solution, make sure you create a local Git repository Name your solution WebBrowser. Add 3 projects to your solution: WebBrowser.Ul (Win dows Forms App), WebBrowser.Logic (Class Library), and WebBrowser.Data (Class Li brary). Commit your code after each project is added to your solution. Add the depend encies between these three projects according to the 3tiers architecture model. Reference WebBrowser.Data in WebBrowser.Logic Reference WebBrowser.Logic in WebBrowser.tier architecture model. create the User Interface for the main window in your web browser. You will be adding this new window to your WebBrowser.Ul project as the main form. Your new main form will contain the following controls/functionality: A MenuStrip control: Your MenuStrip should contain the following items and sub-items: . File: o New Tab o Close Current Tab o Save Page As HTML o Print Page o Exit Web Browser: (on click will exit the program) Tools o Manage History o Manage Bookmarks Help: o About: will show a dialog box with a brief description about your browser Include your name, student id and anything else you would like to mention about yourself as the application developer. ToolStrip control: Your ToolStrip should contain the following items: Back button: will have an icon that represents the 'go back functionality, clicking will do nothing for now. Forward button: will have an icon that represents the 'go forward functionality, clicking will do nothing for now. Refresh button . Home button Address TextBox: when you enter a URL and press Enter, the WebBrowser control (listed below) will load the address you entered Go button: will have an icon that represents the 'go' functionality, clicking this button will perform the same behavior as when you press the Enter key in the address TextBox (load the new address in the web browser) Bookmark: will have an icon TabControl: o Will initially have only one tab (remove any extra tabs) o Inside the tab you will add your WebBrowser control .WebBrowser control: Place this control inside the TabPage in the TabControl listed above. This control will navigate to URLs entered in the Address TextBox. o .Create a new User Control: Create a new User control that you will use in all of your tab pages, give your control a relevant name based on its purpose and functionality. o o Move all of the controls that you had previously added inside the tab page to o Add your new user control inside the tab page to replace the separate controls o Make sure your web browser's current functionality still works as expected after o Inside your new user control, add the following to its code file: your new user control (ToolStrip and BrowserControl). you removed. these modifications Back links field: this will be a stack of strings Forward links field: this will be a stack of strings as well. Implement functionality for A Refresh button: when clicked the browser will refresh the current page .A Back button: Push the current link to the top of 'Forward links' stack Pop the new link from the 'Back links' stack, and navigate to it in the browser .A Forward button: Push the current link to the top of 'Back links' stack Pop the new link from the 'forward links' stack, and navigate to it in the browser In your MenuStrip control, implement the following functionality for the following menu items: o File > New Tab (Ctrl T) Create a new tab page. Add a new instance of the new user control you created to that tab page. Set the docking property of that control to "fill . . o File > Close Current Tab (Ctri+ W) Close currently selected tab. Inside your WebBrowser.Data proiect o Add a new database and add the following tables: History (columns: ld, URL, Title, Date) Bookmarks (columns: ld, URL, Title) . Inalde your WebBrowaer.Loale proiest.. Add a Histroyltem class with the following properties: o URL (string) Title (string) . Date (DateTime) Add a Bookmarkltem class with the following properties: o URL (string) Title (string) Add a History Manager class, with static methods that can add a history item to the database and get all history items from the database Add a Bookmark Manager class, with static methods that can add a bookmark item to the database and get all bookmark items from the database . Inside your WebBrowser.Ul Project: o Add a new 'History Manager Form' form Add a ListBox control in the designer for this form Implement the on-load event handler for this form and use the History Manager class to get all history items and display them in the ListBox using the following format: [date] Title (URL) Add a new 'Bookmark Manager Form' form o Add a ListBox control in the designer for this form . Implement the on-load event handler for this form and use the Bookmark Manager class to get all bookmark items and display them in the ListBox using the following format: Title (URL) Implement functionality for: o A Bookmark button: when clicked, the URL and Title of the current page will be added to the Bookmark table in the database if it does not already exist (use the Bookmark Manager to add the new bookmark to the database) When you navigate to any URL from any tab, after it finishes loading, add the URL, Title, and date and time of navigation to the History table in the database (use the History Manager to add the new history item to the database) . . In your Menustrip control, implement the following functionality for the following menu items: o Tools> Manage History When clicked create a new instance of the "History Manager Form" form and call ShowDialog0 Tools -> Manage Bookmarks When clicked create a new instance of the "Bookmark Manager Form" form . In your custom browser tab contro Add a Status Strip control and dock it to the bottom of your custom control. Your StatusStrip will contain the following . Add a ProgressBar control that will display the loading progress each time o you navigate to a page. (Hint: look into the WebBrowser control's events and find what you can utilize from there) A StatusLabel that will display the word "loading" while the page is loading, and the word "done" when the page has finished loading. BONUS: add another StatusLabel control that will display the URL of any link you hover over in the WebBrowser control. . Implement search functionality: o Add a "search term TextBox control and a "Search" Button When the user enters a phrase in the TextBox and clicks the Search Button, filter the list to show only the history items that contain the keyword(s) the user is searching for. Implement delete functionality: .Add a "Delete" Button to your form. .When a user selects an item in the list, and clicks on the Delete Button, the o item will be deleted from the database and the list will be refreshed. o Implement clear history functionality Add a Clear History" Button to your form When the user clicks on this button, the system will delete all history items from the database table and will refresh the list. In your "Bookmark Manager Form" form Implement search functionality: .Add a "search term TextBox control and a "Search" Button o When the user enters a phrase in the TextBox and clicks the Search Button, filter the list to show only the bookmark items that contain the keyword(s) the user is searching for. Implement delete functionality: .Add a "Delete Button to your form. o When a user selects an item in the list, and clicks on the Delete Button, the item will be deleted from the database and the list will be refreshed. In your main form: In your MenuStrip control, implement the following functionality for the following menu items: o Tools > Clear History When selected, the system will delete all history items from the database table. o BONUS: Implement Add Tab" and "Close Tab buttons. This feature exists in most modern web browsers, and allows a user to add a new tab by clicking on a +] button at the end of the tab list, and to close the current tab by clicking on the [x] button on that tab. Additional functionality Print current web page Save current web page as HTML Ability to rearrange tabs Instructions: Build a fully functioning web browser application. Use a three- tier architecture, to organize your solution into three logical layers. Create a project in your solution for each of these logical layers. Create a project structure for your solution, make sure you create a local Git repository Name your solution WebBrowser. Add 3 projects to your solution: WebBrowser.Ul (Win dows Forms App), WebBrowser.Logic (Class Library), and WebBrowser.Data (Class Li brary). Commit your code after each project is added to your solution. Add the depend encies between these three projects according to the 3tiers architecture model. Reference WebBrowser.Data in WebBrowser.Logic Reference WebBrowser.Logic in WebBrowser.tier architecture model. create the User Interface for the main window in your web browser. You will be adding this new window to your WebBrowser.Ul project as the main form. Your new main form will contain the following controls/functionality: A MenuStrip control: Your MenuStrip should contain the following items and sub-items: . File: o New Tab o Close Current Tab o Save Page As HTML o Print Page o Exit Web Browser: (on click will exit the program) Tools o Manage History o Manage Bookmarks Help: o About: will show a dialog box with a brief description about your browser Include your name, student id and anything else you would like to mention about yourself as the application developer. ToolStrip control: Your ToolStrip should contain the following items: Back button: will have an icon that represents the 'go back functionality, clicking will do nothing for now. Forward button: will have an icon that represents the 'go forward functionality, clicking will do nothing for now. Refresh button . Home button Address TextBox: when you enter a URL and press Enter, the WebBrowser control (listed below) will load the address you entered Go button: will have an icon that represents the 'go' functionality, clicking this button will perform the same behavior as when you press the Enter key in the address TextBox (load the new address in the web browser) Bookmark: will have an icon TabControl: o Will initially have only one tab (remove any extra tabs) o Inside the tab you will add your WebBrowser control .WebBrowser control: Place this control inside the TabPage in the TabControl listed above. This control will navigate to URLs entered in the Address TextBox. o .Create a new User Control: Create a new User control that you will use in all of your tab pages, give your control a relevant name based on its purpose and functionality. o o Move all of the controls that you had previously added inside the tab page to o Add your new user control inside the tab page to replace the separate controls o Make sure your web browser's current functionality still works as expected after o Inside your new user control, add the following to its code file: your new user control (ToolStrip and BrowserControl). you removed. these modifications Back links field: this will be a stack of strings Forward links field: this will be a stack of strings as well. Implement functionality for A Refresh button: when clicked the browser will refresh the current page .A Back button: Push the current link to the top of 'Forward links' stack Pop the new link from the 'Back links' stack, and navigate to it in the browser .A Forward button: Push the current link to the top of 'Back links' stack Pop the new link from the 'forward links' stack, and navigate to it in the browser In your MenuStrip control, implement the following functionality for the following menu items: o File > New Tab (Ctrl T) Create a new tab page. Add a new instance of the new user control you created to that tab page. Set the docking property of that control to "fill . . o File > Close Current Tab (Ctri+ W) Close currently selected tab. Inside your WebBrowser.Data proiect o Add a new database and add the following tables: History (columns: ld, URL, Title, Date) Bookmarks (columns: ld, URL, Title) . Inalde your WebBrowaer.Loale proiest.. Add a Histroyltem class with the following properties: o URL (string) Title (string) . Date (DateTime) Add a Bookmarkltem class with the following properties: o URL (string) Title (string) Add a History Manager class, with static methods that can add a history item to the database and get all history items from the database Add a Bookmark Manager class, with static methods that can add a bookmark item to the database and get all bookmark items from the database . Inside your WebBrowser.Ul Project: o Add a new 'History Manager Form' form Add a ListBox control in the designer for this form Implement the on-load event handler for this form and use the History Manager class to get all history items and display them in the ListBox using the following format: [date] Title (URL) Add a new 'Bookmark Manager Form' form o Add a ListBox control in the designer for this form . Implement the on-load event handler for this form and use the Bookmark Manager class to get all bookmark items and display them in the ListBox using the following format: Title (URL) Implement functionality for: o A Bookmark button: when clicked, the URL and Title of the current page will be added to the Bookmark table in the database if it does not already exist (use the Bookmark Manager to add the new bookmark to the database) When you navigate to any URL from any tab, after it finishes loading, add the URL, Title, and date and time of navigation to the History table in the database (use the History Manager to add the new history item to the database) . . In your Menustrip control, implement the following functionality for the following menu items: o Tools> Manage History When clicked create a new instance of the "History Manager Form" form and call ShowDialog0 Tools -> Manage Bookmarks When clicked create a new instance of the "Bookmark Manager Form" form . In your custom browser tab contro Add a Status Strip control and dock it to the bottom of your custom control. Your StatusStrip will contain the following . Add a ProgressBar control that will display the loading progress each time o you navigate to a page. (Hint: look into the WebBrowser control's events and find what you can utilize from there) A StatusLabel that will display the word "loading" while the page is loading, and the word "done" when the page has finished loading. BONUS: add another StatusLabel control that will display the URL of any link you hover over in the WebBrowser control. . Implement search functionality: o Add a "search term TextBox control and a "Search" Button When the user enters a phrase in the TextBox and clicks the Search Button, filter the list to show only the history items that contain the keyword(s) the user is searching for. Implement delete functionality: .Add a "Delete" Button to your form. .When a user selects an item in the list, and clicks on the Delete Button, the o item will be deleted from the database and the list will be refreshed. o Implement clear history functionality Add a Clear History" Button to your form When the user clicks on this button, the system will delete all history items from the database table and will refresh the list. In your "Bookmark Manager Form" form Implement search functionality: .Add a "search term TextBox control and a "Search" Button o When the user enters a phrase in the TextBox and clicks the Search Button, filter the list to show only the bookmark items that contain the keyword(s) the user is searching for. Implement delete functionality: .Add a "Delete Button to your form. o When a user selects an item in the list, and clicks on the Delete Button, the item will be deleted from the database and the list will be refreshed. In your main form: In your MenuStrip control, implement the following functionality for the following menu items: o Tools > Clear History When selected, the system will delete all history items from the database table. o BONUS: Implement Add Tab" and "Close Tab buttons. This feature exists in most modern web browsers, and allows a user to add a new tab by clicking on a +] button at the end of the tab list, and to close the current tab by clicking on the [x] button on that tab. Additional functionality Print current web page Save current web page as HTML Ability to rearrange tabs