Customizing Navigation Icons in JavaHelp

by Kevin Lewis


JavaHelp is an online help system developed in the Java programming language. Its primary function is to provide online help to support Java applications. In this article, Kevin Lewis, author or O'Reilly's recently released Creating Effective JavaHelp, shows you how you can create more intuitive and informative JavaHelp table-of-contents icons.

If you have worked with JavaHelp or have seen presentations on it, you might be growing accustomed to the standard navigational interface that Sun Microsystems provides with its Java-based online help system. Unless you work with third-party tools or have explored alternative implementations of JavaHelp, you're probably settling for the non-intuitive (not to mention boring) folder and file icons represented in the following illustration:

These icons, used in a standard JavaHelp table of contents (TOC), are the standard icons that Sun ships with JavaHelp. While they certainly help the user distinguish between categories and help topics, they don't help the user determine the type of help topic before opening it. However, you shouldn't let this standard deployment of JavaHelp limit you in how you deploy your help systems to your users. Take advantage of JavaHelp's flexibility as a help system, and present a TOC that not only looks professional but also helps users decide before opening a help topic if it is in fact the type of help topic they are looking for.

The first thing to realize is that there are several types of help topics that a user anticipates when seeking online help. Some of these topic types include:

  • Conceptual help
  • Procedural help (how to)
  • Troubleshooting
Note: Help authors could categorize many more types of help topics. But for the sake of this article, I'll list only these three types.

What if you had a set of help topics under one TOC category that explained text formatting for a word processor system? (Hint: Take a look at the previous illustration.) One topic might include overview information describing text formatting options, another might provide steps on how to apply the text formatting, and yet another might provide troubleshooting information in case the text formatting does not work. Now, what if you had several help topics for each of these different topic types? You can see how that one category could quickly contain many different types of help topics.

Note: Again, help authors could argue that you could restructure the TOC so that only troubleshooting topics were listed under one category and procedural topics were listed under another. But that subject is not the focus of this article. I use this basic example simply to demonstrate how you can manipulate the TOC icons to suit unique purposes.

The following illustration shows how you could modify the TOC for the same help system and use custom icons to enable users to visualize the type of help topic before opening it:

image 2

In this new TOC, one icon represents conceptual help topics, another icon represents procedural topics, and a third icon represents a troubleshooting topic. With this new model, users can quickly determine if a particular topic is the type that will help them find the information they need. If users want to know the procedure for working with text formats, they can simply look for the icon with the step numbers. If they want to know concepts, they can look for the icon representing lines of text.

Implementing a system like this one is fairly simple, assuming you have a designer to design and create icons for each topic type. Once you have a library of icons, you can implement the new structure with the code in the JavaHelp map and TOC files.

First, take a look at the code in the map file for the first TOC example (without the multiple icons):

   <mapID target="img.toplevelfolder" url="Images/toplevel.gif" />

   <mapID target="format" url="Topics/Formatting/Format.htm" />
   <mapID target="howtoformat" url="Topics/Formatting/Howtoformat.htm" />
   <mapID target="colors" url="Topics/Formatting/Colors.htm" />
   <mapID target="howtocolors" url="Topics/Formatting/Howtocolors.htm" />
   <mapID target="tsformat" url="Topics/Formatting/Tsformat.htm" />

Notice that the only icon mapped to an image file is the top-level icon (the toplevel.gif in the first line of the sample code). The top-level icon is the icon that appears at the top of the TOC, next to the heading "Word Processor Help." This particular map file does not map icons to image files for the category and topic icons because the HelpSet Viewer does not require any icon information for categories and topics if using the default icons. However, if you want to use customized icons, as in the second TOC example, you must map the new icons in the map file to your custom image files:

   <mapID target="img.toplevelfolder" url="Images/Toplevel.gif" />
   <mapID target="img.category" url="Images/Category.gif" />
   <mapID target="ing.concept" url="Images/Concept.gif" />
   <mapID target="img.howto" url="Images/Howto.gif">
   <mapID target="img.troubleshoot" url="Images/Trblshot.gif">

   <mapID target="format" url="Topics/Formatting/Format.htm" />
   <mapID target="howtoformat" url="Topics/Formatting/Howtoformat.htm" />
   <mapID target="colors" url="Topics/Formatting/Colors.htm" />
   <mapID target="howtocolors" url="Topics/Formatting/Howtocolors.htm" />
   <mapID target="tsformat" url="Topics/Formatting/Tsformat.htm" />

Notice that this new map file now has mappings for all of the new TOC icons. This mapping assumes, of course, that you have placed the custom icon image files in your help system's Images directory. Unfortunately, mapping these icons in the map file is only a fraction of the work required to implement the icons. You now must specify the icons in the TOC file so that the HelpSet Viewer knows which icons to display with each category and topic.

Take a look at the code in the original TOC file:

   <tocitem image="img.toplevelfolder" target="overview" text="Word Processor Help">
      <tocitem text="Text Formatting">
        <tocitem target="format" text="Text Formatting Options"/>
        <tocitem target="colors" text="Font Colors"/>
        <tocitem target="howtoformat" text="Applying Text Formatting"/>
        <tocitem target="howtocolors" text="Changing Font Colors"/>
        <tocitem target="tsformat" text="Formatting Problems"/>
      </tocitem>
   </tocitem>

Notice that the top-level icon is the only icon specified (indicated by the image="img.toplevelfolder" parameter in the first line of code). Again, the HelpSet Viewer does not require any icon information for categories and topics if using the default icons. However, if you want to use custom icons, you must add an image parameter to each line that uses a custom icon in the TOC. Your TOC file would now resemble the following code:

   <tocitem image="img.toplevelfolder" target="overview" text="Word Processor Help">
      <tocitem image="img.category" text="Text Formatting">
        <tocitem image="ing.concept" target="format" text="Text Formatting Options"/>
        <tocitem image="ing.concept" target="colors" text="Font Colors"/>
        <tocitem image="img.howto" target="howtoformat" text="Applying Text Formatting"/>
        <tocitem image="img.howto" target="howtocolors" text="Changing Font Colors"/>
        <tocitem image="img.troubleshoot" target="tsformat" text="Formatting Problems"/>
      </tocitem>
   </tocitem>

Notice that each image parameter uses a map ID that is specified in the map file. The parameter instructs the HelpSet Viewer to display that particular icon at the beginning of the line in the TOC. In this example, I use the img.concept map ID for conceptual topics, the img.howto map ID for procedural topics, and img.troubleshoot for the troubleshooting topic.

Keep in mind that the types of icons you use are only limited to the talent of the illustrator creating the icon image files. Be sure to test different icon sizes with your help system to make sure the icon does not create awkward spacing between and around your help topic titles. You might wonder if all of this extra work is worth it, but I'm sure the users of your help system would tell you it is.


Kevin Lewis holds a masters degree in technical and professional writing from Northeastern University in Boston. He has worked extensively with many online help systems, and was one of the first help authors to work with JavaHelp. He offers training services in several online help technologies.