Eclipse的上下文帮助(Eclipse Contextual Help)

2019-07-28 22:56发布

现在,我可以注册在Eclipse WizardDialog /编辑器上下文帮助。

1)我创建了一个help_contexts.xml文件。

<?xml version="1.0" encoding="UTF-8"?>
<?NLS TYPE="org.eclipse.help.contexts"?>
<contexts>
   <context  id="my.plugin.help.general" >
        <description>test</description>
        <topic label="test" href="http://domain.com/help.html"/>
   </context>
</contexts>

2)我在plugin.xml中引用此文件

  <extension
         point="org.eclipse.help.contexts">
         <contexts file="help_contexts.xml" plugin="my.plugin.MainEditor">
         </contexts>
   </extension>

3)我加在我的build.properties一行包括在bin目录下这个文件(bin.includes = help_contexts.xml,...)

4)当我运行基于GEF-插件,我看到“不匹配发现‘my.plugin.MainEditor’”下的动态帮助。

我知道我需要创造这样的地方,但我不知道在哪里可以设置此为我WizardDialog或至少我的整个编辑:

  public void createPartControl(Composite parent) {
      ...
      PlatformUI.getWorkbench().getHelpSystem().setHelp(parent, 
         "my.plugin.help.general");
   }

注意:这个问题最初包含两个问题。 我已经删除了第一(未回答的一部分)在其他地方发布。

Answer 1:

这里是你如何做到这一点:1)我创建了一个help_contexts.xml文件。 不要在上下文ID周期。 不要在有很多,包括你的插件名称。

<?xml version="1.0" encoding="UTF-8"?>
<?NLS TYPE="org.eclipse.help.contexts"?>
<contexts>
   <context  id="help_general" >
        <description>test</description>
        <topic label="test" href="http://domain.com/help.html"/>
   </context>
</contexts>

2)我引用我的plugin.xml这个文件不包括插件-ID,如果你正在引用自己的插件。

 <extension
         point="org.eclipse.help.contexts">
         <contexts file="help_contexts.xml">
         </contexts>
   </extension>

3)我加在我的build.properties一行包括在bin目录下这个文件(bin.includes = help_contexts.xml,...)。 注意你的包-SymbolicName你的Manifest.MF(在plugin.xml编辑器还可见)。 例如:my.plugin

4)设置上下文ID在WizardPage(归功于@VonC)

public class MyWizardPage extends WizardPage
    public void createControl(Composite parent) {
        PlatformUI.getWorkbench.getHelpSystem.setHelp(parent, "my.plugin.help_general");
    }
}


Answer 2:

对于主要的问题,我不知道你的setHelp第二个参数。 见这个线程 :

在方法调用

PlatformUI.getWorkbench().getHelpSystem().setHelp()

第二个参数是contextID
它应与前缀pluginID像:“ pluginID.contextID ”。
现在,我不知道在哪里可以找到插件ID为我的插件。
所以我用这个属性的值: Bundle-Name Bundle-Symbolic-NameMANIFEST.MF作为插件ID。
现在,它的工作原理。


对于阿里纳斯(求助WizardDialog ), 这个线程可能会帮助(从大卫凯尔和他的博客“ 的Eclipse RCP ”):

我们在向导页面设置上下文ID。

public class MyWizardPage extends WizardPage
    public void createControl(Composite parent) {
        PlatformUI.getWorkbench.getHelpSystem.setHelp(parent, 
MyPluginActivator.ID + ".mycontexthelpid");
    }
}

我们设置向导对话框的帮助。

WizardDialog dialog = new WizardDialog(.....);
PlatformUI.getWorkbench().getHelpSystem().setHelp(dialog.getShell(), 
"mycontexthelp.id");

我们不会覆盖performHelp()

至于帮助上下文ID。 定义你的插件上下文xml文件。

<?xml version="1.0" encoding="UTF-8"?>
<?NLS TYPE="org.eclipse.help.contexts"?>
<contexts>
    <context id="mycontexthelpid" >
        <description>My wizard help.</description>
        <topic label="Wizard help" href="reference/wizard/help.xhtml"/>
    </context>
</contexts>

在你的插件

<plugin>
    <extension point="org.eclipse.help.contexts">
        <contexts file="mywizard.xml" plugin="com.mypluginid"/>
    </extension>
</plugin>

一个常见的问题是搞乱插件和上下文帮助id。 您可以设置几个破发点看到正在请求哪个上下文ID。



文章来源: Eclipse Contextual Help
标签: eclipse-gef