2009-06-18 21 views
5

Ahora puedo registrar ayuda contextual en un Eclipse WizardDialog/Editor.Ayuda contextual de Eclipse

1) Creé un archivo 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) hice referencia a este archivo en mi plugin.xml

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

3) he añadido una línea en mis build.properties para incluir este archivo en el directorio bin (bin.includes = help_contexts .xml, ...)

4) Cuando ejecuto mi complemento basado en GEF, veo "No se encontraron coincidencias para" my.plugin.MainEditor "" en la ayuda dinámica.

Sé que necesito para crear algo como esto en alguna parte, pero no saben dónde instalar esto para mi WizardDialog o al menos para toda mi editor:

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

Nota: Esta pregunta contenida originalmente Dos preguntas. He eliminado la primera (parte no respondida) que se publicará en otro lugar.

+0

Nota a la libre: 1) El uso de un ID contextual que incluye períodos es una receta para el desastre. my.plugin.help.general no funciona. debe usar my.plugin.help_general cuando haga referencia a help_general. 2) No debe especificar el nombre del complemento en el archivo help_contexsts.xml. Use help_general. –

+0

@Jason: si ha logrado responder (parte de) su pregunta, puede publicar una respuesta real (e incluso seleccionar su propia publicación como la respuesta oficial - no hay ganancia de representación involucrada en este caso) – VonC

+0

@VonC respondió y creó mi pregunta original más directamente aquí http://stackoverflow.com/questions/1021719/eclipse-gef-editpart-contextual-help –

Respuesta

10

Así es como lo haces: 1) Creé un archivo help_contexts.xml. No tiene puntos en el ID de contexto. No incluya su nombre de complemento allí.

<?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) que hace referencia este archivo en mi plugin.xml No incluya el plugin-id si se hace referencia a su propio plugin.

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

3) que añade una línea en mis build.properties para incluir este archivo en el directorio bin (bin.includes = help_contexts.xml, ...). Tenga en cuenta su Bundle-SymbolicName en su Manifest.MF (también visible en su editor plugin.xml). Ejemplo: my.plugin

4) Ajuste el ID de contexto en el wizardpage (mérito es de @VonC)

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

Comentarios excelentes (+1). Gracias :) – VonC

3

Para la pregunta principal, no estoy seguro acerca de su segundo parámetro setHelp. Ver this thread:

En la llamada al método

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

segundo parámetro es el contextID.
Debe tener el prefijo pluginID como: "pluginID.contextID".
Ahora no estaba seguro de dónde encontrar el ID de complemento para mi complemento.
Así que utilicé el valor de esta propiedad: Bundle-NameBundle-Symbolic-Name de MANIFEST.MF como la identificación del plug-in.
Ahora funciona.


Para la anotación al margen (ayuda para WizardDialog), this thread podría ayudar (de David Kyle y su blog "Eclipse RCP"):

Hemos establecido el ID de contexto en nuestra página del asistente.

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

y conjunto de ayudas para el diálogo del asistente.

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

Nosotros no anulan performHelp().

En cuanto a la ayuda contexto id. Define un archivo xml de contexto en tu complemento.

<?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> 

en su plugin

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

Un problema común es echar a perder los identificadores de plugin y ayuda contextual. Puede establecer un par de puntos de interrupción para ver qué ID de contexto se solicita.

+0

Para la primera parte, introduje una cadena falsa allí por accidente, pero todavía no estoy seguro de cómo para aplicar esto a GEF EditParts. Para la segunda parte, la clave estaba agregando la referencia en WizardPage. ¡Gracias! –

+0

Nota: Desea usar Bundle-SymbolicName y no Bundle-Name. –

+0

@Jason: gracias por los comentarios. He actualizado mi respuesta en consecuencia – VonC

Cuestiones relacionadas