Commands and Undos and Navigators oh my! (EclipseCon Day 3)

If you’re busy keeping track of all the new projects that are starting up, let’s see there’s DSDP, STP, DTP, ATF, Corona, PHP-IDE, Modeling and more, then you might overlook some of the things that are happening in the core Eclipse Platform. I went to three interesting presentations recently that covered important changes in the core Platform:

1. Your Action is My Command by Doug Pollock

Actions are still around and are not even deprecated in 3.2, but in the future use Commands. Commands are just abstract representations like “Cut” and they work with Handlers to actually perform behavior. I think the way to use these is to register global commands and then a handler for each view with IHandlerService. This is sort of like how you currently use setGlobalActionHandler. Commands have further support for customization with commandParameters, commandParameterTypes, state, contexts, bindings, and menus. The menus which are supplied to the org.eclipse.ui.menus extension point will replace many of the existing extension points for menus, but is only experimental for 3.2.

The presentation is on Doug’s personal site, not on the EclipseCon site.

2. Redoing Undo: Eclipse 3.1 Undoable Operation Support by Susan Franklin

In EclipseCon 2005, we discussed how the undo framework was changing and now it is complete. Before, there were multiple undo stacks, for example one for editing and one for refactoring. There is now a common undo framework that uses IUndoableOperation among other classes.

It wasn’t clear to me what the support was of the common undo framework by every project. Perhaps there should be a matrix that has each project and whether they support common undo fully and if there are any caveats. I would recommend that any new actions that you write should support IUndoableOperation.

3. Common Navigator Framework for Platform/UI in 3.2 by Michael Elder

This was a really pleasant surprise as it seems like we can now reduce the number of views (prevent view explosion) as well as finally support logical resources in a Common Navigator. There have been requests for supporting logical resources for as long as I can remember in Eclipse.

It was interesting to see the cream rising to the top, or is it the reusable diving into the core, as Michael showed how it started off as an IBM Rational Application Developer initiative, then it was contributed as part of the WebTools Project, then now is in the Platform UI. There is lots of good stuff here, so check out the presentation and experiment with the APIs. Hopefully there will be a nice tutorial for it in Eclipse Corner in the future.