Вопрос
Теперь я могу зарегистрировать контекстную справку в Eclipse WizardDialog / Editor. Р>
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");
}
Примечание. Этот вопрос изначально содержал два вопроса. Я удалил первую (оставшуюся без ответа часть) для публикации в другом месте.
Решение
Вот как вы это делаете: 1) Я создал файл help_contexts.xml. Не иметь периодов в контекстном идентификаторе. Не включайте там имя вашего плагина. Р>
<?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. Не включайте идентификатор плагина, если вы ссылаетесь на свой собственный плагин. Р>
<extension
point="org.eclipse.help.contexts">
<contexts file="help_contexts.xml">
</contexts>
</extension>
3) Я добавил строку в свой build.properties, чтобы включить этот файл в каталог bin (bin.includes = help_contexts.xml, ...). Запишите свое Bundle-SymbolicName в вашем Manifest.MF (также видимом в вашем редакторе plugin.xml). Пример: my.plugin
4) Установите идентификатор контекста в WizardPage (кредит переходит к @VonC)
public class MyWizardPage extends WizardPage
public void createControl(Composite parent) {
PlatformUI.getWorkbench.getHelpSystem.setHelp(parent, "my.plugin.help_general");
}
}
Другие советы
По основному вопросу, я не уверен насчет второго параметра setHelp. Просмотрите эту тему :
В вызове метода
PlatformUI.getWorkbench().getHelpSystem().setHelp()
<Ч>вторым параметром является
contextID
.
Он должен начинаться с префиксаpluginID
, например: "pluginID.contextID
" ;.
Теперь я не был уверен, где найти идентификатор плагина для моего плагина.
Поэтому я использовал значение этого свойства:Bundle-Name
Bundle-Symbolic-Name
изMANIFEST.MF
как идентификатор плагина.
Теперь это работает.
Для sidenote (справка по WizardDialog
), эта ветка может помочь (от Дэвида Кайла
и его блог Eclipse RCP "):
Мы устанавливаем идентификатор контекста на нашей странице мастера.
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");
Мы не переопределяем
executeHelp ()
.Что касается идентификатора контекста справки. Определите контекстный 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>
Распространенная проблема - испортить идентификаторы плагинов и контекстной помощи. Вы можете установить пара точек останова, чтобы увидеть, какой идентификатор контекста запрашивается.