From 1f575165cab32a40e9fe95e705c1f1a8b901b85c Mon Sep 17 00:00:00 2001
From: Jochen Sprickerhof <jspricke@debian.org>
Date: Sun, 21 Nov 2021 21:22:16 +0100
Subject: [PATCH] New upstream version 2.10.1+dfsg

---
 .cvsignore                                    |   3 -
 .gitignore                                    | 149 +++++++++++++++++-
 README.md                                     |  83 +++++++++-
 build.gradle                                  |  49 ++++++
 build/BUILD                                   |   4 +-
 build/ChangeLog                               |  11 +-
 build/Info-aarch64.plist                      |  28 ++++
 build/build.properties                        |  25 +--
 build/build.xml                               |  58 +++++--
 build/jameica-macosaarch64.sh                 |  30 ++++
 build/jameica.service                         |  14 ++
 build/jameica.sh                              |   3 -
 build/rcjameica-systemd                       |  13 ++
 download.gradle                               |  46 +++---
 plugin.xml                                    |   4 +-
 src/de/willuhn/jameica/Main.java              |  19 ++-
 .../willuhn/jameica/gui/AbstractControl.java  |   2 +-
 src/de/willuhn/jameica/gui/GUI.java           |   4 +-
 .../dialogs/AbstractCertificateDialog.java    |   2 +-
 .../jameica/gui/dialogs/AbstractDialog.java   |  49 +++---
 .../jameica/gui/dialogs/ListDialog.java       |   2 +-
 .../gui/dialogs/NewPasswordDialog.java        |  16 +-
 .../jameica/gui/dialogs/PasswordDialog.java   |  39 +++--
 .../jameica/gui/dialogs/WaitDialog.java       |  16 +-
 .../jameica/gui/extension/Extension.java      |   9 +-
 .../jameica/gui/extension/package.html        |  32 ++--
 .../jameica/gui/input/AbstractInput.java      |  63 +++-----
 .../jameica/gui/input/ButtonInput.java        |  39 ++---
 .../willuhn/jameica/gui/input/ColorInput.java |  15 +-
 .../willuhn/jameica/gui/input/DateInput.java  |  73 +++------
 .../jameica/gui/input/DecimalInput.java       |  14 +-
 .../jameica/gui/input/DialogInput.java        |  45 +++---
 .../willuhn/jameica/gui/input/FontInput.java  |  12 +-
 src/de/willuhn/jameica/gui/input/Input.java   |  20 ++-
 .../jameica/gui/input/IntegerInput.java       |  14 +-
 .../willuhn/jameica/gui/input/LabelInput.java |  35 ++--
 .../willuhn/jameica/gui/input/LinkInput.java  |  43 ++---
 .../jameica/gui/input/SearchInput.java        |  60 +++----
 .../jameica/gui/input/SelectInput.java        |  73 ++++-----
 .../gui/internal/action/ChangePassword.java   |   4 +-
 .../jameica/gui/internal/action/Print.java    |   4 +-
 .../internal/controller/SettingsControl.java  |   2 +-
 .../jameica/gui/parts/AbstractTablePart.java  |  28 ++--
 .../gui/parts/CheckedContextMenuItem.java     |   6 +-
 src/de/willuhn/jameica/gui/parts/Column.java  |  11 +-
 .../jameica/gui/parts/ContextMenuItem.java    |  24 +--
 .../gui/parts/TableChangeListener.java        |   9 +-
 .../willuhn/jameica/gui/parts/TablePart.java  |  70 +++-----
 .../jameica/messaging/LookupService.java      |  22 +--
 .../jameica/messaging/MessageConsumer.java    |   5 +-
 src/de/willuhn/jameica/messaging/package.html |   2 +-
 .../jameica/plugin/ConsumerDescriptor.java    |   5 +-
 src/de/willuhn/jameica/plugin/Dependency.java |  43 +++--
 .../jameica/plugin/ExtensionDescriptor.java   |  11 +-
 src/de/willuhn/jameica/plugin/Manifest.java   | 109 ++++++++-----
 .../jameica/plugin/MessageDescriptor.java     |   5 +-
 .../jameica/plugin/PlaceholderPlugin.java     |  36 ++---
 src/de/willuhn/jameica/plugin/Plugin.java     |   2 +-
 .../willuhn/jameica/plugin/PluginLoader.java  |  33 ++--
 .../jameica/plugin/ServiceDescriptor.java     |  20 ++-
 src/de/willuhn/jameica/reminder/Reminder.java |  12 +-
 .../reminder/ReminderStorageProvider.java     |  16 +-
 .../jameica/search/SearchProvider.java        |  10 +-
 .../security/JameicaAuthenticator.java        |  11 +-
 .../jameica/security/JameicaTrustManager.java |  12 +-
 .../willuhn/jameica/security/SSLFactory.java  |  21 ++-
 src/de/willuhn/jameica/security/Wallet.java   |  16 +-
 .../jameica/services/ClassService.java        |   2 +-
 .../jameica/services/SearchService.java       |  22 ++-
 .../jameica/system/ApplicationCallback.java   |  77 +++++----
 .../jameica/system/BackgroundTask.java        |   4 +-
 src/de/willuhn/jameica/system/Config.java     |  54 ++++---
 src/de/willuhn/jameica/system/Platform.java   |  21 +--
 .../jameica/system/ServiceFactory.java        |  16 +-
 .../willuhn/jameica/system/StartupParams.java |  20 ++-
 src/de/willuhn/jameica/util/XPathEmu.java     |   5 +-
 76 files changed, 1137 insertions(+), 849 deletions(-)
 delete mode 100755 .cvsignore
 create mode 100644 build.gradle
 create mode 100644 build/Info-aarch64.plist
 create mode 100755 build/jameica-macosaarch64.sh
 create mode 100644 build/jameica.service
 create mode 100755 build/rcjameica-systemd

diff --git a/.cvsignore b/.cvsignore
deleted file mode 100755
index 3ecc203..0000000
--- a/.cvsignore
+++ /dev/null
@@ -1,3 +0,0 @@
-bin
-releases
-cfg
diff --git a/.gitignore b/.gitignore
index 0d9cfd5..2c9589e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,5 +1,144 @@
-bin
-releases
-plugins
-/test-bin
-/.gradle/
+# Created by https://www.toptal.com/developers/gitignore/api/intellij+iml,eclipse,gradle
+# Edit at https://www.toptal.com/developers/gitignore?templates=intellij+iml,eclipse,gradle
+
+### Eclipse ###
+.metadata
+bin/
+tmp/
+*.tmp
+*.bak
+*.swp
+*~.nib
+local.properties
+.settings/
+.loadpath
+.recommenders
+
+# External tool builders
+.externalToolBuilders/
+
+# Locally stored "Eclipse launch configurations"
+*.launch
+
+# Java annotation processor (APT)
+.factorypath
+
+# sbteclipse plugin
+.target
+
+# Code Recommenders
+.recommenders/
+
+# Annotation Processing
+.apt_generated/
+.apt_generated_test/
+
+# Scala IDE specific (Scala & Java development for Eclipse)
+.cache-main
+.scala_dependencies
+.worksheet
+
+# Uncomment this line if you wish to ignore the project description file.
+# Typically, this file would be tracked if it contains build/dependency configurations:
+.project
+
+### Eclipse Patch ###
+# Spring Boot Tooling
+.sts4-cache/
+
+### Intellij+iml ###
+# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider
+# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
+
+# User-specific stuff
+.idea/**/workspace.xml
+.idea/**/tasks.xml
+.idea/**/usage.statistics.xml
+.idea/**/dictionaries
+.idea/**/shelf
+
+# Generated files
+.idea/**/contentModel.xml
+
+# Sensitive or high-churn files
+.idea/**/dataSources/
+.idea/**/dataSources.ids
+.idea/**/dataSources.local.xml
+.idea/**/sqlDataSources.xml
+.idea/**/dynamic.xml
+.idea/**/uiDesigner.xml
+.idea/**/dbnavigator.xml
+
+# Gradle
+.idea/**/gradle.xml
+.idea/**/libraries
+
+# Gradle and Maven with auto-import
+# When using Gradle or Maven with auto-import, you should exclude module files,
+# since they will be recreated, and may cause churn.
+.idea/artifacts
+.idea/compiler.xml
+.idea/jarRepositories.xml
+.idea/modules.xml
+.idea/*.iml
+.idea/modules
+
+# CMake
+cmake-build-*/
+
+# Mongo Explorer plugin
+.idea/**/mongoSettings.xml
+
+# File-based project format
+*.iws
+
+# IntelliJ
+out/
+
+# mpeltonen/sbt-idea plugin
+.idea_modules/
+
+# JIRA plugin
+atlassian-ide-plugin.xml
+
+# Cursive Clojure plugin
+.idea/replstate.xml
+
+# Crashlytics plugin (for Android Studio and IntelliJ)
+com_crashlytics_export_strings.xml
+crashlytics.properties
+crashlytics-build.properties
+fabric.properties
+
+# Editor-based Rest Client
+.idea/httpRequests
+
+# Android studio 3.1+ serialized cache file
+.idea/caches/build_file_checksums.ser
+
+### Intellij+iml Patch ###
+# Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-249601023
+
+*.iml
+modules.xml
+.idea/misc.xml
+*.ipr
+
+### Gradle ###
+.gradle
+
+# Ignore Gradle GUI config
+gradle-app.setting
+
+# Avoid ignoring Gradle wrapper jar file (.jar files are usually ignored)
+!gradle-wrapper.jar
+
+# Cache of project
+.gradletasknamecache
+
+# # Work around https://youtrack.jetbrains.com/issue/IDEA-116898
+# gradle/wrapper/gradle-wrapper.properties
+
+# End of https://www.toptal.com/developers/gitignore/api/intellij+iml,eclipse,gradle
+/test-bin/
+/releases/
diff --git a/README.md b/README.md
index 8f9f6e0..0f4477c 100644
--- a/README.md
+++ b/README.md
@@ -1,9 +1,82 @@
-jameica
+Jameica ![logo](./src/img/hibiscus-icon-64x64.png)
 =======
