如何为Eclipse插件创建带外部链接的使用说明入口及选择载体?
嗨,我来帮你梳理这两个问题的实用方案,都是Eclipse插件开发里常见的需求~
一、如何创建插件使用方法的页面
最推荐的是利用Eclipse内置的帮助系统(Eclipse Help),它能完美整合到Eclipse的帮助菜单中,支持富文本、图片、链接,还能和插件深度集成。步骤大概是这样:
编写帮助内容:
- 用HTML或者Eclipse的
*.topicXML格式编写帮助文档,把文本、图片(放在插件的images目录)、外部链接都加进去。比如HTML里的外部链接可以写成<a href="https://example.com" target="_blank">外部链接</a>。 - 可以用
toc.xml来组织帮助的目录结构,让用户能方便导航。
- 用HTML或者Eclipse的
注册帮助内容到插件:
在plugin.xml中添加扩展点org.eclipse.help.toc,指向你的toc.xml文件,这样Eclipse的帮助系统就能识别并加载你的帮助内容。示例片段:<extension point="org.eclipse.help.toc"> <toc file="toc.xml" primary="true"/> </extension>添加上下文帮助(可选):
如果想给插件的某个按钮、视图添加右键“帮助”,可以用org.eclipse.help.contexts扩展点,绑定控件和对应的帮助主题。
除了官方帮助系统,你也可以把帮助内容做成独立的HTML文件,嵌入到后面要讲的组件里,适合更定制化的展示。
二、选择合适的组件展示帮助内容
首先排除Editor,因为Editor是用来编辑文件的核心组件,完全不适合用来展示静态帮助内容,会增加不必要的复杂度。推荐这两个选项:
选项1:带SWT Browser组件的自定义Dialog(对话框)
适合临时查看帮助的场景,弹出式展示,看完可以关掉,不占用工作台空间。
实现步骤:
- 创建一个继承
TitleAreaDialog的类,在createDialogArea方法中嵌入SWT的Browser控件:public class HelpDialog extends TitleAreaDialog { public HelpDialog(Shell parentShell) { super(parentShell); setShellStyle(SWT.CLOSE | SWT.MIN | SWT.MAX | SWT.RESIZE); } @Override protected Control createDialogArea(Composite parent) { Composite area = (Composite) super.createDialogArea(parent); Browser browser = new Browser(area, SWT.NONE); browser.setLayoutData(new GridData(GridData.FILL_BOTH)); // 加载插件内的HTML帮助文件 Bundle bundle = FrameworkUtil.getBundle(getClass()); URL url = bundle.getEntry("resources/help.html"); if (url != null) { browser.setUrl(url.toString()); } // 处理外部链接,在系统浏览器打开 browser.addLocationListener(new LocationListener() { @Override public void changing(LocationEvent event) { if (event.location.startsWith("http")) { event.doit = false; try { Program.launch(event.location); } catch (IOException e) { e.printStackTrace(); } } } @Override public void changed(LocationEvent event) {} }); setTitle("插件使用帮助"); setMessage("这里是插件的详细使用说明"); return area; } } - 在
plugin.xml中注册菜单项,触发这个Dialog:<extension point="org.eclipse.ui.menus"> <menuContribution locationURI="menu:help?after=about"> <command commandId="com.your.plugin.commands.openHelp" label="插件帮助" style="push"> </command> </menuContribution> </extension> <extension point="org.eclipse.ui.commands"> <command id="com.your.plugin.commands.openHelp" name="Open Plugin Help"> </command> </extension> <extension point="org.eclipse.ui.handlers"> <handler class="com.your.plugin.handlers.OpenHelpHandler" commandId="com.your.plugin.commands.openHelp"> </handler> </extension> - 编写
OpenHelpHandler类,在execute方法中打开Dialog:public class OpenHelpHandler extends AbstractHandler { @Override public Object execute(ExecutionEvent event) throws ExecutionException { IWorkbenchWindow window = HandlerUtil.getActiveWorkbenchWindowChecked(event); HelpDialog dialog = new HelpDialog(window.getShell()); dialog.open(); return null; } }
选项2:带SWT Browser组件的自定义View
适合用户需要一边看帮助一边操作插件的场景,View可以停靠在工作台的任意位置,和插件的其他组件共存。
实现步骤和Dialog类似,只是把Dialog换成继承ViewPart的类,在createPartControl方法中添加Browser控件,然后在plugin.xml中注册View,再添加菜单项触发View的打开(用IWorkbenchPage.showView方法)。
为什么推荐这两个?
因为SWT的Browser组件可以直接加载HTML内容,完美支持文本排版、图片展示,还能通过监听事件把外部链接跳转到系统浏览器,完全满足你的需求。
内容的提问来源于stack exchange,提问作者devmaria

