| « Gerichtete Graphen mit yEd | Tutorial: Access-Datenbank-Zugriff mit Java programmieren » |
Tutorial: JavaHelp erzeugen und in Java-Applikationen einbinden
Das DocBook-Format bietet eine Menge von Möglichkeiten: z.B. ein automatisch erzeugtes Inhaltsverzeichnis, Links zu anderen Hilfeseiten oder ins Internet, Fußnoten, Index-Einträge und viele von HTML bekannte Formatierungen wie Listen, Tabellen usw.
Um einen kleinen Eindruck zu vermitteln, habe ich ein paar DocBook-Möglichkeiten in die folgende Datei gepackt:
XML:
<?xml version="1.0" encoding="UTF-8"?> | |
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" | |
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd"> | |
<book lang="de"> | |
<title>Dein Programmname</title> | |
<chapter id="erstesKapitel"> | |
<title>Erstes Kapitel</title> | |
<para><mediaobject> | |
<imageobject> | |
<imagedata fileref="resource/screen01.png" format="PNG" /> | |
</imageobject> | |
</mediaobject>Die Hilfe-Funktion ist noch in | |
Arbeit. <indexterm> | |
<primary>Ein Index Element</primary> | |
</indexterm></para> | |
</chapter> | |
<chapter id="zweitesKapitel"> | |
<title>Strukturierungsbeispiele</title> | |
<para>Mit einem Link zum <link linkend="erstesKapitel">ersten | |
Kapitel</link> und einem weiteren zu einer <ulink | |
url="http://www.google.de">Webseite</ulink>.</para> | |
<para>Hier noch eine Fußnote<footnote> | |
<para>Fußnotentext</para> | |
</footnote>.</para> | |
<orderedlist numeration="arabic"> | |
<listitem> | |
<para>Eine Liste</para> | |
</listitem> | |
<listitem> | |
<para>mit mehreren</para> | |
</listitem> | |
<listitem> | |
<para>durchnummerierten</para> | |
</listitem> | |
<listitem> | |
<para>Zeilen.</para> | |
<para>Weiterer Text zum letzten Punkt.</para> | |
</listitem> | |
</orderedlist> | |
<para>Eine neue Zeile</para> | |
</chapter> | |
<chapter id="FAQ"><title>Häufig gestellte Fragen (FAQ)</title> | |
<para><qandaset> | |
<title>Häufig gestellte Fragen (FAQ)</title> | |
<qandadiv><title>Thema 1</title> | |
<qandaentry> | |
<question> | |
<para>How do I get an IP address?</para> | |
</question> | |
<answer> | |
<para>Ask your system administrator.</para> | |
</answer> | |
</qandaentry> | |
</qandadiv> | |
</qandaset></para> | |
<para><table colsep="1" frame="topbot" rowsep="1"> | |
<title>Tabellentitel</title> | |
<tgroup cols="4"> | |
<colspec colname="col1" colnum="1" colwidth="1*" /> | |
<colspec colname="col2" colnum="2" colsep="0" colwidth="1*" /> | |
<colspec colname="col3" colnum="3" colwidth="1*" /> | |
<colspec colname="col4" colnum="4" colwidth="1*" /> | |
<thead> | |
<row> | |
<entry>Spalte 1</entry> | |
<entry>Spalte 2</entry> | |
<entry>Spalte 3</entry> | |
<entry>Spalte 4</entry> | |
</row> | |
</thead> | |
<tbody> | |
<row> | |
<entry>Entry 1.1</entry> | |
<entry>Entry 2.1</entry> | |
<entry>Entry 3.1</entry> | |
<entry>Entry 4.1</entry> | |
</row> | |
<row rowsep="0"> | |
<entry>Entry 1.2</entry> | |
<entry colsep="1" rowsep="1">Entry 2.2</entry> | |
<entry>Entry 3.2</entry> | |
<entry>Entry 4.2</entry> | |
</row> | |
<row> | |
<entry>Entry 1.3</entry> | |
<entry>Entry 2.3</entry> | |
<entry>Entry 3.3</entry> | |
<entry rowsep="0">Entry 4.3</entry> | |
</row> | |
</tbody> | |
</tgroup> | |
</table></para> | |
</chapter> | |
</book> |
In Zeile 4 wird die Sprache des "Buchs" festgelegt. Das hat Auswirkungen auf spätere Bezeichnungen in der Hilfe. Ohne Angabe ist Englisch voreingestellt, mit lang="de" erscheinen deutsche Begriffe wie "Kapitel" statt "Chapter" und "Inhaltsverzeichnis" statt "Table of Contents".
Der erste "title"-Tag in Zeile 5 bezieht sich auf das gesamte "Buch", der zweite in Zeile 7 auf das Kapitel, das in Zeile 6 beginnt. Dem "chapter"-Tag habe ich noch ein "id"-Attribut hinzugefügt, damit man von anderen Seiten dorthin Links setzen kann - wie z.B. in Zeile 19.
In den Zeilen 9 bis 11 ist ein Bild referenziert. Dopus setzt voraus, dass alle Bilddaten in einem Unterverzeichnis "resource" liegen. Von dort werden sie dann komplett in die JAR-Datei übernommen.
Eine weitere Besonderheit ist der FAQ-Block in "qandaset"-Tags in den Zeilen 43 bis 55. Wie man eine Tabelle einbaut, ist in den Zeilen 56 bis 92 zu sehen.
Weitere Möglichkeiten sind unter DocBook XSL: The Complete Guide nachzulesen.
Alternative:
JHelpBuilder - ein "WYSWYG help authoring tool". Am besten das dazugehörige Tutorial anschauen.
Seiten: 1 · 2
12 Kommentare
definiert ...
2) es wird auf 3 jars verwiesen die einzubinden sind. Es wäre doch schön würden sie im Text auch bennant werden ;)
ansonsten ein sehr schöne Beitrag
Ich muss allerdings noch schauen, warum er mir beim Aufrufen der Hilfe eine "javax.help.BadIDException: Not valid ID: Simple.Introduction" Exception wirft. Weiß noch nicht, was die ID tut. :-)
war mir wirklich eine riesenhilfe!
Mich würde mal in diesem Zusammenhang interessieren, ob du auch weißt, wie man bei JavaHelp im Index dieses Suchfenster ausblenden kann. Das macht nämlich nur Probleme.
Weißt du dazu was genaues? ich hab mich schon tot gesucht.
Enumeration eNavigators = helpViewer.getHelpNavigators();
while (eNavigators.hasMoreElements()){
JHelpNavigator nav = (JHelpNavigator)eNavigators.nextElement();
if(nav instanceof JHelpIndexNavigator){
helpViewer.removeHelpNavigator(nav);
}
}
Vielleicht geht's auch kürzer. Du kannst statt JHelpIndexNavigator auch JHelpSearchNavigator oder JHelpTOCNavigator ausblenden. Einfach in der if-Zeile ändern. Allerdings hätte ich 2 Fragen
1. Wie kann ich die Bilder ändern, dass nicht mehr die Orner angezeigt werden
2. Das Menü oben wird bei mir nicht angezeigt sobald es in meiner java app läuft
Meine JavaHilfe habe ich mit dem HELPSETMAKER erstellt. Eine wirklich einfache und schnelle Lösung.
http://www.cantamen.com/helpsetmaker.php
erstmal wollte ich mich für die gute Hilfe auf deiner Seite bedanken...
ich habe nun Javahelp eingebaut, nur habe ich ein problem..
und zwar mach ich jetzt ein Projekt und das porjekt soll insgesamt 3 verschiedene hilfen haben.
Nur ist das Problem jetzt, egal wie ich mein programm aufrufen tue, dass er immer das gleiche helpset ausrufen tut.
ich glaube es liegt an den helpset
gibt es da eine möglichkeit die helpsets anders zu benennen oder wie geht das
oder liegt das problem ganz woanders
für eine schnelle antwort wäre ich sehr dankbar..
danke im vorraus..
Hier die schnellste Möglichkeit:
- Hole Dir das kostenlose Programm TUGZip (http://www.tugzip.com/)
- Öffne damit die JAR-Datei, deren Name Du selbst festgelegt hast.
- Benenne die Datei jhelpset.hs um.
- JAR schließen und sichern.
Jetzt kannst Du im Programmauszug aus meinem Tutorial (Zeile 5) die umbenannte Datei eingeben. Ersetze einfach jhelpset.hs durch den neuen Namen.
URL url = HelpSet.findHelpSet(cl, "jhelpset.hs");
Ein anderes helpset bekommt dann natürlich einen anderen Namen, und dieses findet das Programm dann eben über eine neue URL-Definition.
Dein Tutorial ist super und hat mir extrem weitre geholfen.
Ich würde gern die Größe der Frames beim Start der JavaHelp festlegen, d.h. das das Inhaltsverzeichnis zum Beispiel nur 25% Prozent der Gesamtgröße annimmt und der Rest für die eigentlichen Hilfeinfos verwendet wird.
Ist das möglich? Wenn Ja wo (in der Helpset-Datei???)
Vielen Dank!
Lg,
Ryan
Der Eintrag hat 2 auf Moderation wartende Feedbacks...