2009-06-18 10 views
5

Ora posso registrare la guida contestuale in un editor/editor di Eclipse Wizard.Aiuto contestuale Eclipse

1) Ho creato un file 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) ho fatto riferimento questo file nel mio plugin.xml

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

3) ho aggiunto una riga nei miei build.properties per includere questo file nella directory bin (bin.includes = help_contexts .xml, ...)

4) Quando eseguo il mio plug-in GEF, vedo "Nessuna corrispondenza trovata per" my.plugin.MainEditor "" sotto guida dinamica.

so che ho bisogno di creare qualcosa di simile da qualche parte, ma non so dove impostare questo per il mio WizardDialog o almeno per tutto il mio editor:

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

Nota: Questa domanda originariamente contenuta due domande. Ho rimosso la prima parte (senza risposta) da pubblicare altrove.

+0

Nota per sé: 1) Utilizzando un ID contestuale che include periodi è una ricetta per il disastro. my.plugin.help.general non funziona. è necessario utilizzare my.plugin.help_general quando si fa riferimento a help_general. 2) Non specificare il nome del plugin nel file help_contexsts.xml. Usa help_general. –

+0

@Jason: se si è riusciti a rispondere (una parte della) domanda, è possibile pubblicare una risposta reale (e persino selezionare il proprio messaggio come risposta ufficiale - nessun guadagno sostitutivo coinvolto in questo caso) – VonC

+0

@VonC ha risposto e creato la mia domanda originale più direttamente qui http://stackoverflow.com/questions/1021719/eclipse-gef-editpart-contextual-help –

risposta

10

Ecco come si fa: 1) Ho creato un file help_contexts.xml. Non avere periodi nel contesto id. Non includere il nome del plugin qui.

<?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) ho fatto riferimento questo file nel mio plugin.xml Non includere il plugin-id, se si fa riferimento il proprio plug-in.

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

3) ho aggiunto una riga nei miei build.properties per includere questo file nella directory bin (bin.includes = help_contexts.xml, ...). Nota il tuo Bundle-SymbolicName nel tuo Manifest.MF (visibile anche nel tuo editor plugin.xml). Esempio: my.plugin

4) Impostare l'ID contesto nel WizardPage (merito va a @VonC)

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

Eccellente riscontro (+1). Grazie :) – VonC

3

Per la domanda principale, non sono sicuro del secondo parametro setHelp. Vedere this thread:

Nella chiamata al metodo

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

secondo parametro è il contextID.
Dovrebbe essere preceduto dal numero pluginID come "pluginID.contextID".
Ora non ero sicuro di dove trovare l'ID del plug-in per il mio plug-in.
Quindi ho utilizzato il valore di questa proprietà: Bundle-NameBundle-Symbolic-Name da MANIFEST.MF come ID plug-in.
Ora funziona.


Per la nota a margine (aiuto per WizardDialog), this thread potrebbe aiutare (da David Kyle e il suo blog "Eclipse RCP"):

Abbiamo impostato l'id contesto nella nostra pagina della procedura guidata.

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

e ci diamo aiuto per la finestra di procedura guidata.

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

Non sovrascrivere performHelp().

Come per l'ID contesto della guida. Definisci un file xml di contesto nel tuo 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> 

nel vostro plugin

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

Un problema comune è rovinare gli ID di plugin e di aiuto contesto. È possibile impostare un paio di punti di interruzione per vedere quale ID di contesto viene richiesto.

+0

Per la prima parte, ho inserito una stringa fasulla lì per caso, ma non sono ancora sicuro di come per applicare questo a GEF EditParts. Per la seconda parte, la chiave è stata aggiunta il riferimento in WizardPage. Grazie! –

+0

Nota: si desidera utilizzare Bundle-SymbolicName e non Bundle-Name. –

+0

@Jason: grazie per il feedback. Ho aggiornato la mia risposta di conseguenza – VonC