Improving user experience in ngDesign

Usually we don't necessarily write about the changes in each version anywhere else than in the changelog. However, I feel that I have made enough changes improving the user experience as a whole that this is deserving its own post.

Bundled JRE (Java Runtime Environment)

After resisting for years, I finally caved in and bundled the JRE for Mac and Linux! Combined with a correction in the OS/architecture auto-detect code on the download page, this should now make it seamless to download and run ngDesign on your computer without ever having to worry about Java.

So why don't we bundle Java for Windows too? Well because we didn't consider it originally, and also it requires slightly more work: unlike the bundles for OS X and Linux, the JRE for Windows comes as an installer. This means that I either have to figure out how to extract data from it as is, or need to install a duplicate JRE in 32-bit (my computer is 64 bit). Anyway, let's review the other changes.

Hierarchy in Project Explorer

Until now, the Project Explorer only showed packages, files, and entities in those files. The structure of a file was shown in the Outline view. Except that thinking about it, we observed that we weren't really using the outline view much... and at the same time the project explorer is taking a lot of room, but it is also under-used. So we combined the two, and added the support for showing the hierarchy in the process:

Project explorer showing the hierarchy

Note that frameSelector is a task (T) but has a different color (grey instead of blue) because it is an inner task.

Showing errors/warnings (and stuff)

Something that was still not implemented was showing errors and warnings in the project explorer, which is very handy to track problems quickly. At the same time, we had an overlay to differentiate files defining at least one network from other files. Two unfortunate issues with that were: 1) the overlay was kind of ugly 2) the overlay was hiding symbols from Git indicating uncommitted files (the "?" sign). The new indicator for a file with networks inside is a blue corner (this is discrete, but hey overlays are 8x8 pixels).

Overlays showing errors and a network in Project Explorer

Improved FSM and Graph views

By getting Outline out of the way, we now have more space to show the FSM and Graph views, and the limitations of these views became suddenly obvious. The Graph view shows the graph that corresponds to the network opened in the current editor, but as soon as you would switch to a task (even an inner task of the network), this would clear the view. So much for reasoning about how this task connects to others. The view did not allow navigation within the hierarchy either, so you add to open a sub-network and click inside that network to see its graph.

The FSM view worked alright, except when you changed the task and added or removed a cycle and saved. The view would not reflect that right away, and you had to save again (after adding+removing a space), and move the cursor one more time to see the view refresh... This bug also affected the Graph view. The view would not make the difference between an entity that is not a task (and therefore cannot have an FSM) and a task without an FSM.

Graph of MacTop network in Ethernet application

The 0.69 version corrects all that. The Graph view now allows navigation in the hierarchy: when double-clicking on an instance, it opens the file in which the instantiated entity is defined and places the caret at the beginning of said entity. This works for inner tasks defined in a network too. Also, the view shows instances of networks with a thicker border to give a better understanding of the layout of a design. And when you select an instance, it highlights it in a nice purple :-)

Conclusion

Despite being incremental changes and improvements, they make it much easier to navigate in a design and figure out what's going on. We advise you to download the latest version and let us know what you think!