+> If you do not unterstand German but want more information or to contribute, please try to contact [the maintainer or one of the contributors](https://github.com/willuhn/jameica/graphs/contributors).
 
-Jameica is an Application-Platform written in Java containing a SWT-UI. It provides different services (GUI-Toolkit, Logging, Security, Backup, Lifecycle-Management, Message-Bus) to the installed plugins. It's a kind of runtime environment similar to OSGi.
+Jameica ist eine _Application_-Plattform, die in Java geschrieben ist.
+Sie bietet die Basisfunktionalität und GUI-Komponenten, um Dir dabei zu helfen, Dich auf Deine Idee zu konzentrieren!
 
-# Developer Information
+Es ist die Grundlage für Plugins wie [Hibiscus](https://github.com/willuhn/hibiscus) oder [JVerein](https://www.jverein.de/).
 
-* [Issue Tracker (Bugzilla)](http://www.willuhn.de/bugzilla)
-* [Developer Information (in German)](http://www.willuhn.de/products/jameica/dev.php)
+![Screenshot](https://www.willuhn.de/products/jameica/screenshots/04.png)
+
+Jameica nutzt SWT für die grafische Oberfläche und bietet als Plattform mehrere Services (GUI-Toolkit, Logging, Security, Backup, Lifecycle-Management, Message-Bus) für die installierten Plugins.
+Die flexible Plugin-Arbeitsweise ist angelehnt an [OSGi](https://de.wikipedia.org/wiki/OSGi).
+
+![Stack](https://www.willuhn.de/products/jameica/grafx/schema.png)
+
+Schnellstart
+----------
+Hier eine Anleitung für alle, die direkt loslegen wollen.
+
+> :warning: Für Jameica muss [Java](https://adoptopenjdk.net/) installiert sein!
+> Die notwendige Minimalversion ist [hier](https://www.willuhn.de/wiki/doku.php?id=start#kompatibilitaetsmatrix) einsehbar.
+> Falls unsicher, überprüfe die Version auf Deinem Computer, indem Du `java -version` im Terminal/ der Kommandozeile ausführst.
+
+1. Lade das fertige Paket für Dein Betriebssystem.
+
+    | 64bit | 32bit für alte Systeme | andere Wege |
+    | ----- | ----- | ---------- |
+    | [Linux](http://www.willuhn.de/products/jameica/releases/current/jameica/jameica-linux64.zip) | [Linux (32bit)](http://www.willuhn.de/products/jameica/releases/current/jameica/jameica-linux.zip) | [AUR, DEP, RPM, Launchpad, flatpak](https://www.willuhn.de/wiki/doku.php?id=support:bezugsquellen) |
+    | [macOS](http://www.willuhn.de/products/jameica/releases/current/jameica/jameica-macos64.zip) | [Mac OS X "Tiger" (10.4) - "Lion" (10.7))](http://www.willuhn.de/products/jameica/releases/current/jameica/jameica-macos32.zip) | [Homebrew](http://brew.sh/): `brew cask install jameica` |
+    | [Windows](http://www.willuhn.de/products/jameica/releases/current/jameica/jameica-win64.zip) | [ab Windows 7](http://www.willuhn.de/products/jameica/releases/current/jameica/jameica-win32.zip) | [Chocolatey](https://chocolatey.org/): `choco install jameica` |
+
+    Es gibt auch eine [generische Version für weitere Betriebssysteme (OpenBSD, ...)](http://www.willuhn.de/products/jameica/releases/current/jameica/jameica.zip) zum Download.
+
+2. Entpacke den Inhalt der ZIP-Datei in einen Ordner auf der Festplatte.
+
+3. Starte die Applikation
+    * Windows: `jameica-win64.exe`
+    * Linux: `./jameica.sh`
+    * macOS: Doppelklick auf das Symbol
+
+    > Jameica schreibt _alle_ Dinge (Einstellungen, Logdateien, Daten) in einen einzigen Ordner namens `.jameica` im Benutzerverzeichnis (`%USERPROFILE%` in Win, `~` in Unix/Linux/macOS).
+
+4. Installiere Plugins via _"Datei -> Plugins online suchen..."_.
+   In der angezeigte Auswahlliste wird das gewünschte Plugin mit einem Klick auf den Button "Installieren..." automatisch heruntergeladen und konfiguriert
+
+    > Es gibt eine Übersicht über [alle Plugins](https://www.willuhn.de/wiki/doku.php?id=start#alle_bekannten_jameica-plugins) und deren Abhängigkeiten zu anderen Plugins.
+
+Dokumentation
+-------------
+Eine detaillierte Projektdokumentation ist im [Wiki des Autors](https://www.willuhn.de/wiki/) einsehbar.
+
+Dieses Wiki beinhaltet u.a. Informationen wie:
+* Übersicht der mind. erforderlichen Java-Version je Releaseversion von Jameica
+* [häufige Fragen/ FAQ](https://www.willuhn.de/wiki/doku.php?id=support:faq)
+* [Anleitung für Updates](https://www.willuhn.de/wiki/doku.php?id=support:update)
+* [Anleitung für Backups](https://www.willuhn.de/wiki/doku.php?id=support:backup)
+
+Mitmachen
+---------
+### Du hast etwas gefunden, was verbessert werden sollte?
+Super! Jedes Feedback hilft!
+Bitte prüfe jedoch zuerst, ob es bereits im [OnlineBanking-Forum](https://homebanking-hilfe.de/forum/index.php?f=33) bekannt ist.
+Vielleicht gibt es bereits eine (Übergangs-)Lösung für Dein Problem.
+Falls nicht, so schaue bitte auf [dieser Website](https://www.willuhn.de/wiki/doku.php?id=support:fehlermelden) nach detaillierten Anweisungen für die nächsten Schritte.
+
+### Du kannst programmieren und möchtest helfen?
+Nutze die Möglichkeiten von Github :-)
+Erstelle einen _Fork_ von diesem Repository und sende einen _Pull-Request_ mit den Anpassungen.
+
+### Du möchtest Dein eigenes Jameica-Plugin programmieren?
+Im Github-Projekt [Jameica Example Plugin](https://github.com/willuhn/jameica.example) findest Du alle Informationen.
+
+Lizenz
+------
+Jameica steht unter GPLv2 (siehe [LICENSE](./LICENSE))
+
+Danksagung
+----------
+Jameica wird seit 2003 von Olaf Willuhn in seiner Freizeit entwickelt.
+
+Vielen Dank an [alle Mitwirkenden](https://github.com/willuhn/jameica/graphs/contributors), die dabei geholfen haben, diese Software ein bisschen besser zu machen!
diff --git a/build.gradle b/build.gradle
new file mode 100644
index 0000000..cda363a
--- /dev/null
+++ b/build.gradle
@@ -0,0 +1,49 @@
+plugins {
+    id 'my.java-application-conventions'
+    id 'my.java-oldschool-project-structure'
+    id 'my.encoding.8859-1'
+}
+apply from: "${rootProject.rootDir}/gradle/url_file.gradle"
+apply from: "${rootProject.rootDir}/gradle/download_swt.gradle"
+
+group 'de.willuhn.jameica'
+version '2.8-SNAPSHOT'
+
+application {
+    // Define the main class for the application.
+    mainClass = 'de.willuhn.jameica.Main'
+}
+
+java {
+    toolchain {
+        languageVersion = JavaLanguageVersion.of(8)
+    }
+}
+
+dependencies {
+    implementation project(':lib:util')
+    implementation project(':lib:datasource')
+
+    implementation libs.bundles.bouncycastle
+    implementation libs.bundles.javaee
+    implementation libs.apache.commons.lang
+    implementation libs.apache.commons.cli
+    implementation libs.apache.velocity
+    implementation libs.javax.annotation
+    implementation libs.eclipse.jface
+    implementation libs.eclipse.ui.forms
+    implementation libs.nanoxml
+    implementation swt.platform
+
+    // Printing plug-in for SWT. See <https://code.google.com/archive/p/swt-paperclips/> (last update: 2009-08-12)
+    implementation urlFile('paperclips-1.0.4', 'https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/swt-paperclips/net.sf.paperclips_1.0.4.200908120926.jar')
+}
+
+// solange noch die Logik des ANT-Builds benötigt wird, nutze einen Unterordner
+buildDir = file("./build/gradle/")
+jar {
+    baseName "de_willuhn_${project.name}"
+    manifest {
+        attributes "Main-Class": "de.willuhn.jameica.Main"
+    }
+}
diff --git a/build/BUILD b/build/BUILD
index 9b498c6..94338c0 100644
--- a/build/BUILD
+++ b/build/BUILD
@@ -1,3 +1,3 @@
 #Build Number for ANT. Do not edit!
-#Fri Nov 27 13:56:27 CET 2020
-build.number=479
+#Fri Nov 19 11:54:54 CET 2021
+build.number=482
diff --git a/build/ChangeLog b/build/ChangeLog
index 91ba87d..55a4932 100644
--- a/build/ChangeLog
+++ b/build/ChangeLog
@@ -1,8 +1,17 @@
+2021-11-19 Version 2.10.1
+
+  * NEW: 0142 Update auf SWT 4.20 für linux64, linux-arm64, win64, macos64
+  * NEW: 0141 Support für Macos-aarch64 (SWT 4.20)
+  * NEW: 0140 JRE-Update für Windows und Mac auf 11.0.13_8
+  * NEW: 0139 MySQL-Treiber auf 5.1.49 aktualisiert - siehe https://homebanking-hilfe.de/forum/topic.php?t=24614
+  * NEW: 0138 Update auf SWT 4.19M3 für macos64 - das Druckproblem https://bugs.eclipse.org/bugs/show_bug.cgi?id=569185 scheint dort behoben zu sein
+  * NEW: 0137 Update auf SWT 4.18 für linux64, linux-arm64, win64 und macos64
+
 2020-11-27 Version 2.10
   
   * NEW: 0136 Neue Launcher für Windows mit aktualisierter Versionsnummer
   * NEW: 0135 JRE-Update für Windows und Mac auf 11.0.9.1_1
-  * NEW: 0134 Update auf SWT 4.17 für für linux64, linux-arm64 (jetzt offiziell von Eclipse untestützt), win64 und macos64
+  * NEW: 0134 Update auf SWT 4.17 für linux64, linux-arm64 (jetzt offiziell von Eclipse untestützt), win64 und macos64
   * NEW: 0133 Parameter "-Dsun.security.smartcardio.library" zu jameica-macos64.sh hinzugefügt - für MacOS Big Sur nötig - siehe https://homebanking-hilfe.de/forum/topic.php?p=157884#real157884
   * NEW: 0132 Fenster-Position auch im Maximiert-Zustand speichern - siehe https://homebanking-hilfe.de/forum/topic.php?p=157397#real157397
   * NEW: 0131 Sprache wieder per Datei->Einstellungen konfigurierbar
diff --git a/build/Info-aarch64.plist b/build/Info-aarch64.plist
new file mode 100644
index 0000000..68c4400
--- /dev/null
+++ b/build/Info-aarch64.plist
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>CFBundleExecutable</key>
+		<string>jameica-macosaarch64.sh</string>
+	<key>CFBundleGetInfoString</key>
+    <string>Jameica for Apple OS X</string>
+	<key>CFBundleIconFile</key>
+    <string>jameica-icon.icns</string>
+	<key>CFBundleIdentifier</key>
+		<string>de.willuhn.jameica</string>
+	<key>CFBundleInfoDictionaryVersion</key>
+		<string>6.0</string>
+	<key>CFBundleName</key>
+		<string>Jameica</string>
+	<key>CFBundlePackageType</key>
+		<string>APPL</string>
+	<key>CFBundleShortVersionString</key>
+		<string>1.3-0</string>
+	<key>CFBundleSignature</key>
+		<string>?????</string>
+	<key>CFBundleVersion</key>
+		<string>1.0</string>
+	<key>NSPrincipalClass</key>
+		<string>NSApplication</string>
+</dict>
+</plist>
diff --git a/build/build.properties b/build/build.properties
index e256010..3184978 100644
--- a/build/build.properties
+++ b/build/build.properties
@@ -10,6 +10,7 @@ define.jarfilename              = ${define.projectname}.jar
 define.jarfilename.win32        = ${define.projectname}-win32.jar
 define.jarfilename.win64        = ${define.projectname}-win64.jar
 define.jarfilename.macos64      = ${define.projectname}-macos64.jar
+define.jarfilename.macosaarch64 = ${define.projectname}-macos-aarch64.jar
 define.jarfilename.linux        = ${define.projectname}-linux.jar
 define.jarfilename.linux64      = ${define.projectname}-linux64.jar
 define.jarfilename.linuxarm64   = ${define.projectname}-linuxarm64.jar
@@ -59,29 +60,31 @@ project.javadoc                 = ${project.release}/javadoc
 project.zipdir                  = ${project.release}/${define.projectname}
 class.dir                       = ${project.tmp}/bin
 
-project.zipfilename             = ${define.projectname}-${system.version}.zip
-project.zipfilename.win32       = ${define.projectname}-win32-${system.version}.zip
-project.zipfilename.win64       = ${define.projectname}-win64-${system.version}.zip
-project.zipfilename.linux       = ${define.projectname}-linux-${system.version}.zip
-project.zipfilename.linux64     = ${define.projectname}-linux64-${system.version}.zip
-project.zipfilename.linuxarm64  = ${define.projectname}-linuxarm64-${system.version}.zip
-project.zipfilename.macos64     = ${define.projectname}-macos64-${system.version}.zip
-project.zipfilename.openbsd     = ${define.projectname}-openbsd-${system.version}.zip
+project.zipfilename              = ${define.projectname}-${system.version}.zip
+project.zipfilename.win32        = ${define.projectname}-win32-${system.version}.zip
+project.zipfilename.win64        = ${define.projectname}-win64-${system.version}.zip
+project.zipfilename.linux        = ${define.projectname}-linux-${system.version}.zip
+project.zipfilename.linux64      = ${define.projectname}-linux64-${system.version}.zip
+project.zipfilename.linuxarm64   = ${define.projectname}-linuxarm64-${system.version}.zip
+project.zipfilename.macos64      = ${define.projectname}-macos64-${system.version}.zip
+project.zipfilename.macosaarch64 = ${define.projectname}-macosaarch64-${system.version}.zip
+project.zipfilename.openbsd      = ${define.projectname}-openbsd-${system.version}.zip
 
 classpath.win32                 = ${define.jarfilename} lib/swt/win32/swt.jar ${define.commonlibs}
 classpath.win64                 = ${define.jarfilename} lib/swt/win64/swt.jar ${define.commonlibs}
 classpath.linux                 = ${define.jarfilename} lib/swt/linux/swt.jar ${define.commonlibs}
 classpath.linux64               = ${define.jarfilename} lib/swt/linux64/swt.jar ${define.commonlibs}
 classpath.linuxarm64            = ${define.jarfilename} lib/swt/linux-arm64/swt.jar ${define.commonlibs}
+classpath.macosaarch64          = ${define.jarfilename} lib/swt/macosaarch64/swt.jar ${define.commonlibs}
 classpath.macos64               = ${define.jarfilename} lib/swt/macos64/swt.jar ${define.commonlibs}
 classpath.openbsd               = ${define.jarfilename} /usr/local/share/java/classes/swt.jar ${define.commonlibs}
 
 ## Wenn fuer Win32/Win64/MacOS64 ein JRE gebundelt werden soll, muss hier der Pfad zu der ZIP/TAR.GZ-Datei des JRE angegeben werden
 ## Ausserdem muss Ant dann mit dem Parameter "-Djre.embedd=true" aufgerufen werden
 ## Beispiel:
-define.jre.win32                = ../jre/OpenJDK11U-jre_x86-32_windows_hotspot_11.0.9.1_1.zip
-define.jre.win64                = ../jre/OpenJDK11U-jre_x64_windows_hotspot_11.0.9.1_1.zip
-define.jre.macos64              = ../jre/OpenJDK11U-jre_x64_mac_hotspot_11.0.9.1_1.tar.gz
+define.jre.win32                = ../jre/OpenJDK11U-jre_x86-32_windows_hotspot_11.0.13_8.zip
+define.jre.win64                = ../jre/OpenJDK11U-jre_x64_windows_hotspot_11.0.13_8.zip
+define.jre.macos64              = ../jre/OpenJDK11U-jre_x64_mac_hotspot_11.0.13_8.tar.gz
 
 signjar.keystore                = /home/willuhn/.jameica/jameica.ca/jameica.ca.keystore
 signjar.storepass               = /home/willuhn/.jameica/jameica.ca/jameica.ca.storepass
diff --git a/build/build.xml b/build/build.xml
index 274e194..da13d3a 100755
--- a/build/build.xml
+++ b/build/build.xml
@@ -1,13 +1,5 @@
 <?xml version="1.0" encoding="ISO-8859-1"?>
 
-<!--
- $Revision: 1.78 $
- $Date: 2011/06/10 10:30:14 $
- $Author: willuhn $
- 
- All rights reserved
--->
-
 <project basedir=".." default="all" name="All">
 
 
@@ -137,6 +129,10 @@
       <param name="param.filename" value="${define.jarfilename.macos64}" />
       <param name="param.classpath" value="${classpath.macos64}" />
     </antcall>
+    <antcall target="sub_jar_create">
+      <param name="param.filename" value="${define.jarfilename.macosaarch64}" />
+      <param name="param.classpath" value="${classpath.macosaarch64}" />
+    </antcall>
     <antcall target="sub_jar_create">
       <param name="param.filename" value="${define.jarfilename.openbsd}" />
       <param name="param.classpath" value="${classpath.openbsd}" />
@@ -157,11 +153,12 @@
         <include name="*.sh" />
         <include name="*.exe" />
         <include name=".jameica" />
-        <include name="rcjameica" />
+        <include name="rcjameica*" />
+        <include name="jameica.service" />
         <include name="jameica-icon.png" />
         <include name="jameica-icon.icns" />
         <include name="README" />
-        <include name="Info.plist" />
+        <include name="Info*.plist" />
       </fileset>
       <fileset dir="${basedir}">
         <include name="LICENSE" />
@@ -196,6 +193,7 @@
         <include name="${define.projectname}/README" />
         <include name="${define.projectname}/.jameica" />
         <include name="${define.projectname}/jameica-icon.png" />
+        <include name="${define.projectname}/jameica.service" />
         <include name="${define.projectname}/plugins" />
         <include name="${define.projectname}/lib/**" />
 
@@ -225,6 +223,7 @@
         <include name="${define.projectname}/README" />
         <include name="${define.projectname}/.jameica" />
         <include name="${define.projectname}/jameica-icon.png" />
+        <include name="${define.projectname}/jameica.service" />
         <include name="${define.projectname}/plugins" />
         <include name="${define.projectname}/lib/**" />
 
@@ -333,9 +332,10 @@
         <include name="plugins" />
         <include name="jre-macos64/**" />
         <include name="lib/**" />
+        <exclude name="Info-aarch64.plist" />
         <exclude name="lib/swt/win*/**" />
         <exclude name="lib/swt/linux*/**" />
-        <exclude name="lib/swt/macos/**" />
+        <exclude name="lib/swt/macos-aarch64/**" />
       </fileset>
     </copy>
     <zip destfile="${project.release}/${project.zipfilename.macos64}">
@@ -344,6 +344,35 @@
       </zipfileset>
     </zip>
 
+    <!-- ZIP-File fuer MacOSAArch64 -->
+    <delete dir="${project.tmp}/${define.projectname}.app" />
+    <mkdir dir="${project.tmp}/${define.projectname}.app" />
+    <copy todir="${project.tmp}/${define.projectname}.app">
+      <fileset dir="${project.release}/${define.projectname}">
+        <include name="plugin.xml" />
+        <include name="${define.jarfilename}" />
+        <include name="${define.jarfilename.macosaarch64}" />
+        <include name="LICENSE" />
+        <include name="COPYING" />
+        <include name="README" />
+        <include name="Info-aarch64.plist" />
+        <include name="jameica-macosaarch64.sh" />
+        <include name="jameica-icon.icns" />
+        <include name="plugins" />
+        <include name="lib/**" />
+        <exclude name="Info.plist" />
+        <exclude name="lib/swt/win*/**" />
+        <exclude name="lib/swt/linux*/**" />
+        <exclude name="lib/swt/macos64/**" />
+      </fileset>
+    </copy>
+    <move file="${project.tmp}/${define.projectname}.app/Info-aarch64.plist" tofile="${project.tmp}/${define.projectname}.app/Info.plist" />
+    <zip destfile="${project.release}/${project.zipfilename.macosaarch64}">
+      <zipfileset dir="${project.tmp}" filemode="755">
+        <include name="${define.projectname}.app/**" />
+      </zipfileset>
+    </zip>
+
     <!-- ZIP-File fuer OpenBSD -->
     <zip destfile="${project.release}/${project.zipfilename.openbsd}" duplicate="fail">
       <zipfileset dir="${project.release}">
@@ -375,7 +404,7 @@
         <include name="${define.projectname}" />
         <include name="${define.projectname}/**" />
         <exclude name="${define.projectname}/*.sh" />
-        <exclude name="${define.projectname}/rcjameica" />
+        <exclude name="${define.projectname}/rcjameica*" />
       </zipfileset>
       <zipfileset dir="${project.release}" filemode="755">
         <include name="${define.projectname}/*.sh" />
@@ -447,6 +476,7 @@
     <checksum format="MD5SUM" algorithm="SHA" file="${project.release}/${project.zipfilename.linux64}" />
     <checksum format="MD5SUM" algorithm="SHA" file="${project.release}/${project.zipfilename.linuxarm64}" />
     <checksum format="MD5SUM" algorithm="SHA" file="${project.release}/${project.zipfilename.macos64}" />
+    <checksum format="MD5SUM" algorithm="SHA" file="${project.release}/${project.zipfilename.macosaarch64}" />
     <checksum format="MD5SUM" algorithm="SHA" file="${project.release}/${project.zipfilename.openbsd}" />
     <echo message="Creating PGP signatures" />
 
@@ -475,6 +505,9 @@
     <exec executable="gpg" failonerror="true" timeout="60000">
       <arg line="-asb --use-agent ${project.release}/${project.zipfilename.macos64}" />
     </exec>
+    <exec executable="gpg" failonerror="true" timeout="60000">
+      <arg line="-asb --use-agent ${project.release}/${project.zipfilename.macosaarch64}" />
+    </exec>
     <exec executable="gpg" failonerror="true" timeout="60000">
       <arg line="-asb --use-agent ${project.release}/${project.zipfilename.openbsd}" />
     </exec>
@@ -493,6 +526,7 @@
     <copy file="${project.release}/${project.zipfilename.linux64}" todir="${project.nightly}" />
     <copy file="${project.release}/${project.zipfilename.linuxarm64}" todir="${project.nightly}" />
     <copy file="${project.release}/${project.zipfilename.macos64}" todir="${project.nightly}" />
+    <copy file="${project.release}/${project.zipfilename.macosaarch64}" todir="${project.nightly}" />
     <copy file="${project.release}/${project.zipfilename.win32}" todir="${project.nightly}" />
     <copy file="${project.release}/${project.zipfilename.win64}" todir="${project.nightly}" />
     <copy file="${project.release}/${project.zipfilename.openbsd}" todir="${project.nightly}" />
diff --git a/build/jameica-macosaarch64.sh b/build/jameica-macosaarch64.sh
new file mode 100755
index 0000000..91b77df
--- /dev/null
+++ b/build/jameica-macosaarch64.sh
@@ -0,0 +1,30 @@
+#!/bin/sh
+
+TERM="xterm"
+
+JAVACMD="$JAVA_HOME/bin/java"
+
+if [ ! -x $JAVACMD ] && [ -x /usr/libexec/java_home ] && /usr/libexec/java_home -F 2> /dev/null; then
+  JAVACMD="`/usr/libexec/java_home 2> /dev/null`/bin/java"
+fi
+
+if [ ! -x $JAVACMD ]; then
+  JAVACMD="/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java"
+fi
+
+if [ ! -x "$JAVACMD" ]; then
+  JAVACMD="/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java"
+fi
+
+if [ ! -x $JAVACMD ] && [ -h /Library/Java/Home ]; then
+  JAVACMD="/Library/Java/Home/bin/java"
+fi
+
+if [ ! -x "$JAVACMD" ]; then
+  JAVACMD="`which java`"
+fi
+
+BASEDIR=$(dirname "$0")
+cd "${BASEDIR}"
+
+exec "${JAVACMD}" -Dsun.security.smartcardio.library=/System/Library/Frameworks/PCSC.framework/Versions/Current/PCSC -Xdock:name="Jameica" -Xmx512m -Xss64m -XstartOnFirstThread -jar "${BASEDIR}/jameica-macosaarch64.jar" -o "$@"  >/dev/null
diff --git a/build/jameica.service b/build/jameica.service
new file mode 100644
index 0000000..d0d2d96
--- /dev/null
+++ b/build/jameica.service
@@ -0,0 +1,14 @@
+## Beispiel für ein systemd-Unit-File
+[Unit]
+Description=Jameica
+After=mysql.service
+
+[Service]
+Type=simple
+ExecStart=/opt/jameica/rcjameica-systemd
+User=jameica
+ExecStop=kill $MAINPID
+StandardOutput=file:/dev/null
+
+[Install]
+WantedBy=multi-user.target
diff --git a/build/jameica.sh b/build/jameica.sh
index dc4f6a5..b389bfc 100755
--- a/build/jameica.sh
+++ b/build/jameica.sh
@@ -5,9 +5,6 @@
 
 #_JCONSOLE="-Dcom.sun.management.jmxremote"
 
-# https://www.willuhn.de/bugzilla/show_bug.cgi?id=774
-# https://www.willuhn.de/bugzilla/show_bug.cgi?id=798
-
 link=$(readlink -f "$0")
 dir=$(dirname "$link")
 cd "$dir" 
diff --git a/build/rcjameica-systemd b/build/rcjameica-systemd
new file mode 100755
index 0000000..1238a69
--- /dev/null
+++ b/build/rcjameica-systemd
@@ -0,0 +1,13 @@
+#!/bin/sh
+
+BASEDIR=`dirname $0`
+
+. "$BASEDIR/.jameica"
+
+if [ -f "$WORKDIR/.jameica" ]; then
+  . "$WORKDIR/.jameica"
+fi
+
+mkdir -p $WORKDIR
+cd $BASEDIR
+echo $PASSWORD | java -Djava.net.preferIPv4Stack=true -Xmx512m -jar jameica-linux.jar -d -f $WORKDIR
diff --git a/download.gradle b/download.gradle
index a0bde72..c3bf91c 100644
--- a/download.gradle
+++ b/download.gradle
@@ -5,37 +5,37 @@ sourceCompatibility = 1.7
 compileJava.options.encoding = 'ISO-8859-1'
 
 eclipse {
-  classpath {
-    downloadSources = true
-  }
+    classpath {
+        downloadSources = true
+    }
 }
 
 repositories {
-  mavenCentral()
+    mavenCentral()
 }
 
 dependencies {
-  compile 'org.apache.xmlrpc:xmlrpc-client:+'
-  compile 'org.bouncycastle:bcprov-jdk15on:+'
-  compile 'org.bouncycastle:bcpkix-jdk15on:+'
-  compile 'com.h2database:h2:+'
-  compile 'commons-cli:commons-cli:+'
-  compile 'commons-lang:commons-lang:2.+'
-  compile 'commons-collections:commons-collections:3.+' // Version 3 brauchen wir noch wegen Velocity.
-  compile 'commons-logging:commons-logging:1.+'
-  compile 'com.mckoi:mckoisqldb:+'
-  compile 'mysql:mysql-connector-java:5.+'
-  compile 'be.cyberelf.nanoxml:nanoxml:+'
-  compile 'org.apache.velocity:velocity:+'
-  compile 'oro:oro:+'
-  
+    compile 'org.apache.xmlrpc:xmlrpc-client:+'
+    compile 'org.bouncycastle:bcprov-jdk15on:+'
+    compile 'org.bouncycastle:bcpkix-jdk15on:+'
+    compile 'com.h2database:h2:+'
+    compile 'commons-cli:commons-cli:+'
+    compile 'commons-lang:commons-lang:2.+'
+    compile 'commons-collections:commons-collections:3.+' // Version 3 brauchen wir noch wegen Velocity.
+    compile 'commons-logging:commons-logging:1.+'
+    compile 'com.mckoi:mckoisqldb:+'
+    compile 'mysql:mysql-connector-java:5.+'
+    compile 'be.cyberelf.nanoxml:nanoxml:+'
+    compile 'org.apache.velocity:velocity:+'
+    compile 'oro:oro:+'
+
     // Java EE. Ab Java 11 nicht mehr in Java enthalten
-  compile 'javax.xml.ws:jaxws-api:2.3.1'
-  compile 'org.glassfish.jaxb:jaxb-runtime:2.4.0-b180830.0438'
-  compile 'org.glassfish.main.javaee-api:javax.jws:3.1.2.2'
+    compile 'javax.xml.ws:jaxws-api:2.3.1'
+    compile 'org.glassfish.jaxb:jaxb-runtime:2.4.0-b180830.0438'
+    compile 'org.glassfish.main.javaee-api:javax.jws:3.1.2.2'
 }
 
 task download(type: Copy) {
-  into "lib/download"
-  from configurations.runtime
+    into "lib/download"
+    from configurations.runtime
 }
diff --git a/plugin.xml b/plugin.xml
index 61c78c6..b5aa95b 100755
--- a/plugin.xml
+++ b/plugin.xml
@@ -1,9 +1,9 @@
 <?xml version="1.0" encoding="ISO-8859-1"?> 
 
-<system name="Jameica" version="2.10.0">
+<system name="Jameica" version="2.10.1">
 
   <description>Jameica - Java based messages interchange</description>
-  <url>https://www.willuhn.de/products/jameica/releases/2.10/jameica/jameica-2.10.0.zip</url>
+  <url>https://www.willuhn.de/products/jameica/releases/2.10/jameica/jameica-2.10.1.zip</url>
   <homepage>https://www.willuhn.de/projects/jameica</homepage>
   <license>GPL - http://www.gnu.org/copyleft/gpl.html</license>
 
diff --git a/src/de/willuhn/jameica/Main.java b/src/de/willuhn/jameica/Main.java
index 815e8f0..125b77e 100644
--- a/src/de/willuhn/jameica/Main.java
+++ b/src/de/willuhn/jameica/Main.java
@@ -50,10 +50,12 @@ public class Main {
    *     Wird kein Parameter angegeben, startet die Anwendung im Standalone-Mode.
    *   </li>
    * </ul>
-   * Parameter 2 (-f): Optionales Datenverzeichnis. Das ist bei Linux
+   *
+   * <p>Parameter 2 (-f): Optionales Datenverzeichnis. Das ist bei Linux
    * standardmaessig <b>~/.jameica</b> und bei Windows
    * <b>C:\dokumente und Einstellungen\benutzername\.jameica</b>.
-   * Parameter 3 (-p): Optionales Passwort fuer die SSLFactory. Jameica
+   *
+   * <p>Parameter 3 (-p): Optionales Passwort fuer die SSLFactory. Jameica
    * erzeugt beim ersten Start einen Keystore und speichert darin X.509-Zertifikate
    * fuer die Verschluesselung von Daten. Zum Schutz des Keystore wird ein
    * Passwort benoetigt. Wird dieses nicht als Kommandozeilen-Option
@@ -62,12 +64,13 @@ public class Main {
    * ueber die Kommando-Zeile abgefragt. Damit die Anwendung aber auch ohne
    * Benutzer-Interkation (z.Bsp. als Service) direkt beim Booten des
    * Betriebssystems startfaehig ist, kann das Passwort auch ueber diesen
-   * Parameter angegeben werden.<br/>
-   * Beispiele:<br/>
-   * <code>java de.willuhn.jameica.Main -server -f C:/jameica.work -p geheim</code><br/>
-   * <code>java de.willuhn.jameica.Main -client -f ~/.jameica.test</code><br/>
-   * <code>java de.willuhn.jameica.Main -standalone -f /tmp/jameicatest</code><br/>
-   * <code>java de.willuhn.jameica.Main</code>
+   * Parameter angegeben werden.
+   *
+   * <p>Beispiele:<br>
+   * {@code java de.willuhn.jameica.Main -server -f C:/jameica.work -p geheim}<br>
+   * {@code java de.willuhn.jameica.Main -client -f ~/.jameica.test}<br>
+   * {@code java de.willuhn.jameica.Main -standalone -f /tmp/jameicatest}<br>
+   * {@code java de.willuhn.jameica.Main}
    * @throws Throwable
    */
   public static void main(final String[] args) throws Throwable
diff --git a/src/de/willuhn/jameica/gui/AbstractControl.java b/src/de/willuhn/jameica/gui/AbstractControl.java
index 4a9fadd..9f1e9b3 100644
--- a/src/de/willuhn/jameica/gui/AbstractControl.java
+++ b/src/de/willuhn/jameica/gui/AbstractControl.java
@@ -13,7 +13,7 @@ package de.willuhn.jameica.gui;
 
 /**
  * Diese Basis-Klasse ist das Bindeglied zwischen View und Model.
- * Einem Dialog werden via <code>ButtonArea</code> Knoepfe hinzugefuegt.
+ * Einem Dialog werden via {@link de.willuhn.jameica.gui.parts.ButtonArea} Knoepfe hinzugefuegt.
  * Die Funktion zum Hinzufuegen von Knoepfen erwartet als Parameter
  * u.a. einen AbstractControl. Und genau dessen Methode handleIrgendwas() wird beim
  * Klick auf diesen Button dann ausgefuehrt.
diff --git a/src/de/willuhn/jameica/gui/GUI.java b/src/de/willuhn/jameica/gui/GUI.java
index 666e5cf..e7d892c 100644
--- a/src/de/willuhn/jameica/gui/GUI.java
+++ b/src/de/willuhn/jameica/gui/GUI.java
@@ -140,7 +140,7 @@ public class GUI implements ApplicationController
       Rectangle r = GUI.getDisplay().getBounds();
       if (r.height < 800)
       {
-        Logger.info("display height smaller than 700px (" + r.width + "x" + r.width + ") - auto-activating netbook mode");
+        Logger.info("display height smaller than 800px (" + r.width + "x" + r.width + ") - auto-activating netbook mode");
         Customizing.SETTINGS.setAttribute("application.scrollview",true);
       }
       else if (Customizing.SETTINGS.getBoolean("application.scrollview.force",false))
@@ -153,7 +153,7 @@ public class GUI implements ApplicationController
         // Falls der Netbook-Mode schonmal aktiviert war, deaktivieren wir ihn automatisch wieder - das Display ist ja nun gross genug
         if (Customizing.SETTINGS.getString("application.scrollview",null) != null)
         {
-          Logger.info("display height larger than 700px (" + r.width + "x" + r.width + ") - disable netbook mode");
+          Logger.info("display height larger than 800px (" + r.width + "x" + r.width + ") - disable netbook mode");
           Customizing.SETTINGS.setAttribute("application.scrollview",(String)null);
         }
       }
diff --git a/src/de/willuhn/jameica/gui/dialogs/AbstractCertificateDialog.java b/src/de/willuhn/jameica/gui/dialogs/AbstractCertificateDialog.java
index 112078e..852dd26 100644
--- a/src/de/willuhn/jameica/gui/dialogs/AbstractCertificateDialog.java
+++ b/src/de/willuhn/jameica/gui/dialogs/AbstractCertificateDialog.java
@@ -315,7 +315,7 @@ public abstract class AbstractCertificateDialog extends AbstractDialog
   
 
   /**
-   * Liefert <code>null</code> zurueck.
+   * Liefert {@code null} zurueck.
    * Bitte ggf. ueberschreiben, um einen anderen Wert zurueckzuliefern.
    * @see de.willuhn.jameica.gui.dialogs.AbstractDialog#getData()
    */
diff --git a/src/de/willuhn/jameica/gui/dialogs/AbstractDialog.java b/src/de/willuhn/jameica/gui/dialogs/AbstractDialog.java
index 15ce165..5e75830 100644
--- a/src/de/willuhn/jameica/gui/dialogs/AbstractDialog.java
+++ b/src/de/willuhn/jameica/gui/dialogs/AbstractDialog.java
@@ -37,29 +37,35 @@ import de.willuhn.logging.Logger;
 import de.willuhn.util.I18N;
 
 /**
- * <p>Das ist die Basisklasse fuer modalen Dialogfenster.</p>
+ * Das ist die Basisklasse fuer modalen Dialogfenster.
  * <p>Modal heisst: Ist das Dialogfenster einmal geoeffnet, kann die
  * restliche Anwendung solange nicht mehr bedient werden, bis dieses
- * Fenster geschlossen wurde.</p>
+ * Fenster geschlossen wurde.
+ *
  * <p>Diese abstrakte Implementierung schreibt keinen Inhalt in den Dialog
  * sondern stellt lediglich das Fenster mit einem definierten Design
  * zu Verfuegung, behandelt die Dispatch-Vorgaenge mit dem Benutzer
- * und definiert einen Fenster-Titel.</p>
- * <p>Der Dialog kann mittels der beiden Konstanten <code>POSITION_MOUSE</code>
- * und <code>POSITION_CENTER</code> im Konstruktor entweder mittig auf dem
- * Bildschirm oder an der momentanen Position der Mouse dargestellt werden.</p>
- * <p>Ableitende Klassen muessen die Methode <code>paint(Composite)</code>
- * implementieren und dort ihre darzustellenden Elemente reinmalen.</p>
- * <p>Der Dialog wird mittels <code>open()</code> geoeffnet. Beim Schliessen
- * des Dialogs wird die Methode <code>getData()</code> aufgerufen. Das ist
- * gleichzeitig der Rueckgabewert von <code>open()</code>.</p>
- * <p>Eine ableitende Klasse muss also z.Bsp. in <code>paint(Composite)</code>
+ * und definiert einen Fenster-Titel.
+ *
+ * <p>Der Dialog kann mittels der beiden Konstanten {@code POSITION_MOUSE}
+ * und {@code POSITION_CENTER} im Konstruktor entweder mittig auf dem
+ * Bildschirm oder an der momentanen Position der Mouse dargestellt werden.
+ *
+ * <p>Ableitende Klassen muessen die Methode {@code paint(Composite)}
+ * implementieren und dort ihre darzustellenden Elemente reinmalen.
+ *
+ * <p>Der Dialog wird mittels {@code open()} geoeffnet. Beim Schliessen
+ * des Dialogs wird die Methode {@code getData()} aufgerufen. Das ist
+ * gleichzeitig der Rueckgabewert von {@code open()}.
+ *
+ * <p>Eine ableitende Klasse muss also z.Bsp. in {@code paint(Composite)}
  * einen OK-Button erzeugen, einen Listener anhaengen, der auf Druecken
  * des Buttons reagiert, in der aufgerufenenen Methode des Listeners
- * den zu uebergebenden Wert als Member speichern und danach <code>close()</code>
- * aufrufen, um den Dialog zu schliessen.</p>
+ * den zu uebergebenden Wert als Member speichern und danach {@code close()}
+ * aufrufen, um den Dialog zu schliessen.
+ *
  * <p>Bsp.:
- * <code><pre>
+ * <pre>{@code
  * protected void paint(Composite parent) throws Exception
  * {
  *   // [...]
@@ -77,9 +83,8 @@ import de.willuhn.util.I18N;
  * {
  *   return this.enteredText;
  * }
- * </pre>
- * </code>
- * </p>
+ * }</pre>
+ *
  * @author willuhn
  * @param <T> Der Typ des Objektes.
  */
@@ -331,8 +336,8 @@ public abstract class AbstractDialog<T>
 	 * ausgeloest wird. Ob das Schliessen nun durch Klick auf
 	 * den Schliessen-Button oder z.Bsp. durch Auswahl eines
 	 * Elements im Dialog stattfindet, ist egal.
-	 * Dabei wird die Methode <code>handleEvent(Event)</code> des Listeners
-	 * aufgerufen. Das ausgewaehlte Objekt befindet sich dann im Member <code>data</code>
+	 * Dabei wird die Methode {@link Listener#handleEvent(Event)} des Listeners
+	 * aufgerufen. Das ausgewaehlte Objekt befindet sich dann im Member {@code data}
 	 * des Events.
 	 * @param l zu registrierender Listener.
 	 */
@@ -392,7 +397,7 @@ public abstract class AbstractDialog<T>
 	 * Wird die Funktion nicht aufgerufen, dann wird der Dialog genauso gross
 	 * gemalt, wie der Inhalt.
 	 * Wenn eine der beiden Groessen nicht bekannt ist oder nicht gesetzt werden
-	 * soll, kann man auch <code>SWT.DEFAULT</code> uebergeben.
+	 * soll, kann man auch {@link SWT#DEFAULT} uebergeben.
    * @param width gewuenschte Breite.
    * @param height gewuenschte Hoehe.
    */
@@ -429,7 +434,7 @@ public abstract class AbstractDialog<T>
 	 * In dieser Funktion soll er sich bitte malen.
 	 * Sie wird anschliessend von open() ausgefuehrt.
 	 * @param parent das Composite, in dem der Dialog gemalt werden soll.
-	 * Hinweis: Das Composite enthaelt bereits ein einspaltiges <code>GridLayout</code>.
+	 * Hinweis: Das Composite enthaelt bereits ein einspaltiges {@link GridLayout}.
 	 * @throws Exception Kann von der abgeleiteten Klasse geworfen
 	 * werden. Tut sie das, wird der Dialog nicht angezeigt.
    */
diff --git a/src/de/willuhn/jameica/gui/dialogs/ListDialog.java b/src/de/willuhn/jameica/gui/dialogs/ListDialog.java
index 495561f..9054543 100644
--- a/src/de/willuhn/jameica/gui/dialogs/ListDialog.java
+++ b/src/de/willuhn/jameica/gui/dialogs/ListDialog.java
@@ -29,7 +29,7 @@ import de.willuhn.util.ApplicationException;
 /**
  * Dialog, der eine Tabelle mit Daten aus einer Liste anzeigt.
  * Aus dieser Tabelle kann einer ausgewaehlt werden. Dieses Objekt
- * wird dann von <code>open()</code> zurueckgegeben.
+ * wird dann von {@code open()} zurueckgegeben.
  * @author willuhn
  */
 public class ListDialog extends AbstractDialog
diff --git a/src/de/willuhn/jameica/gui/dialogs/NewPasswordDialog.java b/src/de/willuhn/jameica/gui/dialogs/NewPasswordDialog.java
index b2c1573..ed36a11 100644
--- a/src/de/willuhn/jameica/gui/dialogs/NewPasswordDialog.java
+++ b/src/de/willuhn/jameica/gui/dialogs/NewPasswordDialog.java
@@ -29,7 +29,8 @@ import de.willuhn.util.ApplicationException;
 
 /**
  * Dialog zur Neuvergabe von Passworten.
- * Die Klasse implementiert bereits die Funktion<code>checkPassword(String,String)</code>
+ *
+ * <p>Die Klasse implementiert bereits die Funktion {@link #checkPassword(String, String)}
  * und prueft dort, ob ueberhaupt Passworter eingegeben wurden und ob beide
  * uebereinstimmen. Sollen weitere Pruefungen vorgenommen werden, dann bitte
  * einfach diese Funktion ueberschreiben.
@@ -85,11 +86,14 @@ public class NewPasswordDialog extends AbstractDialog
    * Speichert ein optionales Label fuer die zusaetzliche Eingabe eines
    * Usernamens. Wird hier ein Wert uebergeben, zeigt der Dialog neben
    * den beiden Passwort-Feldern extra noch ein Feld fuer den Usernamen an.
-   * Der da eingegebene Wert kann nach dem Aufruf von <code>open()</code>
-   * mit <code>getUsername()</code> ermittelt werden.
-   * Wenn das Eingabefeld fuer den Usernamen angezeigt wird, ist es auch Pflicht.
+   *
+   * <p>Der eingegebene Wert kann nach dem Aufruf von {@code open()}
+   * mit {@link #getUsername()} ermittelt werden.
+   *
+   * <p>Wenn das Eingabefeld fuer den Usernamen angezeigt wird, ist es auch Pflicht.
    * Es gibt also entweder gar keinen Usernamen oder ein verpflichtetenden.
    * Jedoch keinen optionalen Usernamen.
+   *
    * @param text das anzuzeigende Label vor dem Eingabefeld, insofern
    * es angezeigt werden soll.
    */
@@ -124,8 +128,8 @@ public class NewPasswordDialog extends AbstractDialog
 
 	/**
 	 * Zeigt den uebergebenen Text rot markiert links neben dem OK-Button an.
-	 * Diese Funktion sollte aus <code>checkPassword(String)</code> heraus
-	 * aufgerufen werden, um dem benutzer zu zeigen, <b>warum</b> seine
+	 * Diese Funktion sollte aus {@link #checkPassword(String, String)} heraus
+	 * aufgerufen werden, um dem Benutzer zu zeigen, <b>warum</b> seine
 	 * Passwort-Eingabe falsch war. 
    * @param text Der anzuzeigende Fehlertext.
    */
diff --git a/src/de/willuhn/jameica/gui/dialogs/PasswordDialog.java b/src/de/willuhn/jameica/gui/dialogs/PasswordDialog.java
index c57bb23..f4a61f0 100644
--- a/src/de/willuhn/jameica/gui/dialogs/PasswordDialog.java
+++ b/src/de/willuhn/jameica/gui/dialogs/PasswordDialog.java
@@ -34,10 +34,10 @@ import de.willuhn.util.ApplicationException;
 
 /**
  * Dialog zu Passwort-Eingabe.
- * Hinweis: Diese Klasse hat einen internen Zaehler, der die Anzahl
- * der fehlgeschlagenen Aufrufe von <code>checkPassword(String)</code>
- * zaehlt. Nach 3 Versuchen wird die Funktion <code>cancel()</code>
- * aufgerufen und der Dialog geschlossen.
+ *
+ * <p>Hinweis: Diese Klasse hat einen internen Zaehler, der die Anzahl
+ * der fehlgeschlagenen Aufrufe von {@link #checkPassword(String)}
+ * zaehlt und nach {@link #MAX_RETRIES} Versuchen den Dialog schließt.
  */
 public class PasswordDialog extends AbstractDialog
 {
@@ -81,9 +81,7 @@ public class PasswordDialog extends AbstractDialog
     this.smallDisplay = Customizing.SETTINGS.getBoolean("application.scrollview",false);
   }
 
-  /**
-   * @see de.willuhn.jameica.gui.dialogs.AbstractDialog#onEscape()
-   */
+  @Override
   protected void onEscape()
   {
     // Gibts hier nicht. Der User soll explizit auf "Abbrechen" klicken
@@ -104,11 +102,13 @@ public class PasswordDialog extends AbstractDialog
    * Speichert ein optionales Label fuer die zusaetzliche Eingabe eines
    * Usernamens. Wird hier ein Wert uebergeben, zeigt der Dialog neben
    * den beiden Passwort-Feldern extra noch ein Feld fuer den Usernamen an.
-   * Der da eingegebene Wert kann nach dem Aufruf von <code>open()</code>
-   * mit <code>getUsername()</code> ermittelt werden.
-   * Wenn das Eingabefeld fuer den Usernamen angezeigt wird, ist es auch Pflicht.
+   * Der da eingegebene Wert kann nach dem Aufruf von {@code open()}
+   * mit {@link #getUsername()} ermittelt werden.
+   *
+   * <p>Wenn das Eingabefeld fuer den Usernamen angezeigt wird, ist es auch Pflicht.
    * Es gibt also entweder gar keinen Usernamen oder ein verpflichtetenden.
    * Jedoch keinen optionalen Usernamen.
+   *
    * @param text das anzuzeigende Label vor dem Eingabefeld, insofern
    * es angezeigt werden soll.
    */
@@ -131,7 +131,7 @@ public class PasswordDialog extends AbstractDialog
 
 	/**
 	 * Zeigt den uebergebenen Text rot markiert an.
-	 * Diese Funktion sollte aus <code>checkPassword(String)</code> heraus
+	 * Diese Funktion sollte aus {@link #checkPassword(String)} heraus
 	 * aufgerufen werden, um dem benutzer zu zeigen, <b>warum</b> seine
 	 * Passwort-Eingabe falsch war. 
    * @param text Der anzuzeigende Fehlertext.
@@ -154,9 +154,7 @@ public class PasswordDialog extends AbstractDialog
     this.showPassword = show;
   }
 
-  /**
-   * @see de.willuhn.jameica.gui.dialogs.AbstractDialog#paint(org.eclipse.swt.widgets.Composite)
-   */
+  @Override
   protected void paint(Composite parent) throws Exception
 	{
     // Text
@@ -292,9 +290,12 @@ public class PasswordDialog extends AbstractDialog
 
   /**
    * Prueft die Eingabe des Passwortes.
-   * Hinweis: Der Dialog wird erst geschlossen, wenn diese
-   * Funktion <code>true</code> zurueckliefert.
-   * Die Default-Implementierung liefert immer TRUE.
+   *
+   * <p>Hinweis: Der Dialog wird erst geschlossen, wenn diese
+   * Funktion {@code true} zurueckliefert.
+   *
+   * <p>Die Default-Implementierung liefert immer {@code true}.
+   *
    * @param password das gerade eingegebene Passwort.
    * @return true, wenn die Eingabe OK ist, andernfalls false.
    */
@@ -338,9 +339,7 @@ public class PasswordDialog extends AbstractDialog
 		return (MAX_RETRIES - retries);
 	}
 
-  /**
-   * @see de.willuhn.jameica.gui.dialogs.AbstractDialog#getData()
-   */
+  @Override
   protected Object getData() throws Exception
   {
     return this.enteredPassword;
diff --git a/src/de/willuhn/jameica/gui/dialogs/WaitDialog.java b/src/de/willuhn/jameica/gui/dialogs/WaitDialog.java
index d3fee9d..1aaee7e 100644
--- a/src/de/willuhn/jameica/gui/dialogs/WaitDialog.java
+++ b/src/de/willuhn/jameica/gui/dialogs/WaitDialog.java
@@ -29,16 +29,18 @@ import de.willuhn.util.ApplicationException;
 
 /**
  * Warte-Dialog, der einen Text und einen Fortschrittsbalken fuer ein Timeout anzeigt.
- * Zwei Anwendungsbeispiele:
+ *
+ * <p>Zwei Anwendungsbeispiele:
  * <ul>
  *   <li>Der User soll einen USB-Stick mit einer Schluesseldatei einstecken. Waehrenddessen
  *       wird dieser Dialog anagezeigt.</li>
  *   <li>Der User soll eine PIN im Kartenleser eingeben.</li>
  * </ul>
- * Die Klasse ist abstrakt, damit in der abgeleiteten Klasse die Funktion <code>check()</code>
+ *
+ * <p>Die Klasse ist abstrakt, damit in der abgeleiteten Klasse die Funktion {@link #check()}
  * implementiert wird. Der Rueckgabe-Wert der Funktion entscheidet darueber, ob der Dialog
  * geschlossen werden soll oder weiter gewartet wird. Diese Funktion wird nach Ablauf jeder Sekunde
- * erneut aufgerufen. Solange, bis sie <code>true</code> zurueckliefert, oder das Timeout
+ * erneut aufgerufen. Solange, bis sie {@code true} zurueckliefert, oder das Timeout
  * abgelaufen ist.
  */
 public abstract class WaitDialog extends AbstractDialog
@@ -93,9 +95,9 @@ public abstract class WaitDialog extends AbstractDialog
   }
 
   /**
-   * Die Funktion liefert immer <code>null</code>.
-   * @see de.willuhn.jameica.gui.dialogs.AbstractDialog#getData()
+   * Die Funktion liefert immer {@code null}.
    */
+  @Override
   protected Object getData() throws Exception
   {
     return null;
@@ -120,9 +122,7 @@ public abstract class WaitDialog extends AbstractDialog
    */
   protected abstract boolean check();
 
-  /**
-   * @see de.willuhn.jameica.gui.dialogs.AbstractDialog#paint(org.eclipse.swt.widgets.Composite)
-   */
+  @Override
   protected void paint(Composite parent) throws Exception
   {
 
diff --git a/src/de/willuhn/jameica/gui/extension/Extension.java b/src/de/willuhn/jameica/gui/extension/Extension.java
index dab5d60..4e4828e 100644
--- a/src/de/willuhn/jameica/gui/extension/Extension.java
+++ b/src/de/willuhn/jameica/gui/extension/Extension.java
@@ -12,17 +12,18 @@ package de.willuhn.jameica.gui.extension;
 
 /**
  * Basis-Interface aller Extensions.
- * Jede Komponente, die in Jameica andere Komponenten (zB Context-Menus)
+ *
+ * <p>Jede Komponente, die in Jameica andere Komponenten (zB Context-Menus)
  * erweitern will, muss dieses Interface implementieren und einen
- * parameterlosen Konstruktor mit dem Modifier <code>public</code>
+ * parameterlosen Konstruktor mit dem Modifier {@code public}
  * besitzen, um korrekt registriert zu werden.
  */
 public interface Extension
 {
   /**
    * Diese Funktion wird von der ExtensionRegistry aufgerufen.
-   * Die Funktion erhaelt als Parameter die zu erweiternde Komponente.
-   * @param extendable
+   *
+   * @param extendable die zu erweiternde Komponente
    */
   public void extend(Extendable extendable);
 }
diff --git a/src/de/willuhn/jameica/gui/extension/package.html b/src/de/willuhn/jameica/gui/extension/package.html
index 0ed48ba..6c6d271 100755
--- a/src/de/willuhn/jameica/gui/extension/package.html
+++ b/src/de/willuhn/jameica/gui/extension/package.html
@@ -36,7 +36,7 @@
       keine eigene Navigation oder eigene Menus mitbringen
       sondern stattdessen die existierenden um Funktionen
       erweitern.
-      <br/>
+      <br>
       Genau für diesen Zweck existiert das Extension-System.
 	</p>
 	
@@ -48,28 +48,26 @@
       <code>Extension</code> implementieren), welche die
       Extendables um zusätzliche Funktionalität erweitern.
 	</p>
-      
+
+    <h3>Schritt 1 (Registrierung der Erweiterungen):</h3>
     <p>
-      <b>Schritt 1 (Registrierung der Erweiterungen):</b>
-	  <br/>
 	  Bevor eine erweiterbare Komponente (also ein Extendable) erweitert
 	  werden kann, muss Jameica herausfinden, welche Erweiterungen überhaupt
 	  existieren.
-	  <br/>
+	  <br>
 	  Bsp.: Bevor der Navigations-Baum (linkes Frame in Jameica)
 	  gezeichnet wird, prüft Jameica für jedes Element des Baumes, ob Erweiterungen
 	  vorliegen. Ist dies der Fall, wird jeweils deren Methode
 	  <code>extend(Extendable)</code> aufgerufen.
-	  <br/>
+	  <br>
 	  Eine Extension muss im System registriert sein, um angesprochen
 	  werden zu können. Dies geschieht wiederrum automatisch (durch Definition
 	  der Erweiterungen in der Manifest-Datei (plugin.xml)) oder manuell
 	  durch Aufruf von <code>ExtensionRegistry#register(Extension e, String[] extendableIDs)</code>).
-	  
-	  <p>
+      <br>
 	  Format der Registrierung in plugin.xml:
-	  
-<pre>
+    </p>
+<pre><code>
 &lt;plugin&gt;
   [...]
   <span class="unimportant">
@@ -91,21 +89,18 @@
   &lt;/extensions&gt;
   </span>
 &lt;/plugin&gt;
-</pre>
-	  </p>
-    </p>
-    
+    </code></pre>
 
+    <h3>Schritt 2 (Durchführung der Erweiterung):</h3>
 	<p>
-      <b>Schritt 2 (Durchführung der Erweiterung):</b>
-      <br/>
       Jedes Extendable besitzt eine ID (Funktion <code>getExtendableID()</code>),
       über die es in ganz Jameica eindeutig identifizierbar ist.
       Bevor die erweiterbare Komponente nun aktiviert wird (bei Context-Menus
       ist das z.Bsp. der Moment unmittelbar vor dem Zeichnen auf dem Bildschirm)
       muss sie der ExtensionRegistry Bescheid geben, dass sie nun noch erweitert
       werden kann. Bsp:
-      <pre>
+    </p>
+      <pre><code>
 public class AddressList extends ContextMenu implements Extendable
 {
   public AddressList()
@@ -120,8 +115,7 @@ public class AddressList extends ContextMenu implements Extendable
     <span class="important">ExtensionRegistry.extend(this);</span>
   }
 }       
-      </pre>
-    </p>
+      </code></pre>
 
   </body>
 </html>
diff --git a/src/de/willuhn/jameica/gui/input/AbstractInput.java b/src/de/willuhn/jameica/gui/input/AbstractInput.java
index 7c5d977..5a34f41 100644
--- a/src/de/willuhn/jameica/gui/input/AbstractInput.java
+++ b/src/de/willuhn/jameica/gui/input/AbstractInput.java
@@ -68,7 +68,7 @@ public abstract class AbstractInput implements Input
   }
   
   /**
-   * Liefert die Stylebits (GridData-Settings), welche zum Erstellen des Widgets
+   * Liefert die Stylebits ({@link GridData}-Settings), welche zum Erstellen des Widgets
    * verwendet werden.
    * @return die Style.Bits.
    */
@@ -77,17 +77,13 @@ public abstract class AbstractInput implements Input
     return GridData.FILL_HORIZONTAL;
   }
 
-  /**
-   * @see de.willuhn.jameica.gui.input.Input#addListener(org.eclipse.swt.widgets.Listener)
-   */
+  @Override
   public void addListener(Listener l)
 	{
 		listeners.add(l);
 	}
 
-  /**
-   * @see de.willuhn.jameica.gui.input.Input#setComment(java.lang.String)
-   */
+  @Override
   public void setComment(String comment)
   {
     this.comment = comment;
@@ -98,17 +94,13 @@ public abstract class AbstractInput implements Input
 		}
   }
 
-  /**
-   * @see de.willuhn.jameica.gui.Part#paint(org.eclipse.swt.widgets.Composite)
-   */
+  @Override
   public final void paint(Composite parent)
   {
     paint(parent,240);
   }
 
-  /**
-   * @see de.willuhn.jameica.gui.input.Input#paint(org.eclipse.swt.widgets.Composite, int)
-   */
+  @Override
   public final void paint(Composite parent,int width)
   {
 		boolean hasComment = this.comment != null;
@@ -263,11 +255,13 @@ public abstract class AbstractInput implements Input
    * Definiert eine Liste von Zeichen, die eingegeben werden koennen.
    * Wird diese Funktion verwendet, dann duerfen nur noch die hier
    * angegebenen Zeichen eingegeben werden.
-   * Werden beide Funktionen <code>setValidChars</code> <b>und</b>
-   * <code>setInvalidChars</code> benutzt, kann nur noch die verbleibende
+   *
+   * <p>Werden beide Funktionen {@link #setValidChars(String)} <b>und</b>
+   * {@link #setInvalidChars(String)} benutzt, kann nur noch die verbleibende
    * Restmenge eingegeben werden. Das sind die Zeichen, die in validChars
-   * angegeben und in invalidChars nicht enthalten sind. 
-   * @param chars
+   * angegeben und in invalidChars nicht enthalten sind.
+   *
+   * @param chars erlaubte Zeichen
    */
   public void setValidChars(String chars)
   {
@@ -278,16 +272,16 @@ public abstract class AbstractInput implements Input
    * Definiert eine Liste von Zeichen, die nicht eingegeben werden koennen.
    * Wird diese Funktion verwendet, dann duerfen die angegebenen Zeichen nicht
    * mehr verwendet werden.
-   * @param chars
+   *
+   * @param chars nicht-erlaubte Zeichen
+   * @see #setValidChars(String)
    */
   public void setInvalidChars(String chars)
   {
     this.invalidChars = chars;
   }
 
-  /**
-   * @see de.willuhn.jameica.gui.input.Input#isMandatory()
-   */
+  @Override
   public boolean isMandatory()
   {
     return this.mandatory && Application.getConfig().getMandatoryCheck();
@@ -331,9 +325,7 @@ public abstract class AbstractInput implements Input
     }
   }
   
-  /**
-   * @see de.willuhn.jameica.gui.input.Input#setMandatory(boolean)
-   */
+  @Override
   public void setMandatory(boolean mandatory)
   {
     // Wenn das Control bereits gezeichnet wurde und
@@ -354,17 +346,13 @@ public abstract class AbstractInput implements Input
     }
   }
 
-  /**
-   * @see de.willuhn.jameica.gui.input.Input#getName()
-   */
+  @Override
   public String getName()
   {
     return this.name;
   }
 
-  /**
-   * @see de.willuhn.jameica.gui.input.Input#setName(java.lang.String)
-   */
+  @Override
   public void setName(String name)
   {
     this.name = name;
@@ -384,9 +372,7 @@ public abstract class AbstractInput implements Input
     }
   }
 
-  /**
-   * @see de.willuhn.jameica.gui.input.Input#hasChanged()
-   */
+  @Override
   public boolean hasChanged()
   {
     Object newValue = getValue();
@@ -405,23 +391,18 @@ public abstract class AbstractInput implements Input
     }
   }
 
-  /**
-   * @see de.willuhn.jameica.gui.input.Input#setData(java.lang.String, java.lang.Object)
-   */
+  @Override
   public void setData(String key, Object data)
   {
     this.data.put(key,data);
   }
 
-  /**
-   * @see de.willuhn.jameica.gui.input.Input#getData(java.lang.String)
-   */
+  @Override
   public Object getData(String key)
   {
     return this.data.get(key);
   }
-  
-  
+
 }
 
 /*********************************************************************
diff --git a/src/de/willuhn/jameica/gui/input/ButtonInput.java b/src/de/willuhn/jameica/gui/input/ButtonInput.java
index 911f4eb..d9057ab 100644
--- a/src/de/willuhn/jameica/gui/input/ButtonInput.java
+++ b/src/de/willuhn/jameica/gui/input/ButtonInput.java
@@ -54,9 +54,7 @@ public abstract class ButtonInput extends AbstractInput
    */
   public abstract Control getClientControl(Composite parent);
   
-  /**
-   * @see de.willuhn.jameica.gui.input.Input#getControl()
-   */
+  @Override
   public final Control getControl()
   {
     if (comp != null && !comp.isDisposed())
@@ -117,11 +115,14 @@ public abstract class ButtonInput extends AbstractInput
 
 	/**
 	 * Definiert den auf dem Button anzuzeigenden Text.
-	 * Leider kann auf dem Button nicht Image <b>und</b> Text
-	 * angezeigt werden. Wenn also sowohl <code>setButtonText</code> und
-	 * <code>setButtonImage</code> gesetzt werden, wird nur das Image
+   *
+   * <p>Leider kann auf dem Button nicht Image <b>und</b> Text
+   * angezeigt werden. Wenn also sowohl {@link #setButtonText(String)} und
+   * {@link #setButtonImage(Image)} gesetzt werden, wird nur das Image
 	 * angezeigt.
-	 * Wird nichts von beiden gesetzt, wird ein Image mit einer Lupe angezeigt.
+   *
+   * <p>Wird nichts von beiden gesetzt, wird ein Image mit einer Lupe angezeigt.
+   *
    * @param text auf dem Button anzuzeigender Text.
    */
   public final void setButtonText(String text)
@@ -153,9 +154,7 @@ public abstract class ButtonInput extends AbstractInput
 		buttonListeners.add(l);
 	}
 
-  /**
-   * @see de.willuhn.jameica.gui.input.Input#focus()
-   */
+  @Override
   public final void focus()
   {
     this.focus = true;
@@ -163,25 +162,19 @@ public abstract class ButtonInput extends AbstractInput
       clientControl.setFocus();
   }
 
-  /**
-   * @see de.willuhn.jameica.gui.input.Input#disable()
-   */
+  @Override
   public final void disable()
   {
     setEnabled(false);
   }
 
-  /**
-   * @see de.willuhn.jameica.gui.input.Input#enable()
-   */
+  @Override
   public final void enable()
   {
     setEnabled(true);
   }
 
-  /**
-   * @see de.willuhn.jameica.gui.input.Input#setEnabled(boolean)
-   */
+  @Override
   public void setEnabled(boolean enabled)
   {
     if (enabled)
@@ -249,9 +242,7 @@ public abstract class ButtonInput extends AbstractInput
 		}
 	}
   
-  /**
-   * @see de.willuhn.jameica.gui.input.Input#isEnabled()
-   */
+  @Override
   public boolean isEnabled()
   {
     return buttonEnabled && clientControlEnabled;
@@ -259,9 +250,7 @@ public abstract class ButtonInput extends AbstractInput
   
   private boolean inUpdate = false;
 
-  /**
-   * @see de.willuhn.jameica.gui.input.AbstractInput#update()
-   */
+  @Override
   protected void update() throws OperationCanceledException
   {
     if (inUpdate)
diff --git a/src/de/willuhn/jameica/gui/input/ColorInput.java b/src/de/willuhn/jameica/gui/input/ColorInput.java
index df97be3..f7eef7b 100644
--- a/src/de/willuhn/jameica/gui/input/ColorInput.java
+++ b/src/de/willuhn/jameica/gui/input/ColorInput.java
@@ -56,9 +56,7 @@ public class ColorInput extends ButtonInput
     });
   }
 
-  /**
-   * @see de.willuhn.jameica.gui.input.ButtonInput#getClientControl(org.eclipse.swt.widgets.Composite)
-   */
+  @Override
   public Control getClientControl(Composite parent)
   {
     label = GUI.getStyleFactory().createText(parent);
@@ -77,18 +75,19 @@ public class ColorInput extends ButtonInput
 
   /**
    * Liefert die aktuell ausgewaehlte Farbe.
-   * Rueckgabewert vom Typ <code>Color</code>.
-   * @see de.willuhn.jameica.gui.input.Input#getValue()
+   *
+   * @return Rueckgabewert vom Typ {@link Color}.
    */
+  @Override
   public Object getValue()
   {
     return color;
   }
 
   /**
-   * Erwartet ein Objekt vom Typ <code>Color</code>.
-   * @see de.willuhn.jameica.gui.input.Input#setValue(java.lang.Object)
+   * Erwartet ein Objekt vom Typ {@link Color}.
    */
+  @Override
   public void setValue(Object value)
   {
     if (value == null)
@@ -115,8 +114,8 @@ public class ColorInput extends ButtonInput
   
   /**
    * Leer ueberschrieben, weil wir hier keine Farbaenderungen wollen
-   * @see de.willuhn.jameica.gui.input.AbstractInput#update()
    */
+  @Override
   protected void update() throws OperationCanceledException
   {
   }
diff --git a/src/de/willuhn/jameica/gui/input/DateInput.java b/src/de/willuhn/jameica/gui/input/DateInput.java
index 1a2ae72..260c872 100644
--- a/src/de/willuhn/jameica/gui/input/DateInput.java
+++ b/src/de/willuhn/jameica/gui/input/DateInput.java
@@ -101,8 +101,8 @@ public class DateInput implements Input
 
   /**
    * Deaktiviert das komplette Control (Button und Text).
-   * @see de.willuhn.jameica.gui.input.Input#disable()
    */
+  @Override
   public void disable()
   {
     this.input.disable();
@@ -110,34 +110,30 @@ public class DateInput implements Input
 
   /**
    * Aktiviert das komplette Control (Button und Text).
-   * @see de.willuhn.jameica.gui.input.Input#enable()
    */
+  @Override
   public void enable()
   {
     this.input.enable();
   }
 
-  /**
-   * @see de.willuhn.jameica.gui.input.Input#focus()
-   */
+  @Override
   public void focus()
   {
     this.input.focus();
   }
 
-  /**
-   * @see de.willuhn.jameica.gui.input.Input#getControl()
-   */
+  @Override
   public Control getControl()
   {
     return this.input.getControl();
   }
 
   /**
-   * Liefert ein Objekt vom Typ <code>java.util.Date</code> oder null,
+   * Liefert ein Objekt vom Typ {@link Date} oder {@code null},
    * wenn das Datum nicht geparst werden konnte.
-   * @see de.willuhn.jameica.gui.input.Input#getValue()
    */
+  @Override
   public Object getValue()
   {
     // Wir liefern grundsaetzlich den Text aus dem Eingabe-Feld,
@@ -168,9 +164,7 @@ public class DateInput implements Input
     }
   }
 
-  /**
-   * @see de.willuhn.jameica.gui.input.Input#isEnabled()
-   */
+  @Override
   public boolean isEnabled()
   {
     return this.input.isEnabled();
@@ -178,8 +172,8 @@ public class DateInput implements Input
 
   /**
    * Aktiviert oder deaktiviert das komplette Control (Button und Text).
-   * @see de.willuhn.jameica.gui.input.Input#setEnabled(boolean)
    */
+  @Override
   public void setEnabled(boolean enabled)
   {
     this.input.setEnabled(enabled);
@@ -201,9 +195,7 @@ public class DateInput implements Input
     this.input.disableClientControl();
   }
   
-  /**
-   * @see de.willuhn.jameica.gui.input.Input#setValue(java.lang.Object)
-   */
+  @Override
   public void setValue(Object value)
   {
     // Wenn nichts uebergeben wird, machen wir nur die Werte leer.
@@ -257,26 +249,19 @@ public class DateInput implements Input
     this.dialog.setTitle(title);
   }
 
-  /**
-   * @see de.willuhn.jameica.gui.input.Input#addListener(org.eclipse.swt.widgets.Listener)
-   */
+  @Override
   public final void addListener(Listener l)
   {
     this.input.addListener(l);
   }
 
-  /**
-   * @see de.willuhn.jameica.gui.input.Input#paint(org.eclipse.swt.widgets.Composite)
-   */
+  @Override
   public final void paint(Composite parent)
   {
     this.input.setMandatory(this.isMandatory());
     this.input.paint(parent);
     
     this.input.getControl().addFocusListener(new FocusAdapter() {
-      /**
-       * @see org.eclipse.swt.events.FocusAdapter#focusLost(org.eclipse.swt.events.FocusEvent)
-       */
       @Override
       public void focusLost(FocusEvent e)
       {
@@ -287,34 +272,26 @@ public class DateInput implements Input
 
   }
 
-  /**
-   * @see de.willuhn.jameica.gui.input.Input#paint(org.eclipse.swt.widgets.Composite, int)
-   */
+  @Override
   public final void paint(Composite parent, int width)
   {
     this.input.setMandatory(this.isMandatory());
     this.input.paint(parent,width);
   }
 
-  /**
-   * @see de.willuhn.jameica.gui.input.Input#setComment(java.lang.String)
-   */
+  @Override
   public void setComment(String comment)
   {
     this.input.setComment(comment);
   }
 
-  /**
-   * @see de.willuhn.jameica.gui.input.Input#isMandatory()
-   */
+  @Override
   public boolean isMandatory()
   {
     return this.mandatory;
   }
 
-  /**
-   * @see de.willuhn.jameica.gui.input.Input#setMandatory(boolean)
-   */
+  @Override
   public void setMandatory(boolean mandatory)
   {
     // Wenn das Control bereits gezeichnet wurde und
@@ -336,17 +313,13 @@ public class DateInput implements Input
     }
   }
 
-  /**
-   * @see de.willuhn.jameica.gui.input.Input#getName()
-   */
+  @Override
   public String getName()
   {
     return this.name;
   }
 
-  /**
-   * @see de.willuhn.jameica.gui.input.Input#setName(java.lang.String)
-   */
+  @Override
   public void setName(String name)
   {
     this.name = name;
@@ -367,9 +340,7 @@ public class DateInput implements Input
 
   }
 
-  /**
-   * @see de.willuhn.jameica.gui.input.Input#hasChanged()
-   */
+  @Override
   public boolean hasChanged()
   {
     Object newValue = this.input.getText();
@@ -388,17 +359,13 @@ public class DateInput implements Input
     }
   }
   
-  /**
-   * @see de.willuhn.jameica.gui.input.Input#setData(java.lang.String, java.lang.Object)
-   */
+  @Override
   public void setData(String key, Object data)
   {
     this.data.put(key,data);
   }
 
-  /**
-   * @see de.willuhn.jameica.gui.input.Input#getData(java.lang.String)
-   */
+  @Override
   public Object getData(String key)
   {
     return this.data.get(key);
diff --git a/src/de/willuhn/jameica/gui/input/DecimalInput.java b/src/de/willuhn/jameica/gui/input/DecimalInput.java
index 9f91509..e3fd267 100644
--- a/src/de/willuhn/jameica/gui/input/DecimalInput.java
+++ b/src/de/willuhn/jameica/gui/input/DecimalInput.java
@@ -86,9 +86,7 @@ public class DecimalInput extends TextInput
     });
   }
 
-  /**
-   * @see de.willuhn.jameica.gui.input.Input#getControl()
-   */
+  @Override
   public Control getControl()
   {
 		Control c = super.getControl();
@@ -144,10 +142,10 @@ public class DecimalInput extends TextInput
   }
 
   /**
-   * Die Funktion liefert ein Objekt des Typs java.lang.Double zurueck
-   * oder <code>null</code> wenn nicht eingegeben wurde.
-   * @see de.willuhn.jameica.gui.input.Input#getValue()
+   * Die Funktion liefert ein Objekt des Typs {@link java.lang.Double} zurueck
+   * oder {@code null}, wenn nichts eingegeben wurde.
    */
+  @Override
   public Object getValue()
   {
     Number n = this.getNumber();
@@ -203,9 +201,9 @@ public class DecimalInput extends TextInput
   }
 
   /**
-   * Erwartet ein Objekt des Typs java.lang.Double.
-   * @see de.willuhn.jameica.gui.input.Input#setValue(java.lang.Object)
+   * Erwartet ein Objekt des Typs {@link java.lang.Double}.
    */
+  @Override
   public void setValue(Object value)
   {
     if (value instanceof Number)
diff --git a/src/de/willuhn/jameica/gui/input/DialogInput.java b/src/de/willuhn/jameica/gui/input/DialogInput.java
index 60aff80..1a1c771 100644
--- a/src/de/willuhn/jameica/gui/input/DialogInput.java
+++ b/src/de/willuhn/jameica/gui/input/DialogInput.java
@@ -24,18 +24,19 @@ import de.willuhn.logging.Logger;
 /**
  * Eingabe-Feld, welches beim Klick auf den Button einen Dialog zur Auswahl
  * eines Objektes oeffnet.
- * Achtung: Der Dialog liefert beim Schliessen ein lapidares <code>Object</code>
+ *
+ * <p>Achtung: Der Dialog liefert beim Schliessen ein lapidares {@link Object}
  * zurueck. Da das Text-Eingabefeld natuerlich nicht wissen kann,
  * wie es das anzeigen soll, wird der Rueckgabewert des Dialogs
- * nicht ausgewertet. Stattdessen muss an den Dialog via <code>addCloseListener</code>
+ * nicht ausgewertet. Stattdessen muss an den Dialog via {@link #addListener(Listener)}
  * ein Listener angehangen werden, der beim Schliessen des Dialogs ausgeloest
- * wird. In dessen <code>event.data</code> befindet sich dann das jeweilige
- * Objekt. Das ist z.Bsp. bei <code>ListDialog</code> ein Fachobjekt aus der
- * Datenbank oder bei <code>CalendarDialog</code> ein <code>java.util.Date</code>-Objekt.
- * <p>
- * Hinweis: Der Listener darf nicht an das Input-Feld selbst angehangen werden,
+ * wird. In dessen {@code event.data} befindet sich dann das jeweilige
+ * Objekt. Das ist z.Bsp. bei {@link de.willuhn.jameica.gui.dialogs.ListDialog} ein Fachobjekt aus der
+ * Datenbank oder bei {@link de.willuhn.jameica.gui.dialogs.CalendarDialog} ein {@link java.util.Date}-Objekt.
+ *
+ * <p>Hinweis: Der Listener darf nicht an das Input-Feld selbst angehangen werden,
  * denn die werden bei jedem Focus-Wechsel ausgeloest.
- * </p>
+ *
  * @author willuhn
  */
 public class DialogInput extends ButtonInput
@@ -51,9 +52,10 @@ public class DialogInput extends ButtonInput
 
   /**
    * Erzeugt ein neues Eingabefeld und schreibt den uebergebenen Wert rein.
-   * Der dialog sollte anschliessend noch mittels setDialog() gesetzt werden.
+   * Der Dialog sollte anschliessend noch mittels {@link #setDialog(AbstractDialog)} gesetzt werden.
    * Dieser Konstruktor ist nur eine Convenience-Funktion, um den Dialog
    * auch nach der Erzeugung des Input-Objektes setzen zu koennen.
+   *
    * @param value der initial einzufuegende Wert fuer das Eingabefeld.
    */
   public DialogInput(String value)
@@ -104,8 +106,8 @@ public class DialogInput extends ButtonInput
   /**
    * Liefert das Objekt, welches in dem Dialog ausgewaehlt wurde.
    * Fuer gewoehnlich ist das ein Fach-Objekt.
-   * @see de.willuhn.jameica.gui.input.Input#getValue()
    */
+  @Override
   public Object getValue()
   {
     return choosen;
@@ -158,21 +160,21 @@ public class DialogInput extends ButtonInput
   }
 
   /**
-   * @see de.willuhn.jameica.gui.input.Input#setValue(java.lang.Object)
-   * Speichert jedoch nicht den anzuzeigenden Text sondern das FachObjekt.
+   * Wie {@link de.willuhn.jameica.gui.input.Input#setValue(java.lang.Object)},
+   * speichert jedoch nicht den anzuzeigenden Text sondern das FachObjekt.
    * Sprich: Das Objekt, welches auch geliefert wird, wenn der Dialog
    * zur Auswahl des Objektes verwendet werden wuerde.
-   * Soll der anzuzeigende Text geaendert werden, dann bitte die
-   * Funktion <code>setText(String)</code> verwenden.
+   *
+   * <p>Soll der anzuzeigende Text geaendert werden, dann bitte die
+   * Funktion {@link #setText(String)} verwenden.
    */
+  @Override
   public void setValue(Object value)
   {
   	this.choosen = value;
   }
 
-  /**
-   * @see de.willuhn.jameica.gui.input.ButtonInput#getClientControl(org.eclipse.swt.widgets.Composite)
-   */
+  @Override
   public Control getClientControl(Composite parent) {
     text = GUI.getStyleFactory().createText(parent);
   	if (value != null)
@@ -183,9 +185,7 @@ public class DialogInput extends ButtonInput
   	return text;
   }
 
-  /**
-   * @see de.willuhn.jameica.gui.input.AbstractInput#update()
-   */
+  @Override
   protected void update() throws OperationCanceledException
   {
     super.update();
@@ -205,10 +205,7 @@ public class DialogInput extends ButtonInput
     text.setBackground(color);
   }
 
-  /**
-   * Ueberschrieben, weil nur der angezeigte Text interessiert.
-   * @see de.willuhn.jameica.gui.input.Input#hasChanged()
-   */
+  @Override
   public boolean hasChanged()
   {
     Object newValue = getText();
diff --git a/src/de/willuhn/jameica/gui/input/FontInput.java b/src/de/willuhn/jameica/gui/input/FontInput.java
index cee9c51..275c028 100644
--- a/src/de/willuhn/jameica/gui/input/FontInput.java
+++ b/src/de/willuhn/jameica/gui/input/FontInput.java
@@ -57,9 +57,7 @@ public class FontInput extends ButtonInput
     });
   }
 
-  /**
-   * @see de.willuhn.jameica.gui.input.ButtonInput#getClientControl(org.eclipse.swt.widgets.Composite)
-   */
+  @Override
   public Control getClientControl(Composite parent)
   {
     label = new CLabel(parent, SWT.NONE);
@@ -104,18 +102,18 @@ public class FontInput extends ButtonInput
 
   /**
    * Liefert die aktuell ausgewaehlte Schriftart.
-   * Rueckgabewert vom Typ <code>org.eclipse.swt.graphics.Font</code>.
-   * @see de.willuhn.jameica.gui.input.Input#getValue()
+   * Rueckgabewert vom Typ {@link org.eclipse.swt.graphics.Font}.
    */
+  @Override
   public Object getValue()
   {
     return font;
   }
 
   /**
-   * Erwartet ein Object vom Typ <code>org.eclipse.swt.graphics.Font</code>.
-   * @see de.willuhn.jameica.gui.input.Input#setValue(java.lang.Object)
+   * Erwartet ein Object vom Typ {@link org.eclipse.swt.graphics.Font}.
    */
+  @Override
   public void setValue(Object value)
   {
     if (value == null)
diff --git a/src/de/willuhn/jameica/gui/input/Input.java b/src/de/willuhn/jameica/gui/input/Input.java
index 787ee80..28b3daf 100644
--- a/src/de/willuhn/jameica/gui/input/Input.java
+++ b/src/de/willuhn/jameica/gui/input/Input.java
@@ -40,25 +40,28 @@ public interface Input extends Part
   public void setValue(Object value);
   
   /**
-   * Prueft, ob sich der Wert von <code>getValue()</code> seit dem
-   * letzten Aufruf von <code>hasChanged</code> geaendert hat.
-   * @return true, wenn sich der Wert geaendert hat, sonstfalse.
+   * Prueft, ob sich der Wert von {@link #getValue()} seit dem
+   * letzten Aufruf von {@code hasChanged()} geaendert hat.
+   * @return {@code true}, wenn sich der Wert geaendert hat, sonst {@code false}.
    */
   public boolean hasChanged();
 
   /**
    * Liefert das eigentliche Eingabecontrol. Es muss von jeder
    * abgeleiteten Klasse implementiert werden und das Eingabe-Feld
-   * zurueckliefern. Da der Implementierer das Composite benoetigt,
+   * zurueckliefern.
+   *
+   * <p>Da der Implementierer das Composite benoetigt,
    * in dem das Control positioniert werden soll, kann er sich
-   * der Methode getParent() in dieser Klasse bedienen.
+   * der Methode {@link AbstractInput#getParent()} in dieser Klasse bedienen.
+   *
    * @return das zu zeichnende Control.
    */
   public Control getControl();
 
   /**
    * Fuegt dem Eingabe-Feld einen Listener hinzu, der bei jedem Focus-Wechsel ausgeloest wird.
-   * Besteht das Eingabe-Feld aus mehreren Teilen (z.Bsp. bei SearchInput aus Eingabe-Feld
+   * Besteht das Eingabe-Feld aus mehreren Teilen (z.Bsp. bei {@link SearchInput} aus Eingabe-Feld
    * + Knopf dahinter) dann wird der Listener bei Focus-Wechsel jedes dieser
    * Teile ausgeloest.
    * @param l zu registrierender Listener.
@@ -68,10 +71,12 @@ public interface Input extends Part
   /**
    * Fuegt hinter das Eingabefeld noch einen Kommentar.
    * Existiert der Kommentar bereits, wird er gegen den neuen ersetzt.
-   * Hinweis: Wird die Funktion nicht aufgerufen, bevor das Eingabe-Feld
+   *
+   * <p>Hinweis: Wird die Funktion nicht aufgerufen, bevor das Eingabe-Feld
    * gemalt wird, dann wird es auch nicht angezeigt. Denn vorm Malen
    * muss bekannt sein, ob es angezeigt werden soll, damit der Platz
    * dafuer reserviert werden kann.
+   *
    * @param comment Kommentar.
    */
   public void setComment(String comment);
@@ -82,6 +87,7 @@ public interface Input extends Part
    * @param parent Das Composite, in dem das Eingabefeld gemalt werden soll.
    * @see de.willuhn.jameica.gui.Part#paint(org.eclipse.swt.widgets.Composite)
    */
+  @Override
   public void paint(Composite parent);
 
   /**
diff --git a/src/de/willuhn/jameica/gui/input/IntegerInput.java b/src/de/willuhn/jameica/gui/input/IntegerInput.java
index df5a7b3..329bff0 100644
--- a/src/de/willuhn/jameica/gui/input/IntegerInput.java
+++ b/src/de/willuhn/jameica/gui/input/IntegerInput.java
@@ -42,9 +42,7 @@ public class IntegerInput extends TextInput
   	super(value < 0 ? "" : "" +value);
   }
 
-  /**
-   * @see de.willuhn.jameica.gui.input.Input#getControl()
-   */
+  @Override
   public Control getControl()
   {
 		Control c = super.getControl();
@@ -63,10 +61,10 @@ public class IntegerInput extends TextInput
   }
 
   /**
-   * Die Funktion liefert ein Objekt des Typs <code>java.lang.Integer</code> zurueck
-   * oder <code>null</code> wenn nichts eingegeben wurde.
-   * @see de.willuhn.jameica.gui.input.Input#getValue()
+   * Die Funktion liefert ein Objekt des Typs {@link java.lang.Integer} zurueck
+   * oder {@code null} wenn nichts eingegeben wurde.
    */
+  @Override
   public Object getValue()
   {
     Object value = super.getValue();
@@ -83,9 +81,9 @@ public class IntegerInput extends TextInput
   }
 
   /**
-   * Erwartet ein Objekt des Typs <code>java.lang.Integer</code>.
-   * @see de.willuhn.jameica.gui.input.Input#setValue(java.lang.Object)
+   * Erwartet ein Objekt des Typs {@link java.lang.Integer}.
    */
+  @Override
   public void setValue(Object value)
   {
     if (value == null)
diff --git a/src/de/willuhn/jameica/gui/input/LabelInput.java b/src/de/willuhn/jameica/gui/input/LabelInput.java
index 326e2f6..d342ba2 100644
--- a/src/de/willuhn/jameica/gui/input/LabelInput.java
+++ b/src/de/willuhn/jameica/gui/input/LabelInput.java
@@ -39,9 +39,7 @@ public class LabelInput extends AbstractInput
     this.value = value;
   }
 
-  /**
-   * @see de.willuhn.jameica.gui.input.Input#getControl()
-   */
+  @Override
   public Control getControl()
   {
     label = GUI.getStyleFactory().createLabel(getParent(),SWT.NONE);
@@ -58,24 +56,21 @@ public class LabelInput extends AbstractInput
   }
 
   /**
-   * Liefert den angezeigten Text.
-   * @see de.willuhn.jameica.gui.input.Input#getValue()
+   * Liefert den angezeigten Text vom Typ {@link java.lang.String}.
    */
+  @Override
   public Object getValue()
   {
     return value;
   }
 
-  /**
-   * @see de.willuhn.jameica.gui.input.Input#focus()
-   */
+  @Override
   public void focus()
   {
   }
 
   /**
-   * Erwartet ein Objekt des Typs <code>java.lang.String</code>.
-   * @see de.willuhn.jameica.gui.input.Input#setValue(java.lang.Object)
+   * Erwartet ein Objekt des Typs {@link java.lang.String}.
    */
   public void setValue(Object value)
   {
@@ -100,38 +95,28 @@ public class LabelInput extends AbstractInput
       this.label.setForeground(this.color.getSWTColor());
   }
 
-  /**
-   * @see de.willuhn.jameica.gui.input.Input#disable()
-   */
+  @Override
   public void disable()
   {
   }
 
-  /**
-   * @see de.willuhn.jameica.gui.input.Input#enable()
-   */
+  @Override
   public void enable()
   {
   }
 
-  /**
-   * @see de.willuhn.jameica.gui.input.Input#isEnabled()
-   */
+  @Override
   public boolean isEnabled()
   {
     return false;
   }
 
-  /**
-   * @see de.willuhn.jameica.gui.input.Input#setEnabled(boolean)
-   */
+  @Override
   public void setEnabled(boolean enabled)
   {
   }
 
-  /**
-   * @see de.willuhn.jameica.gui.input.AbstractInput#update()
-   */
+  @Override
   protected void update() throws OperationCanceledException
   {
     // Wir machen hier nichts
diff --git a/src/de/willuhn/jameica/gui/input/LinkInput.java b/src/de/willuhn/jameica/gui/input/LinkInput.java
index 737727f..1d5cf86 100644
--- a/src/de/willuhn/jameica/gui/input/LinkInput.java
+++ b/src/de/willuhn/jameica/gui/input/LinkInput.java
@@ -41,9 +41,7 @@ public class LinkInput extends AbstractInput
     this.text = text;
   }
 
-  /**
-   * @see de.willuhn.jameica.gui.input.Input#getControl()
-   */
+  @Override
   public Control getControl()
   {
     if (this.link != null)
@@ -67,17 +65,15 @@ public class LinkInput extends AbstractInput
   }
 
   /**
-   * Liefert den angezeigten Text.
-   * @see de.willuhn.jameica.gui.input.Input#getValue()
+   * Liefert den angezeigten Text vom Typ {@link java.lang.String}.
    */
+  @Override
   public Object getValue()
   {
     return this.text;
   }
 
-  /**
-   * @see de.willuhn.jameica.gui.input.Input#focus()
-   */
+  @Override
   public void focus()
   {
     this.focus = true;
@@ -86,9 +82,9 @@ public class LinkInput extends AbstractInput
   }
 
   /**
-   * Erwartet ein Objekt des Typs <code>java.lang.String</code>.
-   * @see de.willuhn.jameica.gui.input.Input#setValue(java.lang.Object)
+   * Erwartet ein Objekt des Typs {@link java.lang.String}.
    */
+  @Override
   public void setValue(Object value)
   {
     this.text = value != null ? value.toString() : "";
@@ -96,33 +92,25 @@ public class LinkInput extends AbstractInput
       this.link.setText(SWTUtil.escapeLabel(this.text));
   }
 
-  /**
-   * @see de.willuhn.jameica.gui.input.Input#disable()
-   */
+  @Override
   public void disable()
   {
     this.setEnabled(false);
   }
 
-  /**
-   * @see de.willuhn.jameica.gui.input.Input#enable()
-   */
+  @Override
   public void enable()
   {
     this.setEnabled(true);
   }
 
-  /**
-   * @see de.willuhn.jameica.gui.input.Input#isEnabled()
-   */
+  @Override
   public boolean isEnabled()
   {
     return this.enabled;
   }
 
-  /**
-   * @see de.willuhn.jameica.gui.input.Input#setEnabled(boolean)
-   */
+  @Override
   public void setEnabled(boolean enabled)
   {
     this.enabled = enabled;
@@ -131,18 +119,17 @@ public class LinkInput extends AbstractInput
   }
 
   /**
-   * @see de.willuhn.jameica.gui.input.AbstractInput#addListener(org.eclipse.swt.widgets.Listener)
-   * Ueberschrieben, weil die Listener in AbstractInput sonst an zu vielen Stellen
-   * (auch bei Focus-Wechsel ausgeloest werden wuerden.
+   * Methode {@link AbstractInput#addListener(org.eclipse.swt.widgets.Listener)}
+   * ueberschrieben, weil die Listener sonst an zu vielen Stellen
+   * (auch bei Focus-Wechsel) ausgeloest werden wuerden.
    */
+  @Override
   public void addListener(Listener l)
   {
     this.listeners.add(l);
   }
 
-  /**
-   * @see de.willuhn.jameica.gui.input.AbstractInput#update()
-   */
+  @Override
   protected void update() throws OperationCanceledException
   {
     // Wir machen hier nichts
diff --git a/src/de/willuhn/jameica/gui/input/SearchInput.java b/src/de/willuhn/jameica/gui/input/SearchInput.java
index b67d8e6..40c9201 100644
--- a/src/de/willuhn/jameica/gui/input/SearchInput.java
+++ b/src/de/willuhn/jameica/gui/input/SearchInput.java
@@ -33,12 +33,13 @@ import de.willuhn.logging.Logger;
 
 /**
  * Erzeugt eine Such-Box, in der man Text eingaben kann.
- * Kann prima zur Erstellung eines Suchfeldes genutzt werden,
+ *
+ * <p>Kann prima zur Erstellung eines Suchfeldes genutzt werden,
  * welches bei jeder Eingabe eines Zeichens eine Liste mit
  * Vorschlaegen anzeigen kann.
  * 
- * Beispiel fuer die Verwendung:
- * 
+ * <p>Beispiel fuer die Verwendung:
+ * <pre>{@code
  * project = new SearchInput() {
  *   public List startSearch(String text) {
  *     try {
@@ -57,6 +58,7 @@ import de.willuhn.logging.Logger;
  *   }
  * };
  * project.setValue(getTask().getProject());
+ * }</pre>
  *
  * @author willuhn
  */
@@ -109,10 +111,12 @@ public class SearchInput extends AbstractInput
   /**
    * Legt den Namen des Attributes fest, welches von den Objekten angezeigt werden
    * soll. Bei herkoemmlichen Beans wird also ein Getter mit diesem Namen aufgerufen. 
-   * Wird kein Attribut angegeben, wird bei Objekten des Typs <code>GenericObject</code>
-   * der Wert des Primaer-Attributes angezeigt, andernfalls der Wert von <code>toString()</code>.
-   * @param name Name des anzuzeigenden Attributes (muss im GenericObject
-   * via getAttribute(String) abrufbar sein).
+   *
+   * <p>Wird kein Attribut angegeben, wird bei Objekten des Typs {@link de.willuhn.datasource.GenericObject}
+   * der Wert des Primaer-Attributes angezeigt, andernfalls der Wert von {@link #toString()}.
+   *
+   * @param name Name des anzuzeigenden Attributes (muss via
+   * {@link de.willuhn.datasource.GenericObject#getAttribute(String)} abrufbar sein).
    */
   public void setAttribute(String name)
 	{
@@ -122,7 +126,7 @@ public class SearchInput extends AbstractInput
   
   /**
    * Definiert die maximal eingebbare Menge von Zeichen.
-   * @param maxLength
+   * @param maxLength Anzahl
    */
   public void setMaxLength(int maxLength)
   {
@@ -134,7 +138,7 @@ public class SearchInput extends AbstractInput
   /**
    * Legt fest, ab wieviel eingegebenen Zeichen die Suche starten soll.
    * @param length Mindest-Anzahl von Zeichen, ab der die Suche starten soll.
-   * Werte <= 0 werden ignoriert.
+   * Werte &le; 0 werden ignoriert.
    * Default: 1.
    */
   public void setStartAt(int length)
@@ -255,17 +259,13 @@ public class SearchInput extends AbstractInput
     return null;
   }
   
-  /**
-   * @see de.willuhn.jameica.gui.input.AbstractInput#addListener(org.eclipse.swt.widgets.Listener)
-   */
+  @Override
   public void addListener(Listener l)
   {
     this.listeners.add(l);
   }
 
-  /**
-   * @see de.willuhn.jameica.gui.input.Input#getControl()
-   */
+  @Override
   public Control getControl()
   {
     if (this.text != null && !this.text.isDisposed())
@@ -389,6 +389,7 @@ public class SearchInput extends AbstractInput
    * initial uebergebene.
    * @see de.willuhn.jameica.gui.input.Input#getValue()
    */
+  @Override
   public Object getValue()
   {
     if (this.text == null || this.text.isDisposed())
@@ -428,11 +429,7 @@ public class SearchInput extends AbstractInput
     }
   }
 
-
-  
-  /**
-   * @see de.willuhn.jameica.gui.input.Input#focus()
-   */
+  @Override
   public void focus()
   {
     this.focus = true;
@@ -441,26 +438,19 @@ public class SearchInput extends AbstractInput
       text.setFocus();
   }
 
-
-  /**
-   * @see de.willuhn.jameica.gui.input.Input#disable()
-   */
+  @Override
   public void disable()
   {
     setEnabled(false);
   }
 
-  /**
-   * @see de.willuhn.jameica.gui.input.Input#enable()
-   */
+  @Override
   public void enable()
   {
     setEnabled(true);
   }
 
-  /**
-   * @see de.willuhn.jameica.gui.input.Input#setEnabled(boolean)
-   */
+  @Override
   public void setEnabled(boolean enabled)
   {
     this.enabled = enabled;
@@ -474,9 +464,7 @@ public class SearchInput extends AbstractInput
     }
   }
 
-  /**
-   * @see de.willuhn.jameica.gui.input.Input#setValue(java.lang.Object)
-   */
+  @Override
   public void setValue(Object o)
   {
     this.value = o;
@@ -506,9 +494,7 @@ public class SearchInput extends AbstractInput
     }
   }
   
-  /**
-   * @see de.willuhn.jameica.gui.input.Input#isEnabled()
-   */
+  @Override
   public boolean isEnabled()
   {
     return enabled;
@@ -516,8 +502,8 @@ public class SearchInput extends AbstractInput
   
   /**
    * BUGZILLA 743
-   * @see de.willuhn.jameica.gui.input.AbstractInput#update()
    */
+  @Override
   protected void update() throws OperationCanceledException
   {
     super.update();
diff --git a/src/de/willuhn/jameica/gui/input/SelectInput.java b/src/de/willuhn/jameica/gui/input/SelectInput.java
index 80ad712..027e4d1 100644
--- a/src/de/willuhn/jameica/gui/input/SelectInput.java
+++ b/src/de/willuhn/jameica/gui/input/SelectInput.java
@@ -29,8 +29,8 @@ import de.willuhn.logging.Logger;
 
 /**
  * Ist zustaendig fuer Eingabefelder des Typs "Select" aka "Combo".
- * Wird die Combo-Box mit einer Liste von GenericObjects erzeugt,
- * dann wird dasPrimaer-Attribut eines jeden Objektes angezeigt.
+ * Wird die Combo-Box mit einer Liste von {@link GenericObject}s erzeugt,
+ * dann wird das Primaerattribut eines jeden Objektes angezeigt.
  * @author willuhn
  */
 public class SelectInput extends AbstractInput
@@ -49,14 +49,16 @@ public class SelectInput extends AbstractInput
 
   /**
    * Erzeugt eine neue Combo-Box und schreibt die Werte der uebergebenen Liste rein.
-   * Um Jameica von spezifischem Code aus de.willuhn.datasource zu befreien,
-   * sollte kuenftig besser der generische Konstruktor <code>List</code>,<code>Object</code>
-   * verwendet werden. Damit kann die Anwendung spaeter auch auf ein anderes Persistierungsframework
-   * umgestellt werden.
+   *
    * @param list Liste von Objekten.
    * @param preselected das Object, welches vorselektiert sein soll. Optional.
    * @throws RemoteException
+   * @deprecated Um Jameica von spezifischem Code aus de.willuhn.datasource zu befreien,
+   *    sollte kuenftig besser {@link SelectInput#SelectInput(List, Object)}
+   *    verwendet werden. Damit kann die Anwendung spaeter auch auf ein anderes Persistierungsframework
+   *    umgestellt werden.
    */
+  @Deprecated
   public SelectInput(GenericIterator list, GenericObject preselected) throws RemoteException
   {
     this(list != null ? PseudoIterator.asList(list) : null,preselected);
@@ -125,7 +127,9 @@ public class SelectInput extends AbstractInput
 	
   /**
    * Optionale Angabe eines Textes, der an Position 1 angezeigt werden soll.
-   * Bei Auswahl dieses Elements, wird null zurueckgeliefert.
+   *
+   * <p>Als Default wird {@code null} zurueckgeliefert.
+   *
    * @param choose Anzuzeigender "Bitte wählen..."-Text.
    */
   public void setPleaseChoose(String choose)
@@ -136,10 +140,10 @@ public class SelectInput extends AbstractInput
   /**
    * Legt den Namen des Attributes fest, welches von den Objekten angezeigt werden
    * soll. Bei herkoemmlichen Beans wird also ein Getter mit diesem Namen aufgerufen. 
-   * Wird kein Attribut angegeben, wird bei Objekten des Typs <code>GenericObject</code>
-   * der Wert des Primaer-Attributes angezeigt, andernfalls der Wert von <code>toString()</code>.
-   * @param name Name des anzuzeigenden Attributes (muss im GenericObject
-   * via getAttribute(String) abrufbar sein).
+   * Wird kein Attribut angegeben, wird bei Objekten des Typs {@link GenericObject}
+   * der Wert des Primaer-Attributes angezeigt, andernfalls der Wert von {@link #toString()}.
+   * @param name Name des anzuzeigenden Attributes (muss via
+   *             {@link GenericObject#getAttribute(String)} abrufbar sein).
    */
   public void setAttribute(String name)
 	{
@@ -147,9 +151,7 @@ public class SelectInput extends AbstractInput
 			this.attribute = name;
 	}
 
-  /**
-   * @see de.willuhn.jameica.gui.input.Input#getControl()
-   */
+  @Override
   public Control getControl()
   {
     if (this.combo != null)
@@ -249,7 +251,7 @@ public class SelectInput extends AbstractInput
   
   /**
    * Liefert die komplette Liste der Fachobjekte in der Liste.
-   * @return die komplette Liste der Fachobjekte in der Liste.
+   * @return Liste der Fachobjekte.
    */
   public List getList()
   {
@@ -259,7 +261,7 @@ public class SelectInput extends AbstractInput
   /**
    * Formatiert die Bean passend fuer die Anzeige in der Combo-Box.
    * @param bean die Bean.
-   * @return String mit dem anzuzeigenden Wert.
+   * @return anzuzeigender Wert.
    */
   protected String format(Object bean)
   {
@@ -281,10 +283,11 @@ public class SelectInput extends AbstractInput
   }
 
   /**
-   * Liefert das ausgewaehlte GenericObject.
-   * Folglich kann der Rueckgabewert direkt nach GenericObject gecastet werden.
+   * Liefert das ausgewaehlte {@link GenericObject}.
+   * Folglich kann der Rueckgabewert direkt nach {@link GenericObject} gecastet werden.
    * @see de.willuhn.jameica.gui.input.Input#getValue()
    */
+  @Override
   public Object getValue()
   {
     if (this.combo == null || this.combo.isDisposed())
@@ -311,9 +314,7 @@ public class SelectInput extends AbstractInput
 		return combo.getText();
 	}
 
-  /**
-   * @see de.willuhn.jameica.gui.input.Input#focus()
-   */
+  @Override
   public void focus()
   {
     if (this.combo == null || this.combo.isDisposed())
@@ -322,26 +323,19 @@ public class SelectInput extends AbstractInput
     combo.setFocus();
   }
 
-
-  /**
-   * @see de.willuhn.jameica.gui.input.Input#disable()
-   */
+  @Override
   public void disable()
   {
     setEnabled(false);
   }
 
-  /**
-   * @see de.willuhn.jameica.gui.input.Input#enable()
-   */
+  @Override
   public void enable()
   {
     setEnabled(true);
   }
 
-  /**
-   * @see de.willuhn.jameica.gui.input.Input#setEnabled(boolean)
-   */
+  @Override
   public void setEnabled(boolean enabled)
   {
     this.enabled = enabled;
@@ -350,8 +344,9 @@ public class SelectInput extends AbstractInput
   }
   
   /**
-   * Markiert die Combo-Box als editierbar. Wenn diese
-   * Option aktiviert ist, wird jedoch in <code>getValue()</code>
+   * Markiert die Combo-Box als editierbar.
+   *
+   * <p>Wenn diese Option aktiviert ist, wird jedoch in {@link #getValue()}
    * generell der angezeigte Text zurueckgeliefert statt des
    * Fachobjektes. Hintergrund: Normalerweise wird die Combo-Box
    * ja mit einer Liste von Fachobjekten/Beans gefuellt.
@@ -366,25 +361,19 @@ public class SelectInput extends AbstractInput
     this.editable = editable;
   }
 
-  /**
-   * @see de.willuhn.jameica.gui.input.Input#setValue(java.lang.Object)
-   */
+  @Override
   public void setValue(Object o)
   {
     this.setPreselected(o);
   }
 
-  /**
-   * @see de.willuhn.jameica.gui.input.Input#isEnabled()
-   */
+  @Override
   public boolean isEnabled()
   {
     return enabled;
   }
 
-	/**
-	 * @see de.willuhn.jameica.gui.input.AbstractInput#update()
-	 */
+  @Override
   protected void update() throws OperationCanceledException
   {
     // Wir machen hier nichts. 
diff --git a/src/de/willuhn/jameica/gui/internal/action/ChangePassword.java b/src/de/willuhn/jameica/gui/internal/action/ChangePassword.java
index 94a21fc..6428b65 100644
--- a/src/de/willuhn/jameica/gui/internal/action/ChangePassword.java
+++ b/src/de/willuhn/jameica/gui/internal/action/ChangePassword.java
@@ -23,9 +23,9 @@ public class ChangePassword implements Action
 {
 
   /**
-   * Hier kann <code>null</code> uebergeben werden.
-   * @see de.willuhn.jameica.gui.Action#handleAction(java.lang.Object)
+   * Hier kann {@code null} uebergeben werden.
    */
+  @Override
   public void handleAction(Object context) throws ApplicationException
   {
   	try
diff --git a/src/de/willuhn/jameica/gui/internal/action/Print.java b/src/de/willuhn/jameica/gui/internal/action/Print.java
index 0c0bd9c..7f54106 100644
--- a/src/de/willuhn/jameica/gui/internal/action/Print.java
+++ b/src/de/willuhn/jameica/gui/internal/action/Print.java
@@ -31,9 +31,9 @@ import net.sf.paperclips.PrintJob;
 public class Print implements Action
 {
   /**
-   * Erwartet ein Objekt vom Typ <code>PrintSupport</code>.
-   * @see de.willuhn.jameica.gui.Action#handleAction(java.lang.Object)
+   * Erwartet ein Objekt vom Typ {@code PrintSupport}.
    */
+  @Override
   public void handleAction(Object context) throws ApplicationException
   {
     if (context == null || !(context instanceof PrintSupport))
diff --git a/src/de/willuhn/jameica/gui/internal/controller/SettingsControl.java b/src/de/willuhn/jameica/gui/internal/controller/SettingsControl.java
index 46a8d39..67ca715 100644
--- a/src/de/willuhn/jameica/gui/internal/controller/SettingsControl.java
+++ b/src/de/willuhn/jameica/gui/internal/controller/SettingsControl.java
@@ -47,7 +47,7 @@ import de.willuhn.util.ApplicationException;
 import de.willuhn.util.I18N;
 
 /**
- * Controller fuer die Einstellungen unter Datei->Einstellungen
+ * Controller fuer die Einstellungen unter <i>Datei-&gt;Einstellungen</i>
  */
 public class SettingsControl extends AbstractControl
 {
diff --git a/src/de/willuhn/jameica/gui/parts/AbstractTablePart.java b/src/de/willuhn/jameica/gui/parts/AbstractTablePart.java
index b960ff9..26ec8be 100644
--- a/src/de/willuhn/jameica/gui/parts/AbstractTablePart.java
+++ b/src/de/willuhn/jameica/gui/parts/AbstractTablePart.java
@@ -124,7 +124,7 @@ public abstract class AbstractTablePart implements Part
   /**
    * Liefert die Instanz des Features, insofern es hinzugefuegt wurde.
    * @param type der Typ des Features.
-   * @return das Feature oder NULL, wenn es nicht existiert.
+   * @return das Feature oder {@code null}, wenn es nicht existiert.
    */
   public <T> T getFeature(Class<? extends Feature> type)
   {
@@ -138,7 +138,7 @@ public abstract class AbstractTablePart implements Part
    * Prueft, ob das angegebene Feature das Event behandelt.
    * @param type das Feature.
    * @param e das Event.
-   * @return true, wenn das Feature dieses Event behandelt.
+   * @return {@code true}, wenn das Feature dieses Event behandelt.
    */
   public boolean hasEvent(Class<? extends Feature> type, Feature.Event e)
   {
@@ -222,7 +222,7 @@ public abstract class AbstractTablePart implements Part
    * @param field Name des Feldes aus dem dbObject, der angezeigt werden soll.
    * @param f Formatter, der fuer die Anzeige des Wertes verwendet werden soll.
    * @param changeable legt fest, ob die Werte in dieser Spalte direkt editierbar sein sollen.
-   * Wenn der Parameter true ist, dann sollte der Tabelle via <code>addChangeListener</code>
+   * Wenn der Parameter {@code true} ist, dann sollte der Tabelle via {@link TablePart#addChangeListener(TableChangeListener)}
    * ein Listener hinzugefuegt werden, der benachrichtigt wird, wenn der Benutzer einen
    * Wert geaendert hat. Es ist anschliessend Aufgabe des Listeners, den geaenderten
    * Wert im Fachobjekt zu uebernehmen.
@@ -238,7 +238,7 @@ public abstract class AbstractTablePart implements Part
    * @param field Name des Feldes aus dem dbObject, der angezeigt werden soll.
    * @param f Formatter, der fuer die Anzeige des Wertes verwendet werden soll.
    * @param changeable legt fest, ob die Werte in dieser Spalte direkt editierbar sein sollen.
-   * Wenn der Parameter true ist, dann sollte der Tabelle via <code>addChangeListener</code>
+   * Wenn der Parameter {@code true} ist, dann sollte der Tabelle via {@link TablePart#addChangeListener(TableChangeListener)}
    * ein Listener hinzugefuegt werden, der benachrichtigt wird, wenn der Benutzer einen
    * Wert geaendert hat. Es ist anschliessend Aufgabe des Listeners, den geaenderten
    * Wert im Fachobjekt zu uebernehmen.
@@ -265,7 +265,7 @@ public abstract class AbstractTablePart implements Part
 
   /**
    * Liefert die Sortierreihenfolge der Spalten.
-   * @return Int-Array mit der Reihenfolge oder <code>null</code>.
+   * @return Int-Array mit der Reihenfolge oder {@code null}.
    */
   int[] getColumnOrder()
   {
@@ -346,7 +346,7 @@ public abstract class AbstractTablePart implements Part
 
   /**
    * Liefert die markierten Objekte.
-   * Die Funktion liefert je nach Markierung <code>Object</code> oder <code>Object[]</code>.
+   * Die Funktion liefert je nach Markierung {@link Object} oder {@link Object}[].
    * @return das/die markierten Objekte.
    */
   public abstract Object getSelection();
@@ -387,7 +387,7 @@ public abstract class AbstractTablePart implements Part
 
   /**
    * Legt fest, ob sich die Tabelle die Spaltenbreiten merken soll.
-   * @param remember true, wenn sie sich die Spaltenbreiten merken soll.
+   * @param remember {@code true}, wenn sie sich die Spaltenbreiten merken soll.
    */
   public void setRememberColWidths(boolean remember)
   {
@@ -396,7 +396,7 @@ public abstract class AbstractTablePart implements Part
   
   /**
    * Legt fest, ob sich die Tabelle die Sortierreihenfolge merken soll.
-   * @param remember true, wenn sie sich die Reihenfolge merken soll.
+   * @param remember {@code true}, wenn sie sich die Reihenfolge merken soll.
    */
   public void setRememberOrder(boolean remember)
   {
@@ -405,7 +405,7 @@ public abstract class AbstractTablePart implements Part
   
   /**
    * Legt fest, ob sich die Tabelle die zuletzt markierten Objekte samt der Scrollposition merken soll.
-   * @param remember true, wenn sich die Tabelle Selektion und Position merken soll.
+   * @param remember {@code true}, wenn sich die Tabelle Selektion und Position merken soll.
    */
   public void setRememberState(boolean remember)
   {
@@ -414,7 +414,7 @@ public abstract class AbstractTablePart implements Part
 
   /**
    * Stellt den Zustand wieder her (markierte Objekte und Scroll-Position).
-   * Geschieht jedoch nur, wenn das Feature mit setRememberState(true) aktiviert wurde.
+   * Geschieht jedoch nur, wenn das Feature mit {@code setRememberState(true)} aktiviert wurde.
    * Das ist eine Dummy-Implementierung, die in den abgeleiteten Klassen ueberschrieben werden kann.
    */
   public void restoreState()
@@ -433,7 +433,7 @@ public abstract class AbstractTablePart implements Part
   
   /**
    * Legt fest, ob jede Zeile der Tabelle mit einer Checkbox versehen werden soll.
-   * Ist dies der Fall, liefert <code>getItems</code> nur noch die aktiven
+   * Ist dies der Fall, liefert {@link #getItems()} nur noch die aktiven
    * Elemente zurueck.
    * Default: false
    * @param checkable
@@ -446,8 +446,10 @@ public abstract class AbstractTablePart implements Part
   /**
    * Wenn die Tabelle mit Checkboxen versehen ist, kann man damit bei einem Element 
    * das Haeckchen setzen oder entfernen.
-   * Hinweis: Dies hier ist eine leere Dummy-Implementierung. Sie muss von
+   *
+   * <p>Hinweis: Dies hier ist eine leere Dummy-Implementierung. Sie muss von
    * abgeleiteten Klassen ueberschrieben werden.
+   *
    * @param objects Liste der zu checkenden Objekte.
    * @param checked true, wenn das Haekchen gesetzt werden soll.
    */
@@ -483,7 +485,7 @@ public abstract class AbstractTablePart implements Part
   public abstract void removeAll();
   
   /**
-   * Hilfsmethode, um die RemoteException im Konstruktor zu vermeiden.
+   * Hilfsmethode, um die {@link RemoteException} im Konstruktor zu vermeiden.
    * @param iterator zu konvertierender Iterator.
    * @return Liste mit den Objekten.
    */
diff --git a/src/de/willuhn/jameica/gui/parts/CheckedContextMenuItem.java b/src/de/willuhn/jameica/gui/parts/CheckedContextMenuItem.java
index e986eec..1e2e75e 100644
--- a/src/de/willuhn/jameica/gui/parts/CheckedContextMenuItem.java
+++ b/src/de/willuhn/jameica/gui/parts/CheckedContextMenuItem.java
@@ -14,7 +14,7 @@ import de.willuhn.jameica.gui.Action;
 
 /**
  * ContextMenu-Element, dass immer genau dann automatisch
- * deaktiviert ist, wenn das aktuelle Objekt <code>null</code> ist.
+ * deaktiviert ist, wenn das aktuelle Objekt {@code null} ist.
  */
 public class CheckedContextMenuItem extends ContextMenuItem
 {
@@ -48,9 +48,7 @@ public class CheckedContextMenuItem extends ContextMenuItem
     super(text, a, icon);
   }
 
-  /**
-   * @see de.willuhn.jameica.gui.parts.ContextMenuItem#isEnabledFor(java.lang.Object)
-   */
+  @Override
   public boolean isEnabledFor(Object o)
   {
     return o != null;
diff --git a/src/de/willuhn/jameica/gui/parts/Column.java b/src/de/willuhn/jameica/gui/parts/Column.java
index b55cdd4..1d699c5 100644
--- a/src/de/willuhn/jameica/gui/parts/Column.java
+++ b/src/de/willuhn/jameica/gui/parts/Column.java
@@ -151,7 +151,7 @@ public class Column implements Serializable
 
   /**
    * Prueft, ob die Spalte aenderbar ist.
-   * @return true, wenn sie aenderbar ist.
+   * @return {@code true}, wenn sie aenderbar ist.
    */
   public boolean canChange()
   {
@@ -169,7 +169,7 @@ public class Column implements Serializable
 
   /**
    * Liefert einen optionalen Formatter.
-   * @return ein Formatter oder <code>null</code>.
+   * @return ein Formatter oder {@code null}.
    */
   public Formatter getFormatter()
   {
@@ -209,17 +209,18 @@ public class Column implements Serializable
   
   /**
    * Liefert den Wert in der Form, wie er in der Tabelle angezeigt werden soll.
-   * Fuer die meisten Werte wird hier ein simples <code>value#toString</code>
+   * Fuer die meisten Werte wird hier ein simples {@code value#toString}
    * ausgefuehrt.
+   *
    * @param value Der Wert des Attributes der Bean.
    * @param context die Bean, aus der der Wert des Attributes stammt.
    * Die Bean wird fuer gewoehnlich nicht benoetigt, da der Attribut-Wert
-   * ja bereits in <code>value</code> vorliegt. Sie wird als Context-Information
+   * ja bereits in {@code value} vorliegt. Sie wird als Context-Information
    * dennoch uebergeben, damit eine ggf. von dieser Klasse abgeleitete Version
    * abhaengig von der Bean (und damit dem Context die Formatierung unterschiedlich
    * vornehmen kann.
    * @return der formatierte Wert des Attributes.
-   * Die Funktion sollte nie NULL zurueckliefern sondern hoechstens einen
+   * Die Funktion sollte nie {@code null} zurueckliefern sondern hoechstens einen
    * Leerstring, da der Wert 1:1 in die Tabelle uebernommen wird und es
    * dort unter Umstaenden zu einer NPE oder der Anzeige von "null" kommen koennte.
    * BUGZILLA 721
diff --git a/src/de/willuhn/jameica/gui/parts/ContextMenuItem.java b/src/de/willuhn/jameica/gui/parts/ContextMenuItem.java
index 0e6d32c..fc1ac1c 100644
--- a/src/de/willuhn/jameica/gui/parts/ContextMenuItem.java
+++ b/src/de/willuhn/jameica/gui/parts/ContextMenuItem.java
@@ -80,7 +80,7 @@ public class ContextMenuItem
 
   /**
 	 * Legt fest, ob das Menu ein Separator sein soll.
-   * @param separator true, wenn es ein Separator sein soll.
+   * @param separator {@code true}, wenn es ein Separator sein soll.
    */
   public void setSeparator(boolean separator)
 	{
@@ -89,7 +89,7 @@ public class ContextMenuItem
 
 	/**
 	 * Prueft, ob das Element ein Separator ist.
-   * @return true, wenn es ein Separator ist.
+   * @return {@code true}, wenn es ein Separator ist.
    */
   public boolean isSeparator()
 	{
@@ -152,8 +152,8 @@ public class ContextMenuItem
   }
   
   /**
-   * Liefert eine optionale Tastenkombi fuer den Short-Cut.
-   * @return Tastenkombi.
+   * Liefert eine optionale Tastenkombination fuer den Short-Cut.
+   * @return Tastenkombination.
    */
   public String getShortcut()
   {
@@ -161,7 +161,7 @@ public class ContextMenuItem
   }
   
   /**
-   * Speichert eine optionale Tastenkombi fuer den Short-Cut.
+   * Speichert eine optionale Tastenkombination fuer den Short-Cut.
    * @param shortcut
    */
   public void setShortcut(String shortcut)
@@ -175,15 +175,19 @@ public class ContextMenuItem
 	 * Diese Funktion wird fuer jedes MenuItem aufgerufen, wenn sich das Kontext-Menu oeffnet.
 	 * Folglich kann hier jedes MenuItem selbst bestimmen, ob es fuer das aktuelle
 	 * Objekt verfuegbar sein soll oder nicht.
-	 * Diese Default-Implementierung liefert immer <code>true</code>.
+	 *
+	 * <p>Diese Default-Implementierung liefert immer {@code true}.
 	 * Soll das Item also bei Bedarf deaktiviert werden, muss von dieser
 	 * Klasse abgeleitet und diese Methode ueberschrieben werden.
-	 * Alternativ kann auch bereits die abgeleitete Klasse CheckedContextMenuItem
-	 * verwendet werden, die nur dann <code>true</code> liefert, wenn das Objekt nicht
-	 * <code>null</code> ist. Sprich: Wenn nicht in leeren Raum geklickt wurde sondern
+	 *
+	 * <p>Alternativ kann auch bereits die abgeleitete Klasse {@link CheckedContextMenuItem}
+	 * verwendet werden, die nur dann {@code true} liefert, wenn das Objekt nicht
+	 * {@code null} ist. Sprich: Wenn nicht in leeren Raum geklickt wurde sondern
 	 * auf ein Objekt.
+	 *
    * @param o das zu testende Objekt.
-   * @return true, wenn das Item angezeigt werden soll. Andernfalls <code>false</code>.
+   * @return {@code true}, wenn das Item angezeigt werden soll. Andernfalls {@code false}.
+   * @see CheckedContextMenuItem#isEnabledFor(Object)
    */
   public boolean isEnabledFor(Object o)
 	{
diff --git a/src/de/willuhn/jameica/gui/parts/TableChangeListener.java b/src/de/willuhn/jameica/gui/parts/TableChangeListener.java
index 94c168a..5cd5797 100644
--- a/src/de/willuhn/jameica/gui/parts/TableChangeListener.java
+++ b/src/de/willuhn/jameica/gui/parts/TableChangeListener.java
@@ -10,13 +10,14 @@
 
 package de.willuhn.jameica.gui.parts;
 
+import de.willuhn.jameica.gui.formatter.Formatter;
 import de.willuhn.util.ApplicationException;
 
 /**
- * Ein Listener, der an eine Tabelle via <code>addChangeListener()</code> gehaengt werden kann, wenn einzelne
- * Spalten direkt in der Tabelle aenderbar sein sollen. Die Spalten muessen
- * mit der Funktion <code>table.addColumn(String title, String field, Formatter f, boolean changeable)</code>
- * hinzugefuegt werden, wobei changeable=true sein muss um die Spalten als aenderbar
+ * Ein Listener, der an eine Tabelle via {@link TablePart#addChangeListener(TableChangeListener)} gehaengt werden kann,
+ * wenn einzelne Spalten direkt in der Tabelle aenderbar sein sollen. Die Spalten muessen
+ * mit der Funktion {@link TablePart#addColumn(String, String, Formatter, boolean)}
+ * hinzugefuegt werden, wobei {@code changeable=true} sein muss, um die Spalten als aenderbar
  * zu markieren. Sofern der Wert eines solchen Feldes vom Benutzer geaendert
  * wurde, werden alle registrieren TableChangeListener ueber die Aenderung
  * informiert. Es ist dann deren Aufgabe, den geaenderten Wert im Fachobjekt
diff --git a/src/de/willuhn/jameica/gui/parts/TablePart.java b/src/de/willuhn/jameica/gui/parts/TablePart.java
index dfbf1b3..16694c7 100644
--- a/src/de/willuhn/jameica/gui/parts/TablePart.java
+++ b/src/de/willuhn/jameica/gui/parts/TablePart.java
@@ -177,7 +177,7 @@ public class TablePart extends AbstractTablePart
   
   /**
    * Legt fest, ob eine Summenzeile am Ende angezeigt werden soll.
-   * @param show true, wenn die Summenzeile angezeigt werden soll (Default) oder false
+   * @param show {@code true}, wenn die Summenzeile angezeigt werden soll (Default) oder {@code false}
    * wenn sie nicht angezeigt werden soll.
    * @deprecated Bitte stattdessen {@link AbstractTablePart#addFeature(Feature)} verwenden.
    */
@@ -190,10 +190,7 @@ public class TablePart extends AbstractTablePart
       this.removeFeature(FeatureSummary.class);
   }
   
-  /**
-   * @see de.willuhn.jameica.gui.parts.AbstractTablePart#getItems()
-   * Entspricht <code>getItems(true)</code>
-   */
+  @Override
   public List getItems() throws RemoteException
   {
     return this.getItems(true);
@@ -201,7 +198,7 @@ public class TablePart extends AbstractTablePart
   
   /**
    * Liefert die Fach-Objekte der Tabelle.
-   * @param onlyChecked true, falls bei Aktivierung des Features <code>setCheckable(true)</code>
+   * @param onlyChecked {@code true}, falls bei Aktivierung des Features {@code setCheckable(true)}
    * nur genau die Objekte geliefert werden sollen, bei denen das Haekchen gesetzt ist.
    * Die Objekte werden genau in der angezeigten Reihenfolge zurueckgeliefert.
    * @return die Liste der Objekte.
@@ -244,9 +241,7 @@ public class TablePart extends AbstractTablePart
     table.setTopIndex(i);
   }
 
-  /**
-   * @see de.willuhn.jameica.gui.parts.AbstractTablePart#removeAll()
-   */
+  @Override
   public void removeAll()
   {
     if (table != null && !table.isDisposed())
@@ -261,7 +256,8 @@ public class TablePart extends AbstractTablePart
 
   /**
    * Entfernt das genannte Element aus der Tabelle.
-   * Wurde die Tabelle mit einer Liste von Objekten erzeugt, die von <code>DBObject</code>
+   *
+   * <p>Wurde die Tabelle mit einer Liste von Objekten erzeugt, die von {@link DBObject}
    * abgeleitet sind, muss das Loeschen nicht manuell vorgenommen werden. Die Tabelle
    * fuegt in diesem Fall automatisch jedem Objekt einen Listener hinzu, der
    * beim Loeschen des Objektes benachrichtigt wird. Die Tabelle entfernt
@@ -360,7 +356,7 @@ public class TablePart extends AbstractTablePart
   /**
    * Fuegt der Tabelle am Ende ein Element hinzu.
    * @param object hinzuzufuegendes Element.
-   * @param checked true, wenn die Tabelle checkable ist und das Objekt gecheckt sein soll.
+   * @param checked {@code true}, wenn die Tabelle checkable ist und das Objekt gecheckt sein soll.
    * @throws RemoteException
    */
   public void addItem(Object object, boolean checked) throws RemoteException
@@ -525,9 +521,7 @@ public class TablePart extends AbstractTablePart
     this.featureEvent(Feature.Event.ADDED,object);
   }
 
-  /**
-   * @see de.willuhn.jameica.gui.parts.AbstractTablePart#size()
-   */
+  @Override
   public int size()
   {
     if (this.table == null || this.table.isDisposed())
@@ -535,9 +529,7 @@ public class TablePart extends AbstractTablePart
     return table.getItemCount();
   }
 
-  /**
-   * @see de.willuhn.jameica.gui.Part#paint(org.eclipse.swt.widgets.Composite)
-   */
+  @Override
   public synchronized void paint(Composite parent) throws RemoteException
   {
 
@@ -1000,9 +992,7 @@ public class TablePart extends AbstractTablePart
     this.featureEvent(Feature.Event.PAINT,null);
   }
   
-  /**
-   * @see de.willuhn.jameica.gui.parts.AbstractTablePart#getID()
-   */
+  @Override
   String getID() throws Exception
   {
     if (this.id != null)
@@ -1041,9 +1031,7 @@ public class TablePart extends AbstractTablePart
     return this.id;
   }
 
-  /**
-   * @see de.willuhn.jameica.gui.parts.AbstractTablePart#select(java.lang.Object[])
-   */
+  @Override
   public void select(Object[] objects)
   {
     if (objects == null || objects.length == 0 || table == null)
@@ -1094,9 +1082,7 @@ public class TablePart extends AbstractTablePart
     table.setFocus();
   }
 
-  /**
-   * @see de.willuhn.jameica.gui.parts.AbstractTablePart#setChecked(java.lang.Object[], boolean)
-   */
+  @Override
   public void setChecked(Object[] objects, boolean checked)
   {
     if (objects == null || objects.length == 0 || !this.checkable)
@@ -1136,9 +1122,7 @@ public class TablePart extends AbstractTablePart
     }
   }
 
-  /**
-   * @see de.willuhn.jameica.gui.parts.AbstractTablePart#getSelection()
-   */
+  @Override
   public Object getSelection()
   {
     if (table == null || table.isDisposed())
@@ -1185,8 +1169,8 @@ public class TablePart extends AbstractTablePart
 
   /**
    * Aktualisiert die Summenzeile.
-   * @deprecated Bitte künftig {@link AbstractTablePart#featureEvent(de.willuhn.jameica.gui.parts.table.Feature.Event, Object)}
-   * mit dem Event "REFRESH" verwenden.
+   * @deprecated Bitte künftig {@link AbstractTablePart#featureEvent(Feature.Event, Object)}
+   * mit dem Event {@link Feature.Event#REFRESH} verwenden.
    */
   @Deprecated
   protected void refreshSummary()
@@ -1200,8 +1184,7 @@ public class TablePart extends AbstractTablePart
    * @return anzuzeigender Text oder null, wenn nichts angezeigt werden soll.
    * @deprecated Bitte kuenftig stattdessen {@link AbstractTablePart#createFeatureEventContext(de.willuhn.jameica.gui.parts.table.Feature.Event, Object)}
    * ueberschreiben und dort die addon-Daten passend fuer FeatureSummary belegen:
-   * 
-   * <code>
+   * <pre>{@code
    * protected Context createFeatureEventContext(Feature.Event e, Object data)
    * {
    *   Context ctx = super.createFeatureEventContext(e, data);
@@ -1209,7 +1192,7 @@ public class TablePart extends AbstractTablePart
    *     ctx.addon.put(FeatureSummary.CTX_KEY_TEXT,"Anzuzeigender Summentext");
    *   return ctx;
    * }
-   * </code>
+   * }</pre>
    */
   @Deprecated
   protected String getSummary()
@@ -1256,9 +1239,7 @@ public class TablePart extends AbstractTablePart
     orderBy(this.sortedBy);
   }
 
-  /**
-   * @see de.willuhn.jameica.gui.parts.AbstractTablePart#restoreState()
-   */
+  @Override
   public void restoreState()
   {
     if (!this.rememberState)
@@ -1286,7 +1267,7 @@ public class TablePart extends AbstractTablePart
 
   /**
    * Aktiviert oder deaktiviert die Tabelle.
-   * @param enabled true, wenn sie aktiv sein soll.
+   * @param enabled {@code true}, wenn sie aktiv sein soll.
    */
   public void setEnabled(boolean enabled)
   {
@@ -1297,7 +1278,7 @@ public class TablePart extends AbstractTablePart
   
   /**
    * Prueft, ob die Tabelle aktiv ist.
-   * @return true, wenn sie aktiv ist.
+   * @return {@code true}, wenn sie aktiv ist.
    */
   public boolean isEnabled()
   {
@@ -1386,7 +1367,7 @@ public class TablePart extends AbstractTablePart
   /**
    * Liefert den Namen der Spalte, nach der gerade sortiert ist
    * oder null, wenn die Tabelle nicht sortiert ist.
-   * @return name der Spalte oder null.
+   * @return name der Spalte oder {@code null}.
    */
   private String getOrderedBy()
   {
@@ -1406,7 +1387,7 @@ public class TablePart extends AbstractTablePart
    * @param row die Spalte.
    * @param item das Tabellen-Element.
    * @param oldValue der bisherige Wert.
-   * @return der Editor oder NULL, wenn das Bearbeiten nicht erlaubt werden soll.
+   * @return der Editor oder {@code null}, wenn das Bearbeiten nicht erlaubt werden soll.
    */
   protected Control getEditorControl(int row, TableItem item, final String oldValue)
   {
@@ -1430,9 +1411,6 @@ public class TablePart extends AbstractTablePart
       return "";
   }
   
-  /**
-   * @see de.willuhn.jameica.gui.parts.AbstractTablePart#createFeatureEventContext(de.willuhn.jameica.gui.parts.table.Feature.Event, java.lang.Object)
-   */
   @Override
   protected Context createFeatureEventContext(Feature.Event e, Object data)
   {
@@ -1492,9 +1470,7 @@ public class TablePart extends AbstractTablePart
   private class DeleteListener implements de.willuhn.datasource.rmi.Listener
   {
 
-    /**
-     * @see de.willuhn.datasource.rmi.Listener#handleEvent(de.willuhn.datasource.rmi.Event)
-     */
+    @Override
     public void handleEvent(final de.willuhn.datasource.rmi.Event e) throws RemoteException
     {
       try
diff --git a/src/de/willuhn/jameica/messaging/LookupService.java b/src/de/willuhn/jameica/messaging/LookupService.java
index 77ce83d..abc1aa3 100644
--- a/src/de/willuhn/jameica/messaging/LookupService.java
+++ b/src/de/willuhn/jameica/messaging/LookupService.java
@@ -66,25 +66,19 @@ public class LookupService implements MessageConsumer
     return Application.inServerMode() && Application.getConfig().getMulticastLookup();
   }
 
-  /**
-   * @see de.willuhn.jameica.messaging.MessageConsumer#autoRegister()
-   */
+  @Override
   public boolean autoRegister()
   {
     return enabled();
   }
 
-  /**
-   * @see de.willuhn.jameica.messaging.MessageConsumer#getExpectedMessageTypes()
-   */
+  @Override
   public Class[] getExpectedMessageTypes()
   {
     return new Class[]{SystemMessage.class};
   }
 
-  /**
-   * @see de.willuhn.jameica.messaging.MessageConsumer#handleMessage(de.willuhn.jameica.messaging.Message)
-   */
+  @Override
   public void handleMessage(Message message) throws Exception
   {
     if (!enabled())
@@ -125,9 +119,7 @@ public class LookupService implements MessageConsumer
       super();
     }
 
-    /**
-     * @see de.willuhn.net.MulticastClient#received(java.net.DatagramPacket)
-     */
+    @Override
     public void received(DatagramPacket packet) throws IOException
     {
       InetAddress sender = packet.getAddress();
@@ -171,7 +163,7 @@ public class LookupService implements MessageConsumer
   /**
    * Sucht im lokalen Netz nach einem Dienst mit dem angegeben Namen.
    * @param name Name des Dienstes.
-   * @return die URL des Dienstes oder <code>null</code>, wenn
+   * @return die URL des Dienstes oder {@code null}, wenn
    * er nicht gefunden wurde.
    */
   public static synchronized String lookup(String name)
@@ -256,9 +248,7 @@ public class LookupService implements MessageConsumer
       super.send(name.getBytes());
     }
 
-    /**
-     * @see de.willuhn.net.MulticastClient#received(java.net.DatagramPacket)
-     */
+    @Override
     public void received(DatagramPacket packet) throws IOException
     {
       InetAddress sender = packet.getAddress();
diff --git a/src/de/willuhn/jameica/messaging/MessageConsumer.java b/src/de/willuhn/jameica/messaging/MessageConsumer.java
index 1bf2222..5bc2aad 100644
--- a/src/de/willuhn/jameica/messaging/MessageConsumer.java
+++ b/src/de/willuhn/jameica/messaging/MessageConsumer.java
@@ -12,7 +12,8 @@ package de.willuhn.jameica.messaging;
 /**
  * Dieses Interface muss implementiert werden, wenn man die Nachrichten
  * des Messaging-Systems erhalten will.
- * WICHTIG: Alle Implementierungen dieses Interfaces muessen sich ueber
+ *
+ * <p><b>WICHTIG:</b> Alle Implementierungen dieses Interfaces muessen sich ueber
  * einen parameterlosen Konstruktor erzeugen lassen.
  * @author willuhn
  */
@@ -21,7 +22,7 @@ public interface MessageConsumer
   /**
    * Wenn der Message-Consumer nur ganz bestimmte Nachrichten
    * empfangen will, dann kann er hier die Liste der gewuenschten
-   * Arten angeben. Liefert die Funktion <code>null</code>,
+   * Arten angeben. Liefert die Funktion {@code null},
    * werden alle Nachrichten an den Consumer zugestellt.
    * @return Liste der gewuenschten Nachrichtenarten.
    */
diff --git a/src/de/willuhn/jameica/messaging/package.html b/src/de/willuhn/jameica/messaging/package.html
index 0dc692f..eec5ae6 100755
--- a/src/de/willuhn/jameica/messaging/package.html
+++ b/src/de/willuhn/jameica/messaging/package.html
@@ -23,7 +23,7 @@
       implementieren. Beim Start von Jameica
       ermittelt die MessagingFactory selbstaendig
       alle existierenden Nachrichten-Verbraucher
-      und registriert diese.<br/>
+      und registriert diese.<br>
       Von nun an kann jede Klasse mittels
       <code>Application.getMessagingFactory().sendMessage(Message)</code>.
       eine Nachricht versenden. Alle registrierten
diff --git a/src/de/willuhn/jameica/plugin/ConsumerDescriptor.java b/src/de/willuhn/jameica/plugin/ConsumerDescriptor.java
index 36efb77..77d7381 100644
--- a/src/de/willuhn/jameica/plugin/ConsumerDescriptor.java
+++ b/src/de/willuhn/jameica/plugin/ConsumerDescriptor.java
@@ -14,12 +14,13 @@ import net.n3.nanoxml.IXMLElement;
 /**
  * Implementierung fuer die Beschreibungen eines Message-Consumers im Manifest.
  * Wird in der plugin.xml definiert. Beispiel:
- * 
+ *
+ * <pre>{@code
  * <messaging>
  *   <consumer class="mein.package.MyMessageConsumer" queue="meine.queue" />
  *   <consumer class="mein.package.MyMessageConsumer" />
  * </messaging>
-
+ * }</pre>
  */
 public class ConsumerDescriptor
 {
diff --git a/src/de/willuhn/jameica/plugin/Dependency.java b/src/de/willuhn/jameica/plugin/Dependency.java
index 73761ec..2cacc8c 100644
--- a/src/de/willuhn/jameica/plugin/Dependency.java
+++ b/src/de/willuhn/jameica/plugin/Dependency.java
@@ -29,9 +29,9 @@ public class Dependency implements Serializable
    * ct.
    * @param name Name des Plugins.
    * @param version Versionsnummer.
-   * Kann mit einem "+" oder "-" vor der Zahl angegeben werden, wenn mindestens
-   * oder hoechstens die angegebene Version vorliegen muss.
-   * Der Parameter kann <code>null</code> sein, wenn die Versionsnummer egal ist.
+   *        Kann mit einem "+" oder "-" vor der Zahl angegeben werden, wenn mindestens
+   *        oder hoechstens die angegebene Version vorliegen muss.
+   *        Der Parameter kann {@code null} sein, wenn die Versionsnummer egal ist.
    */
   public Dependency(String name, String version)
   {
@@ -42,10 +42,10 @@ public class Dependency implements Serializable
    * ct.
    * @param name Name des Plugins.
    * @param version Versionsnummer.
-   * @param required true, wenn die Abhaengigkeit erfuellt sein MUSS (default).
-   * Kann mit einem "+" oder "-" vor der Zahl angegeben werden, wenn mindestens
-   * oder hoechstens die angegebene Version vorliegen muss.
-   * Der Parameter kann <code>null</code> sein, wenn die Versionsnummer egal ist.
+   *        Kann mit einem "+" oder "-" vor der Zahl angegeben werden, wenn mindestens
+   *        oder hoechstens die angegebene Version vorliegen muss.
+   *        Der Parameter kann {@code null} sein, wenn die Versionsnummer egal ist.
+   * @param required {@code true}, wenn die Abhaengigkeit erfuellt sein MUSS (default).
    */
   public Dependency(String name, String version, boolean required)
   {
@@ -57,10 +57,7 @@ public class Dependency implements Serializable
     this.required = required;
   }
 
-  
-  /**
-   * @see java.lang.Object#toString()
-   */
+  @Override
   public String toString()
   {
     return this.name + ": " + (this.version == null ? "<any>" : this.version.toString());
@@ -68,7 +65,7 @@ public class Dependency implements Serializable
   
   /**
    * Prueft, ob die Abhaengigkeit erfuellt ist.
-   * @return true, wenn sie erfuellt ist, sonst false.
+   * @return {@code true}, wenn sie erfuellt ist, sonst {@code false}.
    */
   public boolean check()
   {
@@ -110,8 +107,8 @@ public class Dependency implements Serializable
   }
   
   /**
-   * Liefert die benoetigte Versionsnummer oder NULL, wenn es egal ist.
-   * @return die benoetigte Versionsnummer oder NULL, wenn es egal ist.
+   * Liefert die benoetigte Versionsnummer
+   * @return Versionsnummer oder {@code null}, wenn es egal ist.
    */
   public String getVersion()
   {
@@ -119,9 +116,9 @@ public class Dependency implements Serializable
   }
   
   /**
-   * Liefert true, wenn es sich um eine obligatorische Abhaengigkeit handelt.
-   * Default: true
-   * @return true, wenn es sich um eine obligatorische Abhaengigkeit handelt.
+   * Prüft, ob es sich um eine obligatorische Abhaengigkeit handelt.
+   * <p>Default: {@code true}
+   * @return {@code true}, wenn es sich um eine obligatorische Abhaengigkeit handelt.
    */
   public boolean isRequired()
   {
@@ -130,10 +127,8 @@ public class Dependency implements Serializable
     return this.required;
   }
 
-  /**
-   * Generiert von Eclipse.
-   * @see java.lang.Object#hashCode()
-   */
+  // autogenerated
+  @Override
   public int hashCode()
   {
     final int PRIME = 31;
@@ -143,10 +138,8 @@ public class Dependency implements Serializable
     return result;
   }
 
-  /**
-   * Generiert von Eclipse.
-   * @see java.lang.Object#equals(java.lang.Object)
-   */
+  // autogenerated
+  @Override
   public boolean equals(Object obj)
   {
     if (this == obj)
diff --git a/src/de/willuhn/jameica/plugin/ExtensionDescriptor.java b/src/de/willuhn/jameica/plugin/ExtensionDescriptor.java
index a78d9b3..30728b1 100644
--- a/src/de/willuhn/jameica/plugin/ExtensionDescriptor.java
+++ b/src/de/willuhn/jameica/plugin/ExtensionDescriptor.java
@@ -17,12 +17,15 @@ import net.n3.nanoxml.IXMLElement;
  * Ein Extension-Deskriptor beschreibt eine Extension, welche
  * bei einem Plugin beliegen kann, um die Funktionalitaet eines
  * anderen Plugins zu erweitern.
- * Diese finden sich in der plugin.xml eines Plugins.
- * Bsp.:
+ * Diese finden sich in der <i>plugin.xml</i> eines Plugins.
+ *
+ * <p>Bsp.:
+ * <pre>{@code
  * <extensions>
  *   <extension class="de.willuhn.jameica.plugin.Extension1" extends="id.extendable.1,id.extendable.2" />
  *   <extension class="de.willuhn.jameica.plugin.Extension2" extends="id.extendable.3" />
  * </extensions>
+ * }</pre>
  */
 public class ExtensionDescriptor
 {
@@ -58,7 +61,7 @@ public class ExtensionDescriptor
    * Liefert eine Liste von Extendable-IDs, welche diese Extension
    * erweitert.
    * @return Liste von Extendables.
-   * Die Funktion darf nie <code>null</code> liefern, da sie dann kein
+   * Die Funktion darf nie {@code null} liefern, da sie dann kein
    * Extendable erweitern wuerde. Die Extension waere damit nutzlos.
    */
   public String[] getExtendableIDs()
@@ -88,7 +91,7 @@ public class ExtensionDescriptor
    * Parst den Wert des genannten XML-Elements als Array aus einer
    * kommaseparierten Liste von Werten.
    * @param element Name des XML-Elements.
-   * @return Liste der Werte oder NULL.
+   * @return Liste der Werte oder {@code null}.
    */
   private String[] parseArray(String element)
   {
diff --git a/src/de/willuhn/jameica/plugin/Manifest.java b/src/de/willuhn/jameica/plugin/Manifest.java
index 6e2e318..8438258 100644
--- a/src/de/willuhn/jameica/plugin/Manifest.java
+++ b/src/de/willuhn/jameica/plugin/Manifest.java
@@ -177,9 +177,11 @@ public class Manifest implements Comparable
   
   /**
    * Liefert die Build-Nummer, insofern sie ermittelbar ist.
-   * Da die Nummer nur im Manifest des Jars steht, kann sie nur dann
+   *
+   * <p>Da die Nummer nur im Manifest des Jars steht, kann sie nur dann
    * ermittelt werden, wenn die Anwendung in ein solches deployed wurde
    * und der entsprechende Parameter im Manifest des JARs existiert.
+   *
    * @return Build-Number.
    */
   public final String getBuildnumber()
@@ -189,9 +191,11 @@ public class Manifest implements Comparable
 
   /**
    * Liefert das Build-Datum, insofern es ermittelbar ist.
-   * Da das Datum nur im Manifest des Jars steht, kann es nur dann
+   *
+   * <p>Da das Datum nur im Manifest des Jars steht, kann es nur dann
    * ermittelt werden, wenn die Anwendung in ein solches deployed wurde
    * und der entsprechende Parameter im Manifest des JARs existiert.
+   *
    * @return Build-Datum.
    */
   public final String getBuildDate()
@@ -211,7 +215,7 @@ public class Manifest implements Comparable
 	
   /**
    * Liefert den Klassen-Name des Plugins.
-   * @return Klassen-Name des Plugins oder das DefaultPlugin, wenn keines angegeben ist.
+   * @return Klassen-Name des Plugins oder vom {@link PlaceholderPlugin}, wenn keines angegeben ist.
    */
   public String getPluginClass()
   {
@@ -233,10 +237,10 @@ public class Manifest implements Comparable
   }
   
   /**
-   * Liefert true, wenn das Plugin ueber den globalen Classloader von Jameica geladen werden soll.
-   * @return true, wenn es ueber den globalen Classloader geladen werden soll.
+   * Liefert zurueck, ob das Plugin ueber den globalen Classloader von Jameica geladen werden soll.
+   * @return {@code true}, wenn es ueber den globalen Classloader geladen werden soll.
    * Andernfalls erhaelt es einen exlusiven Classloader.
-   * Default: True
+   * Default: {@code true}
    */
   public boolean isShared()
   {
@@ -244,8 +248,8 @@ public class Manifest implements Comparable
   }
   
   /**
-   * Liefert true, wenn es kein gewoehnliches Plugin-Manifest ist sondern das Manifest von Jameica selbst.
-   * @return true, wenn es kein gewoehnliches Plugin-Manifest ist sondern das Manifest von Jameica selbst.
+   * Pruefe, ob es sich um das Manifest von Jameica selbst handelt (und somit kein Plugin-Manifest).
+   * @return {@code true}, wenn es kein gewoehnliches Plugin-Manifest ist sondern das Manifest von Jameica selbst.
    */
   public boolean isSystemManifest()
   {
@@ -296,7 +300,7 @@ public class Manifest implements Comparable
   /**
    * Liefert das Icon des Plugins.
    * Sollte 64x64 Pixel gross sein.
-   * @return das Icon oder NULL, wenn keines definiert ist.
+   * @return das Icon oder {@code null}, wenn keines definiert ist.
    */
   public String getIcon()
   {
@@ -363,8 +367,8 @@ public class Manifest implements Comparable
 
 	/**
 	 * Liefert eine Liste von Service-Desktriptoren zu diesem Plugin.
-   * @return Liste aller Service-Deskriptoren aus der plugin.xml oder
-   * <code>null</code> wenn keine definiert sind.
+   * @return Liste aller Service-Deskriptoren aus der <i>plugins.xml</i> oder
+   *         {@code null} wenn keine definiert sind.
    */
   public ServiceDescriptor[] getServices()
 	{
@@ -405,8 +409,8 @@ public class Manifest implements Comparable
 
   /**
    * Liefert eine Liste von Extension-Desktriptoren zu diesem Plugin.
-   * @return Liste aller Extension-Deskriptoren aus der plugin.xml oder
-   * <code>null</code> wenn keine definiert sind.
+   * @return Liste aller Extension-Deskriptoren aus der <i>plugin.xml</i> oder
+   *         {@code null} wenn keine definiert sind.
    */
   public ExtensionDescriptor[] getExtensions()
   {
@@ -425,8 +429,8 @@ public class Manifest implements Comparable
   
   /**
    * Liefert eine Liste von Consumer-Desktriptoren zu diesem Plugin.
-   * @return Liste aller Consumer-Deskriptoren aus der plugin.xml oder
-   * <code>null</code> wenn keine definiert sind.
+   * @return Liste aller Consumer-Deskriptoren aus der <i>plugin.xml</i> oder
+   *         {@code null} wenn keine definiert sind.
    */
   public ConsumerDescriptor[] getMessageConsumers()
   {
@@ -445,7 +449,7 @@ public class Manifest implements Comparable
 
   /**
    * Liefert eine Liste von Messages, die automatisch beim Start versendet werden sollen.
-   * @return Liste aller Messages oder <code>null</code> wenn keine definiert sind.
+   * @return Liste aller Messages oder {@code null} wenn keine definiert sind.
    */
   public MessageDescriptor[] getMessages()
   {
@@ -474,12 +478,14 @@ public class Manifest implements Comparable
 
   /**
    * Liste der Plugins, von denen dieses hier direkt abhaengig ist.
-   * Es werden also nur die direkt abhaengigen Plugins geliefert, nicht jedoch
+   *
+   * <p>Es werden also nur die direkt abhaengigen Plugins geliefert, nicht jedoch
    * die indirekten Abhaengigkeiten.
    * Wenn die komplette Liste der Abhaengigkeiten ermittelt werden soll (also incl.
-   * indirekter Abhaengigkeiten), dann muss "getDependencies()" verwendet werden.
-   * @return  Liste von Abhaengigkeiten fuer dieses Plugin.
-   * Die Funktion liefert nie NULL sondern hoechstens ein leeres Array.
+   * indirekter Abhaengigkeiten), dann muss {@link #getDependencies()} verwendet werden.
+   *
+   * @return Liste von Abhaengigkeiten fuer dieses Plugin.
+   *         Die Funktion liefert nie {@code null} sondern hoechstens ein leeres Array.
    */
   public Dependency[] getDirectDependencies()
   {
@@ -507,12 +513,14 @@ public class Manifest implements Comparable
   
   /**
    * Liste der Plugins, von denen dieses hier direkt oder indirekt abhaengig ist.
-   * Es werden also nicht nur die direkt abhaengigen Plugins geliefert sondern auch alle
-   * Plugins, die von diesen wiederrum benoetigt werden.
+   *
+   * <p>Es werden also nicht nur die direkt abhaengigen Plugins geliefert, sondern auch alle
+   * Plugins, die von diesen wiederum benoetigt werden.
    * Wenn nur die einfache Liste der Abhaengigkeiten ermittelt werden soll (also ohne
-   * indirekte Abhaengigkeiten), dann muss "getDirectDependencies()" verwendet werden.
-   * @return  Liste von Abhaengigkeiten fuer dieses Plugin.
-   * Die Funktion liefert nie NULL sondern hoechstens ein leeres Array.
+   * indirekte Abhaengigkeiten), dann muss {@link #getDirectDependencies()} verwendet werden.
+   *
+   * @return Liste von Abhaengigkeiten fuer dieses Plugin.
+   *         Die Funktion liefert nie {@code null} sondern hoechstens ein leeres Array.
    */
   public Dependency[] getDependencies()
   {
@@ -556,33 +564,48 @@ public class Manifest implements Comparable
     }
     return found.toArray(new Dependency[found.size()]);
   }
+
   /**
    * Prueft, ob das Plugin installiert werden kann.
-   * Konkret wird hier geprueft:
-   * 
-   *  1. Ist die richtige Jameica-Version installiert
-   *  2. Sind die Abhaengigkeiten zu anderen Plugins erfuellt.
-   *  3. Ist das Plugin ggf. schon installiert, wenn ja
-   *     - kann es ueberschrieben werden?
-   *     - ist die installierte Version nicht neuer als die zu installierende
+   *
+   * <p>Konkret wird hier geprueft:
+   * <ol>
+   *   <li>Ist die richtige Jameica-Version installiert?</li>
+   *   <li>Sind die Abhaengigkeiten zu anderen Plugins erfuellt?</li>
+   *   <li>Ist das Plugin ggf. schon installiert und wenn ja ...
+   *    <ul>
+   *      <li>... kann es ueberschrieben werden?</li>
+   *      <li>... ist die installierte Version nicht neuer als die zu installierende?</li>
+   *    </ul>
+   *   </li>
+   * </ol>
+   *
    * @throws ApplicationException wenn das Plugin nicht installiert werden kann.
+   * @see #canDeploy(boolean)
    */
   public void canDeploy() throws ApplicationException
   {
     this.canDeploy(true);
   }
-  
+
   /**
    * Prueft, ob das Plugin installiert werden kann.
-   * Konkret wird hier geprueft:
-   * 
-   *  1. Ist die richtige Jameica-Version installiert
-   *  2. Sind die Abhaengigkeiten zu anderen Plugins erfuellt.
-   *  3. Ist das Plugin ggf. schon installiert, wenn ja
-   *     - kann es ueberschrieben werden?
-   *     - ist die installierte Version nicht neuer als die zu installierende
-   * @param checkDeps true, wenn die Abhaengigkeiten zu anderen Plugins geprueft werden sollen.
+   *
+   * <p>Konkret wird hier geprueft:
+   * <ol>
+   *   <li>Ist die richtige Jameica-Version installiert?</li>
+   *   <li>Sind die Abhaengigkeiten zu anderen Plugins erfuellt?</li>
+   *   <li>Ist das Plugin ggf. schon installiert und wenn ja ...
+   *    <ul>
+   *      <li>... kann es ueberschrieben werden?</li>
+   *      <li>... ist die installierte Version nicht neuer als die zu installierende?</li>
+   *    </ul>
+   *   </li>
+   * </ol>
+   *
+   * @param checkDeps {@code true}, wenn die Abhaengigkeiten zu anderen Plugins geprueft werden sollen.
    * @throws ApplicationException wenn das Plugin nicht installiert werden kann.
+   * @see #canDeploy()
    */
   public void canDeploy(boolean checkDeps) throws ApplicationException
   {
@@ -695,7 +718,7 @@ public class Manifest implements Comparable
 
   /**
    * Prueft, ob das Plugin geladen werden konnte.
-   * @return true, wenn es geladen werden konnte.
+   * @return {@code true}, wenn es geladen werden konnte.
    */
   public boolean isLoaded()
   {
@@ -785,7 +808,7 @@ public class Manifest implements Comparable
     {
       if (deps[i] == null)
         continue; // ueberspringen
-      if (otherName.equals(deps[i]))
+      if (otherName.equals(deps[i].getName()))
       {
         Logger.debug("7: " + otherName + " > " + name);
         return 1; // Wir haengen von dem anderen Plugin ab. Dann muss das andere zuerst geladen werden
diff --git a/src/de/willuhn/jameica/plugin/MessageDescriptor.java b/src/de/willuhn/jameica/plugin/MessageDescriptor.java
index 0079a72..73e74d3 100644
--- a/src/de/willuhn/jameica/plugin/MessageDescriptor.java
+++ b/src/de/willuhn/jameica/plugin/MessageDescriptor.java
@@ -20,13 +20,14 @@ import net.n3.nanoxml.IXMLElement;
 /**
  * Implementierung fuer die Beschreibungen einer Message im Manifest.
  * Wird in der plugin.xml definiert. Beispiel:
- * 
+ *
+ * <pre>{@code
  * <messaging>
  *   <message queue="meine.queue">
  *     Text der Message
  *   </message>
  * </messaging>
- * 
+ * }</pre>
  */
 public class MessageDescriptor
 {
diff --git a/src/de/willuhn/jameica/plugin/PlaceholderPlugin.java b/src/de/willuhn/jameica/plugin/PlaceholderPlugin.java
index db7be89..1d7802c 100644
--- a/src/de/willuhn/jameica/plugin/PlaceholderPlugin.java
+++ b/src/de/willuhn/jameica/plugin/PlaceholderPlugin.java
@@ -25,7 +25,7 @@ import de.willuhn.util.ApplicationException;
  * Javascripts. Im Manifest dieser Plugins kann das Attribut "class"
  * des XML-Elements "plugin" dann einfach weggelassen werden.
  * Da diese Plugins dennoch eine Klasse bereitstellen muessen, die
- * <code>Plugin</code> implementieren, wird dieses PlaceholderPlugin
+ * {@link Plugin} implementiert, wird dieses PlaceholderPlugin
  * verwendet. Es erzeugt via Reflection-Proxy dynamisch generierte
  * Klassen, die dieses Interface implementieren.
  */
@@ -44,7 +44,7 @@ public class PlaceholderPlugin implements Plugin
   }
   
   /**
-   * Erzeugt eine neue generische Platzhalter-Instanz, die von AbstractPlugin abgeleitet ist.
+   * Erzeugt eine neue generische Platzhalter-Instanz, die von {@link AbstractPlugin} abgeleitet ist.
    * @param manifest das Manifest des Platzhalter-Plugins.
    * @return die neue Plugin-Instanz.
    */
@@ -55,57 +55,43 @@ public class PlaceholderPlugin implements Plugin
     return (Plugin) Proxy.newProxyInstance(loader != null ? loader : Application.getClassLoader(),new Class[]{Plugin.class},handler);
   }
   
-  /**
-   * @see de.willuhn.jameica.plugin.Plugin#getResources()
-   */
+  @Override
   public PluginResources getResources()
   {
     return this.res;
   }
 
-  /**
-   * @see de.willuhn.jameica.plugin.Plugin#getManifest()
-   */
+  @Override
   public Manifest getManifest()
   {
     return this.manifest;
   }
 
-  /**
-   * @see de.willuhn.jameica.plugin.Plugin#init()
-   */
+  @Override
   public void init() throws ApplicationException
   {
     Application.getMessagingFactory().getMessagingQueue("plugin." + this.manifest.getName() + ".init").sendSyncMessage(new QueryMessage(this));
   }
 
-  /**
-   * @see de.willuhn.jameica.plugin.Plugin#install()
-   */
+  @Override
   public void install() throws ApplicationException
   {
     Application.getMessagingFactory().getMessagingQueue("plugin." + this.manifest.getName() + ".install").sendSyncMessage(new QueryMessage(this));
   }
 
-  /**
-   * @see de.willuhn.jameica.plugin.Plugin#update(de.willuhn.jameica.plugin.Version)
-   */
+  @Override
   public void update(Version oldVersion) throws ApplicationException
   {
     Application.getMessagingFactory().getMessagingQueue("plugin." + this.manifest.getName() + ".update").sendSyncMessage(new QueryMessage(new Object[]{this,oldVersion}));
   }
 
-  /**
-   * @see de.willuhn.jameica.plugin.Plugin#shutDown()
-   */
+  @Override
   public void shutDown()
   {
     Application.getMessagingFactory().getMessagingQueue("plugin." + this.manifest.getName() + ".shutdown").sendSyncMessage(new QueryMessage(this));
   }
 
-  /**
-   * @see de.willuhn.jameica.plugin.Plugin#uninstall(boolean)
-   */
+  @Override
   public void uninstall(boolean deleteUserData) throws ApplicationException
   {
     Application.getMessagingFactory().getMessagingQueue("plugin." + this.manifest.getName() + ".uninstall").sendSyncMessage(new QueryMessage(new Object[]{this,deleteUserData}));
@@ -128,9 +114,7 @@ public class PlaceholderPlugin implements Plugin
       this.redirect = redirect;
     }
     
-    /**
-     * @see java.lang.reflect.InvocationHandler#invoke(java.lang.Object, java.lang.reflect.Method, java.lang.Object[])
-     */
+    @Override
     public Object invoke(Object proxy, Method method, Object[] args) throws Throwable
     {
       return BeanUtil.invoke(redirect,method.getName(),args);
diff --git a/src/de/willuhn/jameica/plugin/Plugin.java b/src/de/willuhn/jameica/plugin/Plugin.java
index adf71b0..3816602 100644
--- a/src/de/willuhn/jameica/plugin/Plugin.java
+++ b/src/de/willuhn/jameica/plugin/Plugin.java
@@ -76,7 +76,7 @@ public interface Plugin
 	public void shutDown();
 	
 	/**
-	 * Wird aufgerufen, wenn das Plugin ueber Datei->Einstellungen->Plugins
+	 * Wird aufgerufen, wenn das Plugin ueber <i>Datei-&gt;Einstellungen-&gt;Plugins</i>
 	 * deinstalliert wird. Hier kann das Plugin bei Bedarf eigene Aufraeum-Arbeiten durchfuehren.
 	 * VOR dem Aufruf dieser Funktion wird "shutDown" aufgerufen. Falls dort also
 	 * z.Bsp. Datenbankverbindungen geschlossen wurden, dann stehen diese hier nicht
diff --git a/src/de/willuhn/jameica/plugin/PluginLoader.java b/src/de/willuhn/jameica/plugin/PluginLoader.java
index 70956ea..ab08cbf 100644
--- a/src/de/willuhn/jameica/plugin/PluginLoader.java
+++ b/src/de/willuhn/jameica/plugin/PluginLoader.java
@@ -52,22 +52,21 @@ import de.willuhn.util.ProgressMonitor;
  */
 public final class PluginLoader
 {
-  // Liste von Plugins, die beim Laden ignoriert werden sollen, weil sie inzwischen Bestandteil von Jameica sind
+  /** Liste von Plugins, die beim Laden ignoriert werden sollen, weil sie inzwischen Bestandteil von Jameica sind */
   private final static Set<String> obsoletePlugins = new HashSet<String>()
   {{
     add("jameica.scripting");
     add("jameica.update");
   }};
 
-  // Liste mit allen gefundenen Plugins.
+  /** Liste mit allen gefundenen Plugins. */
   // Die Reihenfolge aus de.willuhn.jameica.system.Config.properties bleibt
   private List<Manifest> plugins = new ArrayList<Manifest>();
 
-  // Initialisierungsmeldungen von Plugins.
+  /** Initialisierungsmeldungen von Plugins. */
   private Map<Manifest,Throwable> initErrors = new HashMap<Manifest,Throwable>();
 
-  // Den brauchen wir, damit wir Updates an Plugins triggern und deren
-  // Update-Methode aufrufen koennen.
+  /** Den brauchen wir, damit wir Updates an Plugins triggern und deren Update-Methode aufrufen koennen. */
   private Settings updateChecker = null;
 
   /**
@@ -463,7 +462,7 @@ public final class PluginLoader
 
   /**
    * Liefert eine Liste mit allen installierten Plugins.
-   * @return Liste aller installierten Plugins. Die Elemente sind vom Typ <code>AbstractPlugin</code>.
+   * @return Liste aller installierten Plugins. Die Elemente sind vom Typ {@link AbstractPlugin}.
    */
   public List<Plugin> getInstalledPlugins()
   {
@@ -563,7 +562,7 @@ public final class PluginLoader
    * Liefert die Instanz des Plugins mit der angegebenen Klasse.
    * @param <T> der Typ des Plugins.
    * @param plugin Klasse des Plugins.
-   * @return Instanz des Plugins oder <code>null</code> wenn es nicht
+   * @return Instanz des Plugins oder {@code null} wenn es nicht
    *         installiert ist.
    */
   public <T extends Plugin> T getPlugin(Class<? extends Plugin> plugin)
@@ -577,7 +576,7 @@ public final class PluginLoader
   /**
    * Liefert die Instanz des Plugins mit der angegebenen Klassennamen.
    * @param pluginClass Klassenname des Plugins.
-   * @return Instanz des Plugins oder <code>null</code> wenn es nicht
+   * @return Instanz des Plugins oder {@code null} wenn es nicht
    *         installiert ist.
    */
   public Plugin getPlugin(String pluginClass)
@@ -591,11 +590,13 @@ public final class PluginLoader
 
   /**
    * Versucht, anhand der Klasse herauszufinden, zu welchem Plugins sie gehoert.
-   * Falls die Klasse in mehreren Plugins enthalten ist und diese Plugins einen
+   *
+   * <p>Falls die Klasse in mehreren Plugins enthalten ist und diese Plugins einen
    * gemeinsamen Classloader nutzen (was bei den bisherigen und meisten Plugins
    * meist der Fall ist), kann das Ergebnis durchaus variieren.
+   *
    * @param c die zu testende Klasse.
-   * @return das Plugin oder <code>null</code>, wenn es nicht ermittelbar ist
+   * @return das Plugin oder {@code null}, wenn es nicht ermittelbar ist
    *         oder zu einem Fehler fuehrte. Der Fehler wird im Jameica-Log protokolliert.
    */
   public Plugin findByClass(Class c)
@@ -646,12 +647,12 @@ public final class PluginLoader
    * Prueft, ob das angegebene Plugin installiert ist <b>und</b> erfolgreich
    * initialisiert ist.
    * @param pluginClass vollstaeniger Klassenname des Plugins. Warum hier nicht ein
-   * Class-Objekt uebergeben wird? Wuerde das Plugin mittels <code>PluginLoader.isInstalled(NeededPlugin.class)</code>
-   * pruefen wollen, ob das benoetigte Plugin installiert ist, dann wuerde bereits das <code>NeededPlugin.class</code>
-   * vom SystemClassLoader der JVM mit einer ClassNotFoundException aufgeben. Da wir es hier mit
+   * Class-Objekt uebergeben wird? Wuerde das Plugin mittels {@code PluginLoader.isInstalled(NeededPlugin.class)}
+   * pruefen wollen, ob das benoetigte Plugin installiert ist, dann wuerde bereits das {@code NeededPlugin.class}
+   * vom SystemClassLoader der JVM mit einer {@link ClassNotFoundException} aufgeben. Da wir es hier mit
    * dynamisch geladenen Klassen zu tun haben, sind die dem SystemClassLoader nicht bekannt sondern nur
-   * unserem eigenen, der via <code>Application.getClassLoder()</code> bezogen werden kann.
-   * @return true, wenn es installiert <b>und</b> aktiv ist.
+   * unserem eigenen, der via {@link Application#getClassLoader()} bezogen werden kann.
+   * @return {@code true}, wenn es installiert <b>und</b> aktiv ist.
    */
   public boolean isInstalled(String pluginClass)
   {
@@ -875,7 +876,7 @@ public final class PluginLoader
   }
   
   /**
-   * Deinstalliert ein Plugin nicht sofort sondern markiert es nur zur Loeschung.
+   * Deinstalliert ein Plugin nicht sofort, sondern markiert es nur zur Loeschung.
    * Das eigentliche Loeschen geschieht dann erst beim naechsten Start.
    * @param manifest das Plugin, welches zur Loeschung vorgemerkt wird.
    * @throws ApplicationException
diff --git a/src/de/willuhn/jameica/plugin/ServiceDescriptor.java b/src/de/willuhn/jameica/plugin/ServiceDescriptor.java
index a6335fc..8090cd9 100644
--- a/src/de/willuhn/jameica/plugin/ServiceDescriptor.java
+++ b/src/de/willuhn/jameica/plugin/ServiceDescriptor.java
@@ -19,13 +19,16 @@ import net.n3.nanoxml.IXMLElement;
  * eines Services, welcher von einem Plugin zur Verfuegung
  * gestellt werden kann.
  * Diese finden sich in der plugin.xml eines jeden Plugins.
- * Bsp.:
+ *
+ * <p>Bsp.:
+ * <pre>{@code
  * <services>
  *   <service name="service 1" class="de.willuhn.jameica.plugin.Service1"
  *            autostart="true" depends="service 2" />
  *   <service name="service 2" class="de.willuhn.jameica.plugin.Service2"
  *            autostart="false" />
  * </services>
+ * }</pre>
  */
 public class ServiceDescriptor
 {
@@ -58,10 +61,12 @@ public class ServiceDescriptor
 
   /**
    * Liefert den Namen der Java-Klasse des Services.
-   * @return Name der Klasse.
-   * Hier muss keine Implementierung angegeben werden. Ist ein
+   *
+   * <p><b>HINWEIS:</b>Hier muss keine Implementierung angegeben werden. Ist ein
    * Interface eingetragen, sucht Jameica selbstaendig die
    * zugehoerige Implementierung.
+   *
+   * @return Name der Klasse.
    */
   public String getClassname()
   {
@@ -74,7 +79,7 @@ public class ServiceDescriptor
   /**
    * Legt fest, ob der Service beim Starten von Jameica automatisch
    * gestartet werden soll.
-   * @return true, wenn er automatisch gestartet werden soll.
+   * @return {@code true}, wenn er automatisch gestartet werden soll.
    */
   public boolean autostart()
   {
@@ -85,9 +90,8 @@ public class ServiceDescriptor
   /**
    * Liefert eine Liste von Service-Namen, von denen dieser Service
    * abhaengig ist.
-   * @return Liste von Services, die vorher instanziiert werden muessen.
-   * Kann <code>null</code> liefern, wenn der Service von keinen
-   * anderen Services abhaengig ist.
+   * @return Liste von Services, die vorher instanziiert werden muessen oder
+   *         {@code null}, wenn der Service von keinen anderen Services abhaengig ist.
    */
   public String[] depends()
   {
@@ -114,7 +118,7 @@ public class ServiceDescriptor
 
   /**
    * Legt fest, ob der Service im Netzwerk freigegeben werden soll.
-   * @return true, wenn er freigegeben werden soll.
+   * @return {@code true}, wenn er freigegeben werden soll.
    */
   public boolean share()
   {
diff --git a/src/de/willuhn/jameica/reminder/Reminder.java b/src/de/willuhn/jameica/reminder/Reminder.java
index 722ab70..eaffcb8 100644
--- a/src/de/willuhn/jameica/reminder/Reminder.java
+++ b/src/de/willuhn/jameica/reminder/Reminder.java
@@ -19,7 +19,7 @@ import java.util.Map;
  * Ein einzelner Reminder.
  * Das Erstellen und Speichern des Reminders geschieht beispielhaft so:
  * 
- * <pre>
+ * <pre>{@code
  *   String channel = "mein.test.channel";
  *   Date due = new Date(System.currentTimeMillis() + (7 * 24 * 60 * 60 * 1000L));
  *   Map<String,Serializable> data = new HashMap<String,Serializable>();
@@ -30,11 +30,11 @@ import java.util.Map;
  *   
  *   ReminderService service = (ReminderService) Application.getBootloader().getBootable(ReminderService.class);
  *   String uuid = service.getDefaultProvider().add(reminder);
- *   
- *   Die UUID kann verwendet werden, um den Reminder zu loeschen, bevor er ausgeloest wird.
- *   Bei Erreichen der Faelligkeit sendet der Reminder-Service eine QueryMessage
- *   mit den Nutzdaten an den angegebenen Channel.
- * </pre>
+ * }</pre>
+ *
+ * Die UUID kann verwendet werden, um den Reminder zu loeschen, bevor er ausgeloest wird.
+ * Bei Erreichen der Faelligkeit sendet der Reminder-Service eine QueryMessage
+ * mit den Nutzdaten an den angegebenen Channel.
  */
 public final class Reminder implements Serializable
 {
diff --git a/src/de/willuhn/jameica/reminder/ReminderStorageProvider.java b/src/de/willuhn/jameica/reminder/ReminderStorageProvider.java
index 5a97cae..f616ce8 100644
--- a/src/de/willuhn/jameica/reminder/ReminderStorageProvider.java
+++ b/src/de/willuhn/jameica/reminder/ReminderStorageProvider.java
@@ -53,7 +53,8 @@ public interface ReminderStorageProvider
   
   /**
    * Liefert eine Liste aller Reminder im angegebenen Zeitraum.
-   * Die Funktion findet auch wiederkehrende Reminder, insofern mindestens eine
+   *
+   * <p>Die Funktion findet auch wiederkehrende Reminder, insofern mindestens eine
    * geplante Ausfuehrung im angegebenen Zeitraum liegt. Befinden sich in dem Zeitraum
    * mehrere Termine fuer den Reminder, dann ist er in der Map dennoch nur einmal
    * enthalten, da alle weiteren Termine dieses Reminders ja die selbe UUID haben und in
@@ -61,18 +62,19 @@ public interface ReminderStorageProvider
    * Es ist also Sache des Aufrufers, zu pruefen, ob unter den zurueckgelieferten Termine
    * welche mit Wiederholungen enthalten sind und diese eventuell ebenfalls noch im
    * Zeitfenster liegen. Das kann beispielsweise wie folgt geschehen:
-   * 
-   * <code>
+   *
+   * <pre>{@code
    * ReminderInterval ri = reminder.getReminderInterval();
    * if (ri != null)
    * {
    *   List<Date> termine = ri.getDates(reminder.getDate(),from,to);
    * }
-   * </code>
-   * 
-   * Wiederkehrende Reminder mit Ende-Datum werden hier noch nicht beruecksichtigt.
+   * }</pre>
+   *
+   * <p>Wiederkehrende Reminder mit Ende-Datum werden hier noch nicht beruecksichtigt.
    * Sie werden also mit zurueckgeliefert, als wenn sie kein Ende-Datum haetten. Es
-   * ist dann Aufgabe des Aufrufers, diese rauszufischen, wenn das Ende-Datum ueberschritten ist. 
+   * ist dann Aufgabe des Aufrufers, diese rauszufischen, wenn das Ende-Datum ueberschritten ist.
+   *
    * @param queue Angabe der Queue, in dem sich die Reminder befinden muessen (optional).
    * Ist keine Queue angegeben, werden die Reminder aller Queues geliefert.
    * @param from Start-Datum des Zeitraumes (optional).
diff --git a/src/de/willuhn/jameica/search/SearchProvider.java b/src/de/willuhn/jameica/search/SearchProvider.java
index e4d1d48..73e04fe 100644
--- a/src/de/willuhn/jameica/search/SearchProvider.java
+++ b/src/de/willuhn/jameica/search/SearchProvider.java
@@ -18,10 +18,12 @@ import de.willuhn.util.ApplicationException;
 
 /**
  * Interface fuer einen Provider, der von der Suchmaschine abgefragt wird.
- * Das Interface muss lediglich implementiert werden, um automatisch
+ *
+ * <p>Das Interface muss lediglich implementiert werden, um automatisch
  * in der Suchmaschine registriert zu werden.
- * Die Implementierungen muessen einen parameterlosen Konstruktor mit
- * dem Modifier "public" besitzen, um geladen werden zu koennen
+ *
+ * <p>Die Implementierungen muessen einen parameterlosen Konstruktor mit
+ * dem Modifier {@code public} besitzen, um geladen werden zu koennen
  * (Bean-Spezifikation).
  */
 public interface SearchProvider
@@ -35,7 +37,7 @@ public interface SearchProvider
   /**
    * Stellt eine Suchanfrage an den Provider.
    * @param search der Suchbegriff.
-   * @return Liste der Ergebnisse als Objekte vom Typ "Result" oder <code>null</code>, wenn nichts gefunden wurde.
+   * @return Liste der Ergebnisse als Objekte vom Typ {@link Result} oder {@code null}, wenn nichts gefunden wurde.
    * @throws RemoteException
    * @throws ApplicationException
    */
diff --git a/src/de/willuhn/jameica/security/JameicaAuthenticator.java b/src/de/willuhn/jameica/security/JameicaAuthenticator.java
index fa42f06..b2475fc 100644
--- a/src/de/willuhn/jameica/security/JameicaAuthenticator.java
+++ b/src/de/willuhn/jameica/security/JameicaAuthenticator.java
@@ -89,14 +89,17 @@ public class JameicaAuthenticator extends Authenticator
   }
   
   /**
-   * Ueber diese Funktion koennen Properties des Authentifizierungs-Requqests
-   * abgefragt werden. Die unten aufgerufenen Funktionen sind leider alle
-   * protected final, sodass sie nur von abgeleiteten Klassen aufgerufen
+   * Ueber diese Funktion koennen Properties des Authentifizierungs-Requests
+   * abgefragt werden.
+   *
+   * <p>Die notwendigen Funktionen sind leider alle {@code protected final},
+   * sodass sie nur von abgeleiteten Klassen aufgerufen
    * werden koennen. Wir wollen den Authentifizierungsdialog aber nicht
    * direkt hier drin sondern im Jameica-Callback implementieren. Daher machen
    * wir sie mit folgender Funktion auch von aussen abrufbar.
+   *
    * @param param Name des Parameters.
-   * @return der Wert des Parameters oder NULL, wenn er nicht existiert oder keinen Wert hat.
+   * @return der Wert des Parameters oder {@code null}, wenn Parameter nicht existiert oder keinen Wert hat.
    */
   public Object getRequestParam(RequestParam param)
   {
diff --git a/src/de/willuhn/jameica/security/JameicaTrustManager.java b/src/de/willuhn/jameica/security/JameicaTrustManager.java
index 501b464..b76ee27 100644
--- a/src/de/willuhn/jameica/security/JameicaTrustManager.java
+++ b/src/de/willuhn/jameica/security/JameicaTrustManager.java
@@ -104,9 +104,7 @@ public class JameicaTrustManager implements X509TrustManager
     return this.systemTrustManager;
   }
   
-  /**
-   * @see javax.net.ssl.X509TrustManager#checkClientTrusted(java.security.cert.X509Certificate[], java.lang.String)
-   */
+  @Override
   public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException
   {
     if (this.parentTrustManager != null)
@@ -131,9 +129,7 @@ public class JameicaTrustManager implements X509TrustManager
     }
   }
 
-  /**
-   * @see javax.net.ssl.X509TrustManager#checkServerTrusted(java.security.cert.X509Certificate[], java.lang.String)
-   */
+  @Override
   public void checkServerTrusted(X509Certificate[] certificates, String authType) throws CertificateException
   {
     if (this.parentTrustManager != null)
@@ -282,9 +278,7 @@ public class JameicaTrustManager implements X509TrustManager
     }
   }
 
-  /**
-   * @see javax.net.ssl.X509TrustManager#getAcceptedIssuers()
-   */
+  @Override
   public X509Certificate[] getAcceptedIssuers()
   {
     try
diff --git a/src/de/willuhn/jameica/security/SSLFactory.java b/src/de/willuhn/jameica/security/SSLFactory.java
index 2d20a73..858341f 100644
--- a/src/de/willuhn/jameica/security/SSLFactory.java
+++ b/src/de/willuhn/jameica/security/SSLFactory.java
@@ -92,7 +92,6 @@ public class SSLFactory
    * 
    * Siehe auch
    * https://www.willuhn.de/products/jameica/updates/jameica.update-pem.crt
-   * 
    */
   private final static String CERT_UPDATES = 
     "-----BEGIN CERTIFICATE-----\n" +
@@ -419,7 +418,8 @@ public class SSLFactory
   /**
 	 * Liefert das X.509-Zertifikat der Jameica-Installation.
    * @return X.509-Zertifikat.
-   * @throws Exception
+   * @throws java.security.KeyStoreException falls kein Zugriff auf Keystore
+   * @throws Exception siehe {@link #getKeyStore()}
    */
   public synchronized X509Certificate getSystemCertificate() throws Exception
 	{
@@ -487,7 +487,8 @@ public class SSLFactory
   /**
    * Liefert eine Liste aller installierten Zertifikate <b>ausser</b> dem Jameica-eigenen System-Zertifikat.
    * @return Liste der installieren Zertifikate.
-   * @throws Exception
+   * @throws java.security.KeyStoreException falls kein Zugriff auf Keystore
+   * @throws Exception siehe {@link #getKeyStore()}
    */
   public synchronized X509Certificate[] getTrustedCertificates() throws Exception
   {
@@ -513,7 +514,8 @@ public class SSLFactory
    * kann stattdessen {@link SSLFactory#getSystemCertificate()} verwendet werden.
    * @param alias Alias des Zertifikats.
    * @return das Zertifikat oder NULL, wenn es nicht gefunden wurde.
-   * @throws Exception
+   * @throws java.security.KeyStoreException falls kein Zugriff auf Keystore
+   * @throws Exception siehe {@link #getKeyStore()}
    */
   public X509Certificate getTrustedCertificate(String alias) throws Exception
   {
@@ -575,7 +577,11 @@ public class SSLFactory
   /**
 	 * Liefert den Keystore mit dem Zertifikat.
    * @return Keystore
-   * @throws Exception
+   * @throws IOException falls Keystore nicht existiert oder kein Zugriff
+   * @throws java.security.KeyStoreException siehe {@link KeyStore#getInstance(String)}
+   * @throws java.security.NoSuchAlgorithmException falls es Probleme beim Integritaetscheck gab
+   * @throws java.security.cert.CertificateException falls Zertifikate nicht aus dem Keystore geladen werden konnten
+   * @throws Exception falls falsches Passwort (siehe {@link ApplicationCallback#getPassword()})
    */
   public synchronized KeyStore getKeyStore() throws Exception
 	{
@@ -697,7 +703,8 @@ public class SSLFactory
   /**
    * Liefert die Certificate-Factory.
    * @return die Certificate-Factory.
-   * @throws Exception
+   * @throws java.security.cert.CertificateException falls Algorithmus nicht unterstützt wird (siehe {@link CertificateFactory})
+   * @throws java.security.NoSuchProviderException falls Provider nicht unterstützt wird (siehe {@link CertificateFactory})
    */
   public synchronized CertificateFactory getCertificateFactory() throws Exception
   {
@@ -722,7 +729,7 @@ public class SSLFactory
    * Fuegt dem Keystore ein Zertifikat hinzu und uebernimmt dabei auch alle noetigen Sicherheitsabfragen.
    * @param cert das Zertifikat.
    * @return der Alias-Name, unter dem das Zertifikat im Keystore abgelegt wurde.
-   * Die Funktion liefert NIE NULL sondern wirft stattdessen eine {@link OperationCanceledException}.
+   * Die Funktion liefert NIE {@code null} sondern wirft stattdessen eine {@link OperationCanceledException}.
    * @throws Exception
    */
   public synchronized String addTrustedCertificate(X509Certificate cert) throws Exception
diff --git a/src/de/willuhn/jameica/security/Wallet.java b/src/de/willuhn/jameica/security/Wallet.java
index 0111a1e..dc1ea13 100644
--- a/src/de/willuhn/jameica/security/Wallet.java
+++ b/src/de/willuhn/jameica/security/Wallet.java
@@ -35,15 +35,15 @@ import de.willuhn.logging.Logger;
  * Liefert eine Art Brieftasche, ueber die andere Klassen Daten
  * verschluesselt abspeichern koennen.
  * 
- * HINWEIS: Das Wallet verwendet zum Verschluesseln per Default den asymmetrischen
+ * <p><b>HINWEIS:</b> Das Wallet verwendet zum Verschluesseln per Default den asymmetrischen
  * RSA-Algorithmus (es sei denn, es wurde explizit eine andere Engine angegeben).
  * Es ist im Default-Fall also nicht fuer groessere Daten (Dateien, Streams, etc.)
  * geeignet sondern typischerweise fuer Passwoerter.
  * 
- * Will zum Beispiel ein Plugin irgendwelche Passwort-Informationen
+ * <p>Will zum Beispiel ein Plugin irgendwelche Passwort-Informationen
  * sicher speichern, dann kann es mittels folgenden Codes ein
  * Wallet erzeugen:
- * <code>
+ * <pre>{@code
  *   // erzeugt eine neue Wallet-Datei in ~/.jameica/cfg mit dem
  *   // Dateinamen "beliebige.Klasse.wallet2"
  *   Wallet wallet = new Wallet(beliebige.Klasse.class);
@@ -51,7 +51,7 @@ import de.willuhn.logging.Logger;
  *   wallet.set("passwort","geheim");
  *   // Auslesen des Passwortes "geheim".
  *   String password = wallet.getString("passwort");
- * </code>
+ * }</pre>
  */
 public final class Wallet
 {
@@ -98,7 +98,7 @@ public final class Wallet
 	 * Speichert einen Datensatz verschluesselt in dem Wallet.
    * @param alias Alias-Name.
    * @param data Nutzdaten, die verschluesselt gespeichert werden sollen
-   * oder <code>null</code> wenn der Wet geloescht werden soll.
+   * oder {@code null} wenn der Wert geloescht werden soll.
    * @throws Exception
    */
   public void set(String alias, Serializable data) throws Exception
@@ -142,7 +142,7 @@ public final class Wallet
 
   /**
 	 * Loescht alle Nutzdaten, deren Alias-Name mit dem angegebenen beginnt.
-	 * Wird als Prefix null oder ein Leerstring angegeben, wird das komplette
+	 * Wird als Prefix {@code null} oder ein Leerstring angegeben, wird das komplette
 	 * Wallet geleert.
    * @param aliasPrefix Alias-Prefix.
    * @throws Exception
@@ -172,10 +172,10 @@ public final class Wallet
   
   /**
    * Liefert alle Keys, deren Name mit dem Prefix beginnt.
-   * Wird null uebergeben, werden alle Keys zurueckgeliefert.
-   * Die Funktion liefert nie null sondern hoechstens ein leeres Array.
+   * Wird {@code null} uebergeben, werden alle Keys zurueckgeliefert.
    * @param aliasPrefix Alias-Prefix.
    * @return Liste der gefundenen Keys.
+   * Die Funktion liefert nie {@code null} sondern hoechstens ein leeres Array.
    * @throws Exception
    */
   public synchronized String[] getAll(String aliasPrefix) throws Exception
diff --git a/src/de/willuhn/jameica/services/ClassService.java b/src/de/willuhn/jameica/services/ClassService.java
index 4fe40d1..246b7fd 100644
--- a/src/de/willuhn/jameica/services/ClassService.java
+++ b/src/de/willuhn/jameica/services/ClassService.java
@@ -134,7 +134,7 @@ public class ClassService implements Bootable
           Manifest mf = plugins.get(i);
           if (mf == null || manifest.getName().equals(mf.getName())) // sind wir selbst
             continue;
-          for (int k=0;k<deps.length;++i)
+          for (int k=0;k<deps.length;++k)
           {
             if (deps[k].getName().equals(mf.getName()) && mf.isLoaded())
             {
diff --git a/src/de/willuhn/jameica/services/SearchService.java b/src/de/willuhn/jameica/services/SearchService.java
index 41d91e7..44f39f3 100644
--- a/src/de/willuhn/jameica/services/SearchService.java
+++ b/src/de/willuhn/jameica/services/SearchService.java
@@ -33,17 +33,13 @@ public class SearchService implements Bootable
   private ArrayList<SearchProvider> providers = null;
   private static Settings settings = new Settings(SearchService.class); 
 
-  /**
-   * @see de.willuhn.boot.Bootable#depends()
-   */
+  @Override
   public Class[] depends()
   {
     return new Class[]{PluginService.class};
   }
 
-  /**
-   * @see de.willuhn.boot.Bootable#init(de.willuhn.boot.BootLoader, de.willuhn.boot.Bootable)
-   */
+  @Override
   public void init(BootLoader loader, Bootable caller) throws SkipServiceException
   {
     this.providers = new ArrayList<SearchProvider>();
@@ -86,9 +82,7 @@ public class SearchService implements Bootable
     }
   }
   
-  /**
-   * @see de.willuhn.boot.Bootable#shutdown()
-   */
+  @Override
   public void shutdown()
   {
     this.providers = null;
@@ -96,8 +90,10 @@ public class SearchService implements Bootable
   
   /**
    * Fuehrt eine Suche ueber die Such-Provider durch.
-   * Aus Perfomanz-Gruenden beginnt die Suche nicht sofort
+   *
+   * <p>Aus Perfomanz-Gruenden beginnt die Suche nicht sofort
    * sondern erst, wenn die SearchResults vom Aufrufer ausgewertet werden.
+   *
    * @param text der Suchbegriff.
    * @return das Suchergebnis.
    * Jedes SearchResult enthaelt die Suchergebnisse fuer einen Provider.
@@ -127,7 +123,7 @@ public class SearchService implements Bootable
   
   /**
    * Liefert eine Liste der SerchProvider.
-   * @return Liste der SearchProvider. Nie <code>null</code> sondern
+   * @return Liste der SearchProvider. Nie {@code null} sondern
    * hoechstens eine leere Liste.
    */
   public SearchProvider[] getSearchProviders()
@@ -140,7 +136,7 @@ public class SearchService implements Bootable
   /**
    * Aktiviert oder deaktiviert die Suche in einem einzelnen Searchprovider.
    * @param provider der Provider.
-   * @param enabled false, wenn die Suche in dem Provider deaktiviert werden soll, sonst true.
+   * @param enabled {@code false}, wenn die Suche in dem Provider deaktiviert werden soll, sonst {@code true}.
    */
   public void setEnabled(SearchProvider provider,boolean enabled)
   {
@@ -152,7 +148,7 @@ public class SearchService implements Bootable
   /**
    * Prueft, ob der angegebene Search-Provider aktiviert ist.
    * @param provider Search-Provider.
-   * @return true, wenn er aktiv ist, sonst false.
+   * @return {@code true}, wenn er aktiv ist, sonst {@code false}.
    */
   public boolean isEnabled(SearchProvider provider)
   {
diff --git a/src/de/willuhn/jameica/system/ApplicationCallback.java b/src/de/willuhn/jameica/system/ApplicationCallback.java
index 702c1f9..6effdbd 100644
--- a/src/de/willuhn/jameica/system/ApplicationCallback.java
+++ b/src/de/willuhn/jameica/system/ApplicationCallback.java
@@ -21,9 +21,12 @@ import de.willuhn.util.ProgressMonitor;
 /**
  * Dieses Interface beschreibt Funktionen, die von Jameica
  * aufgerufen werden, um mit dem Benutzer zu interagieren.
- * Dies betrifft Informationen, die den Jameica-Kern selbst
+ *
+ * <p>Dies betrifft Informationen, die den Jameica-Kern selbst
  * betreffen und daher sowohl im Server- als auch im GUI-
- * Mode abgefragt werden muessen. Klassisches Beispiel:
+ * Mode abgefragt werden muessen.
+ *
+ * <p>Klassisches Beispiel:
  * Jameica legt beim Start ein Lock-File an, um sicherzustellen,
  * dass die Anwendung nicht zweimal gleichzeitig gestartet wird.
  * Existiert das Lock-File bereits, fragt Jameica den Benutzer,
@@ -36,27 +39,28 @@ public interface ApplicationCallback
    * bereits existiert. Es ist Sache der Implementierung, dies
    * dem Benutzer darzulegen.
    * @param lockfile Pfad und Dateiname des Lockfiles.
-   * @return true, wenn der Start von Jameica dennoch forgesetzt
-   * werden soll. False, wenn der Start abgebrochen werden soll.
+   * @return {@code true}, wenn der Start von Jameica dennoch fortgesetzt
+   * werden soll. {@code false}, wenn der Start abgebrochen werden soll.
    */
   public boolean lockExists(String lockfile);
   
   /**
    * Liefert den eingegebenen Benutzernamen, insofern der Start im
    * Masterpasswort-Dialog mit Benutzername erfolgte.
-   * @return der eingegebene Username oder NULL.
-   * Oder Customizing liefert die Funktion immer NULL.
+   * @return der eingegebene Username oder {@code null}.
    */
   public String getUsername();
   
 	/**
 	 * Wird beim ersten Start von Jameica aufgerufen, um ein
 	 * neues Master-Passwort festzulegen.
-	 * Es ist dabei der implementierenden Klasse ueberlassen, wie
+	 *
+	 * <p>Es ist dabei der implementierenden Klasse ueberlassen, wie
 	 * diese Abfrage aussieht. Sprich: Ob sie nun nur ein Eingabefeld
 	 * zur Vergabe des Passwortes anzeigt oder zwei, wovon letzteres
-	 * zur Passwort-Wiederholung (Vermeidung von Tippfehlern), ist
+	 * zur Passwort-Wiederholung (Vermeidung von Tippfehlern) dient, ist
 	 * der Implementierung ueberlassen.
+	 *
 	 * @return das neu zu verwendende Passwort.
 	 * @throws Exception
 	 */
@@ -64,9 +68,11 @@ public interface ApplicationCallback
 	
 	/**
 	 * Liefert das Master-Passwort der Jameica-Installation.
-	 * Es ist der implementierenden Klasse ueberlassen, das eingegebene
+	 *
+	 * <p>Es ist der implementierenden Klasse ueberlassen, das eingegebene
 	 * Passwort ueber die Dauer der aktuellen Jameica-Sitzung zu cachen, um den
 	 * Benutzer nicht dauernd mit der Neueingabe des Passwortes zu nerven.
+	 *
 	 * @return das existierende Passwort.
 	 * @throws Exception
 	 */
@@ -74,9 +80,11 @@ public interface ApplicationCallback
 	
   /**
    * Liefert das Master-Passwort der Jameica-Installation.
-   * Es ist der implementierenden Klasse ueberlassen, das eingegebene
+   *
+   * <p>Es ist der implementierenden Klasse ueberlassen, das eingegebene
    * Passwort ueber die Dauer der aktuellen Jameica-Sitzung zu cachen, um den
    * Benutzer nicht dauernd mit der Neueingabe des Passwortes zu nerven.
+   *
    * @param verifier optionaler Login-Verifier, der von der implementierenden Klasse
    * verwendet werden kann, um das Passwort zu auf Korrektheit pruefen, bevor
    * die Methode verlassen wird.
@@ -87,15 +95,19 @@ public interface ApplicationCallback
 
 	/**
 	 * Ueber diese Funktion kann das Passwort des Keystores geaendert werden.
-	 * Alles, was die implementierende Klasse zu tun hat, ist einen
+	 *
+	 * <p>Alles, was die implementierende Klasse zu tun hat, ist einen
 	 * Dialog zur Passwort-Aenderung anzuzeigen und von nun an
-	 * in der Funktion <code>getPassword()</code> das neue Passwort zu
+	 * in der Funktion {@link #getPassword()} das neue Passwort zu
 	 * liefern.
-	 * Nochmal: Es ist nicht Aufgabe des ApplicationCallbacks, das Passwort
-	 * im System zu aendern sondern lediglich das neue Passwort vom Benutzer
-	 * abzufragen und es anschliessend ueber <code>getPassword()</code>
+	 *
+	 * <p>Nochmal: Es ist <b>nicht</b> Aufgabe des ApplicationCallbacks, das Passwort
+	 * im System zu aendern, sondern lediglich das neue Passwort vom Benutzer
+	 * abzufragen und es anschliessend ueber {@link #getPassword()}
 	 * zur Verfuegung zu stellen.
    * @throws Exception
+   * @see #getPassword()
+   * @see #getPassword(LoginVerifier)
    */
   public void changePassword() throws Exception;
 
@@ -146,23 +158,25 @@ public interface ApplicationCallback
   /**
    * Wird von Jameica aufgerufen, wenn der Benutzer eine Frage mit Ja/Nein beantworten soll.
    * @param question Die anzuzeigende Frage.
-   * @return true fuer ja, false fuer nein.
+   * @return {@code true} fuer ja, {@code false} fuer nein.
    * @throws Exception
    */
   public boolean askUser(String question) throws Exception;
 
   /**
    * Wird von Jameica aufgerufen, wenn der Benutzer eine Frage mit Ja/Nein beantworten soll.
-   * Hintergrund. Jameica speichert <code>question</code> als Key in einer Properties-Datei,
+   *
+   * <p>Hintergrund: Jameica speichert {@code question} als Key in einer Properties-Datei,
    * falls der User die Option "Frage nicht mehr anzeigen" aktiviert hat. Enthaelt die
    * Frage nun aber variablen Text, wuerde die selbe Frage immer wieder kommen - nur weil
    * ein paar Variablen anders sind und somit der Key in der Properties-Datei nicht mehr
    * uebereinstimmt. Daher kann man stattdessen diese Funktion hier verwenden. Im Text
    * benutzt man (wie bei {@link I18N#tr(String, String[])}) die Platzhalter "{0}","{1}",...
    * und uebergibt als String-Array die einzutragenden Variablen.
+   *
    * @param question Die anzuzeigende Frage.
    * @param variables mittels MessageFormat einzutragende Variablen.
-   * @return true fuer ja, false fuer nein.
+   * @return {@code true} fuer ja, {@code false} fuer nein.
    * @throws Exception
    */
   public boolean askUser(String question, String[] variables) throws Exception;
@@ -170,25 +184,27 @@ public interface ApplicationCallback
   /**
    * Wird von Jameica aufgerufen, wenn der Benutzer eine Frage mit Ja/Nein beantworten soll.
    * @param question Die anzuzeigende Frage.
-   * @param storeAnswer true, wenn die Option "Diese Frage künftig nicht mehr anzeigen" angezeigt werden soll.
-   * @return true fuer ja, false fuer nein.
+   * @param storeAnswer {@code true}, wenn die Option "Diese Frage künftig nicht mehr anzeigen" angezeigt werden soll.
+   * @return {@code true} fuer ja, {@code false} fuer nein.
    * @throws Exception
    */
   public boolean askUser(String question, boolean storeAnswer) throws Exception;
 
   /**
    * Wird von Jameica aufgerufen, wenn der Benutzer eine Frage mit Ja/Nein beantworten soll.
-   * Hintergrund. Jameica speichert <code>question</code> als Key in einer Properties-Datei,
+   *
+   * <p>Hintergrund. Jameica speichert {@code question} als Key in einer Properties-Datei,
    * falls der User die Option "Frage nicht mehr anzeigen" aktiviert hat. Enthaelt die
    * Frage nun aber variablen Text, wuerde die selbe Frage immer wieder kommen - nur weil
    * ein paar Variablen anders sind und somit der Key in der Properties-Datei nicht mehr
    * uebereinstimmt. Daher kann man stattdessen diese Funktion hier verwenden. Im Text
    * benutzt man (wie bei {@link I18N#tr(String, String[])}) die Platzhalter "{0}","{1}",...
    * und uebergibt als String-Array die einzutragenden Variablen.
+   *
    * @param question Die anzuzeigende Frage.
    * @param variables mittels MessageFormat einzutragende Variablen.
-   * @param storeAnswer true, wenn die Option "Diese Frage künftig nicht mehr anzeigen" angezeigt werden soll.
-   * @return true fuer ja, false fuer nein.
+   * @param storeAnswer {@code true}, wenn die Option "Diese Frage künftig nicht mehr anzeigen" angezeigt werden soll.
+   * @return {@code true} fuer ja, {@code false} fuer nein.
    * @throws Exception
    */
   public boolean askUser(String question, String[] variables, boolean storeAnswer) throws Exception;
@@ -206,8 +222,8 @@ public interface ApplicationCallback
    * dass er nicht in seinem Truststore hat. Der Benutzer soll dann entscheiden,
    * ob er dem Zertifikat vertraut.
    * @param cert das dem Benutzer anzuzeigende Zertifikat.
-   * @return true, wenn der TrustManager das Zertifikate akzeptieren und zum Truststore hinzufuegen soll.
-   * Andernfalls false.
+   * @return {@code true}, wenn der TrustManager das Zertifikate akzeptieren und zum Truststore hinzufuegen soll.
+   * Andernfalls {@code false}.
    * @throws Exception
    */
   public boolean checkTrust(X509Certificate cert) throws Exception;
@@ -219,16 +235,19 @@ public interface ApplicationCallback
    * ob der Hostname korrekt ist.
    * @param hostname der Hostname des Servers.
    * @param certs die Zertifikate des Servers.
-   * @return true, wenn der Hostname akzeptiert werden soll, andernfalls false.
+   * @return {@code true}, wenn der Hostname akzeptiert werden soll, andernfalls {@code false}.
    * @throws Exception
    */
   public boolean checkHostname(String hostname, javax.security.cert.X509Certificate[] certs) throws Exception;
 
   /**
    * Liefert den Hostnamen des Systems.
-   * Dieser wird fuer die Erstellung des X.509-Zertifikats benoetigt.
-   * Die Funktion wirft nur dann eine Exception, wenn alle Stricke
+   *
+   * <p>Dieser wird fuer die Erstellung des X.509-Zertifikats benoetigt.
+   *
+   * <p>Die Funktion wirft nur dann eine Exception, wenn alle Stricke
    * reissen - auch die manuelle Eingabe des Hostnamens durch den User.
+   *
    * @return Hostname.
    * @throws Exception
    */
@@ -237,7 +256,7 @@ public interface ApplicationCallback
   /**
    * Fragt vom User ein Login ab.
    * @param authenticator der Authenticator.
-   * Er liefert Context-Infos zum abgefragten Login.
+   *        Er liefert Context-Infos zum abgefragten Login.
    * @return das Login.
    * @throws Exception
    */
diff --git a/src/de/willuhn/jameica/system/BackgroundTask.java b/src/de/willuhn/jameica/system/BackgroundTask.java
index 94033ae..14b8ed4 100644
--- a/src/de/willuhn/jameica/system/BackgroundTask.java
+++ b/src/de/willuhn/jameica/system/BackgroundTask.java
@@ -15,7 +15,7 @@ import de.willuhn.util.ProgressMonitor;
 /**
  * Klassen, die dieses Interface implementieren, koennen in
  * Jameica als Hintergrund-Task in einem separaten Thread ausgefuehrt werden.
- * Sie werden ueber die Funktion <code>Application.getController().start(BackgroundTask)</code> gestartet. 
+ * Sie werden ueber die Funktion {@code Application.getController().start(BackgroundTask)} gestartet.
  */
 public interface BackgroundTask
 {
@@ -36,7 +36,7 @@ public interface BackgroundTask
   
   /**
    * Prueft, ob der Task abgebrochen wurde.
-   * @return true, wenn er abgebrochen wurde.
+   * @return {@code true}, wenn er abgebrochen wurde.
    */
   public boolean isInterrupted();
 }
diff --git a/src/de/willuhn/jameica/system/Config.java b/src/de/willuhn/jameica/system/Config.java
index c824134..05fead6 100644
--- a/src/de/willuhn/jameica/system/Config.java
+++ b/src/de/willuhn/jameica/system/Config.java
@@ -24,7 +24,7 @@ import de.willuhn.logging.Logger;
 import de.willuhn.util.ApplicationException;
 
 /**
- * Liest die System-Konfiguration aus config.xml. 
+ * Liest die System-Konfiguration aus <i>config.xml</i>.
  * @author willuhn
  */
 public final class Config
@@ -55,7 +55,7 @@ public final class Config
 
   /**
    * Initialisiert die Konfiguration.
-   * @throws Exception
+   * @throws ApplicationException wenn das Benutzerverzeichnis nicht lesbar ist oder nicht erstellt werden konnte
    */
   protected synchronized void init() throws Exception
   {
@@ -177,7 +177,7 @@ public final class Config
   /**
    * Liefert einen ggf definierten Proxy, ueber den Jameica mit der Aussenwelt
    * kommunizieren soll.
-   * @return Hostname/IP des Proxy oder <code>null</code> wenn keiner definiert ist.
+   * @return Hostname/IP des Proxy oder {@code null} wenn keiner definiert ist.
    */
   public String getProxyHost()
   {
@@ -186,7 +186,7 @@ public final class Config
 
   /**
    * Liefert den TCP-Port des Proxys insofern einer definiert ist.
-   * @return TCP-Portnummer des Proxys oder -1,
+   * @return TCP-Portnummer des Proxys oder {@code -1},
    */
   public int getProxyPort()
   {
@@ -209,6 +209,7 @@ public final class Config
    * @param port Port-Nummer.
    * @throws ApplicationException Bei Angabe eines ungueltigen Ports (kleiner 1 oder groesser 65535).
    * Es sei denn, es wurde "-1" angegeben. Der Wert steht fuer "nicht verwenden".
+   * @see #getProxyPort()
    */
   public void setProxyPort(int port) throws ApplicationException
   {
@@ -227,7 +228,7 @@ public final class Config
   /**
    * Liefert einen ggf definierten HTTPS-Proxy, ueber den Jameica mit der Aussenwelt
    * kommunizieren soll.
-   * @return Hostname/IP des Proxy oder <code>null</code> wenn keiner definiert ist.
+   * @return Hostname/IP des Proxy oder {@code null} wenn keiner definiert ist.
    */
   public String getHttpsProxyHost()
   {
@@ -236,7 +237,7 @@ public final class Config
 
   /**
    * Liefert den TCP-Port des HTTPS-Proxys insofern einer definiert ist.
-   * @return TCP-Portnummer des Proxys oder -1,
+   * @return TCP-Portnummer des Proxys oder {@code -1},
    */
   public int getHttpsProxyPort()
   {
@@ -259,6 +260,7 @@ public final class Config
    * @param port Port-Nummer.
    * @throws ApplicationException Bei Angabe eines ungueltigen Ports (kleiner 1 oder groesser 65535).
    * Es sei denn, es wurde "-1" angegeben. Der Wert steht fuer "nicht verwenden".
+   * @see #getHttpsProxyPort()
    */
   public void setHttpsProxyPort(int port) throws ApplicationException
   {
@@ -276,7 +278,7 @@ public final class Config
   
   /**
    * Prueft, ob die Proxy-Einstellungen des Systems verwendet werden sollen.
-   * @return true, wenn die Default-Systemeinstellungen verwendet werden sollen.
+   * @return {@code true}, wenn die Default-Systemeinstellungen verwendet werden sollen.
    */
   public boolean getUseSystemProxy()
   {
@@ -285,7 +287,7 @@ public final class Config
   
   /**
    * Legt fest, ob die System-Einstellungen fuer den Proxy verwendet werden sollen. 
-   * @param b true, wenn die System-Einstellungen des Betriebssystems verwendet werden sollen.
+   * @param b {@code true}, wenn die System-Einstellungen des Betriebssystems verwendet werden sollen.
    */
   public void setUseSystemProxy(boolean b)
   {
@@ -293,8 +295,8 @@ public final class Config
   }
   
   /**
-   * Liefert true, wenn den Aussteller-Zertifikaten der Java-Installation vertraut werden soll.
-   * @return true, wenn den Aussteller-Zertifikaten der Java-Installation vertraut werden soll.
+   * Prueft, ob den Aussteller-Zertifikaten der Java-Installation vertraut werden soll.
+   * @return {@code true}, wenn den Aussteller-Zertifikaten der Java-Installation vertraut werden soll.
    * Liefert per Default true.
    */
   public boolean getTrustJavaCerts()
@@ -304,7 +306,7 @@ public final class Config
 
   /**
    * Legt fest, ob den Aussteller-Zertifikaten der Java-Installation vertraut werden soll.
-   * @param b true, wenn den Aussteller-Zertifikaten der Java-Installation vertraut werden soll.
+   * @param b {@code true}, wenn den Aussteller-Zertifikaten der Java-Installation vertraut werden soll.
    */
   public void setTrustJavaCerts(boolean b)
   {
@@ -314,7 +316,7 @@ public final class Config
   /**
    * Prueft, ob im Server-Mode die Dienste nach aussen freigegeben werden sollen.
    * Der Parameter wird nur im Server-Mode interpretiert.
-   * @return true, wenn die Dienste freigegeben werden.
+   * @return {@code true}, wenn die Dienste freigegeben werden.
    */
   public boolean getShareServices()
   {
@@ -324,7 +326,7 @@ public final class Config
   /**
    * Prueft, ob im Server-Mode die Dienste via Multicast-Lookup im LAN announced werden sollen.
    * Der Parameter wird nur im Server-Mode interpretiert.
-   * @return true, wenn die Dienste via Multicast-Lookup announced werden sollen.
+   * @return {@code true}, wenn die Dienste via Multicast-Lookup announced werden sollen.
    */
   public boolean getMulticastLookup()
   {
@@ -383,7 +385,7 @@ public final class Config
   /**
    * Versucht das Locale zum angegebenen Text zu ermitteln.
    * @param s der Text.
-   * @return das Locale oder NULL, wenn es nicht existiert.
+   * @return das Locale oder {@code null}, wenn es nicht existiert.
    */
   private static Locale findLocale(String s)
   {
@@ -429,7 +431,7 @@ public final class Config
 	}
 
   /**
-   * Liefert die in ~/.jameica/cfg/de.willuhn.jameica.system.Config.properties definierten
+   * Liefert die in <i>~/.jameica/cfg/de.willuhn.jameica.system.Config.properties</i> definierten
    * Pluginverzeichnisse.
    * @return Liste Plugin-Verzeichnisse.
    */
@@ -526,7 +528,7 @@ public final class Config
   /**
    * Liefert das User-Plugin-Verzeichnis.
    * Das ist jenes, welches sich im Work-Verzeichnis des Users befindet.
-   * In der Regel ist das ~/.jameica/plugins.
+   * In der Regel ist das <i>~/.jameica/plugins</i>.
    * @return das user-Plugin-Verzeichnis.
    */
   public File getUserPluginDir()
@@ -621,7 +623,7 @@ public final class Config
 
   /**
    * Legt fest, ob auch die Label vor Pflichtfeldern rot markiert werden sollen.
-   * @return true, wenn auch die Label rot markiert werden sollen.
+   * @return {@code true}, wenn auch die Label rot markiert werden sollen.
    */
   public boolean getMandatoryLabel()
   {
@@ -630,7 +632,7 @@ public final class Config
 
   /**
    * Legt fest, ob auch die Label vor Pflichtfeldern rot markiert werden sollen.
-   * @param check true, wenn auch die Label rot markiert werden sollen.
+   * @param check {@code true}, wenn auch die Label rot markiert werden sollen.
    */
   public void setMandatoryLabel(boolean check)
   {
@@ -765,7 +767,6 @@ public final class Config
   
   /**
    * Liefert die Anzahl zu erstellender Backups.
-   * Default-Wert: 10.
    * @return Anzahl der Backups.
    */
   public int getBackupCount()
@@ -778,9 +779,10 @@ public final class Config
     }
     return count;
   }
-  
+
   /**
    * Speichert die Anzahl zu erstellender Backups.
+   * <p>Default-Wert: 10.
    * @param count Anzahl der Backups.
    */
   public void setBackupCount(int count)
@@ -789,9 +791,8 @@ public final class Config
   }
   
   /**
-   * Prueft, ob ueberhaupt Backups erstellt werden sollen.
-   * Default: true.
-   * @return true, wenn Backups erstellt werden sollen.
+   * Prueft, ob Backups erstellt werden sollen.
+   * @return {@code true}, wenn Backups erstellt werden sollen.
    */
   public boolean getUseBackup()
   {
@@ -799,8 +800,9 @@ public final class Config
   }
 
   /**
-   * Speichert, ob ueberhaupt Backups erstellt werden sollen.
-   * @param enabled true, wenn Backups erstellt werden sollen.
+   * Speichert, ob Backups erstellt werden sollen.
+   * <p>Default: {@code true}.
+   * @param enabled {@code true}, wenn Backups erstellt werden sollen.
    */
   public void setUseBackup(boolean enabled)
   {
@@ -810,7 +812,7 @@ public final class Config
   /**
    * Liefert das Verzeichnis, in dem Strings gespeichert werden sollen,
    * zu denen keine Uebersetzungen existieren.
-   * @return Der Ordner oder NULL, wenn nicht gespeichert werden soll.
+   * @return Der Ordner oder {@code null}, wenn nicht gespeichert werden soll.
    */
   public String getStoreUntranslatedDir()
   {
diff --git a/src/de/willuhn/jameica/system/Platform.java b/src/de/willuhn/jameica/system/Platform.java
index a181a0a..77a2813 100644
--- a/src/de/willuhn/jameica/system/Platform.java
+++ b/src/de/willuhn/jameica/system/Platform.java
@@ -83,8 +83,8 @@ public class Platform
   /**
    * Prueft, ob sich der angegebene Ordner oder die Datei innerhalb des Programmordners befindet.
    * @param f der zu pruefende Ordner oder die Datei. 
-   * @return true, wenn sich der Ordner oder die Datei im Programmordner befindet.
-   * @throws IOException
+   * @return {@code true}, wenn sich der Ordner oder die Datei im Programmordner befindet.
+   * @throws IOException falls kein Zugriff auf das Dateiverzeichnis moeglich
    */
   public static boolean inProgramDir(File f) throws IOException
   {
@@ -100,7 +100,7 @@ public class Platform
    * Liefert das Benutzerverzeichnis, in dem Jameica alle Daten speichert.
    * Falls es noch nicht existiert, wird es automatisch angelegt.
    * @return Benutzerverzeichnis.
-   * @throws Exception wenn das Benutzerverzeichnis nicht lesbar ist oder
+   * @throws ApplicationException wenn das Benutzerverzeichnis nicht lesbar ist oder
    * nicht erstellt werden konnte.
    */
   public File getWorkdir() throws Exception
@@ -176,7 +176,7 @@ public class Platform
   
   /**
    * Liefert das Betriebssystem.
-   * Siehe dazu die Konstanten <code>OS_*</code>.
+   * Siehe dazu die Konstanten {@code Platform.OS_*}.
    * @return Betriebssystem.
    */
   public int getOS()
@@ -309,11 +309,13 @@ public class Platform
   
   /**
    * Mappt OS-spezifisch einzelne Keys auf andere.
-   * In der Default-Implementierung wird hier 1:1 er Eingabewert zurueckgegeben.
-   * In PlatformMacOS aber wird zBsp SWT.ALT gegen SWT.COMMAND ersetzt.
-   * Siehe https://github.com/willuhn/jameica/pull/6
+   *
+   * <p>In der Default-Implementierung wird hier 1:1 der Eingabewert zurueckgegeben.
+   * In {@link PlatformMacOS} aber wird z.B. <i>ALT</i> gegen <i>COMMAND</i> ersetzt.
+   *
    * @param key der Key.
    * @return der gemappte Key.
+   * @see <a href="https://github.com/willuhn/jameica/pull/6">willuhn/jameica#6</a>
    */
   public int mapSWTKey(int key)
   {
@@ -321,10 +323,11 @@ public class Platform
   }
   
   /**
-   * Wie oben. Jedoch fuer String-Repraesentationen von Shortcuts.
-   * Parameter ist z.Bsp. "ALT+S". Auf OS wird das auf "COMMAND+S" gemappt.
+   * Wie {@link #mapSWTKey(int)}, jedoch fuer String-Repraesentationen von Shortcuts.
+   * Parameter ist z.Bsp. "ALT+S". Auf macOS wird das auf "CMD+S" gemappt.
    * @param shortcut der Shortcut.
    * @return der gemappte Shortcut.
+   * @see #mapSWTKey(int)
    */
   public String mapSWTShortcut(String shortcut)
   {
diff --git a/src/de/willuhn/jameica/system/ServiceFactory.java b/src/de/willuhn/jameica/system/ServiceFactory.java
index 09bbce6..d7af365 100644
--- a/src/de/willuhn/jameica/system/ServiceFactory.java
+++ b/src/de/willuhn/jameica/system/ServiceFactory.java
@@ -82,7 +82,7 @@ public final class ServiceFactory
 
   /**
    * Installiert einen Service in Jameica. Laeuft die Anwendung
-   * im Server-Mode und ist das Flag autostart des Services aktiv,
+   * im Server-Mode und ist das Flag {@code autostart} des Services aktiv,
    * wird der Service im Netz freigegeben.
    * @param manifest das Manifest des Plugins.
    * @param descriptor der Service-Deskriptor.
@@ -205,13 +205,12 @@ public final class ServiceFactory
 
   /**
    * Liefert den genannten Service des uebergebenen Plugins.
-   * Die Funktion liefert niemals <code>null</code>. Entweder der
-   * Service wird gefunden und zurueckgeliefert oder es wird eine
-   * Exception geworfen.
+   *
    * @param pluginClass Klasse des Plugins, fuer welches der Service geladen werden soll.
    * @param serviceName Name des Service.
    * @return die Instanz des Services.
-   * @throws Exception
+   * @throws ApplicationException falls Service nicht gefunden werden konnte
+   * @throws RemoteException falls kein Zugriff auf Service via RMI moeglich
    */
   public Service lookup(Class pluginClass, String serviceName) throws Exception
   {
@@ -307,7 +306,8 @@ public final class ServiceFactory
 
   /**
    * Faehrt die Services runter.
-   * Beendet werden hierbei nur die lokal gestarteten Services, nicht remote verbundene.
+   *
+   * <p>Beendet werden hierbei <b>nur die lokal gestarteten</b> Services, nicht remote verbundene.
    */
   public synchronized void shutDown()
   {
@@ -369,7 +369,7 @@ public final class ServiceFactory
    * Liefert den Host, auf dem nach diesem Service gesucht werden soll.
    * @param pluginclass Klasse des Plugins.
    * @param serviceName Name des gesuchten Service.
-   * @return Hostname, auf dem sich der Service befindet oder <code>null</code> wenn nicht definiert.
+   * @return Hostname, auf dem sich der Service befindet oder {@code null} wenn nicht definiert.
    */
   public String getLookupHost(Class pluginclass, String serviceName)
   {
@@ -383,7 +383,7 @@ public final class ServiceFactory
    * Liefert den TCP-Port, auf dem nach diesem Service gesucht werden soll.
    * @param pluginclass Klasse des Plugins.
    * @param serviceName Name des gesuchten Service.
-   * @return TCP-Port, auf dem sich der Service befindet oder <code>-1</code> wenn nicht definiert.
+   * @return TCP-Port, auf dem sich der Service befindet oder {@code -1} wenn nicht definiert.
    */
   public int getLookupPort(Class pluginclass, String serviceName)
   {
diff --git a/src/de/willuhn/jameica/system/StartupParams.java b/src/de/willuhn/jameica/system/StartupParams.java
index 0d568f2..08736ef 100644
--- a/src/de/willuhn/jameica/system/StartupParams.java
+++ b/src/de/willuhn/jameica/system/StartupParams.java
@@ -84,7 +84,9 @@ public class StartupParams
     options.addOption("w","passwordfile",true,"Optionale Angabe des Master-Passworts, welches sich in der angegebenen Datei befindet");
     options.addOption("o","force-password",false,"Angabe des Master-Passworts via Kommandozeile ignorieren (für MacOS nötig)");
 
-    options.addOption("n","noninteractive",false,"Koppelt Jameica im Server-Mode von der Konsole ab. " +
      "Es findet keine Benutzer-Interaktion mehr statt. Die Option wird nur ausgewertet, wenn Jameica " +
      "im Server-Mode läuft.");
+    options.addOption("n","noninteractive",false,"Koppelt Jameica im Server-Mode von der Konsole ab. " +
+      "Es findet keine Benutzer-Interaktion mehr statt. Die Option wird nur ausgewertet, wenn Jameica " +
+      "im Server-Mode läuft.");
 
     options.addOption("l","ignore-lock",false,"Ignoriert eine ggf. vorhandene Lock-Datei");
 
@@ -182,7 +184,7 @@ public class StartupParams
 
 	/**
 	 * Liefert das ggf als Kommandozeilen-Parameter angegebene Master-Passwort.
-   * @return Master-Passwort oder <code>null</code>.
+   * @return Master-Passwort oder {@code null}.
    */
   public String getPassword()
 	{
@@ -191,7 +193,7 @@ public class StartupParams
   
   /**
    * Liefert den ggf als Kommandozeilen-Parameter angegebenen Usernamen.
-   * @return der Username oder <code>null</code>.
+   * @return der Username oder {@code null}.
    */
   public String getUsername()
   {
@@ -200,8 +202,10 @@ public class StartupParams
 	
 	/**
 	 * Liefert den Start-Modus von Jameica.
-	 * Zur Codierung sie Konstanten <code>MODE_*</code>.
    * @return Start-Modus.
+   * @see #MODE_STANDALONE
+   * @see #MODE_SERVER
+   * @see #MODE_CLIENT
    */
   public int getMode()
 	{
@@ -218,10 +222,10 @@ public class StartupParams
 	}
   
   /**
-   * Liefert true, wenn Jameica im nichtinteraktiven Server-Mode
+   * Prüfe, ob Jameica im nichtinteraktiven Server-Mode
    * laeuft und damit keine direkte Interaktion mit dem Benutzer ueber
    * die Konsole moeglich ist.
-   * @return liefert true, wenn sich die Anwendung im nicht-interaktiven Mode befindet.
+   * @return liefert {@code true}, wenn sich die Anwendung im nicht-interaktiven Mode befindet.
    */
   public boolean isNonInteractiveMode()
   {
@@ -229,8 +233,8 @@ public class StartupParams
   }
   
   /**
-   * Liefert true, wenn eine ggf vorhandene Lock-Datei ignoriert werden soll.
-   * @return true, wenn die Lock-Datei ignoriert werden soll.
+   * Prüfe, ob eine ggf vorhandene Lock-Datei ignoriert werden soll.
+   * @return {@code true}, wenn die Lock-Datei ignoriert werden soll.
    */
   public boolean isIgnoreLockfile()
   {
diff --git a/src/de/willuhn/jameica/util/XPathEmu.java b/src/de/willuhn/jameica/util/XPathEmu.java
index 4f8b1c7..0826ca1 100644
--- a/src/de/willuhn/jameica/util/XPathEmu.java
+++ b/src/de/willuhn/jameica/util/XPathEmu.java
@@ -34,15 +34,16 @@ public class XPathEmu
   /**
    * Liefert den Content/Wert des Attributes des angegebenen XML-Elementes.
    * Hier kann ein Pseudo-XPath angegeben werden.
+   *
    * @param path der Pseudo-XPath.
-   * <pre>
+   * <pre>{@code
    *   <Kunden>
    *     <Kunde>
    *       <Name>Foo</Name>
    *       <Ort plz="0815"/>
    *     </Kunde>
    *   </Kunden>
-   * </pre>
+   * }</pre>
    * Beispiel 1: path="Kunden/Kunde/Name" ergibt "Foo".
    * Beispiel 2: path="Kunden/Kunde/Ort/@plz" ergibt "0815".
    * @return Content des XML-Elementes oder null, niemals jedoch einen Leerstring.
-- 
GitLab