Advertisment

Windows 7: Customizing Jump Lists

author-image
PCQ Bureau
New Update

We continue our series of Win 7 development by looking at one of the most

useful features of Windows 7 — Jump Lists.Jump Lists can be thought of as a mini

start menu for each application. Jump Lists can consist of Tasks and

Destinations organized by Categories. Tasks are stuff that the application can

'do' — such as play the next track, open another application or create a new

email. Destinations are stuff that the application can 'open' — such as files,

folders, emails, etc. Categories allow you to organize these tasks and

destinations logically into groups. There are some categories that are

pre-defined such as 'Recent', 'Frequent' and 'Pinned'. More about these a little

later.

Advertisment

To add the Jump List features into your application, include the Windows API

Code Pack into the project as discussed last month. Once done, you can declare

an instance to use in your application like this:

Direct Hit!

Applies To: .NET developers



USP: Learn to incorporate Jump Lists into
your apps



Primary Link:
http://msdn.microsoft.com



Keywords: windows 7, jump lists

JumpList jl;



jl = JumpList.CreateJumpList();


Adding tasks

Advertisment

Now if you wish to create anything on the Jump List, you can simply use this.

For instance, if you wish to add some tasks, you can use the following code:

string systemFolder =

Environment.GetFolderPath(Environment.SpecialFolder.System);

jl.AddUserTasks(new

JumpListLink(Path.Combine(systemFolder, "notepad.exe"), "Open Notepad")



{IconReference = new IconReference(Path.Combine(systemFolder, "notepad.exe"),
0)});

Advertisment

jl.AddUserTasks(new

JumpListLink(Path.Combine(systemFolder, "mspaint.exe"), "Open Paint")



{IconReference = new IconReference(Path.Combine(systemFolder, "mspaint.exe"), 0)
});

jl.AddUserTasks(new JumpListSeparator());



jl.AddUserTasks(new JumpListLink (Path.Combine(systemFolder, "calc.exe"), "Open
Calculator")



{IconReference = new IconReference(Path.Combine(systemFolder, "calc.exe"), 0)});

jl.Refresh();

Advertisment
The default Jump List for an application on Windows 7.

The code adds three tasks and a separator to the Jump List. The Refresh()

statement makes sure the additions are reflected correctly.

Adding Tasks and a separator to the Jump List for

enhancement.
Categories and destinations allow us to organize and open

items quickly.
Advertisment

Adding Categories and Destinations



Also, we can add some destinations, or files that the application can open.

There are several ways this can be done. For the current scenario, we'll add

come items automatically into Jump List for the user of the application and also

categorize them. To do this, simply add the following code.

JumpListCustomCategory c1 = new

JumpListCustomCategory("Documents");



JumpListCustomCategory c2 = new JumpListCustomCategory("Templates");


jl.AddCustomCategories(c1, c2);

string docFolder =

Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);

Advertisment

c1.AddJumpListItems(new JumpListItem(docFolder + "\\key.txt"));



c1.AddJumpListItems(new JumpListItem(docFolder + "\\macros.txt"));

c2.AddJumpListItems(new JumpListItem(docFolder +

"\\Sample Template.txt"));



jl.Refresh();

Ability to use auto-lists such as the 'Recent' and 'Pinned'

known categories with minimum effort.
A full fledged Jump List with tasks, categories,

destinations, pinning and recent auto-list items.
Advertisment

The above code creates two categories on the Jump List and then adds a few

files into each categories. When you run the application, you will be able to

see the Jump List containing these:

Registering File Types and known Categories



One of the most powerful features of the Jump Lists in Windows 7 is the

ability for your application to display the most frequently opened, most

recently opened or user's most favorite files in the Jump List, so that the user

has a one-click access to them. In older versions of Windows, you would need to

take care of this in code yourself. For instance, to show the most recent files

accessed by your application, you will need to maintain this list yourself. The

same goes for frequent (where the number of accesses would also need to be

stored) and favorites.

Windows 7 manages all of these automatically for you. There are only two

requirements. You must register the file type you wish to open correctly with

Windows so that it can manage the access lists and in the code, you need to tell

Windows which list you wish to display automatically in the Jump List.

When these are done, the application will show the correct set of items in

the Jump List. The Windows API Code Pack has a registration helper code that

lets you register file types to your application. This is normally done during

the installation phase of the application, but can be done at any time. To

register a file type with your app, just use the code like this:

RegistrationHelper.RegisterFileAssociations("Win7TieIn",

false, ApplicationID, Application.ExecutablePath + " /load %1", ".txt");

This code takes the name of the application, the application ID, the EXE to

use to open the file and the parameters and whether an entry is to be made in

the HKCU part of the registry.



You can now 'subscribe' to the auto-lists for your Jump List like this:

Ijl.KnownCategoryToDisplay =

JumpListKnownCategoryType.Recent;

You can use 'Recent', 'Frequent' or 'Neither' to set the type of list you

wish to display. The best part is that the pinning of favorites and user

initiated remove or reorder of the items happens without need for any other

code.

Jump Lists are a great new feature of Windows 7, and once you start using

them they become extremely addictive. Try and add them to your applications as

well, so that the user gets the additional benefit of using your application on

Windows 7.

Advertisment