Thursday, June 2, 2016

The JumpGo Project: Part 3

1 comment

Speed And Power Solve Many Things...

With  tabs added to JumpGo, I could focus on another problem; JumpGo was slow and incompatible. Durring the creation of JumpGo I used the standard webbrowser object included in the toolbox items for visual basic. When I updated the browser to include tabs I needed some webpage info from the webbrowser object that it wasn't giving me. Because of this I switched to the other Microsoft provided web object in visual basic: AxWebbrowser. This provided a little more control, scripting ability and other features I needed. Both of these, however, are .NET components for utilizing Internet Explorer's Trident engine. This is slow, old, incompatible and full of annoying script errors. I know I could suppress script errors with the webbrowser and axwebrowser components but it was still slow, old and incompatible. It didn't even support HTML5.
Clearly, JumpGo needed a new rendering engine. I spent a good deal of time researching (mainly Wikipedia and YouTube) internet rendering engines and .NET compatibility for them. I began comparing various rendering engines with Trident. I was really leaning between WebKit and Gecko.


I found numerous blogs and tutorials for implementing WebKit in a VB.NET project but very few tutorials for Gecko and VB.NET projects. I did find an old video tutorial on YouTube for implementing GeckoFX in a .NET application and I decided to go with GeckoFX. You can check out his video here however it is somewhat outdated. I downloaded the files mentioned in the video and began the process of GeckoFX integration. Little did I know the version of GeckoFX and XUL I was using was old and outdated.
I wanted to play it safe and keep from causing major damage to the main JumpGo source so I started an entirely new project just to test the implementation of GeckoFX. This project was intended to be nothing more than an educational/trial and error project that I could use while I figured out how adding new references and components worked. I had no intention of using the project as a part of the JumpGo application, but after I got the GeckoFX engine to work in the project I realized how difficult it had been to set everything up and get the project tweaked just right for the rendering engine I added. So instead of removing the AxWebbrowser component from JumpGo, sitting through the grueling process of adding the GeckoFX component in its place and rewriting a large amount of code to get the component to work, I decided to just stick to the 'test' project and re-brand it with the JumpGo logos and name. It also recived a new version number, JumpGo v3.0.1
The re-branded geckofx browser written in vb.net
This meant that I was back to a simple, one-page web browser with no tabs and just a few controls. This time, however, I had a better rendering engine and more determination to get this project off the ground. I already knew how to go about making a tabbed web browser.
I wanted to give this new JumpGo a better tabcontrol component than JumpGo v2 had. The 'close tab' button should be on the actual tab itself and not inside the tab's content. 
This was something that I was looking into for a while now. After JumpGo v3 was completed I started researching what it would take to get a button into the clickable text area of a tab in the standard .NET tabcontrol. I found a couple of instructional tutorials but they didn't help me at all. 
The DevComponents.DotNetBar was promising but with the massive price tag I just couldn't go for it. So I went back to searching for a viable tabcontrol for JumpGo. I happened to stumble upon a project dubbed "A highly configurable MDI tab control from scratch" on codeproject and it seemed to fit my needs very well. I added the tabcontrol to the new JumpGoMain.vb form and re-implemented the code from the original JumpGo source with a few tweaks for compatibility with the MDI tabcontrol.

I rearranged the buttons, textboxes and menu to give JumpGo a new look, added some new features such as themes and user settings and I completely redesigned the JumpGo logo to reflect the total overhaul of the browser. With all the changes and builds I went through, JumpGo actually made it to v4.0 before I was done. Now all that was left was to refine the browser a bit before I released it publicly for the first time.
you sit around a computer all day, and it's too easy to open another tab and keep Rotten Tomatoes there.
Read more at: http://www.brainyquote.com/quotes/quotes/e/evandaughe654216.html

Monday, May 30, 2016

The JumpGo Project: Part 2

No comments

What We Need Are Tabs...

After the fist version of JumpGo was built and usable I wanted to add tabs to the browser's various features. I had very little experience with tabbed elements and even less experience with creating a reusable content form in VB.NET or any other language for that matter.
I think I spent three whole days scouring books, forums and search queries. Frustrating as it was, I figured it out. All it would take is a new main form with a tabcontrol and a few lines of code that creates a reusable form with the contents of the browser form and adds it to the tabcontrol.
I was about to implement this change when I started to wonder if the tabs would even work. So I decided to fork my JumpGo browser and created the temporary "TabGo browser" to implement the changes.
The changes worked brilliantly and thus I merged the changes back into the main JumpGo application. Now JumpGo uses tabs as a standard feature.This was a huge step in JumpGo's development.
 Questionably, I made JumpGo open as a maximized window every time it opened. Also I added a 'close tab' button inside the tab content and not on the tabcontrol itself. But give me a break. This was my first successful attempt at a tabbed web browser.
Now that I've added tabbed browsing to the the list of features, I still had a problem with speed, script errors and compatibility, all to do with the fact that JumpGo was using IE's Trident engine. I wanted to fix this problem and remove the dependency of IE by switching to another rendering engine but I didn't know how big of an overhaul this entailed.

Wednesday, April 27, 2016

The JumpGo Project: Part 1

No comments
In The Beginning...
I started the JumpGo project in 2011 when I set out to create my own web browser for Windows. At this time the browser was not called "JumpGo Browser", but in fact was titled "Web Match" which was a typo as it was supposed to spell "Web Mach". This typo was not corrected for a long time, and by the time it was it had already made its way through my family as being the name of my browser. So i decided to come up with an entirely new name that wouldn't be confused with the misprint of the old name.
In 2012 however, the development of the actual browser hadn't even started as I was still trying to grasp the concepts of various computer languages such as C++, Python and BASIC. Because of this, the browser was still a concept with a graphical interface, nothing more. Clearly the browser was going nowhere fast. Soon I began to forget about the browser completely as I was preparing for the daunting task of starting high school. I began rushing to learn all I could from my C++ and Python books before I started high school and had no time for programming lessons.
When time came for me to choose my electives for 2013 I found a computer programming choose in the choices. Of course I signed up for it immediately. The course started out with an introduction to computing and a history of the computer. Later we started learning how to use the Visual Basic 2008 Express version of Visual Studio. Our instructor informed us that we would soon have an upgrade to Visual Studio 2012 and we would be able to make use of other new features not available in the 2008 edition of Visual Basic.
I spent a great deal of time learning the Visual Basic.NET language. It was a very simple and easy to use language and very extendable. I then started taking a look at some of my old abandoned projects and began rewriting them in VB.NET because I rather like it as a language. I found my old web browser and started to write up the code for it and made a very simple, one-page browser with limited functionality.


This was, in my opinion, when JumpGo really began to take form. Even though it was as simple as a single page with a navigation bar that beeps every time you hit the enter key, it was building more character with every line of code. That's what it felt like to me.