Thursday, July 12, 2007

Node goes up... Node goes down...

Throughout the past week I have been focusing pretty steadily on my Summer of Code project. Last week I reported that container support had been added to Zest. Since then, I have been updating and fixing up many of the issues containers presented. There were a number of small changes that needed fixing (like the fact that my labels were all truncated), but I also managed to add a number of new features. In particular I added open close animations, and container layout and scaling. Now each container can have its own layout and scale depending on the number of nodes. I also reversed the direction of my gradient, although I really should work with the UI team and use the Kelvin Colours.

The most exciting feature I added was a new open / close algorithm. Now, when a container is opened, it moves the nodes below it out of the way. I attempt to put the nodes back when the container closes again. Moving nodes out of the way (without really altering the graph) is considered a pretty hard problem in graph drawing, but since I knew my nodes always grow downward, it made it somewhat easier for me.

Finally I added a fisheye feature. Now, if enabled, when you mouse over a small node you can have it zoom into focus. Using this technique, I chose only to show the icons on the small nodes, but on hover you get the full text. (In this screenshot I moved my mouse over the centre node in top container).

The snippet used to create these screenshots is less than 70 LoC (and if I was a more clever programmer I could probably do it in less than 40).

It was a pretty busy week with a lot of late nights and I haven't seen my wife and daughter much, so I think I will head home and enjoy the nice west coast weather we have been receiving.

Tuesday, July 03, 2007

Europa, My Top 10 List

I have had the pleasure of using Europa for the past 8-10 months. Of course it was not called Europa the entire time (Eclipse 3.3 Milestones with several milestone plug-ins attached). I have now come to depend on several of these new features and here is a list of my Top 10 Europa Features that I Cannot Live Without!!!

I should point out that I do a lot of Model Driven Software Development and Java Development, so if this list seems a little biased, it is :) There seems to be really good stuff going on in CDT, Birt, etc... but I have not used these tools enough to give them a fair review. I guess that's why this is My Top 10 List :)

Without further ado, my top 10:

10: Mylyn! A lot has been said about this, and yes it really does live up to all the hype!

9: GMF / MDT: Both of these are really cool technologies, but out of the box they also provide graphical editors for model development. One of the biggest criticisms of the modeling project was “I cannot see my model graphically”, well now you can!

8: New Look / Min-Max behaviour: Eclipse got a bit of a face lift with some new Editor Min / Max behaviour. This makes much better use of the screen real estate, while maintaining easy access to your favorite views through “Quick Views”. Press CTRL+M when coding, you'll enjoy the space.

7: The Eclipse Packaging Project: I still use Eclipse the “Old Fashion Way”, that is get the SDK, install the features I want, adjust the Eclipse startup parameters (memory use, file handles, etc..), but judging from some early download numbers, people have really enjoyed the pre-packaged Eclipse distributions. It is contributions like the EPP that answers the critics who said Open Source projects are cumbersome to setup and lack polish. I am definitely jumping on this bandwagon!

6: Plug-in XML and Manifest improvements: Several new features were added to the PDE to make plug-in development easier. This includes Content Assist, Hyperlink support, Code folding, and Code Formating. Also, the PDE now allows you run multiple version of the same plug-in in the workspace or target environment. These features echo Wassim's comments that PDE Does tooling, but our business is people!!

5: Printing on GTK+:This is just a great bug fix / feature addition. I should also point out that GTK+ support for Eclipse is amazing. I personally think it looks nicer than Windows and Eclipse runs as fast, if not faster on my Linux box than it does on my Windows one.

4: New PDE Forms: They really Brought Sexy Back with this one. As well as a form face lift (with new gradients, icons, section headers, etc...) field assist and field validation were added. If you don't know, these forms are not just for PDE, you can use them in your favorite SWT app too.

3: Save Actions: Every now and then you get a feature that you really hate, and this is one of them! Why? Because I can no longer sit at someone else's machine and use their version of Eclipse. I am entirely dependent on my save actions: to organize my imports, format my code, and update my brackets. In my opinion, this feature ranks up there with Automatic Builds!

2: CTRL+Awesome: CTRL+3 is the new CTRL+1, that is, the new hot key I cannot live without. I no longer have to remember where I saw that action, or even what actions are available. Every view, perspective, menu item and editor are instantly available with a push of a button (CTRL+3).

1: EMF Generics: The EMF Team really out did themselves with this one. Not only did EMF lead the way with Java 5.0 support, they managed to do this without breaking binary compatibility. And like everything else in Eclipse, if you don't like the feature, turn it off. Using this feature, EMF will generate fully templatized lists. Now when you get lists of Books from a Library, you actually get Elist<book> not just an arbitrary list. Ed and Marcello gave an excellent talk at EclipseCon about their experience adding this feature.