Question
Puis-je enregistrer une aide contextuelle dans un assistant / un éditeur Eclipse?
1) J'ai créé un fichier 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) J'ai référencé ce fichier dans mon fichier plugin.xml
<extension
point="org.eclipse.help.contexts">
<contexts file="help_contexts.xml" plugin="my.plugin.MainEditor">
</contexts>
</extension>
3) J'ai ajouté une ligne dans mon build.properties pour inclure ce fichier dans le répertoire bin (bin.includes = help_contexts.xml, ...)
4) Lors de l’exécution de mon plugin GEF, je vois le message "Aucune correspondance trouvée pour" mon.plugin.MainEditor ". sous aide dynamique.
Je sais que je dois créer quelque chose comme ça quelque part, mais je ne sais pas où le mettre en place pour mon WizardDialog ou au moins pour tout mon éditeur:
public void createPartControl(Composite parent) {
...
PlatformUI.getWorkbench().getHelpSystem().setHelp(parent,
"my.plugin.help.general");
}
Remarque: cette question contenait à l'origine deux questions. J'ai supprimé le premier (partie sans réponse) à être posté ailleurs.
La solution
Voici comment vous le faites: 1) J'ai créé un fichier help_contexts.xml. Ne pas avoir de points dans l'identifiant de contexte. N'incluez pas le nom de votre plugin ici.
<?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) J'ai référencé ce fichier dans mon plugin.xml N'incluez pas l'identifiant du plugin si vous référencez votre propre plugin.
<extension
point="org.eclipse.help.contexts">
<contexts file="help_contexts.xml">
</contexts>
</extension>
3) J'ai ajouté une ligne dans mon build.properties pour inclure ce fichier dans le répertoire bin (bin.includes = help_contexts.xml, ...). Notez votre Bundle-SymbolicName dans votre Manifest.MF (également visible dans votre éditeur plugin.xml). Exemple: my.plugin
4) Définissez l'identifiant de contexte dans la page d'assistant (le crédit est attribué à @VonC)
public class MyWizardPage extends WizardPage
public void createControl(Composite parent) {
PlatformUI.getWorkbench.getHelpSystem.setHelp(parent, "my.plugin.help_general");
}
}
Autres conseils
En ce qui concerne la question principale, je ne suis pas sûr de votre deuxième paramètre setHelp. Voir ce fil :
Dans l'appel de méthode
PlatformUI.getWorkbench().getHelpSystem().setHelp()
Le deuxième paramètre est lecontextID
.
Il devrait être précédé dupluginID
comme suit: "pluginID.contextID
".
À présent, je ne savais pas où trouver l'ID de plug-in pour mon plug-in.
J'ai donc utilisé la valeur de cette propriété:Nom du paquet
Nom du symbole symbolique
à partir deMANIFEST.MF
l'identifiant du plug-in.
Maintenant ça marche.
Pour le reste (aide pour WizardDialog
), ce fil pourrait aider (de David Kyle
et son blog " Eclipse RCP ")):
Nous définissons l'identifiant de contexte dans la page de notre assistant.
public class MyWizardPage extends WizardPage
public void createControl(Composite parent) {
PlatformUI.getWorkbench.getHelpSystem.setHelp(parent,
MyPluginActivator.ID + ".mycontexthelpid");
}
}
et nous définissons l'aide pour la boîte de dialogue de l'assistant.
WizardDialog dialog = new WizardDialog(.....);
PlatformUI.getWorkbench().getHelpSystem().setHelp(dialog.getShell(),
"mycontexthelp.id");
Nous ne remplaçons pas
performHelp ()
.En ce qui concerne l'id du contexte d'aide. Définissez un fichier xml de contexte dans votre plugin.
<?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>
dans votre plugin
<plugin>
<extension point="org.eclipse.help.contexts">
<contexts file="mywizard.xml" plugin="com.mypluginid"/>
</extension>
</plugin>
Un problème courant est de gâcher le plugin et les identifiants d’aide contextuelle. Vous pouvez définir quelques points d'arrêt pour voir quel identifiant de contexte est demandé.