Homepage von Jean-René Thies — Projekte & Tools rund um Java, Groovy, Grails, PHP, Scala, MySQL...
    « Gerichtete Graphen mit yEdTutorial: Access-Datenbank-Zugriff mit Java programmieren »

    Tutorial: JavaHelp erzeugen und in Java-Applikationen einbinden

    Permalink 14.12.06 22:22, von jrt, Kategorien: Project Plaza, Java, Tools , Schlagworte: javahelp

    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 »

    12 Kommentare

    Kommentar von: delight [Besucher] E-Mail
    1) qandaset ist erst in http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd
    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
    31.12.06 @ 15:27
    Kommentar von: Balian [Besucher] E-Mail
    Also erstmal danke für dieses tolle Tutorial zu JHelp. Endlich konnte ich mal eine vernünftige Hilfe erstellen. Und das in einer angemessenen Zeit. Es wäre super, wenn Du auch noch zeigen könntest, wie man vom Javaprogramm direkt auf eine bestimmte Seite der Javahilfe springt. Das wäre Spitze.

    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. :-)
    08.02.07 @ 20:10
    Kommentar von: joe [Besucher] E-Mail · http://www.bastarde.at
    danke für das super tutorial in deutsch :)
    war mir wirklich eine riesenhilfe!
    12.06.07 @ 12:04
    Kommentar von: Eve [Besucher] E-Mail
    Hi!
    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.
    20.06.07 @ 14:18
    Kommentar von: jrt [Mitglied] E-Mail
    Auf die Schnelle habe ich das hier gefunden, um den Tab für die Indexsuche aus der JavaHilfe zu entfernen:
    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.
    21.06.07 @ 21:05
    Kommentar von: Dennis [Besucher] E-Mail
    Also ich finde das Tutorial sehr gut!!!
    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
    07.07.07 @ 19:24
    Kommentar von: Knatta [Besucher] E-Mail
    Vielen Dank für diese Hilfe. Ich konnte es ohne Probleme einbinden.

    Meine JavaHilfe habe ich mit dem HELPSETMAKER erstellt. Eine wirklich einfache und schnelle Lösung.

    http://www.cantamen.com/helpsetmaker.php
    26.09.07 @ 09:48
    Kommentar von: selma [Besucher] E-Mail
    Hallo,
    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..
    08.02.08 @ 15:57
    Kommentar von: jrt [Mitglied] E-Mail
    Zur Frage von Selma:

    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.
    08.02.08 @ 19:52
    Kommentar von: Peter [Besucher] E-Mail
    Hallo!

    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!
    20.02.08 @ 07:26
    Kommentar von: Frank [Besucher]
    Vielen Dank für das klasse Tutorial, das mir sehr weitergeholfen hat.
    10.06.09 @ 11:32
    Kommentar von: Ryan [Besucher]
    Tolles Tutorial! Wirklich! Danke! Hat mir sehr geholfen! Mehr davon.

    Lg,

    Ryan
    19.01.10 @ 00:49

    Der Eintrag hat 2 auf Moderation wartende Feedbacks...

    Einen Kommentar hinterlassen


    Ihre E-Mail-Adresse wird nicht auf dieser Seite angezeigt.

    Ihr URL wird angezeigt.
    (Zeilenumbrüche werden zu <br />)
    (Name, E-Mail-Adresse & Webseite)
    (Benutzern erlauben, Sie durch ein Kontaktformular zu kontaktieren (Ihre E-Mail-Adresse wird nicht weitergegeben))

    ©2010 by Jean-René Thies

    Kontakt |