Вопрос

Теперь я могу зарегистрировать контекстную справку в 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>
  

Распространенная проблема - испортить идентификаторы плагинов и контекстной помощи. Вы можете установить   пара точек останова, чтобы увидеть, какой идентификатор контекста запрашивается.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top