JavaHelp帮助文件功能自研替换的可行性研究

举报
Jet Ding 发表于 2020/09/29 11:53:43 2020/09/29
【摘要】 【引言】最近接到一个任务,说JavaHelp的License存在涉A问题,因此需要裁剪或者替换。由于这个库是针对桌面系统应用开发框架Swing的支持,而Swing是一个非常老旧的框架,目前很难找到对应的替代品。本文就从JavaHelp的背景和所提供的功能来探索一下自研替换的可能性。【替换的技术】由于我们帮助系统的内容是基于HTML的静态网页,本文就假定用前端框架应用来替换目前的帮助系统,由于...

【引言】

最近接到一个任务,说JavaHelpLicense存在涉A问题,因此需要裁剪或者替换。由于这个库是针对桌面系统应用开发框架Swing的支持,而Swing是一个非常老旧的框架,目前很难找到对应的替代品。本文就从JavaHelp的背景和所提供的功能来探索一下自研替换的可能性。

【替换的技术】

由于我们帮助系统的内容是基于HTML的静态网页,本文就假定用前端框架应用来替换目前的帮助系统,由于所有帮助文件可以放在本地,因此先暂时假定前端应用无需访问后端API

 

本地应用在程序中打开指定帮助页面时可通过调用前端页面的路径及其参数实现。这个可以通过前端框架中的路径路由管理来实现。

【主窗口的三个部分】

image.png

(图1

如上图所示,现有的帮助系统主窗口包含三部分:

顶部的工具栏:这个工具栏包含三个按钮,向前翻页,向后翻页和打印按钮。

左边的导航栏:导航栏是树结构,列出了整个帮助文件的层次关系。

右边的内容视图:内容视图显示的是当前选中页面的内容。

 

【弹窗】

弹窗会在用户要求显示某个具体页面的时候显示,它只有一个内容视图。

 

【目录】

目录就是在左边导航栏显示的内容,是树状的结构,是整个帮助文件系统的缩略显示。当在显示某个页面时,对应的目录项会处于高亮选中状态。

目录的树结构中的节点会是一对值,键值对应的是标签也就是显示的索引内容,映射值会是一个页面路径或者页面路径加参数指定某个区域。

内容页

内容页会基于HTML5, CSS。估计会有少量的逻辑代码如Javascript, TypeScript等等。

每个索引可以对应一个单独的页面或者页面的某个区域。

【索引】

索引是指在目录中的单个条目,在显示对应的页面时,索引项会高亮显示。

 

【全文字搜索】

全文字搜索主要有如下特征:

通过自然语言搜索:

1.     定位文档

2.     定位段落

3.     显示搜索的分数

4.     显示匹配的个数

5.     搜索结果排序显示

6.     搜索结果是目录表中的索引项目

 image.png

(图2

 

关于全文字搜索更多详情,请参看:

https://docs.oracle.com/cd/E19253-01/819-0913/author/search.html

 

【上下文敏感帮助功能】

这项功能是指:

1.     通过应用程序的帮助按钮可以打开帮助系统的主界面

2.     通过F1可在应用程序的某个页面打开对应的帮助系统的内容页面 

更多详情,请参看:

https://docs.oracle.com/cd/E19253-01/819-0913/dev/csh.html

 

【帮助文件管理灵活】

这部分是说帮助文件的添加,删除和修改比较容易。

【开发建议】

假定我们开始自研这个功能,需要先拿一个项目做实验。 

步骤一:根据目前的帮助文档样式,写出对应的网站应用帮助文档。新的应用要具有以上描述的必要功能。基本上是重用现有的HTMLCSS 

步骤二:在享有的项目中写一个Helper工具类调用打开对应的页面。 

步骤三:对比前后两套系统的差别,查漏补缺,继续优化,直至满意。 

步骤四:抽象出共性组件,一个是Helper工具类,一个是前端应用创建模板化。

1.     Helper工具类这一部分相对直接一些。就是通过这个工具类在现有的项目中显示帮助文件。

2.     前端应用创建模板化。这一部分的工作跟现有的帮助文件创建差不多,都是构造HTMLCSS。构造方式和工具上会略有差别。 

【扩展性】

目前的JavaHelp系统是在桌面应用系统下使用的。经过自研开发以后,由于采用了独立的前端应用,其支持的系统广度会大大提高,不仅可以支持桌面应用,而且还可以在任何能支持现代前端应用的平台上使用。 

【小结】

做桌面的帮助系统开发中, JavaHelpJava桌面系统的标准程序库。 HelpProvider.Net桌面环境下开发帮助系统的标准程序库。 

然而,以上两种技术都已经无法或者很难支持HTML5的内容需求。因此,我们对于帮助系统的开发需要尝试新的技术领域。 

本文从帮助系统的需求出发,以前端应用开发为假定替换技术,做了一个探索性的思考,希望对以后的工作有所帮助。请大家多多评论,留言,批评和指正。

 


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。