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