When designing Accelerators for IE8, we had a number of scenarios in mind. Primarily, we looked at the all-too-common user pattern of copy-navigate-paste and decided we could save our users a lot of time and frustration by enabling some sort of contextual interaction between content and services. For example, the classic example is mapping—the user finds an address buried in a page, and instead of having to navigate to a mapping service, can receive the map inline via a preview window:
We were pretty satisfied with the solution we came up with for IE, but we stepped back for a moment and asked, “do users really care which program they find an address in? If I’m browsing a document in Microsoft Word and find an address, isn’t the mapping scenario just as relevant?”
We thought the answer was yes, so we created the Accelerator Platform for Windows 7. Once you explicitly call into the platform from your application, you have access to all the Accelerators that IE does, without having to worry about the underlying XML implementation. This allows you to focus your energy on providing a seamless and powerful experience for your users.
I’ve already written a development-focused whitepaper on the Platform, and MSDN has some great documentation on all the interfaces and methods, so I don’t plan on diving into technical details in this blog post. Instead, I’m just going to spend a little time going over some of the Platform’s capabilities and show off a working example.
One of the cool things about the Accelerator Platform is that we’ve essentially given you the same amount of power that IE has in interacting with Accelerators. Our APIs are flexible enough that you have a lot of latitude in customizing how your program interacts with the Platform.
There are three broad classes of functionality you’ll probably care about in working with the Platform:
Enumeration is pretty simple. All you really need to do is loop through all the Accelerators and present them however you’d like. IE, for example, uses a system of “categories” and “default Accelerators” (explained here) to help make the Accelerator-hunting process easier for end-users.
If anything, execution is even easier; it can be as simple as launching a new browser window (not even IE, necessarily) and passing in any necessary data.
Preview is a little bit more complicated, requiring your application to provide some UI for hosting a preview window. However, preview isn’t necessarily right for every application, so there’s no reason you have to include it, particularly if integrating the extra UI would be difficult.
Platforms exist as a scaffold on which people can build, so we deliberately made the Accelerator Platform very flexible. You can decide what kind of user experience will work best in your application and implement it. For example, if you wanted to enumerate all of a user’s Accelerators in a single menu, without any kind of structure, that would be quite possible to do. That said, it probably wouldn’t be the best of ideas.
While I’m certainly not going to tell you how to do things, one salient point I’d like to make is that many users familiar with Accelerators have come to expect certain design paradigms when interacting with them. So while your particular needs might require deviating from IE’s behavior (e.g. only enumerating “Search” Accelerators), I’d like to suggest falling back on IE’s model wherever possible, for consistency’s sake, if nothing else.
I figure a feature blog post isn’t complete without a demo, so I wanted to showcase something I wrote as a test case for the Platform:
It’s a Word add-in that calls into the Platform for enumeration and execution. I ended up not adding preview, but there’s no reason you couldn’t do it in your own program. If you’re curious about how to implement something like the above, feel free to check out the whitepaper I mentioned earlier.
The Win7 Accelerator Platform is a powerful tool for bringing useful services closer to your users—I can’t wait to see the cool things you do with it!