javahelp是Java平台的一种可选软件包,其作用是作为应用程序实现联机文档的最主要工具。javahelp既是一显示文档的内容引擎,同时又是驱动这一内容引擎的API。javahelp 的外观实现了高度的可定制性。在标准窗体形式下,javahelp由一个内容面版和一个导航面版组成,前者能显示任何HTML 3.2页面,后者执行浏览联机文档的功能,如图A所示。本文将阐述如何在应用程序中实现javahelp 。
图A
javahelp外观
编写用于javahelp的联机文档是极其直观的。为了演示这一过程,我为一个假想的应用程序的优选对话框开发了相应的文档,如图B所示。
图B
第一步是组织文档的主题(topic)。每一个主题就是包含自身文件的HTML
3.2页面。主题是javahelp联机文档组成单位,内容面版上一次显示一个主题。
组织文档的主题完全取决于你自己。就以上的例子来说,我决定为对话框整体创建一个主题,然后为各个域和按钮分别创建主题。表A所示即为这些主题。
表A
相应的设置和按钮对应以文件形式保存的主题。对话框自身还有一个单独的主题。 |
|
控件 |
主题文件 |
Tab stop width |
help/tab_stop.html |
Use wordwrap |
help/wordwrap.html |
Autosave minutes |
help/autosave.html |
Write backup file |
help/write_backup.html |
Backup directory |
help/backup_folder.html |
Backup suffix |
help/backup_suffix.html |
Ok |
help/ok.html |
Cancel |
help/cancel.html |
Help |
help/help.html |
Dialog box |
help/preferences.html |
优选对话框的主题
下一步是创建映射文件(map file),映射文件建立URL和ID之间的关联关系(URL就是HTML主题文件的路径)。ID用做引用主题文件的方便途径,这样就不需要直接在文件中编写相应的引用路径代码了。
如清单A所示,映射文件格式很简单。它不过示一个XML文件,其中针对每一ID设置一个标签(mapID)。target属性定义了ID,而url属性则定义了主题文件的路径。通常情况下,一个主题文件应该对应一个ID。
最后,你需要为自己的文档创建目录。目录就是描述文档结构的一个XML文件,javahelp采用目录来创建文档布局的树视图。
如清单B所示,目录文件格式也很直观。tocitem标签定义一个条目,而且可以嵌套显示其间的层次。text属性定义树视图内显示的文本,target属性则定义选中条目时将要显示的主题ID。
如果target属性被省略,那么有关的条目就只是起到占位的作用而在选择任何主题的时候都不会显示相应的内容。这一功能主要用于那些不对应任何主题但包含其他条目的条目。
标记联机文档的所有文件(主题文件、映射文件和目录等)的集合被叫做helpset。为了把这些文件归整在为一个整体,你必须创建一个helpset文件以便javahelp可以找到所有的文档。清单C所示为示例helpset文件。
helpset文件是一个XML文件。它包含了描述你的helpset的若干标签。title标签定义了javahelp显示的标题。map标签定义指向你的映射文件的URL(标签mapref,属性location),以及文档在初次显示而且没有选择任何主题时显示的主题ID(标签homeID)。
标签view定义了文档的浏览方式。你能使用的视图有若干种,这些视图也被称做导航器(navigator)。标签name定义了导航器的名字(用在应用程序中),标签label定义javahelp
为导航器显示的文本。标签type是导航器类的全名(目录导航器的的名字是javax.help.TOCView),标签data则指定导航器所采用的数据(在目录导航器的情况下就是目录文件的URL)。
图C显示相互关联的若干文件。