Imported Upstream version 2.11~beta1+ds
[debian/jabref.git] / src / main / resources / help / de / Plugin.html
1 <html xmlns="http://www.w3.org/1999/xhtml">
2
3 <body text="#275856">
4     <basefont size="4" color="#2F4958" face="arial" />
5
6     <h1>Das Plugin-System von JabRef</h1>
7
8     <p>Ab Version 2.4 beta1 kann man JabRef mit Hilfe eines Plugin-Systems erweitern, dass
9     mit dem Java Plugin Framework (JPF) erstellt wurde.</p>
10
11     <p>Um Plugins zu nutzen, m&uuml;ssen Sie nur die jar-Datei des Plugins in einen Ordner mit dem Namen
12     <code>plugins</code> speichern, wobei der <code>plugins</code>-Ordner in demselben Verzeichnis
13     liegen muss, in dem sich auch die Datei JabRef.jar befindet. Beim Start von JabRef wird eine
14     Liste mit allen geladenen Plugins angezeigt.</p>
15
16     <h2>Schreiben eines Plugins</h2>
17
18     <p>JabRef bietet die folgenden Erweiterungs-M&ouml;glichkeiten f&uuml;r Entwickler:</p>
19     <ul>
20       <li><code>ImportFormat</code> - Importformate hinzuf&uuml;gen, die &uuml;ber den Men&uuml;punkt <i>Datei -> Importieren in ... Datenbank</i> aufgerufen werden k&ouml;nnen.</li>
21       <li><code>EntryFetcher</code> - Zugang zu Datenbanken wie Citeseer oder Medline zum <i>Internet</i>-Men&uuml; hinzuf&uuml;gen.</li>
22       <li><code>ExportFormatTemplate</code> - Einen vorlagenbasierten Export wie diejenigen, die unter <i>Optionen -> Verwalte externe Exportfilter</i> verf&uuml;gbar sind, hinzuf&uuml;gen.</li>
23       <li><code>ExportFormat</code> - Einen Exportfilter zum Exportdialog von JabRef hinzuf&uuml;gen&nbsp;&ndash; das ist komplizierter als einen vorlagenbasierten Export zu erstellen.</li>
24       <li><code>ExportFormatProvider</code> - Ein leistungsf&auml;higerer Weg, um Exportformate hinzuzuf&uuml;gen.</li>
25       <li><code>LayoutFormatter</code> - Formatierer hinzuf&uuml;gen, die im Layout-basierten Export benutzt
26       werden k&ouml;nnen.</li>
27         </ul>
28
29     <p>Diese Erweiterungs-M&ouml;glichkeiten sind in <code>plugin.xml</code> des JabRef-core-plugin definiert,
30     das in <code>JabRef/src/resources/plugins/net.sf.jabref.core/</code> zu finden ist.</p>
31
32     <p>Gehen Sie folgenderma&szlig;en vor, um ein Plugin zu erstellen:</p>
33     <ol>
34       <li>Machen Sie einen checkout des JabRef 'trunk' mit subversion (<code>https://jabref.svn.sourceforge.net/svnroot/jabref/trunk</code>)&nbsp;&ndash; den Ordner 'htdocs' brauchen Sie nicht.
35       Im 'trunk' sind sowohl JabRef selbst als auch die Plugins enthalten, die bislang zu JabRef
36       beigesteuert wurden und die einen guten Startpunkt f&uuml;r Ihre eigenen Plugins bieten.</li>
37       <li>Kompilieren Sie JabRef mit <code>ant jars</code>.</li>
38       <li>Erstellen Sie Ihr eigenes Projekt und definieren Sie Ihr Plugin in Ihrer eigenen plugin.xml,
39       wobei Sie die oben beschriebenen Erweiterungs-M&ouml;glichkeiten beachten m&uuml;ssen.
40       Achten Sie besonders darauf, dass
41       <ul>
42         <li>...Ihre plugin.xml einen <code>requires</code>-Bereich enth&auml;lt, der das <i>core plugin</i> (<code>net.sf.jabref.core</code>) importiert.</li>
43         <li>...Ihre plugin.xml einen <code>runtime</code>-Bereich enth&auml;lt, in dem Sie JPF mitteilen,
44         wo in Ihrem Projekt die class-Dateien und Ressourcen gespeichert werden.</li>
45       </ul>
46       </li>
47       <li>Erstellen Sie eine jar-Datei Ihres Projektes und speichern es in den <code>plugins</code>-Ordner
48       von JabRef.</li>
49       <li>Ihr Plugin sollte nun beim Start von JabRef.jar geladen werden.</li>
50     </ol>
51
52         <p>Falls Sie noch Fragen zum Plugin-System haben, z&ouml;gern Sie nicht, sie auf der Mailing-Liste zu stellen.</p>
53
54     <h2>Erstellen einer Erweiterungs-M&ouml;glichkeit</h2>
55
56     <p>Dieser Abschnitt ist f&uuml;r JabRef-Entwickler gedacht, die zus&auml;tzliche Erweiterungs-M&ouml;glichkeiten
57     bereitstellen wollen.</p>
58
59     <p>Um eine neue Erweiterungs-M&ouml;glichkeit hinzuzuf&uuml;gen, m&uuml;ssen Sie diese in der plugin.xml des core-plugins
60     deklarieren. Hier ist ein Beispiel:</p>
61
62 <pre>
63 &lt;extension-point id=&quot;PushToApplication&quot;&gt;
64         &lt;parameter-def type=&quot;string&quot; id=&quot;pushToApp&quot;
65                 custom-data=&quot;&lt;classname of the interface that plugin providers need to implement&gt;&quot; /&gt;
66         &lt;!-- optionally other parameters (we currently do not use any of these for anything)
67                 &lt;parameter-def type=&quot;string&quot; id=&quot;name&quot; /&gt;
68                 &lt;parameter-def type=&quot;string&quot; id=&quot;description&quot;
69                         multiplicity=&quot;none-or-one&quot; /&gt;
70                         --&gt;
71 &lt;/extension-point&gt;
72 </pre>
73
74         <p>Anschlie&szlig;end m&uuml;ssen Sie den Plugin-Code-Generator "<code>ant generate</code>" aufrufen,
75     der die Klasse "<code>net.sf.jabref.plugin.core.generated</code>" neu erstellt, so dass sie
76     die Methode <code>getPushToApplicationExtensions()</code> enth&auml;lt; sie gibt eine Liste aller
77     PushToTalk-Erweiterungen aus, die im System registriert sind.</p>
78
79     <p>Diese Liste kann dann folgenderma&szlig;en genutzt werden (als Beispiel dient die EntryFetcher-Erweiterung):</p>
80
81 <pre>
82 /*
83  * Load fetchers that are plug-in extensions
84  */
85 JabRefPlugin jabrefPlugin = JabRefPlugin.getInstance(PluginCore.getManager());
86 if (jabrefPlugin != null){
87         for (EntryFetcherExtension ext : jabrefPlugin.getEntryFetcherExtensions()){
88                 EntryFetcher fetcher = ext.getEntryFetcher();
89                 if (fetcher != null){
90                         fetchers.add(fetcher);
91                 }
92         }
93 }
94
95 // and later...
96
97 for (EntryFetcher fetcher : fetchers){
98   GeneralFetcher generalFetcher = new GeneralFetcher(sidePaneManager, this, fetcher);
99   web.add(generalFetcher.getAction());
100   fetcherActions.add(generalFetcher.getAction());
101 }
102 </pre>
103
104 </body>
105 </html>