Depuis la version 2.4b1, JabRef peut être étendu en utilisant un système de greffons construit en utilisant le "Java Plugin Framework" (JPF).
Pour utiliser des greffons, mettez simplement le fichier jar du greffon dans le répertoire nommé plugins
dans le répertoire où se trouve JabRef.jar. Au démarrage, JabRef affichera la liste de tous les greffons chargés.
JabRef offre aux développeurs les points d'extension suivants :
ImportFormat
- Ajoute à JabRef des importateurs accessibles depuis 'Importer dans ...'.EntryFetcher
- Ajoute l'accès à des bases de données comme Citeseer ou Medline au menu Recherche internet.ExportFormatTemplate
- Ajoute un modèle d'exportation comme ceux accessible par Gérer les exportations personnalisées.ExportFormat
- Ajoute à la fenêtre d'exportation de JabRef un filtre d'exportation (qui est plus sophistiqué que le simple modèle d'exportation).ExportFormatProvider
- Une façon plus puissante d'ajouter des formats d'exportation à JabRef.LayoutFormatter
- Ajoute des formateurs qui pourront être utilisés dans la mise en page des exportations.Ces points d'extension sont définis dans plugin.xml
du JabRef-core-plugin,
qui peut être trouvé dans JabRef/src/plugins/net.sf.jabref.core/
.
Pour commencer un développement, suivez ces principales étapes :
https://jabref.svn.sourceforge.net/svnroot/jabref/trunk
).
Il contient JabRef lui-même ainsi que les greffons ajoutés jusqu'à présent à JabRef (vous n'avez pas besoin du répertoire htdocs) et qui peuvent vous servir de point de départ pour vos propres greffons.ant jars
.requires
qui importe le "core plugin" (net.sf.jabref.core
).runtime
, où vous dites à JPF où vous avez stocké vos fichiers de classe et ressources dans votre projet.plugins
de JabRef.Ne vous génez pas pour nous poser des questions liées au système de greffons sur la liste de diffusion !
Ce document est destiné aux développeurs de JabRef qui veulent ajouter des points d'extension supplémentaires.
Pour ajouter un nouveau point d'extension, vous devez déclarer ce point d'extension dans le plugin.xml du "core plugin" de façon similaire à ceci :
<extension-point id="PushToApplication">
<parameter-def type="string" id="pushToApp"
custom-data="<classname of the interface that plugin providers need to implement>" />
<!-- optionally other parameters (we currently do not use any of these for anything)
<parameter-def type="string" id="name" />
<parameter-def type="string" id="description"
multiplicity="none-or-one" />
-->
</extension-point>
Ensuite, vous devez relancer le générateur de code de greffon "ant generate
", qui recréera la classe "helper" dans "net.sf.jabref.plugin.core.generated
" afin qu'il inclut une méthode getPushToApplicationExtensions()
qui renvoie une liste de toutes les extensions PushToTalk référencées dans votre système.
Cette liste peut ensuite être utilisée comme ceci (un exemple de ce que nous faisons avec les extensiosn "entry fetcher") :
/*
* Load fetchers that are plug-in extensions
*/
JabRefPlugin jabrefPlugin = JabRefPlugin.getInstance(PluginCore.getManager());
if (jabrefPlugin != null){
for (EntryFetcherExtension ext : jabrefPlugin.getEntryFetcherExtensions()){
EntryFetcher fetcher = ext.getEntryFetcher();
if (fetcher != null){
fetchers.add(fetcher);
}
}
}
// and later...
for (EntryFetcher fetcher : fetchers){
GeneralFetcher generalFetcher = new GeneralFetcher(sidePaneManager, this, fetcher);
web.add(generalFetcher.getAction());
fetcherActions.add(generalFetcher.getAction());
}