Ab Version 2.4 beta1 kann man JabRef mit Hilfe eines Plugin-Systems erweitern, dass mit dem Java Plugin Framework (JPF) erstellt wurde.
Um Plugins zu nutzen, müssen Sie nur die jar-Datei des Plugins in einen Ordner mit dem Namen
plugins
speichern, wobei der plugins
-Ordner in demselben Verzeichnis
liegen muss, in dem sich auch die Datei JabRef.jar befindet. Beim Start von JabRef wird eine
Liste mit allen geladenen Plugins angezeigt.
JabRef bietet die folgenden Erweiterungs-Möglichkeiten für Entwickler:
ImportFormat
- Importformate hinzufügen, die über den Menüpunkt Datei -> Importieren in ... Datenbank aufgerufen werden können.EntryFetcher
- Zugang zu Datenbanken wie Citeseer oder Medline zum Internet-Menü hinzufügen.ExportFormatTemplate
- Einen vorlagenbasierten Export wie diejenigen, die unter Optionen -> Verwalte externe Exportfilter verfügbar sind, hinzufügen.ExportFormat
- Einen Exportfilter zum Exportdialog von JabRef hinzufügen – das ist komplizierter als einen vorlagenbasierten Export zu erstellen.ExportFormatProvider
- Ein leistungsfähigerer Weg, um Exportformate hinzuzufügen.LayoutFormatter
- Formatierer hinzufügen, die im Layout-basierten Export benutzt
werden können.Diese Erweiterungs-Möglichkeiten sind in plugin.xml
des JabRef-core-plugin definiert,
das in JabRef/src/plugins/net.sf.jabref.core/
zu finden ist.
Gehen Sie folgendermaßen vor, um ein Plugin zu erstellen:
https://jabref.svn.sourceforge.net/svnroot/jabref/trunk
) – den Ordner 'htdocs' brauchen Sie nicht.
Im 'trunk' sind sowohl JabRef selbst als auch die Plugins enthalten, die bislang zu JabRef
beigesteuert wurden und die einen guten Startpunkt für Ihre eigenen Plugins bieten.ant jars
.requires
-Bereich enthält, der das core plugin (net.sf.jabref.core
) importiert.runtime
-Bereich enthält, in dem Sie JPF mitteilen,
wo in Ihrem Projekt die class-Dateien und Ressourcen gespeichert werden.plugins
-Ordner
von JabRef.Falls Sie noch Fragen zum Plugin-System haben, zögern Sie nicht, sie auf der Mailing-Liste zu stellen.
Dieser Abschnitt ist für JabRef-Entwickler gedacht, die zusätzliche Erweiterungs-Möglichkeiten bereitstellen wollen.
Um eine neue Erweiterungs-Möglichkeit hinzuzufügen, müssen Sie diese in der plugin.xml des core-plugins deklarieren. Hier ist ein Beispiel:
<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>
Anschließend müssen Sie den Plugin-Code-Generator "ant generate
" aufrufen,
der die Klasse "net.sf.jabref.plugin.core.generated
" neu erstellt, so dass sie
die Methode getPushToApplicationExtensions()
enthält; sie gibt eine Liste aller
PushToTalk-Erweiterungen aus, die im System registriert sind.
Diese Liste kann dann folgendermaßen genutzt werden (als Beispiel dient die EntryFetcher-Erweiterung):
/*
* 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());
}