[libzeus-jscl-java] 01/02: Imported Upstream version 1.72

Andreas Tille tille at debian.org
Wed Apr 22 11:18:10 UTC 2015


This is an automated email from the git hooks/post-receive script.

tille pushed a commit to branch master
in repository libzeus-jscl-java.

commit 0995434be2e4911c311e7e554d3446040accc922
Author: Andreas Tille <tille at debian.org>
Date:   Wed Apr 22 12:18:37 2015 +0200

    Imported Upstream version 1.72
---
 build.bat                                          |    5 +
 build.xml                                          |   67 +
 changelog.txt                                      |  417 +++++
 clean.bat                                          |    5 +
 contributors.txt                                   |   12 +
 cp.bat                                             |    8 +
 doc/api/allclasses-frame.html                      |   48 +
 doc/api/allclasses-noframe.html                    |   48 +
 doc/api/constant-values.html                       |  205 +++
 doc/api/deprecated-list.html                       |  122 ++
 doc/api/gr/zeus/ui/JConsole.html                   |  447 ++++++
 doc/api/gr/zeus/ui/JConsolePane.html               | 1318 ++++++++++++++++
 doc/api/gr/zeus/ui/JIConsole.html                  |  421 +++++
 .../gr/zeus/ui/JMessage.JMessageButtonEnum.html    |  368 +++++
 doc/api/gr/zeus/ui/JMessage.html                   |  991 ++++++++++++
 doc/api/gr/zeus/ui/JSplash.html                    |  523 +++++++
 doc/api/gr/zeus/ui/JSplashLabel.html               |  438 ++++++
 doc/api/gr/zeus/ui/OutLookToolBar.html             |  252 +++
 doc/api/gr/zeus/ui/SingleAppInstance.html          |  372 +++++
 .../gr/zeus/ui/mdi/JInternalFrameComparator.html   |  305 ++++
 doc/api/gr/zeus/ui/mdi/WindowManager.html          |  816 ++++++++++
 doc/api/gr/zeus/ui/mdi/package-frame.html          |   21 +
 doc/api/gr/zeus/ui/mdi/package-summary.html        |  148 ++
 doc/api/gr/zeus/ui/mdi/package-tree.html           |  136 ++
 doc/api/gr/zeus/ui/package-frame.html              |   31 +
 doc/api/gr/zeus/ui/package-summary.html            |  206 +++
 doc/api/gr/zeus/ui/package-tree.html               |  202 +++
 .../gr/zeus/ui/table/AutoResizeTableColumns.html   |  441 ++++++
 .../gr/zeus/ui/table/ProgressBarCellRenderer.html  |  501 ++++++
 doc/api/gr/zeus/ui/table/TableSorter.html          |  780 ++++++++++
 doc/api/gr/zeus/ui/table/TableSorterIcons.html     |  490 ++++++
 doc/api/gr/zeus/ui/table/package-frame.html        |   23 +
 doc/api/gr/zeus/ui/table/package-summary.html      |  166 ++
 doc/api/gr/zeus/ui/table/package-tree.html         |  158 ++
 .../ui/typesafe/CustomFocusTraversalPolicy.html    |  443 ++++++
 .../gr/zeus/ui/typesafe/SelectAllTextOnFocus.html  |  361 +++++
 .../ui/typesafe/SimpleEditorPaneTraversal.html     |  312 ++++
 .../zeus/ui/typesafe/SimpleTextAreaTraversal.html  |  312 ++++
 .../zeus/ui/typesafe/SimpleTextPaneTraversal.html  |  312 ++++
 .../ui/typesafe/SwingConfigurationManager.html     |  363 +++++
 .../ui/typesafe/TypeSafeTextDocumentFilter.html    |  739 +++++++++
 doc/api/gr/zeus/ui/typesafe/TypeSafeVerifier.html  | 1305 ++++++++++++++++
 doc/api/gr/zeus/ui/typesafe/package-frame.html     |   27 +
 doc/api/gr/zeus/ui/typesafe/package-summary.html   |  192 +++
 doc/api/gr/zeus/ui/typesafe/package-tree.html      |  166 ++
 doc/api/gr/zeus/util/CurrentDateHelper.html        |  432 ++++++
 doc/api/gr/zeus/util/DateHelper.html               |  557 +++++++
 doc/api/gr/zeus/util/GUIUtils.html                 |  372 +++++
 doc/api/gr/zeus/util/IOHelper.html                 |  700 +++++++++
 doc/api/gr/zeus/util/SimpleTimerMillis.html        |  342 +++++
 doc/api/gr/zeus/util/SimpleTimerNanos.html         |  363 +++++
 doc/api/gr/zeus/util/SimpleUIDGenerator.html       |  286 ++++
 doc/api/gr/zeus/util/package-frame.html            |   26 +
 doc/api/gr/zeus/util/package-summary.html          |  179 +++
 doc/api/gr/zeus/util/package-tree.html             |  141 ++
 doc/api/help-doc.html                              |  223 +++
 doc/api/index-all.html                             | 1594 +++++++++++++++++++
 doc/api/index.html                                 |   74 +
 doc/api/overview-frame.html                        |   25 +
 doc/api/overview-summary.html                      |  149 ++
 doc/api/overview-tree.html                         |  259 ++++
 doc/api/package-list                               |    5 +
 doc/api/script.js                                  |   30 +
 doc/api/serialized-form.html                       |  482 ++++++
 doc/api/stylesheet.css                             |  574 +++++++
 lib/zeus-jscl-1.72.jar                             |  Bin 0 -> 132901 bytes
 license.txt                                        |  420 +++++
 readme.txt                                         |  215 +++
 src/gr/zeus/res/1downarrow.png                     |  Bin 0 -> 808 bytes
 src/gr/zeus/res/1uparrow.png                       |  Bin 0 -> 781 bytes
 src/gr/zeus/res/2downarrow.png                     |  Bin 0 -> 1063 bytes
 src/gr/zeus/res/2uparrow.png                       |  Bin 0 -> 1037 bytes
 src/gr/zeus/res/blank.gif                          |  Bin 0 -> 832 bytes
 src/gr/zeus/res/bottom.png                         |  Bin 0 -> 1000 bytes
 src/gr/zeus/res/collapse.gif                       |  Bin 0 -> 111 bytes
 src/gr/zeus/res/console.gif                        |  Bin 0 -> 564 bytes
 src/gr/zeus/res/down.png                           |  Bin 0 -> 912 bytes
 src/gr/zeus/res/down1.gif                          |  Bin 0 -> 332 bytes
 src/gr/zeus/res/down2.gif                          |  Bin 0 -> 329 bytes
 src/gr/zeus/res/down3.gif                          |  Bin 0 -> 134 bytes
 src/gr/zeus/res/eclipse-icons-license.txt          |  233 +++
 src/gr/zeus/res/expand.gif                         |  Bin 0 -> 109 bytes
 src/gr/zeus/res/jconsole.properties                |   14 +
 src/gr/zeus/res/jconsole_el_GR.properties          |    8 +
 src/gr/zeus/res/jmessage.properties                |   16 +
 src/gr/zeus/res/jmessage_el_GR.properties          |   10 +
 src/gr/zeus/res/nuvola-icons-license.txt           |  518 +++++++
 src/gr/zeus/res/singleappinstance.properties       |   18 +
 src/gr/zeus/res/singleappinstance_el_GR.properties |   12 +
 src/gr/zeus/res/singleappinstance_it_IT.properties |   17 +
 src/gr/zeus/res/top.png                            |  Bin 0 -> 987 bytes
 src/gr/zeus/res/up.png                             |  Bin 0 -> 906 bytes
 src/gr/zeus/res/up1.gif                            |  Bin 0 -> 322 bytes
 src/gr/zeus/res/up2.gif                            |  Bin 0 -> 321 bytes
 src/gr/zeus/res/up3.gif                            |  Bin 0 -> 132 bytes
 src/gr/zeus/tests/JConsolePaneTester.form          |  212 +++
 src/gr/zeus/tests/JConsolePaneTester.java          |  419 +++++
 src/gr/zeus/tests/JConsoleTester.form              |  135 ++
 src/gr/zeus/tests/JConsoleTester.java              |  315 ++++
 src/gr/zeus/tests/JDesktopTester.form              |  376 +++++
 src/gr/zeus/tests/JDesktopTester.java              |  693 +++++++++
 src/gr/zeus/tests/JInternalFrameGenerator.form     |  141 ++
 src/gr/zeus/tests/JInternalFrameGenerator.java     |  219 +++
 src/gr/zeus/tests/JMessageTester.form              |  108 ++
 src/gr/zeus/tests/JMessageTester.java              |  307 ++++
 src/gr/zeus/tests/JSplashTester.form               |   73 +
 src/gr/zeus/tests/JSplashTester.java               |  207 +++
 src/gr/zeus/tests/JTableTester.form                |  209 +++
 src/gr/zeus/tests/JTableTester.java                |  369 +++++
 src/gr/zeus/tests/JTester.form                     |  192 +++
 src/gr/zeus/tests/JTester.java                     |  466 ++++++
 src/gr/zeus/tests/JToolBarTester.form              |   91 ++
 src/gr/zeus/tests/JToolBarTester.java              |  167 ++
 src/gr/zeus/tests/JTypeSafeTester.form             |  245 +++
 src/gr/zeus/tests/JTypeSafeTester.java             |  211 +++
 src/gr/zeus/tests/mygui.properties                 |   76 +
 src/gr/zeus/tests/res/custom.png                   |  Bin 0 -> 5397 bytes
 src/gr/zeus/tests/res/splash.jpg                   |  Bin 0 -> 27420 bytes
 src/gr/zeus/ui/JConsole.form                       |   25 +
 src/gr/zeus/ui/JConsole.java                       |  115 ++
 src/gr/zeus/ui/JConsolePane.form                   |  101 ++
 src/gr/zeus/ui/JConsolePane.java                   | 1105 ++++++++++++++
 src/gr/zeus/ui/JIConsole.form                      |   33 +
 src/gr/zeus/ui/JIConsole.java                      |  118 ++
 src/gr/zeus/ui/JMessage.form                       |  158 ++
 src/gr/zeus/ui/JMessage.java                       | 1094 +++++++++++++
 src/gr/zeus/ui/JSplash.java                        |  215 +++
 src/gr/zeus/ui/JSplashLabel.java                   |  115 ++
 src/gr/zeus/ui/OutLookToolBar.java                 |  199 +++
 src/gr/zeus/ui/SingleAppInstance.java              |  418 +++++
 src/gr/zeus/ui/mdi/JInternalFrameComparator.java   |   74 +
 src/gr/zeus/ui/mdi/WindowManager.java              | 1601 ++++++++++++++++++++
 src/gr/zeus/ui/table/AutoResizeTableColumns.java   |  382 +++++
 src/gr/zeus/ui/table/ProgressBarCellRenderer.java  |  217 +++
 src/gr/zeus/ui/table/TableSorter.java              |  742 +++++++++
 src/gr/zeus/ui/table/TableSorterIcons.java         |  118 ++
 .../ui/typesafe/CustomFocusTraversalPolicy.java    |  259 ++++
 src/gr/zeus/ui/typesafe/SelectAllTextOnFocus.java  |   97 ++
 .../ui/typesafe/SimpleEditorPaneTraversal.java     |  136 ++
 .../zeus/ui/typesafe/SimpleTextAreaTraversal.java  |  136 ++
 .../zeus/ui/typesafe/SimpleTextPaneTraversal.java  |  136 ++
 .../ui/typesafe/SwingConfigurationManager.java     |  479 ++++++
 .../ui/typesafe/TypeSafeTextDocumentFilter.java    |  410 +++++
 src/gr/zeus/ui/typesafe/TypeSafeVerifier.java      |  992 ++++++++++++
 src/gr/zeus/util/CurrentDateHelper.java            |  121 ++
 src/gr/zeus/util/DateHelper.java                   |  365 +++++
 src/gr/zeus/util/GUIUtils.java                     |  118 ++
 src/gr/zeus/util/IOHelper.java                     |  562 +++++++
 src/gr/zeus/util/SimpleTimerMillis.java            |   91 ++
 src/gr/zeus/util/SimpleTimerNanos.java             |  103 ++
 src/gr/zeus/util/SimpleUIDGenerator.java           |   50 +
 test/console.bat                                   |    6 +
 test/console_panel.bat                             |    6 +
 test/messages.bat                                  |    6 +
 test/mygui.properties                              |   76 +
 test/outlook_toolbar.bat                           |    6 +
 test/splash.bat                                    |    6 +
 test/table.bat                                     |    6 +
 test/test.bat                                      |    6 +
 test/type_safe.bat                                 |    6 +
 test/window_manager.bat                            |    6 +
 test/zeus-jscl-test.jar                            |  Bin 0 -> 118822 bytes
 todo.txt                                           |   43 +
 163 files changed, 39606 insertions(+)

diff --git a/build.bat b/build.bat
new file mode 100644
index 0000000..8b90875
--- /dev/null
+++ b/build.bat
@@ -0,0 +1,5 @@
+ at echo off
+cls
+
+call cp.bat
+ant clean all
diff --git a/build.xml b/build.xml
new file mode 100644
index 0000000..c02e36e
--- /dev/null
+++ b/build.xml
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project basedir="." default="all" name="zeus-jscl">
+
+
+    <target name="init">
+	    <property name="project.version" value="1.72" />
+        <property location="classes" name="classes.dir" />
+        <property location="src" name="src.dir" />
+        <property location="doc/api" name="javadoc.dir" />
+        <property name="project.name" value="${ant.project.name}" />
+        <property location="lib/${project.name}-${project.version}.jar" name="jar" />
+        <property location="test/${project.name}-test.jar" name="jar-test" />
+    </target>
+
+
+    <target depends="init" name="compile">
+        <!-- Both srcdir and destdir should be package roots. -->
+        <mkdir dir="${classes.dir}" />
+        <javac debug="true" deprecation="true" destdir="${classes.dir}" srcdir="${src.dir}">
+            <!-- To add something to the classpath: -->
+            <!-- <classpath><pathelement location="${mylib}"/></classpath> -->
+            <!-- To exclude some files: -->
+            <!-- <exclude name="com/foo/SomeFile.java"/><exclude name="com/foo/somepackage/"/> -->
+        </javac>
+    </target>
+
+
+    <target depends="init,compile" name="jar">
+        <!-- normal jar -->
+        <jar basedir="${classes.dir}" compress="true" jarfile="${jar}" excludes="gr/zeus/tests/**">
+            <fileset dir="${src.dir}" includes="**/*.png,**/*.jpg,**/*.gif,**/*.properties,**/*license*.txt" excludes="gr/zeus/tests/**" />
+        </jar>
+        
+        <!-- tests jar -->
+        <jar basedir="${classes.dir}" compress="true" jarfile="${jar-test}" includes="gr/zeus/tests/**">
+            <manifest>
+                <attribute name="Main-Class" value="gr.zeus.tests.JTester" />
+                <attribute name="Class-Path" value="../lib/${project.name}-${project.version}.jar" />
+            </manifest>
+            <fileset dir="${src.dir}" includes="gr/zeus/tests/**/*.png,gr/zeus/tests/**/*.jpg,gr/zeus/tests/**/*.gif,gr/zeus/tests/**/*.properties" />
+        <!--    <fileset dir="${src.dir}" includes="gr/zeus/tests/**" /> -->
+        </jar>        
+    </target>
+
+
+    <target depends="init,jar,javadoc" description="Build everything." name="all" />
+
+
+    <target depends="init" description="Javadoc for my API." name="javadoc">
+        <mkdir dir="${javadoc.dir}" />
+        <javadoc destdir="${javadoc.dir}" packagenames="*" excludepackagenames="gr.zeus.tests.*">
+            <sourcepath>
+                <pathelement location="${src.dir}" />
+            </sourcepath>
+        </javadoc>
+    </target>
+
+
+    <target depends="init" description="Clean all build products." name="clean">
+        <delete dir="${classes.dir}" />
+        <delete dir="${javadoc.dir}" />
+        <delete file="${jar}" />
+        <delete file="${jar-test}" />
+    </target>
+
+
+</project>
diff --git a/changelog.txt b/changelog.txt
new file mode 100644
index 0000000..9b31e49
--- /dev/null
+++ b/changelog.txt
@@ -0,0 +1,417 @@
+Zeus (zeus-jscl) Changelog (dd/MM/yyyy)
+=======================================
+
+
+Changes in version 1.72 (07/06/2014)
+------------------------------------
+
+07/06/2014 Changed frame auto-position logic; first frame is placed at the center of the desktop instead of 0,0.
+
+
+
+
+Changes in version 1.70 (23/05/2011)
+------------------------------------
+
+23/05/2011 Fixed EDT violation in JConsolePane.java.
+
+
+
+
+Changes in version 1.69 (03/05/2011)
+------------------------------------
+
+03/05/2011 Fixed pack() issue in JConsole; incorrect size when called showConsole() from EDT.
+
+
+
+
+Changes in version 1.68 (28/04/2011)
+------------------------------------
+
+28/04/2011 Fixed EDT violations, error handling and synchronization issues in JConsole.
+19/10/2009 Added new factory method in JMessage: showErrorQuestionMessageY().
+
+
+
+
+Changes in version 1.64 (21/09/2009)
+------------------------------------
+
+21/09/2009 Fixed bug in AutoResizeTableColumns when used together with
+           the new JTable's sorting functionality, RowSorter.
+
+
+
+
+Changes in version 1.62 (13/06/2009)
+------------------------------------
+
+09/05/2009 Minor TypeSafe API changes.
+
+20/06/2008 Removed obsolete gr.zeus.ui.swingworker, use JDK6 SwingWorker instead!
+20/06/2008 Added method to return the progress bar in JSplash (for usage with
+           Sun's new SwingWorker functionality).
+
+
+
+
+Changes in version 1.60 (20/04/2008)
+------------------------------------
+
+19/04/2008 Removed all "Deprecated" classes.
+
+23/10/2007 Bug fix: sometimes the JMessage components layout is corrupt.
+
+24/09/2007 Minor fix in TableSorter.java.
+
+27/06/2006 CustomFocusTraversalPolicy.java (modified)
+           Fixed focus with disabled components, now focus is passed
+           to the next enabled component.
+
+28/02/2006 DateHelper.java (modified)
+           Added new method: getDayNameForDate() to retrieve a date's day name.
+
+
+
+
+Changes in version 1.50 (06/01/2006)
+------------------------------------
+
+06/01/2006 JTableTester.java (added)
+           Test for both table resizing and sorting.
+06/01/2006 TableSorterIcons (added)
+           Contains all icons related to table sorting. Also added some very
+           nice icons from the Nuvola icon theme.
+06/01/2006 JTableSortTester.java (deleted)
+
+05/01/2006 JTypeSafeTester.java (modified)
+05/01/2006 SwingConfigurationManager.java (modified)
+           Created new properties in order to add the new functionality for
+           SimpleTextAreaTraversal, SimpleEditorPaneTraversal and
+           SimpleTextPaneTraversal.
+
+04/01/2006 SimpleTextAreaTraversal.java (added)
+           SimpleEditorPaneTraversal.java (added)
+           SimpleTextPaneTraversal.java (added)
+           New classes to simplify focus traversal when using JTextArea,
+           JTextPane and JEditorPane.
+
+03/01/2006 AutoResizeTableColumns.java (added)
+           Dynamically resizes any JTable every time it's data changes based on
+           header size and row data.
+
+02/01/2006 gr.zeus.ui.table.TableSorter (added)
+           Added a new TableSorter, a slightly modified version of Sun's
+           TableSorter found in the Swing Tutorial. This one also supports 
+           custom icons. NOTE: All classes under "gr.zeus.ui.table.sort" are
+           deprecated and will soon be removed! Please switch to the new and
+           better gr.zeus.ui.table.TableSorter.
+
+14/12/2005 SortableTableModel.java (modified)
+           Minor checks added to methods getValueAt() and setValueAt().
+           Also added two new methods: addRow() and removeRow(), 
+           now a SortableTableModel functions correctly when using any of 
+           these methods.
+
+04/10/2005 Added titlebar icon for JConsole and JIConsole.
+
+30/08/2005 JMessage.java (modified)
+           Added new wrapper methods: showErrorMessage(), showWarningMessage(),
+           showInfoMessage(), showQuestionMessage().
+
+
+
+
+Changes in version 1.40 (26/07/2005)
+------------------------------------
+
+26/07/2005 JTester.java (modified)
+           Added support for JMessageTester.java
+           Removed support for JConsole tests due to a strange bug of 
+           (possibly) the tester.
+26/07/2005 JConsolePaneTester.java (added)
+26/07/2005 JConsoleTester.java (modified)
+26/07/2005 JDesktopTester.java (modified)
+
+25/07/2005 JConsolePane.java (added, based on old JConsole)
+25/07/2005 JConsole.java (modified completely)
+25/07/2005 JIConsole.java (added)
+
+24/07/2005 JMessageTester.java (created)
+
+23/07/2005 added 2 icons for JMessage.java
+23/07/2005 JMessage.java (created)
+23/07/2005 internal restructure of resources (property files and images)
+
+22/07/2005 minor code modifications to many of the sources:
+           made more classes to be of type final
+           removed serialVersionUID, it seems it's not required.
+
+
+
+
+Changes in version 1.20 (13/07/2005)
+------------------------------------
+
+13/07/2005 JTester.java (modified)
+           Added support for JTypeSafeTester.java
+
+13/07/2005 JTypeSafeTester.java (added)
+
+13/07/2005 SwingConfigurationManager.java (added)
+
+13/07/2005 CustomFocusTraversalPolicy.java (added)
+
+13/07/2005 SelectAllTextOnFocus.java (added)
+
+13/07/2005 TypeSafeTextDocumentFilter.java (added)
+
+13/07/2005 TypeSafeVerifier.java (added)
+
+13/07/2005 JDesktopTester.java (modified)
+           Replaced System.out with a popup window.
+           
+13/07/2005 GUIUtils.java (modified)
+           Added method lockJTableColumnWidth(TableColumn tc, int pixels)
+           Added method hideJTableColumn(TableColumn tc)
+
+
+
+
+Changes in version 1.08 (13/04/2005)
+------------------------------------
+
+13/04/2004 WindowManager.java (modified)
+           Reset the position for 'autopositioned' frames to 0,0 within the
+           desktop if this is the first frame placed in the desktop. Usefull
+           when we close all frames, the next frame opened will be placed
+           aging at the starting point in the desktop.
+
+13/04/2005 JConsoleTester.java (modified)
+           Changed in order to reflect the changes to JConsole.
+
+13/04/2005 JConsole.java (modified)
+           Redesinged the configuration process for the console with
+           simple getXXX() and setXXX() methods.
+           Redesigned the autosave and dump of the messages to log files.
+           Created a StringBuffer to store all the messages ever printed.
+           Added property file for gui strings.
+           
+12/04/2005 jconsole.properties (created)
+           Added greek translation.
+           
+07/04/2005 GlassPane.java (created)
+           SwingWorkerVariant.java (created)
+           Added modified swingworker from Yexin Chen's javaworld article.
+           
+07/04/2005 SwingWorker.java (created)
+           Added swingworker v3 class provided by Sun's tutorial.
+
+29/03/2005 singleappinstance.properties (modified)
+           Added italian translation.
+
+22/03/2005 CurrentDateHelper.java (modified)
+           Fixed static Calendar bug.
+           
+22/03/2005 SingleAppInstance.java (modified)
+           Changed exit() codes for each case.
+
+
+
+
+Changes in version 1.07 (14/03/2005)
+------------------------------------
+
+14/03/2005 JDesktopTester.java (modified)
+           Changed in order to add functionality for JInternalFrameGenerator.
+
+14/03/2005 JInternalFrameGenerator.java (new class)
+           Helper class for JDesktopTester,
+           creates new internal frames to test.
+
+13/03/2005 WindowManager.java (modified)
+           Generated an auto frame position functionality to automatically
+           place new internal frames within the desktop. Also added a new
+           method: is_internal_frame_listener_attached(), in order to avoid
+           adding the same listener multiple times.
+
+12/03/2005 JTester.java (modified)
+           Changed in order to reflect the changes of SingleAppInstance.
+
+12/03/2005 SingleAppInstance.java (modified) 
+           Changed in order to be able to change the filename,
+           new method added: getInstance(String filename).
+
+11/03/2005 JToolBarTester.java (modified)
+           Changed to reflect the OutLookToolBar changes.
+
+11/03/2005 OutLookToolBar.java (modified)
+           Changed in order to automatically be notified
+           off new buttons and invoke transform(). Method transform()
+           has been made private, no need to manually invoke it anymore.
+
+06/03/2005 minor code cleanup for all tests
+
+05/03/2005 added javadocs for the library
+
+04/03/2005 minor code modifications to most of the sources:
+           made more classes to be of type final and static
+           added serialVersionUID were needed, etc.
+
+01/03/2005 IOHelper.java (bug fix and code improvements for)
+           methods:
+           createDirectoryTreeForFolder(),
+           createDirectoryTreeForFile(),
+           saveTxtFile()
+           readTxtFile()
+           copyFile()
+           
+25/02/2005 modifications to many class files for Java 1.5 generics
+
+
+
+
+Changes in version 1.06 (25/01/2005)
+------------------------------------
+
+25/01/2005 added new functionality to JSplash:
+           (new class) JSplashLabel.java
+           (modified) JSplash.java
+           (modified) JSplashTester.java
+
+24/01/2005 changed build.xml file in order to separate the zeus-jscl.jar
+           from the test classes. Created for that reason a second jar file:
+           zeus-jscl-test.jar
+
+24/01/2005 modified SingleAppInstance's properties in order to
+           support multiple locales
+
+24/01/2005 modified JTester.java to reflect nanotimer changes
+
+24/01/2005 new timer class wrapper with nanoseconds precision (JDK 1.5):
+           SimpleTimerNanos.java
+
+24/01/2005 renamed SimpleTimer.java to SimpleTimerMillis.java
+
+22/01/2005 moved from JDK 1.4 to JDK 1.5, minor code changes
+           in order to get rid of JDK 1.5 deprecations:
+           JConsoleTester.java
+           JDesktopTester.java
+           JSplashTester.java
+           JTableSortTester.java
+           JTester.java
+           JToolBarTester.java
+
+
+
+
+Changes in version 1.05 (06/01/2005)
+------------------------------------
+
+06/01/2005 modified JTester for SingleAppInstance and SimpleTimer demo
+
+06/01/2005 new helper component:
+           SingleAppInstance.java
+
+05/01/2005 new libraries:           
+           SimpleTimer.java
+           DateHelper.java
+           
+05/01/2005 new methods:
+           GUIUtils.java,  maximizeJFrame()
+           
+29/11/2004 minor performance modifications:
+           CurrentDateHelper.java
+
+
+
+
+Changes in version 1.04 (12/11/2004)
+------------------------------------
+
+11/11/2004 modified JTester for JDesktopTester
+
+11/11/2004 added new test application:
+           JDesktopTester.java
+
+11/11/2004 added new classes for a swing component (JDesktop Window Manager):
+           WindowManager.java
+           JInternalFrameComparator.java
+
+28/10/2004 modified JTester for JToolBarTester
+
+28/10/2004 added new test application:
+           JToolBarTester.java
+
+28/10/2004 added new swing component for outlook like JToolBar behavior:
+           OutLookToolBar.java
+
+
+
+
+Changes in version 1.02 (23/10/2004)
+------------------------------------
+
+22/10/2004 modified JTester for JTableSortTester
+
+22/10/2004 added new test application:
+           JTableSortTester.java
+
+22/10/2004 added new classes for JTable sorting swing component:
+           BevelArrowIcon.java
+           BlankIcon.java
+           SortableTableModel.java
+           SortButtonHeaderListener.java
+           SortButtonRenderer.java
+           TableSorter.java
+
+22/10/2004 added new swing component for JTable cell rendering of a 
+           progress bar: ProgressBarCellRenderer.java
+
+22/10/2004 modified JSplashTester in order to apply the new
+           JSplash functionality.
+
+22/10/2004 modified JSplash, added functionality for
+           percent or custom messages display during loading.
+
+
+
+
+Changes in version 1.0 beta 2 (22/07/2004)
+------------------------------------------
+
+22/07/2004 added new functionality to JConsole,
+           auto save messages to the trace file and
+           limit the characters displayed in
+           textarea for performance issues
+
+22/07/2004 new test application:
+           JTester.java, a wrapper for all tests
+
+21/07/2004 added new test application:
+           JSplashTester.java
+
+21/07/2004 added new swing component:
+           JSplash.java
+           
+21/07/2004 added new library:
+           GUIUtils.java
+
+
+
+
+Version 1.0 beta (19/07/2004)
+-----------------------------
+Initial version
+
+19/07/2004 added first test application:
+           JConsoleTester.java
+
+16/07/2004 added first swing component:
+           JConsole.java
+
+15/07/2004 initial creation of the library, added utils:
+           CurrentDateHelper.java
+           IOHelper.java
+           SimpleUIDGenerator.java
diff --git a/clean.bat b/clean.bat
new file mode 100644
index 0000000..9f6556a
--- /dev/null
+++ b/clean.bat
@@ -0,0 +1,5 @@
+ at echo off
+cls
+
+call cp.bat
+ant clean
diff --git a/contributors.txt b/contributors.txt
new file mode 100644
index 0000000..0d6f713
--- /dev/null
+++ b/contributors.txt
@@ -0,0 +1,12 @@
+Brian Ngure (ngure76 at yahoo.com)
+-------------------------------
+
+03/2005: Written and generated the initial javadocs for the library.
+
+
+
+
+Riccardo Govoni (battlehorse at virgilio.it)
+-----------------------------------------
+
+03/2005: Italian translation for singleappinstance.properties
diff --git a/cp.bat b/cp.bat
new file mode 100644
index 0000000..322a762
--- /dev/null
+++ b/cp.bat
@@ -0,0 +1,8 @@
+ at echo off
+
+REM *** Modify these vars to reflect your configuration ***
+set JAVA_HOME=E:\jdk1.8
+set ANT_HOME=\DEVELOPMENT\tools\ant
+REM *******************************************************
+
+set PATH=%JAVA_HOME%\bin;%ANT_HOME%\bin;%PATH%
diff --git a/doc/api/allclasses-frame.html b/doc/api/allclasses-frame.html
new file mode 100644
index 0000000..f4074a2
--- /dev/null
+++ b/doc/api/allclasses-frame.html
@@ -0,0 +1,48 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc (1.8.0_05) on Sat Jun 07 12:11:35 EEST 2014 -->
+<title>All Classes</title>
+<meta name="date" content="2014-06-07">
+<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
+<script type="text/javascript" src="script.js"></script>
+</head>
+<body>
+<h1 class="bar">All Classes</h1>
+<div class="indexContainer">
+<ul>
+<li><a href="gr/zeus/ui/table/AutoResizeTableColumns.html" title="class in gr.zeus.ui.table" target="classFrame">AutoResizeTableColumns</a></li>
+<li><a href="gr/zeus/util/CurrentDateHelper.html" title="class in gr.zeus.util" target="classFrame">CurrentDateHelper</a></li>
+<li><a href="gr/zeus/ui/typesafe/CustomFocusTraversalPolicy.html" title="class in gr.zeus.ui.typesafe" target="classFrame">CustomFocusTraversalPolicy</a></li>
+<li><a href="gr/zeus/util/DateHelper.html" title="class in gr.zeus.util" target="classFrame">DateHelper</a></li>
+<li><a href="gr/zeus/util/GUIUtils.html" title="class in gr.zeus.util" target="classFrame">GUIUtils</a></li>
+<li><a href="gr/zeus/util/IOHelper.html" title="class in gr.zeus.util" target="classFrame">IOHelper</a></li>
+<li><a href="gr/zeus/ui/JConsole.html" title="class in gr.zeus.ui" target="classFrame">JConsole</a></li>
+<li><a href="gr/zeus/ui/JConsolePane.html" title="class in gr.zeus.ui" target="classFrame">JConsolePane</a></li>
+<li><a href="gr/zeus/ui/JIConsole.html" title="class in gr.zeus.ui" target="classFrame">JIConsole</a></li>
+<li><a href="gr/zeus/ui/mdi/JInternalFrameComparator.html" title="class in gr.zeus.ui.mdi" target="classFrame">JInternalFrameComparator</a></li>
+<li><a href="gr/zeus/ui/JMessage.html" title="class in gr.zeus.ui" target="classFrame">JMessage</a></li>
+<li><a href="gr/zeus/ui/JMessage.JMessageButtonEnum.html" title="enum in gr.zeus.ui" target="classFrame">JMessage.JMessageButtonEnum</a></li>
+<li><a href="gr/zeus/ui/JSplash.html" title="class in gr.zeus.ui" target="classFrame">JSplash</a></li>
+<li><a href="gr/zeus/ui/JSplashLabel.html" title="class in gr.zeus.ui" target="classFrame">JSplashLabel</a></li>
+<li><a href="gr/zeus/ui/OutLookToolBar.html" title="class in gr.zeus.ui" target="classFrame">OutLookToolBar</a></li>
+<li><a href="gr/zeus/ui/table/ProgressBarCellRenderer.html" title="class in gr.zeus.ui.table" target="classFrame">ProgressBarCellRenderer</a></li>
+<li><a href="gr/zeus/ui/typesafe/SelectAllTextOnFocus.html" title="class in gr.zeus.ui.typesafe" target="classFrame">SelectAllTextOnFocus</a></li>
+<li><a href="gr/zeus/ui/typesafe/SimpleEditorPaneTraversal.html" title="class in gr.zeus.ui.typesafe" target="classFrame">SimpleEditorPaneTraversal</a></li>
+<li><a href="gr/zeus/ui/typesafe/SimpleTextAreaTraversal.html" title="class in gr.zeus.ui.typesafe" target="classFrame">SimpleTextAreaTraversal</a></li>
+<li><a href="gr/zeus/ui/typesafe/SimpleTextPaneTraversal.html" title="class in gr.zeus.ui.typesafe" target="classFrame">SimpleTextPaneTraversal</a></li>
+<li><a href="gr/zeus/util/SimpleTimerMillis.html" title="class in gr.zeus.util" target="classFrame">SimpleTimerMillis</a></li>
+<li><a href="gr/zeus/util/SimpleTimerNanos.html" title="class in gr.zeus.util" target="classFrame">SimpleTimerNanos</a></li>
+<li><a href="gr/zeus/util/SimpleUIDGenerator.html" title="class in gr.zeus.util" target="classFrame">SimpleUIDGenerator</a></li>
+<li><a href="gr/zeus/ui/SingleAppInstance.html" title="class in gr.zeus.ui" target="classFrame">SingleAppInstance</a></li>
+<li><a href="gr/zeus/ui/typesafe/SwingConfigurationManager.html" title="class in gr.zeus.ui.typesafe" target="classFrame">SwingConfigurationManager</a></li>
+<li><a href="gr/zeus/ui/table/TableSorter.html" title="class in gr.zeus.ui.table" target="classFrame">TableSorter</a></li>
+<li><a href="gr/zeus/ui/table/TableSorterIcons.html" title="class in gr.zeus.ui.table" target="classFrame">TableSorterIcons</a></li>
+<li><a href="gr/zeus/ui/typesafe/TypeSafeTextDocumentFilter.html" title="class in gr.zeus.ui.typesafe" target="classFrame">TypeSafeTextDocumentFilter</a></li>
+<li><a href="gr/zeus/ui/typesafe/TypeSafeVerifier.html" title="class in gr.zeus.ui.typesafe" target="classFrame">TypeSafeVerifier</a></li>
+<li><a href="gr/zeus/ui/mdi/WindowManager.html" title="class in gr.zeus.ui.mdi" target="classFrame">WindowManager</a></li>
+</ul>
+</div>
+</body>
+</html>
diff --git a/doc/api/allclasses-noframe.html b/doc/api/allclasses-noframe.html
new file mode 100644
index 0000000..9c7c111
--- /dev/null
+++ b/doc/api/allclasses-noframe.html
@@ -0,0 +1,48 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc (1.8.0_05) on Sat Jun 07 12:11:35 EEST 2014 -->
+<title>All Classes</title>
+<meta name="date" content="2014-06-07">
+<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
+<script type="text/javascript" src="script.js"></script>
+</head>
+<body>
+<h1 class="bar">All Classes</h1>
+<div class="indexContainer">
+<ul>
+<li><a href="gr/zeus/ui/table/AutoResizeTableColumns.html" title="class in gr.zeus.ui.table">AutoResizeTableColumns</a></li>
+<li><a href="gr/zeus/util/CurrentDateHelper.html" title="class in gr.zeus.util">CurrentDateHelper</a></li>
+<li><a href="gr/zeus/ui/typesafe/CustomFocusTraversalPolicy.html" title="class in gr.zeus.ui.typesafe">CustomFocusTraversalPolicy</a></li>
+<li><a href="gr/zeus/util/DateHelper.html" title="class in gr.zeus.util">DateHelper</a></li>
+<li><a href="gr/zeus/util/GUIUtils.html" title="class in gr.zeus.util">GUIUtils</a></li>
+<li><a href="gr/zeus/util/IOHelper.html" title="class in gr.zeus.util">IOHelper</a></li>
+<li><a href="gr/zeus/ui/JConsole.html" title="class in gr.zeus.ui">JConsole</a></li>
+<li><a href="gr/zeus/ui/JConsolePane.html" title="class in gr.zeus.ui">JConsolePane</a></li>
+<li><a href="gr/zeus/ui/JIConsole.html" title="class in gr.zeus.ui">JIConsole</a></li>
+<li><a href="gr/zeus/ui/mdi/JInternalFrameComparator.html" title="class in gr.zeus.ui.mdi">JInternalFrameComparator</a></li>
+<li><a href="gr/zeus/ui/JMessage.html" title="class in gr.zeus.ui">JMessage</a></li>
+<li><a href="gr/zeus/ui/JMessage.JMessageButtonEnum.html" title="enum in gr.zeus.ui">JMessage.JMessageButtonEnum</a></li>
+<li><a href="gr/zeus/ui/JSplash.html" title="class in gr.zeus.ui">JSplash</a></li>
+<li><a href="gr/zeus/ui/JSplashLabel.html" title="class in gr.zeus.ui">JSplashLabel</a></li>
+<li><a href="gr/zeus/ui/OutLookToolBar.html" title="class in gr.zeus.ui">OutLookToolBar</a></li>
+<li><a href="gr/zeus/ui/table/ProgressBarCellRenderer.html" title="class in gr.zeus.ui.table">ProgressBarCellRenderer</a></li>
+<li><a href="gr/zeus/ui/typesafe/SelectAllTextOnFocus.html" title="class in gr.zeus.ui.typesafe">SelectAllTextOnFocus</a></li>
+<li><a href="gr/zeus/ui/typesafe/SimpleEditorPaneTraversal.html" title="class in gr.zeus.ui.typesafe">SimpleEditorPaneTraversal</a></li>
+<li><a href="gr/zeus/ui/typesafe/SimpleTextAreaTraversal.html" title="class in gr.zeus.ui.typesafe">SimpleTextAreaTraversal</a></li>
+<li><a href="gr/zeus/ui/typesafe/SimpleTextPaneTraversal.html" title="class in gr.zeus.ui.typesafe">SimpleTextPaneTraversal</a></li>
+<li><a href="gr/zeus/util/SimpleTimerMillis.html" title="class in gr.zeus.util">SimpleTimerMillis</a></li>
+<li><a href="gr/zeus/util/SimpleTimerNanos.html" title="class in gr.zeus.util">SimpleTimerNanos</a></li>
+<li><a href="gr/zeus/util/SimpleUIDGenerator.html" title="class in gr.zeus.util">SimpleUIDGenerator</a></li>
+<li><a href="gr/zeus/ui/SingleAppInstance.html" title="class in gr.zeus.ui">SingleAppInstance</a></li>
+<li><a href="gr/zeus/ui/typesafe/SwingConfigurationManager.html" title="class in gr.zeus.ui.typesafe">SwingConfigurationManager</a></li>
+<li><a href="gr/zeus/ui/table/TableSorter.html" title="class in gr.zeus.ui.table">TableSorter</a></li>
+<li><a href="gr/zeus/ui/table/TableSorterIcons.html" title="class in gr.zeus.ui.table">TableSorterIcons</a></li>
+<li><a href="gr/zeus/ui/typesafe/TypeSafeTextDocumentFilter.html" title="class in gr.zeus.ui.typesafe">TypeSafeTextDocumentFilter</a></li>
+<li><a href="gr/zeus/ui/typesafe/TypeSafeVerifier.html" title="class in gr.zeus.ui.typesafe">TypeSafeVerifier</a></li>
+<li><a href="gr/zeus/ui/mdi/WindowManager.html" title="class in gr.zeus.ui.mdi">WindowManager</a></li>
+</ul>
+</div>
+</body>
+</html>
diff --git a/doc/api/constant-values.html b/doc/api/constant-values.html
new file mode 100644
index 0000000..df0a9fa
--- /dev/null
+++ b/doc/api/constant-values.html
@@ -0,0 +1,205 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc (1.8.0_05) on Sat Jun 07 12:11:35 EEST 2014 -->
+<title>Constant Field Values</title>
+<meta name="date" content="2014-06-07">
+<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
+<script type="text/javascript" src="script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="Constant Field Values";
+        }
+    }
+    catch(err) {
+    }
+//-->
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="overview-summary.html">Overview</a></li>
+<li>Package</li>
+<li>Class</li>
+<li><a href="overview-tree.html">Tree</a></li>
+<li><a href="deprecated-list.html">Deprecated</a></li>
+<li><a href="index-all.html">Index</a></li>
+<li><a href="help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev</li>
+<li>Next</li>
+</ul>
+<ul class="navList">
+<li><a href="index.html?constant-values.html" target="_top">Frames</a></li>
+<li><a href="constant-values.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<div class="header">
+<h1 title="Constant Field Values" class="title">Constant Field Values</h1>
+<h2 title="Contents">Contents</h2>
+<ul>
+<li><a href="#gr.zeus">gr.zeus.*</a></li>
+</ul>
+</div>
+<div class="constantValuesContainer"><a name="gr.zeus">
+<!--   -->
+</a>
+<h2 title="gr.zeus">gr.zeus.*</h2>
+<ul class="blockList">
+<li class="blockList">
+<table class="constantsSummary" border="0" cellpadding="3" cellspacing="0" summary="Constant Field Values table, listing constant fields, and values">
+<caption><span>gr.zeus.ui.table.<a href="gr/zeus/ui/table/AutoResizeTableColumns.html" title="class in gr.zeus.ui.table">AutoResizeTableColumns</a></span><span class="tabEnd"> </span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th scope="col">Constant Field</th>
+<th class="colLast" scope="col">Value</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colFirst"><a name="gr.zeus.ui.table.AutoResizeTableColumns.DEFAULT_COLUMN_PADDING">
+<!--   -->
+</a><code>public static final int</code></td>
+<td><code><a href="gr/zeus/ui/table/AutoResizeTableColumns.html#DEFAULT_COLUMN_PADDING">DEFAULT_COLUMN_PADDING</a></code></td>
+<td class="colLast"><code>5</code></td>
+</tr>
+</tbody>
+</table>
+</li>
+<li class="blockList">
+<table class="constantsSummary" border="0" cellpadding="3" cellspacing="0" summary="Constant Field Values table, listing constant fields, and values">
+<caption><span>gr.zeus.ui.table.<a href="gr/zeus/ui/table/TableSorter.html" title="class in gr.zeus.ui.table">TableSorter</a></span><span class="tabEnd"> </span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th scope="col">Constant Field</th>
+<th class="colLast" scope="col">Value</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colFirst"><a name="gr.zeus.ui.table.TableSorter.ASCENDING">
+<!--   -->
+</a><code>public static final int</code></td>
+<td><code><a href="gr/zeus/ui/table/TableSorter.html#ASCENDING">ASCENDING</a></code></td>
+<td class="colLast"><code>1</code></td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><a name="gr.zeus.ui.table.TableSorter.DESCENDING">
+<!--   -->
+</a><code>public static final int</code></td>
+<td><code><a href="gr/zeus/ui/table/TableSorter.html#DESCENDING">DESCENDING</a></code></td>
+<td class="colLast"><code>-1</code></td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><a name="gr.zeus.ui.table.TableSorter.NOT_SORTED">
+<!--   -->
+</a><code>public static final int</code></td>
+<td><code><a href="gr/zeus/ui/table/TableSorter.html#NOT_SORTED">NOT_SORTED</a></code></td>
+<td class="colLast"><code>0</code></td>
+</tr>
+</tbody>
+</table>
+</li>
+</ul>
+<ul class="blockList">
+<li class="blockList">
+<table class="constantsSummary" border="0" cellpadding="3" cellspacing="0" summary="Constant Field Values table, listing constant fields, and values">
+<caption><span>gr.zeus.ui.typesafe.<a href="gr/zeus/ui/typesafe/TypeSafeTextDocumentFilter.html" title="class in gr.zeus.ui.typesafe">TypeSafeTextDocumentFilter</a></span><span class="tabEnd"> </span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th scope="col">Constant Field</th>
+<th class="colLast" scope="col">Value</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colFirst"><a name="gr.zeus.ui.typesafe.TypeSafeTextDocumentFilter.DEFAULT_MAXCHARS">
+<!--   -->
+</a><code>public static final int</code></td>
+<td><code><a href="gr/zeus/ui/typesafe/TypeSafeTextDocumentFilter.html#DEFAULT_MAXCHARS">DEFAULT_MAXCHARS</a></code></td>
+<td class="colLast"><code>4096</code></td>
+</tr>
+</tbody>
+</table>
+</li>
+</ul>
+</div>
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="overview-summary.html">Overview</a></li>
+<li>Package</li>
+<li>Class</li>
+<li><a href="overview-tree.html">Tree</a></li>
+<li><a href="deprecated-list.html">Deprecated</a></li>
+<li><a href="index-all.html">Index</a></li>
+<li><a href="help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev</li>
+<li>Next</li>
+</ul>
+<ul class="navList">
+<li><a href="index.html?constant-values.html" target="_top">Frames</a></li>
+<li><a href="constant-values.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+</body>
+</html>
diff --git a/doc/api/deprecated-list.html b/doc/api/deprecated-list.html
new file mode 100644
index 0000000..3015264
--- /dev/null
+++ b/doc/api/deprecated-list.html
@@ -0,0 +1,122 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc (1.8.0_05) on Sat Jun 07 12:11:35 EEST 2014 -->
+<title>Deprecated List</title>
+<meta name="date" content="2014-06-07">
+<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
+<script type="text/javascript" src="script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="Deprecated List";
+        }
+    }
+    catch(err) {
+    }
+//-->
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="overview-summary.html">Overview</a></li>
+<li>Package</li>
+<li>Class</li>
+<li><a href="overview-tree.html">Tree</a></li>
+<li class="navBarCell1Rev">Deprecated</li>
+<li><a href="index-all.html">Index</a></li>
+<li><a href="help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev</li>
+<li>Next</li>
+</ul>
+<ul class="navList">
+<li><a href="index.html?deprecated-list.html" target="_top">Frames</a></li>
+<li><a href="deprecated-list.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<div class="header">
+<h1 title="Deprecated API" class="title">Deprecated API</h1>
+<h2 title="Contents">Contents</h2>
+</div>
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="overview-summary.html">Overview</a></li>
+<li>Package</li>
+<li>Class</li>
+<li><a href="overview-tree.html">Tree</a></li>
+<li class="navBarCell1Rev">Deprecated</li>
+<li><a href="index-all.html">Index</a></li>
+<li><a href="help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev</li>
+<li>Next</li>
+</ul>
+<ul class="navList">
+<li><a href="index.html?deprecated-list.html" target="_top">Frames</a></li>
+<li><a href="deprecated-list.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+</body>
+</html>
diff --git a/doc/api/gr/zeus/ui/JConsole.html b/doc/api/gr/zeus/ui/JConsole.html
new file mode 100644
index 0000000..14d834d
--- /dev/null
+++ b/doc/api/gr/zeus/ui/JConsole.html
@@ -0,0 +1,447 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc (1.8.0_05) on Sat Jun 07 12:11:34 EEST 2014 -->
+<title>JConsole</title>
+<meta name="date" content="2014-06-07">
+<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="JConsole";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = {"i0":9};
+var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],8:["t4","Concrete Methods"]};
+var altColor = "altColor";
+var rowColor = "rowColor";
+var tableTab = "tableTab";
+var activeTableTab = "activeTableTab";
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../index-all.html">Index</a></li>
+<li><a href="../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev Class</li>
+<li><a href="../../../gr/zeus/ui/JConsolePane.html" title="class in gr.zeus.ui"><span class="typeNameLink">Next Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../index.html?gr/zeus/ui/JConsole.html" target="_top">Frames</a></li>
+<li><a href="JConsole.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary: </li>
+<li><a href="#nested.classes.inherited.from.class.javax.swing.JFrame">Nested</a> | </li>
+<li><a href="#fields.inherited.from.class.javax.swing.JFrame">Field</a> | </li>
+<li><a href="#constructor.summary">Constr</a> | </li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail: </li>
+<li>Field | </li>
+<li><a href="#constructor.detail">Constr</a> | </li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="subTitle">gr.zeus.ui</div>
+<h2 title="Class JConsole" class="title">Class JConsole</h2>
+</div>
+<div class="contentContainer">
+<ul class="inheritance">
+<li>java.lang.Object</li>
+<li>
+<ul class="inheritance">
+<li>java.awt.Component</li>
+<li>
+<ul class="inheritance">
+<li>java.awt.Container</li>
+<li>
+<ul class="inheritance">
+<li>java.awt.Window</li>
+<li>
+<ul class="inheritance">
+<li>java.awt.Frame</li>
+<li>
+<ul class="inheritance">
+<li>javax.swing.JFrame</li>
+<li>
+<ul class="inheritance">
+<li>gr.zeus.ui.JConsole</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<dl>
+<dt>All Implemented Interfaces:</dt>
+<dd>java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, javax.accessibility.Accessible, javax.swing.RootPaneContainer, javax.swing.WindowConstants</dd>
+</dl>
+<hr>
+<br>
+<pre>public final class <span class="typeNameLabel">JConsole</span>
+extends javax.swing.JFrame</pre>
+<div class="block">The JFrame edition of <b>JConsolePane</b>.<br>
+ <a href="../../../gr/zeus/ui/JConsolePane.html" title="class in gr.zeus.ui"><code>JConsolePane</code></a>
+ <p></div>
+<dl>
+<dt><span class="simpleTagLabel">Since:</span></dt>
+<dd>1.40</dd>
+<dt><span class="simpleTagLabel">Author:</span></dt>
+<dd>Gregory Kotsaftis</dd>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../serialized-form.html#gr.zeus.ui.JConsole">Serialized Form</a></dd>
+</dl>
+</li>
+</ul>
+</div>
+<div class="summary">
+<ul class="blockList">
+<li class="blockList">
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="nested.class.summary">
+<!--   -->
+</a>
+<h3>Nested Class Summary</h3>
+<ul class="blockList">
+<li class="blockList"><a name="nested.classes.inherited.from.class.javax.swing.JFrame">
+<!--   -->
+</a>
+<h3>Nested classes/interfaces inherited from class javax.swing.JFrame</h3>
+<code>javax.swing.JFrame.AccessibleJFrame</code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="nested.classes.inherited.from.class.java.awt.Frame">
+<!--   -->
+</a>
+<h3>Nested classes/interfaces inherited from class java.awt.Frame</h3>
+<code>java.awt.Frame.AccessibleAWTFrame</code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="nested.classes.inherited.from.class.java.awt.Window">
+<!--   -->
+</a>
+<h3>Nested classes/interfaces inherited from class java.awt.Window</h3>
+<code>java.awt.Window.AccessibleAWTWindow, java.awt.Window.Type</code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="nested.classes.inherited.from.class.java.awt.Container">
+<!--   -->
+</a>
+<h3>Nested classes/interfaces inherited from class java.awt.Container</h3>
+<code>java.awt.Container.AccessibleAWTContainer</code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="nested.classes.inherited.from.class.java.awt.Component">
+<!--   -->
+</a>
+<h3>Nested classes/interfaces inherited from class java.awt.Component</h3>
+<code>java.awt.Component.AccessibleAWTComponent, java.awt.Component.BaselineResizeBehavior, java.awt.Component.BltBufferStrategy, java.awt.Component.FlipBufferStrategy</code></li>
+</ul>
+</li>
+</ul>
+<!-- =========== FIELD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field.summary">
+<!--   -->
+</a>
+<h3>Field Summary</h3>
+<ul class="blockList">
+<li class="blockList"><a name="fields.inherited.from.class.javax.swing.JFrame">
+<!--   -->
+</a>
+<h3>Fields inherited from class javax.swing.JFrame</h3>
+<code>accessibleContext, EXIT_ON_CLOSE, rootPane, rootPaneCheckingEnabled</code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="fields.inherited.from.class.java.awt.Frame">
+<!--   -->
+</a>
+<h3>Fields inherited from class java.awt.Frame</h3>
+<code>CROSSHAIR_CURSOR, DEFAULT_CURSOR, E_RESIZE_CURSOR, HAND_CURSOR, ICONIFIED, MAXIMIZED_BOTH, MAXIMIZED_HORIZ, MAXIMIZED_VERT, MOVE_CURSOR, N_RESIZE_CURSOR, NE_RESIZE_CURSOR, NORMAL, NW_RESIZE_CURSOR, S_RESIZE_CURSOR, SE_RESIZE_CURSOR, SW_RESIZE_CURSOR, TEXT_CURSOR, W_RESIZE_CURSOR, WAIT_CURSOR</code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="fields.inherited.from.class.java.awt.Component">
+<!--   -->
+</a>
+<h3>Fields inherited from class java.awt.Component</h3>
+<code>BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT</code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="fields.inherited.from.class.javax.swing.WindowConstants">
+<!--   -->
+</a>
+<h3>Fields inherited from interface javax.swing.WindowConstants</h3>
+<code>DISPOSE_ON_CLOSE, DO_NOTHING_ON_CLOSE, HIDE_ON_CLOSE</code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="fields.inherited.from.class.java.awt.image.ImageObserver">
+<!--   -->
+</a>
+<h3>Fields inherited from interface java.awt.image.ImageObserver</h3>
+<code>ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH</code></li>
+</ul>
+</li>
+</ul>
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.summary">
+<!--   -->
+</a>
+<h3>Constructor Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
+<caption><span>Constructors</span><span class="tabEnd"> </span></caption>
+<tr>
+<th class="colOne" scope="col">Constructor and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../gr/zeus/ui/JConsole.html#JConsole--">JConsole</a></span>()</code>
+<div class="block">Constructor.</div>
+</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.summary">
+<!--   -->
+</a>
+<h3>Method Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
+<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd"> </span></span><span id="t1" class="tableTab"><span><a href="javascript:show(1);">Static Methods</a></span><span class="tabEnd"> </span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd"> </span></span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tr id="i0" class="altColor">
+<td class="colFirst"><code>static <a href="../../../gr/zeus/ui/JConsolePane.html" title="class in gr.zeus.ui">JConsolePane</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../gr/zeus/ui/JConsole.html#getConsole--">getConsole</a></span>()</code>
+<div class="block">Returns the instance of the <code>JConsolePane</code> for further
+ configuration.</div>
+</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.javax.swing.JFrame">
+<!--   -->
+</a>
+<h3>Methods inherited from class javax.swing.JFrame</h3>
+<code>addImpl, createRootPane, frameInit, getAccessibleContext, getContentPane, getDefaultCloseOperation, getGlassPane, getGraphics, getJMenuBar, getLayeredPane, getRootPane, getTransferHandler, isDefaultLookAndFeelDecorated, isRootPaneCheckingEnabled, paramString, processWindowEvent, remove, repaint, setContentPane, setDefaultCloseOperation, setDefaultLookAndFeelDecorated, setGlassPane, setIconImage, setJMenuBar, setLayeredPane, setLayout, setRootPane, setRootPaneCheckingEnabled, setTra [...]
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.awt.Frame">
+<!--   -->
+</a>
+<h3>Methods inherited from class java.awt.Frame</h3>
+<code>addNotify, getCursorType, getExtendedState, getFrames, getIconImage, getMaximizedBounds, getMenuBar, getState, getTitle, isResizable, isUndecorated, remove, removeNotify, setBackground, setCursor, setExtendedState, setMaximizedBounds, setMenuBar, setOpacity, setResizable, setShape, setState, setTitle, setUndecorated</code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.awt.Window">
+<!--   -->
+</a>
+<h3>Methods inherited from class java.awt.Window</h3>
+<code>addPropertyChangeListener, addPropertyChangeListener, addWindowFocusListener, addWindowListener, addWindowStateListener, applyResourceBundle, applyResourceBundle, createBufferStrategy, createBufferStrategy, dispose, getBackground, getBufferStrategy, getFocusableWindowState, getFocusCycleRootAncestor, getFocusOwner, getFocusTraversalKeys, getIconImages, getInputContext, getListeners, getLocale, getModalExclusionType, getMostRecentFocusOwner, getOpacity, getOwnedWindows, getOwner, ge [...]
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.awt.Container">
+<!--   -->
+</a>
+<h3>Methods inherited from class java.awt.Container</h3>
+<code>add, add, add, add, add, addContainerListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getAlignmentX, getAlignmentY, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalPolicy, getInsets, getLayout, getMaximumSize, getMinimumSize, getMousePosition, getPreferredSize, insets, invalidate, isAncestorOf, isFocusCy [...]
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.awt.Component">
+<!--   -->
+</a>
+<h3>Methods inherited from class java.awt.Component</h3>
+<code>action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, contains, createImage, createImage, createVolatileImage, createVolatileImage, disable, disableEvents, dispatchEvent, enable, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyC [...]
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
+<!--   -->
+</a>
+<h3>Methods inherited from class java.lang.Object</h3>
+<code>clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait</code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.awt.MenuContainer">
+<!--   -->
+</a>
+<h3>Methods inherited from interface java.awt.MenuContainer</h3>
+<code>getFont, postEvent</code></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="details">
+<ul class="blockList">
+<li class="blockList">
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.detail">
+<!--   -->
+</a>
+<h3>Constructor Detail</h3>
+<a name="JConsole--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>JConsole</h4>
+<pre>public JConsole()</pre>
+<div class="block">Constructor.
+ Creates a new JFrame and adds to it the single instance of JConsolePane.
+ Finally hides the frame until it is required to be seen.</div>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ============ METHOD DETAIL ========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.detail">
+<!--   -->
+</a>
+<h3>Method Detail</h3>
+<a name="getConsole--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>getConsole</h4>
+<pre>public static <a href="../../../gr/zeus/ui/JConsolePane.html" title="class in gr.zeus.ui">JConsolePane</a> getConsole()</pre>
+<div class="block">Returns the instance of the <code>JConsolePane</code> for further
+ configuration.</div>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+<!-- ========= END OF CLASS DATA ========= -->
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../index-all.html">Index</a></li>
+<li><a href="../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev Class</li>
+<li><a href="../../../gr/zeus/ui/JConsolePane.html" title="class in gr.zeus.ui"><span class="typeNameLink">Next Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../index.html?gr/zeus/ui/JConsole.html" target="_top">Frames</a></li>
+<li><a href="JConsole.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary: </li>
+<li><a href="#nested.classes.inherited.from.class.javax.swing.JFrame">Nested</a> | </li>
+<li><a href="#fields.inherited.from.class.javax.swing.JFrame">Field</a> | </li>
+<li><a href="#constructor.summary">Constr</a> | </li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail: </li>
+<li>Field | </li>
+<li><a href="#constructor.detail">Constr</a> | </li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+</body>
+</html>
diff --git a/doc/api/gr/zeus/ui/JConsolePane.html b/doc/api/gr/zeus/ui/JConsolePane.html
new file mode 100644
index 0000000..22a7078
--- /dev/null
+++ b/doc/api/gr/zeus/ui/JConsolePane.html
@@ -0,0 +1,1318 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc (1.8.0_05) on Sat Jun 07 12:11:34 EEST 2014 -->
+<title>JConsolePane</title>
+<meta name="date" content="2014-06-07">
+<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="JConsolePane";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":9,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":10,"i19":10,"i20":10,"i21":10,"i22":10,"i23":10,"i24":10,"i25":10,"i26":10,"i27":10,"i28":10,"i29":10,"i30":10,"i31":10,"i32":10,"i33":10,"i34":10,"i35":10,"i36":10,"i37":10,"i38":10,"i39":10,"i40":10,"i41":10,"i42":10,"i43":10,"i44":10,"i45":10};
+var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
+var altColor = "altColor";
+var rowColor = "rowColor";
+var tableTab = "tableTab";
+var activeTableTab = "activeTableTab";
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../index-all.html">Index</a></li>
+<li><a href="../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../gr/zeus/ui/JConsole.html" title="class in gr.zeus.ui"><span class="typeNameLink">Prev Class</span></a></li>
+<li><a href="../../../gr/zeus/ui/JIConsole.html" title="class in gr.zeus.ui"><span class="typeNameLink">Next Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../index.html?gr/zeus/ui/JConsolePane.html" target="_top">Frames</a></li>
+<li><a href="JConsolePane.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary: </li>
+<li><a href="#nested.classes.inherited.from.class.javax.swing.JPanel">Nested</a> | </li>
+<li><a href="#fields.inherited.from.class.javax.swing.JComponent">Field</a> | </li>
+<li>Constr | </li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail: </li>
+<li>Field | </li>
+<li>Constr | </li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="subTitle">gr.zeus.ui</div>
+<h2 title="Class JConsolePane" class="title">Class JConsolePane</h2>
+</div>
+<div class="contentContainer">
+<ul class="inheritance">
+<li>java.lang.Object</li>
+<li>
+<ul class="inheritance">
+<li>java.awt.Component</li>
+<li>
+<ul class="inheritance">
+<li>java.awt.Container</li>
+<li>
+<ul class="inheritance">
+<li>javax.swing.JComponent</li>
+<li>
+<ul class="inheritance">
+<li>javax.swing.JPanel</li>
+<li>
+<ul class="inheritance">
+<li>gr.zeus.ui.JConsolePane</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<dl>
+<dt>All Implemented Interfaces:</dt>
+<dd>java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, javax.accessibility.Accessible</dd>
+</dl>
+<hr>
+<br>
+<pre>public final class <span class="typeNameLabel">JConsolePane</span>
+extends javax.swing.JPanel</pre>
+<div class="block">A java console to replace the command line window. Redirects the stdout
+ and stderr. Customizable. Can save its messages to text file. In addition,
+ it can auto dump to a log file and clear the textarea. Can be used with
+ JFrame, JInternalFrame or as a JPanel. If used in conjunction with any exe
+ creator for java, e.g:
+ <a href="http://launch4j.sourceforge.net/">launch4j</a> or
+ <a href="http://jsmooth.sourceforge.net/">JSmooth</a>,
+ it eliminates the dos application windows and your application looks more
+ professional.
+ <p></div>
+<dl>
+<dt><span class="simpleTagLabel">Since:</span></dt>
+<dd>1.0</dd>
+<dt><span class="simpleTagLabel">Author:</span></dt>
+<dd>Gregory Kotsaftis</dd>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../serialized-form.html#gr.zeus.ui.JConsolePane">Serialized Form</a></dd>
+</dl>
+</li>
+</ul>
+</div>
+<div class="summary">
+<ul class="blockList">
+<li class="blockList">
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="nested.class.summary">
+<!--   -->
+</a>
+<h3>Nested Class Summary</h3>
+<ul class="blockList">
+<li class="blockList"><a name="nested.classes.inherited.from.class.javax.swing.JPanel">
+<!--   -->
+</a>
+<h3>Nested classes/interfaces inherited from class javax.swing.JPanel</h3>
+<code>javax.swing.JPanel.AccessibleJPanel</code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="nested.classes.inherited.from.class.javax.swing.JComponent">
+<!--   -->
+</a>
+<h3>Nested classes/interfaces inherited from class javax.swing.JComponent</h3>
+<code>javax.swing.JComponent.AccessibleJComponent</code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="nested.classes.inherited.from.class.java.awt.Container">
+<!--   -->
+</a>
+<h3>Nested classes/interfaces inherited from class java.awt.Container</h3>
+<code>java.awt.Container.AccessibleAWTContainer</code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="nested.classes.inherited.from.class.java.awt.Component">
+<!--   -->
+</a>
+<h3>Nested classes/interfaces inherited from class java.awt.Component</h3>
+<code>java.awt.Component.AccessibleAWTComponent, java.awt.Component.BaselineResizeBehavior, java.awt.Component.BltBufferStrategy, java.awt.Component.FlipBufferStrategy</code></li>
+</ul>
+</li>
+</ul>
+<!-- =========== FIELD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field.summary">
+<!--   -->
+</a>
+<h3>Field Summary</h3>
+<ul class="blockList">
+<li class="blockList"><a name="fields.inherited.from.class.javax.swing.JComponent">
+<!--   -->
+</a>
+<h3>Fields inherited from class javax.swing.JComponent</h3>
+<code>listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW</code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="fields.inherited.from.class.java.awt.Component">
+<!--   -->
+</a>
+<h3>Fields inherited from class java.awt.Component</h3>
+<code>accessibleContext, BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT</code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="fields.inherited.from.class.java.awt.image.ImageObserver">
+<!--   -->
+</a>
+<h3>Fields inherited from interface java.awt.image.ImageObserver</h3>
+<code>ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH</code></li>
+</ul>
+</li>
+</ul>
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.summary">
+<!--   -->
+</a>
+<h3>Method Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
+<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd"> </span></span><span id="t1" class="tableTab"><span><a href="javascript:show(1);">Static Methods</a></span><span class="tabEnd"> </span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd"> </span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd [...]
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tr id="i0" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../gr/zeus/ui/JConsolePane.html#clearBufferMessages--">clearBufferMessages</a></span>()</code>
+<div class="block">Clears all the messages stored in the internal buffer from the beginning
+ of the <code>JConsolePane</code>.</div>
+</td>
+</tr>
+<tr id="i1" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../gr/zeus/ui/JConsolePane.html#clearScreenMessages--">clearScreenMessages</a></span>()</code>
+<div class="block">Clears only the messages that are displayed in the textarea.</div>
+</td>
+</tr>
+<tr id="i2" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../gr/zeus/ui/JConsolePane.html#destroyConsole--">destroyConsole</a></span>()</code>
+<div class="block">Destroys the console.</div>
+</td>
+</tr>
+<tr id="i3" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../gr/zeus/ui/JConsolePane.html#dumpConsole-java.lang.String-boolean-">dumpConsole</a></span>(java.lang.String filename,
+           boolean append)</code>
+<div class="block">Dumps all the console messages (up to now) to a file (not only the
+ messages displayed in the textarea).</div>
+</td>
+</tr>
+<tr id="i4" class="altColor">
+<td class="colFirst"><code>boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../gr/zeus/ui/JConsolePane.html#getAppendFirstTime--">getAppendFirstTime</a></span>()</code>
+<div class="block">Gets append policy.</div>
+</td>
+</tr>
+<tr id="i5" class="rowColor">
+<td class="colFirst"><code>boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../gr/zeus/ui/JConsolePane.html#getAutoSave--">getAutoSave</a></span>()</code>
+<div class="block">Gets auto save status.</div>
+</td>
+</tr>
+<tr id="i6" class="altColor">
+<td class="colFirst"><code>java.awt.Color</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../gr/zeus/ui/JConsolePane.html#getBackgroundColor--">getBackgroundColor</a></span>()</code>
+<div class="block">Gets the background color of the textarea.</div>
+</td>
+</tr>
+<tr id="i7" class="rowColor">
+<td class="colFirst"><code>java.lang.String</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../gr/zeus/ui/JConsolePane.html#getClearButtonText--">getClearButtonText</a></span>()</code>
+<div class="block">Gets the text of the clear button.</div>
+</td>
+</tr>
+<tr id="i8" class="altColor">
+<td class="colFirst"><code>java.lang.String</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../gr/zeus/ui/JConsolePane.html#getCloseButtonText--">getCloseButtonText</a></span>()</code>
+<div class="block">Gets the text of the close button.</div>
+</td>
+</tr>
+<tr id="i9" class="rowColor">
+<td class="colFirst"><code>java.lang.String</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../gr/zeus/ui/JConsolePane.html#getConfimMessage--">getConfimMessage</a></span>()</code>
+<div class="block">Gets the text for the popup window that confirms file overwrite.</div>
+</td>
+</tr>
+<tr id="i10" class="altColor">
+<td class="colFirst"><code>java.lang.String</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../gr/zeus/ui/JConsolePane.html#getConfimTitle--">getConfimTitle</a></span>()</code>
+<div class="block">Gets the title for the popup window that confirms file overwrite.</div>
+</td>
+</tr>
+<tr id="i11" class="rowColor">
+<td class="colFirst"><code>static <a href="../../../gr/zeus/ui/JConsolePane.html" title="class in gr.zeus.ui">JConsolePane</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../gr/zeus/ui/JConsolePane.html#getConsolePane--">getConsolePane</a></span>()</code>
+<div class="block">Singleton constructor.</div>
+</td>
+</tr>
+<tr id="i12" class="altColor">
+<td class="colFirst"><code>java.lang.String</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../gr/zeus/ui/JConsolePane.html#getFilechooserApproveButtonText--">getFilechooserApproveButtonText</a></span>()</code>
+<div class="block">Gets the filechooser approve button text.</div>
+</td>
+</tr>
+<tr id="i13" class="rowColor">
+<td class="colFirst"><code>java.lang.String</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../gr/zeus/ui/JConsolePane.html#getFilechooserTitle--">getFilechooserTitle</a></span>()</code>
+<div class="block">Gets the filechooser title.</div>
+</td>
+</tr>
+<tr id="i14" class="altColor">
+<td class="colFirst"><code>java.awt.Color</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../gr/zeus/ui/JConsolePane.html#getForegroundColor--">getForegroundColor</a></span>()</code>
+<div class="block">Gets the foreground color of the textarea.</div>
+</td>
+</tr>
+<tr id="i15" class="rowColor">
+<td class="colFirst"><code>int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../gr/zeus/ui/JConsolePane.html#getMaxChars--">getMaxChars</a></span>()</code>
+<div class="block">If -1 no limit, else the messages will be flushed to 'traceFilename' and
+ cleared when this limit is reached.</div>
+</td>
+</tr>
+<tr id="i16" class="altColor">
+<td class="colFirst"><code>java.lang.String</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../gr/zeus/ui/JConsolePane.html#getMessagesFilename--">getMessagesFilename</a></span>()</code>
+<div class="block">Gets the default filename for the filechooser.</div>
+</td>
+</tr>
+<tr id="i17" class="rowColor">
+<td class="colFirst"><code>java.lang.String</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../gr/zeus/ui/JConsolePane.html#getSaveButtonText--">getSaveButtonText</a></span>()</code>
+<div class="block">Gets the text of the save button.</div>
+</td>
+</tr>
+<tr id="i18" class="altColor">
+<td class="colFirst"><code>java.awt.Color</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../gr/zeus/ui/JConsolePane.html#getSelectedTextColor--">getSelectedTextColor</a></span>()</code>
+<div class="block">Gets the selected text color of the textarea.</div>
+</td>
+</tr>
+<tr id="i19" class="rowColor">
+<td class="colFirst"><code>java.awt.Color</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../gr/zeus/ui/JConsolePane.html#getSelectionColor--">getSelectionColor</a></span>()</code>
+<div class="block">Gets the selection color of the textarea.</div>
+</td>
+</tr>
+<tr id="i20" class="altColor">
+<td class="colFirst"><code>java.awt.Font</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../gr/zeus/ui/JConsolePane.html#getTextFont--">getTextFont</a></span>()</code>
+<div class="block">Gets the font of the textarea.</div>
+</td>
+</tr>
+<tr id="i21" class="rowColor">
+<td class="colFirst"><code>java.lang.String</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../gr/zeus/ui/JConsolePane.html#getTraceFilename--">getTraceFilename</a></span>()</code>
+<div class="block">Gets the file used by <code>dumpConsole()</code> and
+ all auto save methods.</div>
+</td>
+</tr>
+<tr id="i22" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../gr/zeus/ui/JConsolePane.html#hideConsole--">hideConsole</a></span>()</code>
+<div class="block">Hides the console.</div>
+</td>
+</tr>
+<tr id="i23" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../gr/zeus/ui/JConsolePane.html#hideControlButtons--">hideControlButtons</a></span>()</code>
+<div class="block">Hides the control buttons.</div>
+</td>
+</tr>
+<tr id="i24" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../gr/zeus/ui/JConsolePane.html#setAppendFirstTime-boolean-">setAppendFirstTime</a></span>(boolean b)</code>
+<div class="block">Sets append policy.</div>
+</td>
+</tr>
+<tr id="i25" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../gr/zeus/ui/JConsolePane.html#setAutoSave-boolean-">setAutoSave</a></span>(boolean b)</code>
+<div class="block">Sets auto save status.</div>
+</td>
+</tr>
+<tr id="i26" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../gr/zeus/ui/JConsolePane.html#setBackgroundColor-java.awt.Color-">setBackgroundColor</a></span>(java.awt.Color c)</code>
+<div class="block">Sets the background color of the textarea.</div>
+</td>
+</tr>
+<tr id="i27" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../gr/zeus/ui/JConsolePane.html#setClearButtonText-java.lang.String-">setClearButtonText</a></span>(java.lang.String s)</code>
+<div class="block">Sets the text of the clear button.</div>
+</td>
+</tr>
+<tr id="i28" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../gr/zeus/ui/JConsolePane.html#setCloseButtonText-java.lang.String-">setCloseButtonText</a></span>(java.lang.String s)</code>
+<div class="block">Sets the text of the close button.</div>
+</td>
+</tr>
+<tr id="i29" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../gr/zeus/ui/JConsolePane.html#setConfimMessage-java.lang.String-">setConfimMessage</a></span>(java.lang.String s)</code>
+<div class="block">Sets the text for the popup window that confirms file overwrite.</div>
+</td>
+</tr>
+<tr id="i30" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../gr/zeus/ui/JConsolePane.html#setConfimTitle-java.lang.String-">setConfimTitle</a></span>(java.lang.String s)</code>
+<div class="block">Sets the title for the popup window that confirms file overwrite.</div>
+</td>
+</tr>
+<tr id="i31" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../gr/zeus/ui/JConsolePane.html#setFilechooserApproveButtonText-java.lang.String-">setFilechooserApproveButtonText</a></span>(java.lang.String s)</code>
+<div class="block">Sets the filechooser approve button text.</div>
+</td>
+</tr>
+<tr id="i32" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../gr/zeus/ui/JConsolePane.html#setFilechooserTitle-java.lang.String-">setFilechooserTitle</a></span>(java.lang.String s)</code>
+<div class="block">Sets the filechooser title.</div>
+</td>
+</tr>
+<tr id="i33" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../gr/zeus/ui/JConsolePane.html#setForegroundColor-java.awt.Color-">setForegroundColor</a></span>(java.awt.Color c)</code>
+<div class="block">Sets the foreground color of the textarea.</div>
+</td>
+</tr>
+<tr id="i34" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../gr/zeus/ui/JConsolePane.html#setMaxChars-int-">setMaxChars</a></span>(int i)</code>
+<div class="block">If -1 no limit, else the messages will be flushed to 'traceFilename' and
+ cleared when this limit is reached.</div>
+</td>
+</tr>
+<tr id="i35" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../gr/zeus/ui/JConsolePane.html#setMessagesFilename-java.lang.String-">setMessagesFilename</a></span>(java.lang.String s)</code>
+<div class="block">Sets the default filename for the filechooser.</div>
+</td>
+</tr>
+<tr id="i36" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../gr/zeus/ui/JConsolePane.html#setSaveButtonText-java.lang.String-">setSaveButtonText</a></span>(java.lang.String s)</code>
+<div class="block">Sets the text of the save button.</div>
+</td>
+</tr>
+<tr id="i37" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../gr/zeus/ui/JConsolePane.html#setSelectedTextColor-java.awt.Color-">setSelectedTextColor</a></span>(java.awt.Color c)</code>
+<div class="block">Sets the selected text color of the textarea.</div>
+</td>
+</tr>
+<tr id="i38" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../gr/zeus/ui/JConsolePane.html#setSelectionColor-java.awt.Color-">setSelectionColor</a></span>(java.awt.Color c)</code>
+<div class="block">Sets the selection color of the textarea.</div>
+</td>
+</tr>
+<tr id="i39" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../gr/zeus/ui/JConsolePane.html#setTextFont-java.awt.Font-">setTextFont</a></span>(java.awt.Font f)</code>
+<div class="block">Sets the font of the textarea.</div>
+</td>
+</tr>
+<tr id="i40" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../gr/zeus/ui/JConsolePane.html#setTraceFilename-java.lang.String-">setTraceFilename</a></span>(java.lang.String s)</code>
+<div class="block">Sets the file used by <code>dumpConsole()</code> and
+ all auto save methods.</div>
+</td>
+</tr>
+<tr id="i41" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../gr/zeus/ui/JConsolePane.html#showConsole--">showConsole</a></span>()</code>
+<div class="block">Shows the console.</div>
+</td>
+</tr>
+<tr id="i42" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../gr/zeus/ui/JConsolePane.html#showControlButtons--">showControlButtons</a></span>()</code>
+<div class="block">Shows the control buttons.</div>
+</td>
+</tr>
+<tr id="i43" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../gr/zeus/ui/JConsolePane.html#startConsole--">startConsole</a></span>()</code>
+<div class="block">Attachs the new streams to stdout and stderr.</div>
+</td>
+</tr>
+<tr id="i44" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../gr/zeus/ui/JConsolePane.html#stopConsole--">stopConsole</a></span>()</code>
+<div class="block">Attachs the original streams to stdout and stderr.</div>
+</td>
+</tr>
+<tr id="i45" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../gr/zeus/ui/JConsolePane.html#updateLNF--">updateLNF</a></span>()</code>
+<div class="block">Updates the look and feel of the <code>JConsolePane</code> and it's
+ components.</div>
+</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.javax.swing.JPanel">
+<!--   -->
+</a>
+<h3>Methods inherited from class javax.swing.JPanel</h3>
+<code>getAccessibleContext, getUI, getUIClassID, paramString, setUI, updateUI</code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.javax.swing.JComponent">
+<!--   -->
+</a>
+<h3>Methods inherited from class javax.swing.JComponent</h3>
+<code>addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBaseline, getBaselineResizeBehavior, getBorder, getBounds, getClientProperty, getComponentGraphics, getComponentPopupMenu, getConditionForKeyStroke, getDebugGraphicsOptions, get [...]
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.awt.Container">
+<!--   -->
+</a>
+<h3>Methods inherited from class java.awt.Container</h3>
+<code>add, add, add, add, add, addContainerListener, addImpl, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, getMousePosition, insets, invalidate, isAncestorOf, isFocusCycleRo [...]
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.awt.Component">
+<!--   -->
+</a>
+<h3>Methods inherited from class java.awt.Component</h3>
+<code>action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, createImage, createImage, createVolatileImage, createVolatileImage, disableEvents, dispatchEvent, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange,  [...]
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
+<!--   -->
+</a>
+<h3>Methods inherited from class java.lang.Object</h3>
+<code>clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait</code></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="details">
+<ul class="blockList">
+<li class="blockList">
+<!-- ============ METHOD DETAIL ========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.detail">
+<!--   -->
+</a>
+<h3>Method Detail</h3>
+<a name="getConsolePane--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getConsolePane</h4>
+<pre>public static <a href="../../../gr/zeus/ui/JConsolePane.html" title="class in gr.zeus.ui">JConsolePane</a> getConsolePane()</pre>
+<div class="block">Singleton constructor.
+ <p></div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd><code>JConsolePane</code>.
+ <p></dd>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code>java.lang.ExceptionInInitializerError</code></dd>
+</dl>
+</li>
+</ul>
+<a name="startConsole--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>startConsole</h4>
+<pre>public void startConsole()</pre>
+<div class="block">Attachs the new streams to stdout and stderr.</div>
+</li>
+</ul>
+<a name="stopConsole--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>stopConsole</h4>
+<pre>public void stopConsole()</pre>
+<div class="block">Attachs the original streams to stdout and stderr.</div>
+</li>
+</ul>
+<a name="showConsole--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>showConsole</h4>
+<pre>public void showConsole()</pre>
+<div class="block">Shows the console.</div>
+</li>
+</ul>
+<a name="hideConsole--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>hideConsole</h4>
+<pre>public void hideConsole()</pre>
+<div class="block">Hides the console.</div>
+</li>
+</ul>
+<a name="showControlButtons--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>showControlButtons</h4>
+<pre>public void showControlButtons()</pre>
+<div class="block">Shows the control buttons.</div>
+</li>
+</ul>
+<a name="hideControlButtons--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>hideControlButtons</h4>
+<pre>public void hideControlButtons()</pre>
+<div class="block">Hides the control buttons.</div>
+</li>
+</ul>
+<a name="clearBufferMessages--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>clearBufferMessages</h4>
+<pre>public void clearBufferMessages()</pre>
+<div class="block">Clears all the messages stored in the internal buffer from the beginning
+ of the <code>JConsolePane</code>. Use this if you have printed too many
+ messages and you want to free up the memory used. Perhaps you should
+ invoke <code>dumpConsole()</code> to store the messages first, unless
+ of course you already have enabled autosave.</div>
+</li>
+</ul>
+<a name="clearScreenMessages--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>clearScreenMessages</h4>
+<pre>public void clearScreenMessages()</pre>
+<div class="block">Clears only the messages that are displayed in the textarea.</div>
+</li>
+</ul>
+<a name="dumpConsole-java.lang.String-boolean-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>dumpConsole</h4>
+<pre>public void dumpConsole(java.lang.String filename,
+                        boolean append)
+                 throws java.io.IOException</pre>
+<div class="block">Dumps all the console messages (up to now) to a file (not only the
+ messages displayed in the textarea).
+ This method does not clear the messages buffer, use
+ <code>clearBufferMessages()</code> for this.
+ <p></div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>filename</code> - The filename to store all console's messages.</dd>
+<dd><code>append</code> - If <code>true</code> text is appended in the file,
+                  else the file gets overwritten.
+ <p></dd>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code>java.io.IOException</code></dd>
+</dl>
+</li>
+</ul>
+<a name="destroyConsole--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>destroyConsole</h4>
+<pre>public void destroyConsole()</pre>
+<div class="block">Destroys the console.
+ Actually what it does is this:
+ Stops, hides and clears the console.
+ If you are to invoke <code>getConsole()</code> after this
+ method you will get a brand new console with no messages at all. This
+ method is not needed for simple applications that are about to invoke
+ System.exit() or normaly close.</div>
+</li>
+</ul>
+<a name="updateLNF--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>updateLNF</h4>
+<pre>public void updateLNF()</pre>
+<div class="block">Updates the look and feel of the <code>JConsolePane</code> and it's
+ components. <b>MUST</b> be called <b>AFTER</b> invoking:
+ <code>UIManager.setLookAndFeel()</code> in your application.</div>
+</li>
+</ul>
+<a name="getConfimTitle--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getConfimTitle</h4>
+<pre>public java.lang.String getConfimTitle()</pre>
+<div class="block">Gets the title for the popup window that confirms file overwrite.
+ <p></div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>The title.</dd>
+</dl>
+</li>
+</ul>
+<a name="setConfimTitle-java.lang.String-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setConfimTitle</h4>
+<pre>public void setConfimTitle(java.lang.String s)</pre>
+<div class="block">Sets the title for the popup window that confirms file overwrite.
+ <p></div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>s</code> - The title.</dd>
+</dl>
+</li>
+</ul>
+<a name="getConfimMessage--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getConfimMessage</h4>
+<pre>public java.lang.String getConfimMessage()</pre>
+<div class="block">Gets the text for the popup window that confirms file overwrite.
+ <p></div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>The message.</dd>
+</dl>
+</li>
+</ul>
+<a name="setConfimMessage-java.lang.String-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setConfimMessage</h4>
+<pre>public void setConfimMessage(java.lang.String s)</pre>
+<div class="block">Sets the text for the popup window that confirms file overwrite.
+ <p></div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>s</code> - The message.</dd>
+</dl>
+</li>
+</ul>
+<a name="getMessagesFilename--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getMessagesFilename</h4>
+<pre>public java.lang.String getMessagesFilename()</pre>
+<div class="block">Gets the default filename for the filechooser.
+ <p></div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>The filename.</dd>
+</dl>
+</li>
+</ul>
+<a name="setMessagesFilename-java.lang.String-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setMessagesFilename</h4>
+<pre>public void setMessagesFilename(java.lang.String s)</pre>
+<div class="block">Sets the default filename for the filechooser.
+ <p></div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>s</code> - The filename.</dd>
+</dl>
+</li>
+</ul>
+<a name="getTraceFilename--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getTraceFilename</h4>
+<pre>public java.lang.String getTraceFilename()</pre>
+<div class="block">Gets the file used by <code>dumpConsole()</code> and
+ all auto save methods.
+ <p></div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>The filename.</dd>
+</dl>
+</li>
+</ul>
+<a name="setTraceFilename-java.lang.String-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setTraceFilename</h4>
+<pre>public void setTraceFilename(java.lang.String s)</pre>
+<div class="block">Sets the file used by <code>dumpConsole()</code> and
+ all auto save methods.
+ <p></div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>s</code> - The filename.</dd>
+</dl>
+</li>
+</ul>
+<a name="getAppendFirstTime--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getAppendFirstTime</h4>
+<pre>public boolean getAppendFirstTime()</pre>
+<div class="block">Gets append policy.
+ If the 'traceFilename' exists the first time we try to save the messages,
+ should we append or overwrite?
+ <p></div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>true/false</dd>
+</dl>
+</li>
+</ul>
+<a name="setAppendFirstTime-boolean-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setAppendFirstTime</h4>
+<pre>public void setAppendFirstTime(boolean b)</pre>
+<div class="block">Sets append policy.
+ If the 'traceFilename' exists the first time we try to save the messages,
+ should we append or overwrite?
+ <p></div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>b</code> - true/false</dd>
+</dl>
+</li>
+</ul>
+<a name="getAutoSave--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getAutoSave</h4>
+<pre>public boolean getAutoSave()</pre>
+<div class="block">Gets auto save status.
+ Auto save the console messages to file 'traceFilename' when 'maxChars'
+ are reached and clear the messages (append new messages when required)?
+ <p></div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>true/false</dd>
+</dl>
+</li>
+</ul>
+<a name="setAutoSave-boolean-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setAutoSave</h4>
+<pre>public void setAutoSave(boolean b)</pre>
+<div class="block">Sets auto save status.
+ Auto save the console messages to file 'traceFilename' when 'maxChars'
+ are reached and clear the messages (append new messages when required)?
+ <p></div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>b</code> - true/false</dd>
+</dl>
+</li>
+</ul>
+<a name="getMaxChars--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getMaxChars</h4>
+<pre>public int getMaxChars()</pre>
+<div class="block">If -1 no limit, else the messages will be flushed to 'traceFilename' and
+ cleared when this limit is reached.
+ <p></div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>The limit.</dd>
+</dl>
+</li>
+</ul>
+<a name="setMaxChars-int-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setMaxChars</h4>
+<pre>public void setMaxChars(int i)</pre>
+<div class="block">If -1 no limit, else the messages will be flushed to 'traceFilename' and
+ cleared when this limit is reached.
+ <p></div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>i</code> - The limit.</dd>
+</dl>
+</li>
+</ul>
+<a name="getForegroundColor--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getForegroundColor</h4>
+<pre>public java.awt.Color getForegroundColor()</pre>
+<div class="block">Gets the foreground color of the textarea.
+ <p></div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>The color.</dd>
+</dl>
+</li>
+</ul>
+<a name="setForegroundColor-java.awt.Color-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setForegroundColor</h4>
+<pre>public void setForegroundColor(java.awt.Color c)</pre>
+<div class="block">Sets the foreground color of the textarea.
+ <p></div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>c</code> - The color.</dd>
+</dl>
+</li>
+</ul>
+<a name="getBackgroundColor--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getBackgroundColor</h4>
+<pre>public java.awt.Color getBackgroundColor()</pre>
+<div class="block">Gets the background color of the textarea.
+ <p></div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>The color.</dd>
+</dl>
+</li>
+</ul>
+<a name="setBackgroundColor-java.awt.Color-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setBackgroundColor</h4>
+<pre>public void setBackgroundColor(java.awt.Color c)</pre>
+<div class="block">Sets the background color of the textarea.
+ <p></div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>c</code> - The color.</dd>
+</dl>
+</li>
+</ul>
+<a name="getSelectedTextColor--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getSelectedTextColor</h4>
+<pre>public java.awt.Color getSelectedTextColor()</pre>
+<div class="block">Gets the selected text color of the textarea.
+ <p></div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>The color.</dd>
+</dl>
+</li>
+</ul>
+<a name="setSelectedTextColor-java.awt.Color-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setSelectedTextColor</h4>
+<pre>public void setSelectedTextColor(java.awt.Color c)</pre>
+<div class="block">Sets the selected text color of the textarea.
+ <p></div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>c</code> - The color.</dd>
+</dl>
+</li>
+</ul>
+<a name="getSelectionColor--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getSelectionColor</h4>
+<pre>public java.awt.Color getSelectionColor()</pre>
+<div class="block">Gets the selection color of the textarea.
+ <p></div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>The color.</dd>
+</dl>
+</li>
+</ul>
+<a name="setSelectionColor-java.awt.Color-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setSelectionColor</h4>
+<pre>public void setSelectionColor(java.awt.Color c)</pre>
+<div class="block">Sets the selection color of the textarea.
+ <p></div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>c</code> - The color.</dd>
+</dl>
+</li>
+</ul>
+<a name="getClearButtonText--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getClearButtonText</h4>
+<pre>public java.lang.String getClearButtonText()</pre>
+<div class="block">Gets the text of the clear button.
+ <p></div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>The text.</dd>
+</dl>
+</li>
+</ul>
+<a name="setClearButtonText-java.lang.String-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setClearButtonText</h4>
+<pre>public void setClearButtonText(java.lang.String s)</pre>
+<div class="block">Sets the text of the clear button.
+ <p></div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>s</code> - The text.</dd>
+</dl>
+</li>
+</ul>
+<a name="getSaveButtonText--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getSaveButtonText</h4>
+<pre>public java.lang.String getSaveButtonText()</pre>
+<div class="block">Gets the text of the save button.
+ <p></div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>The text.</dd>
+</dl>
+</li>
+</ul>
+<a name="setSaveButtonText-java.lang.String-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setSaveButtonText</h4>
+<pre>public void setSaveButtonText(java.lang.String s)</pre>
+<div class="block">Sets the text of the save button.
+ <p></div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>s</code> - The text.</dd>
+</dl>
+</li>
+</ul>
+<a name="getCloseButtonText--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getCloseButtonText</h4>
+<pre>public java.lang.String getCloseButtonText()</pre>
+<div class="block">Gets the text of the close button.
+ <p></div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>The text.</dd>
+</dl>
+</li>
+</ul>
+<a name="setCloseButtonText-java.lang.String-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setCloseButtonText</h4>
+<pre>public void setCloseButtonText(java.lang.String s)</pre>
+<div class="block">Sets the text of the close button.
+ <p></div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>s</code> - The text.</dd>
+</dl>
+</li>
+</ul>
+<a name="getFilechooserTitle--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getFilechooserTitle</h4>
+<pre>public java.lang.String getFilechooserTitle()</pre>
+<div class="block">Gets the filechooser title.
+ <p></div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>The title.</dd>
+</dl>
+</li>
+</ul>
+<a name="setFilechooserTitle-java.lang.String-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setFilechooserTitle</h4>
+<pre>public void setFilechooserTitle(java.lang.String s)</pre>
+<div class="block">Sets the filechooser title.
+ <p></div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>s</code> - The title.</dd>
+</dl>
+</li>
+</ul>
+<a name="getFilechooserApproveButtonText--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getFilechooserApproveButtonText</h4>
+<pre>public java.lang.String getFilechooserApproveButtonText()</pre>
+<div class="block">Gets the filechooser approve button text.
+ <p></div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>The text.</dd>
+</dl>
+</li>
+</ul>
+<a name="setFilechooserApproveButtonText-java.lang.String-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setFilechooserApproveButtonText</h4>
+<pre>public void setFilechooserApproveButtonText(java.lang.String s)</pre>
+<div class="block">Sets the filechooser approve button text.
+ <p></div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>s</code> - The text.</dd>
+</dl>
+</li>
+</ul>
+<a name="getTextFont--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getTextFont</h4>
+<pre>public java.awt.Font getTextFont()</pre>
+<div class="block">Gets the font of the textarea.
+ <p></div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>The font.</dd>
+</dl>
+</li>
+</ul>
+<a name="setTextFont-java.awt.Font-">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>setTextFont</h4>
+<pre>public void setTextFont(java.awt.Font f)</pre>
+<div class="block">Sets the font of the textarea.
+ <p></div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>f</code> - The font.</dd>
+</dl>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+<!-- ========= END OF CLASS DATA ========= -->
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../index-all.html">Index</a></li>
+<li><a href="../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../gr/zeus/ui/JConsole.html" title="class in gr.zeus.ui"><span class="typeNameLink">Prev Class</span></a></li>
+<li><a href="../../../gr/zeus/ui/JIConsole.html" title="class in gr.zeus.ui"><span class="typeNameLink">Next Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../index.html?gr/zeus/ui/JConsolePane.html" target="_top">Frames</a></li>
+<li><a href="JConsolePane.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary: </li>
+<li><a href="#nested.classes.inherited.from.class.javax.swing.JPanel">Nested</a> | </li>
+<li><a href="#fields.inherited.from.class.javax.swing.JComponent">Field</a> | </li>
+<li>Constr | </li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail: </li>
+<li>Field | </li>
+<li>Constr | </li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+</body>
+</html>
diff --git a/doc/api/gr/zeus/ui/JIConsole.html b/doc/api/gr/zeus/ui/JIConsole.html
new file mode 100644
index 0000000..47e90cc
--- /dev/null
+++ b/doc/api/gr/zeus/ui/JIConsole.html
@@ -0,0 +1,421 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc (1.8.0_05) on Sat Jun 07 12:11:34 EEST 2014 -->
+<title>JIConsole</title>
+<meta name="date" content="2014-06-07">
+<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="JIConsole";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = {"i0":9};
+var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],8:["t4","Concrete Methods"]};
+var altColor = "altColor";
+var rowColor = "rowColor";
+var tableTab = "tableTab";
+var activeTableTab = "activeTableTab";
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../index-all.html">Index</a></li>
+<li><a href="../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../gr/zeus/ui/JConsolePane.html" title="class in gr.zeus.ui"><span class="typeNameLink">Prev Class</span></a></li>
+<li><a href="../../../gr/zeus/ui/JMessage.html" title="class in gr.zeus.ui"><span class="typeNameLink">Next Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../index.html?gr/zeus/ui/JIConsole.html" target="_top">Frames</a></li>
+<li><a href="JIConsole.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary: </li>
+<li><a href="#nested.classes.inherited.from.class.javax.swing.JInternalFrame">Nested</a> | </li>
+<li><a href="#fields.inherited.from.class.javax.swing.JInternalFrame">Field</a> | </li>
+<li><a href="#constructor.summary">Constr</a> | </li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail: </li>
+<li>Field | </li>
+<li><a href="#constructor.detail">Constr</a> | </li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="subTitle">gr.zeus.ui</div>
+<h2 title="Class JIConsole" class="title">Class JIConsole</h2>
+</div>
+<div class="contentContainer">
+<ul class="inheritance">
+<li>java.lang.Object</li>
+<li>
+<ul class="inheritance">
+<li>java.awt.Component</li>
+<li>
+<ul class="inheritance">
+<li>java.awt.Container</li>
+<li>
+<ul class="inheritance">
+<li>javax.swing.JComponent</li>
+<li>
+<ul class="inheritance">
+<li>javax.swing.JInternalFrame</li>
+<li>
+<ul class="inheritance">
+<li>gr.zeus.ui.JIConsole</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<dl>
+<dt>All Implemented Interfaces:</dt>
+<dd>java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, javax.accessibility.Accessible, javax.swing.RootPaneContainer, javax.swing.WindowConstants</dd>
+</dl>
+<hr>
+<br>
+<pre>public final class <span class="typeNameLabel">JIConsole</span>
+extends javax.swing.JInternalFrame</pre>
+<div class="block">The JInternalFrame edition of <b>JConsolePane</b>.<br>
+ <a href="../../../gr/zeus/ui/JConsolePane.html" title="class in gr.zeus.ui"><code>JConsolePane</code></a>
+ <p></div>
+<dl>
+<dt><span class="simpleTagLabel">Since:</span></dt>
+<dd>1.40</dd>
+<dt><span class="simpleTagLabel">Author:</span></dt>
+<dd>Gregory Kotsaftis</dd>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../serialized-form.html#gr.zeus.ui.JIConsole">Serialized Form</a></dd>
+</dl>
+</li>
+</ul>
+</div>
+<div class="summary">
+<ul class="blockList">
+<li class="blockList">
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="nested.class.summary">
+<!--   -->
+</a>
+<h3>Nested Class Summary</h3>
+<ul class="blockList">
+<li class="blockList"><a name="nested.classes.inherited.from.class.javax.swing.JInternalFrame">
+<!--   -->
+</a>
+<h3>Nested classes/interfaces inherited from class javax.swing.JInternalFrame</h3>
+<code>javax.swing.JInternalFrame.AccessibleJInternalFrame, javax.swing.JInternalFrame.JDesktopIcon</code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="nested.classes.inherited.from.class.javax.swing.JComponent">
+<!--   -->
+</a>
+<h3>Nested classes/interfaces inherited from class javax.swing.JComponent</h3>
+<code>javax.swing.JComponent.AccessibleJComponent</code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="nested.classes.inherited.from.class.java.awt.Container">
+<!--   -->
+</a>
+<h3>Nested classes/interfaces inherited from class java.awt.Container</h3>
+<code>java.awt.Container.AccessibleAWTContainer</code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="nested.classes.inherited.from.class.java.awt.Component">
+<!--   -->
+</a>
+<h3>Nested classes/interfaces inherited from class java.awt.Component</h3>
+<code>java.awt.Component.AccessibleAWTComponent, java.awt.Component.BaselineResizeBehavior, java.awt.Component.BltBufferStrategy, java.awt.Component.FlipBufferStrategy</code></li>
+</ul>
+</li>
+</ul>
+<!-- =========== FIELD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field.summary">
+<!--   -->
+</a>
+<h3>Field Summary</h3>
+<ul class="blockList">
+<li class="blockList"><a name="fields.inherited.from.class.javax.swing.JInternalFrame">
+<!--   -->
+</a>
+<h3>Fields inherited from class javax.swing.JInternalFrame</h3>
+<code>closable, CONTENT_PANE_PROPERTY, desktopIcon, FRAME_ICON_PROPERTY, frameIcon, GLASS_PANE_PROPERTY, iconable, IS_CLOSED_PROPERTY, IS_ICON_PROPERTY, IS_MAXIMUM_PROPERTY, IS_SELECTED_PROPERTY, isClosed, isIcon, isMaximum, isSelected, LAYERED_PANE_PROPERTY, maximizable, MENU_BAR_PROPERTY, resizable, ROOT_PANE_PROPERTY, rootPane, rootPaneCheckingEnabled, title, TITLE_PROPERTY</code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="fields.inherited.from.class.javax.swing.JComponent">
+<!--   -->
+</a>
+<h3>Fields inherited from class javax.swing.JComponent</h3>
+<code>listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW</code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="fields.inherited.from.class.java.awt.Component">
+<!--   -->
+</a>
+<h3>Fields inherited from class java.awt.Component</h3>
+<code>accessibleContext, BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT</code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="fields.inherited.from.class.javax.swing.WindowConstants">
+<!--   -->
+</a>
+<h3>Fields inherited from interface javax.swing.WindowConstants</h3>
+<code>DISPOSE_ON_CLOSE, DO_NOTHING_ON_CLOSE, EXIT_ON_CLOSE, HIDE_ON_CLOSE</code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="fields.inherited.from.class.java.awt.image.ImageObserver">
+<!--   -->
+</a>
+<h3>Fields inherited from interface java.awt.image.ImageObserver</h3>
+<code>ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH</code></li>
+</ul>
+</li>
+</ul>
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.summary">
+<!--   -->
+</a>
+<h3>Constructor Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
+<caption><span>Constructors</span><span class="tabEnd"> </span></caption>
+<tr>
+<th class="colOne" scope="col">Constructor and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../gr/zeus/ui/JIConsole.html#JIConsole--">JIConsole</a></span>()</code>
+<div class="block">Constructor.</div>
+</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.summary">
+<!--   -->
+</a>
+<h3>Method Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
+<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd"> </span></span><span id="t1" class="tableTab"><span><a href="javascript:show(1);">Static Methods</a></span><span class="tabEnd"> </span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd"> </span></span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tr id="i0" class="altColor">
+<td class="colFirst"><code>static <a href="../../../gr/zeus/ui/JConsolePane.html" title="class in gr.zeus.ui">JConsolePane</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../gr/zeus/ui/JIConsole.html#getConsole--">getConsole</a></span>()</code>
+<div class="block">Returns the instance of the <code>JConsolePane</code> for further
+ configuration.</div>
+</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.javax.swing.JInternalFrame">
+<!--   -->
+</a>
+<h3>Methods inherited from class javax.swing.JInternalFrame</h3>
+<code>addImpl, addInternalFrameListener, createRootPane, dispose, doDefaultCloseAction, fireInternalFrameEvent, getAccessibleContext, getContentPane, getDefaultCloseOperation, getDesktopIcon, getDesktopPane, getFocusCycleRootAncestor, getFocusOwner, getFrameIcon, getGlassPane, getInternalFrameListeners, getJMenuBar, getLastCursor, getLayer, getLayeredPane, getMenuBar, getMostRecentFocusOwner, getNormalBounds, getRootPane, getTitle, getUI, getUIClassID, getWarningString, hide, isClosable, [...]
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.javax.swing.JComponent">
+<!--   -->
+</a>
+<h3>Methods inherited from class javax.swing.JComponent</h3>
+<code>addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBaseline, getBaselineResizeBehavior, getBorder, getBounds, getClientProperty, getComponentGraphics, getComponentPopupMenu, getConditionForKeyStroke, getDebugGraphicsOptions, get [...]
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.awt.Container">
+<!--   -->
+</a>
+<h3>Methods inherited from class java.awt.Container</h3>
+<code>add, add, add, add, add, addContainerListener, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, getMousePosition, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFoc [...]
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.awt.Component">
+<!--   -->
+</a>
+<h3>Methods inherited from class java.awt.Component</h3>
+<code>action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, createImage, createImage, createVolatileImage, createVolatileImage, disableEvents, dispatchEvent, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange,  [...]
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
+<!--   -->
+</a>
+<h3>Methods inherited from class java.lang.Object</h3>
+<code>clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait</code></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="details">
+<ul class="blockList">
+<li class="blockList">
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.detail">
+<!--   -->
+</a>
+<h3>Constructor Detail</h3>
+<a name="JIConsole--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>JIConsole</h4>
+<pre>public JIConsole()</pre>
+<div class="block">Constructor.
+ Creates a new JInternalFrame and adds to it the single instance of
+ JConsolePane. Finally hides the frame until it is required to be seen.</div>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ============ METHOD DETAIL ========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.detail">
+<!--   -->
+</a>
+<h3>Method Detail</h3>
+<a name="getConsole--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>getConsole</h4>
+<pre>public static <a href="../../../gr/zeus/ui/JConsolePane.html" title="class in gr.zeus.ui">JConsolePane</a> getConsole()</pre>
+<div class="block">Returns the instance of the <code>JConsolePane</code> for further
+ configuration.</div>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+<!-- ========= END OF CLASS DATA ========= -->
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../index-all.html">Index</a></li>
+<li><a href="../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../gr/zeus/ui/JConsolePane.html" title="class in gr.zeus.ui"><span class="typeNameLink">Prev Class</span></a></li>
+<li><a href="../../../gr/zeus/ui/JMessage.html" title="class in gr.zeus.ui"><span class="typeNameLink">Next Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../index.html?gr/zeus/ui/JIConsole.html" target="_top">Frames</a></li>
+<li><a href="JIConsole.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary: </li>
+<li><a href="#nested.classes.inherited.from.class.javax.swing.JInternalFrame">Nested</a> | </li>
+<li><a href="#fields.inherited.from.class.javax.swing.JInternalFrame">Field</a> | </li>
+<li><a href="#constructor.summary">Constr</a> | </li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail: </li>
+<li>Field | </li>
+<li><a href="#constructor.detail">Constr</a> | </li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+</body>
+</html>
diff --git a/doc/api/gr/zeus/ui/JMessage.JMessageButtonEnum.html b/doc/api/gr/zeus/ui/JMessage.JMessageButtonEnum.html
new file mode 100644
index 0000000..11aa8ca
--- /dev/null
+++ b/doc/api/gr/zeus/ui/JMessage.JMessageButtonEnum.html
@@ -0,0 +1,368 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc (1.8.0_05) on Sat Jun 07 12:11:35 EEST 2014 -->
+<title>JMessage.JMessageButtonEnum</title>
+<meta name="date" content="2014-06-07">
+<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="JMessage.JMessageButtonEnum";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = {"i0":9,"i1":9};
+var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],8:["t4","Concrete Methods"]};
+var altColor = "altColor";
+var rowColor = "rowColor";
+var tableTab = "tableTab";
+var activeTableTab = "activeTableTab";
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../index-all.html">Index</a></li>
+<li><a href="../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../gr/zeus/ui/JMessage.html" title="class in gr.zeus.ui"><span class="typeNameLink">Prev Class</span></a></li>
+<li><a href="../../../gr/zeus/ui/JSplash.html" title="class in gr.zeus.ui"><span class="typeNameLink">Next Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../index.html?gr/zeus/ui/JMessage.JMessageButtonEnum.html" target="_top">Frames</a></li>
+<li><a href="JMessage.JMessageButtonEnum.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary: </li>
+<li>Nested | </li>
+<li><a href="#enum.constant.summary">Enum Constants</a> | </li>
+<li>Field | </li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail: </li>
+<li><a href="#enum.constant.detail">Enum Constants</a> | </li>
+<li>Field | </li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="subTitle">gr.zeus.ui</div>
+<h2 title="Enum JMessage.JMessageButtonEnum" class="title">Enum JMessage.JMessageButtonEnum</h2>
+</div>
+<div class="contentContainer">
+<ul class="inheritance">
+<li>java.lang.Object</li>
+<li>
+<ul class="inheritance">
+<li>java.lang.Enum<<a href="../../../gr/zeus/ui/JMessage.JMessageButtonEnum.html" title="enum in gr.zeus.ui">JMessage.JMessageButtonEnum</a>></li>
+<li>
+<ul class="inheritance">
+<li>gr.zeus.ui.JMessage.JMessageButtonEnum</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<dl>
+<dt>All Implemented Interfaces:</dt>
+<dd>java.io.Serializable, java.lang.Comparable<<a href="../../../gr/zeus/ui/JMessage.JMessageButtonEnum.html" title="enum in gr.zeus.ui">JMessage.JMessageButtonEnum</a>></dd>
+</dl>
+<dl>
+<dt>Enclosing class:</dt>
+<dd><a href="../../../gr/zeus/ui/JMessage.html" title="class in gr.zeus.ui">JMessage</a></dd>
+</dl>
+<hr>
+<br>
+<pre>public static enum <span class="typeNameLabel">JMessage.JMessageButtonEnum</span>
+extends java.lang.Enum<<a href="../../../gr/zeus/ui/JMessage.JMessageButtonEnum.html" title="enum in gr.zeus.ui">JMessage.JMessageButtonEnum</a>></pre>
+<div class="block">Enum with all the supported buttons of the dialog.</div>
+</li>
+</ul>
+</div>
+<div class="summary">
+<ul class="blockList">
+<li class="blockList">
+<!-- =========== ENUM CONSTANT SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="enum.constant.summary">
+<!--   -->
+</a>
+<h3>Enum Constant Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Enum Constant Summary table, listing enum constants, and an explanation">
+<caption><span>Enum Constants</span><span class="tabEnd"> </span></caption>
+<tr>
+<th class="colOne" scope="col">Enum Constant and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../gr/zeus/ui/JMessage.JMessageButtonEnum.html#CANCEL">CANCEL</a></span></code> </td>
+</tr>
+<tr class="rowColor">
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../gr/zeus/ui/JMessage.JMessageButtonEnum.html#NO">NO</a></span></code> </td>
+</tr>
+<tr class="altColor">
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../gr/zeus/ui/JMessage.JMessageButtonEnum.html#OK">OK</a></span></code> </td>
+</tr>
+<tr class="rowColor">
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../gr/zeus/ui/JMessage.JMessageButtonEnum.html#YES">YES</a></span></code> </td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.summary">
+<!--   -->
+</a>
+<h3>Method Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
+<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd"> </span></span><span id="t1" class="tableTab"><span><a href="javascript:show(1);">Static Methods</a></span><span class="tabEnd"> </span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd"> </span></span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tr id="i0" class="altColor">
+<td class="colFirst"><code>static <a href="../../../gr/zeus/ui/JMessage.JMessageButtonEnum.html" title="enum in gr.zeus.ui">JMessage.JMessageButtonEnum</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../gr/zeus/ui/JMessage.JMessageButtonEnum.html#valueOf-java.lang.String-">valueOf</a></span>(java.lang.String name)</code>
+<div class="block">Returns the enum constant of this type with the specified name.</div>
+</td>
+</tr>
+<tr id="i1" class="rowColor">
+<td class="colFirst"><code>static <a href="../../../gr/zeus/ui/JMessage.JMessageButtonEnum.html" title="enum in gr.zeus.ui">JMessage.JMessageButtonEnum</a>[]</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../gr/zeus/ui/JMessage.JMessageButtonEnum.html#values--">values</a></span>()</code>
+<div class="block">Returns an array containing the constants of this enum type, in
+the order they are declared.</div>
+</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.lang.Enum">
+<!--   -->
+</a>
+<h3>Methods inherited from class java.lang.Enum</h3>
+<code>clone, compareTo, equals, finalize, getDeclaringClass, hashCode, name, ordinal, toString, valueOf</code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
+<!--   -->
+</a>
+<h3>Methods inherited from class java.lang.Object</h3>
+<code>getClass, notify, notifyAll, wait, wait, wait</code></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="details">
+<ul class="blockList">
+<li class="blockList">
+<!-- ============ ENUM CONSTANT DETAIL =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="enum.constant.detail">
+<!--   -->
+</a>
+<h3>Enum Constant Detail</h3>
+<a name="OK">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>OK</h4>
+<pre>public static final <a href="../../../gr/zeus/ui/JMessage.JMessageButtonEnum.html" title="enum in gr.zeus.ui">JMessage.JMessageButtonEnum</a> OK</pre>
+</li>
+</ul>
+<a name="CANCEL">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>CANCEL</h4>
+<pre>public static final <a href="../../../gr/zeus/ui/JMessage.JMessageButtonEnum.html" title="enum in gr.zeus.ui">JMessage.JMessageButtonEnum</a> CANCEL</pre>
+</li>
+</ul>
+<a name="YES">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>YES</h4>
+<pre>public static final <a href="../../../gr/zeus/ui/JMessage.JMessageButtonEnum.html" title="enum in gr.zeus.ui">JMessage.JMessageButtonEnum</a> YES</pre>
+</li>
+</ul>
+<a name="NO">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>NO</h4>
+<pre>public static final <a href="../../../gr/zeus/ui/JMessage.JMessageButtonEnum.html" title="enum in gr.zeus.ui">JMessage.JMessageButtonEnum</a> NO</pre>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ============ METHOD DETAIL ========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.detail">
+<!--   -->
+</a>
+<h3>Method Detail</h3>
+<a name="values--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>values</h4>
+<pre>public static <a href="../../../gr/zeus/ui/JMessage.JMessageButtonEnum.html" title="enum in gr.zeus.ui">JMessage.JMessageButtonEnum</a>[] values()</pre>
+<div class="block">Returns an array containing the constants of this enum type, in
+the order they are declared.  This method may be used to iterate
+over the constants as follows:
+<pre>
+for (JMessage.JMessageButtonEnum c : JMessage.JMessageButtonEnum.values())
+    System.out.println(c);
+</pre></div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>an array containing the constants of this enum type, in the order they are declared</dd>
+</dl>
+</li>
+</ul>
+<a name="valueOf-java.lang.String-">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>valueOf</h4>
+<pre>public static <a href="../../../gr/zeus/ui/JMessage.JMessageButtonEnum.html" title="enum in gr.zeus.ui">JMessage.JMessageButtonEnum</a> valueOf(java.lang.String name)</pre>
+<div class="block">Returns the enum constant of this type with the specified name.
+The string must match <i>exactly</i> an identifier used to declare an
+enum constant in this type.  (Extraneous whitespace characters are 
+not permitted.)</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>name</code> - the name of the enum constant to be returned.</dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>the enum constant with the specified name</dd>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code>java.lang.IllegalArgumentException</code> - if this enum type has no constant with the specified name</dd>
+<dd><code>java.lang.NullPointerException</code> - if the argument is null</dd>
+</dl>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+<!-- ========= END OF CLASS DATA ========= -->
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../index-all.html">Index</a></li>
+<li><a href="../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../gr/zeus/ui/JMessage.html" title="class in gr.zeus.ui"><span class="typeNameLink">Prev Class</span></a></li>
+<li><a href="../../../gr/zeus/ui/JSplash.html" title="class in gr.zeus.ui"><span class="typeNameLink">Next Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../index.html?gr/zeus/ui/JMessage.JMessageButtonEnum.html" target="_top">Frames</a></li>
+<li><a href="JMessage.JMessageButtonEnum.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary: </li>
+<li>Nested | </li>
+<li><a href="#enum.constant.summary">Enum Constants</a> | </li>
+<li>Field | </li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail: </li>
+<li><a href="#enum.constant.detail">Enum Constants</a> | </li>
+<li>Field | </li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+</body>
+</html>
diff --git a/doc/api/gr/zeus/ui/JMessage.html b/doc/api/gr/zeus/ui/JMessage.html
new file mode 100644
index 0000000..7c47508
--- /dev/null
+++ b/doc/api/gr/zeus/ui/JMessage.html
@@ -0,0 +1,991 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc (1.8.0_05) on Sat Jun 07 12:11:35 EEST 2014 -->
+<title>JMessage</title>
+<meta name="date" content="2014-06-07">
+<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="JMessage";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = {"i0":10,"i1":9,"i2":9,"i3":9,"i4":9,"i5":9,"i6":9,"i7":9,"i8":9,"i9":9,"i10":9,"i11":9,"i12":9,"i13":9};
+var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
+var altColor = "altColor";
+var rowColor = "rowColor";
+var tableTab = "tableTab";
+var activeTableTab = "activeTableTab";
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../index-all.html">Index</a></li>
+<li><a href="../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../gr/zeus/ui/JIConsole.html" title="class in gr.zeus.ui"><span class="typeNameLink">Prev Class</span></a></li>
+<li><a href="../../../gr/zeus/ui/JMessage.JMessageButtonEnum.html" title="enum in gr.zeus.ui"><span class="typeNameLink">Next Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../index.html?gr/zeus/ui/JMessage.html" target="_top">Frames</a></li>
+<li><a href="JMessage.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary: </li>
+<li><a href="#nested.class.summary">Nested</a> | </li>
+<li><a href="#fields.inherited.from.class.javax.swing.JDialog">Field</a> | </li>
+<li><a href="#constructor.summary">Constr</a> | </li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail: </li>
+<li>Field | </li>
+<li><a href="#constructor.detail">Constr</a> | </li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="subTitle">gr.zeus.ui</div>
+<h2 title="Class JMessage" class="title">Class JMessage</h2>
+</div>
+<div class="contentContainer">
+<ul class="inheritance">
+<li>java.lang.Object</li>
+<li>
+<ul class="inheritance">
+<li>java.awt.Component</li>
+<li>
+<ul class="inheritance">
+<li>java.awt.Container</li>
+<li>
+<ul class="inheritance">
+<li>java.awt.Window</li>
+<li>
+<ul class="inheritance">
+<li>java.awt.Dialog</li>
+<li>
+<ul class="inheritance">
+<li>javax.swing.JDialog</li>
+<li>
+<ul class="inheritance">
+<li>gr.zeus.ui.JMessage</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<dl>
+<dt>All Implemented Interfaces:</dt>
+<dd>java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, javax.accessibility.Accessible, javax.swing.RootPaneContainer, javax.swing.WindowConstants</dd>
+</dl>
+<hr>
+<br>
+<pre>public final class <span class="typeNameLabel">JMessage</span>
+extends javax.swing.JDialog</pre>
+<div class="block">This component is similar to <code>javax.swing.JOptionPane</code> component.
+ It can be used to display message and error dialogs. The main features of
+ <code>JMessage</code> are:<br>
+ <ul>
+ <li>Displays simple messages and the stacktrace of an exception</li>
+ <li>Supports html text for messages with build-in plain text conversion</li>
+ <li>The dialogs are modal. In addition they stay on top of other windows at
+ all times</li>
+ <li>Supports for <code>JOptionPane</code> OK,CANCEL,YES,NO buttons</li>
+ <li>Selects a default button in the dialog</li>
+ <li>Supports all <code>JOptionPane</code> messageType(s) & optionType(s)</li>
+ <li>Uses UI default icons or user supplied icons</li>
+ <li>Uses localized dialog titles and button text, or user supplied text</li>
+ <li>Returns dialog status depending on which button was pressed</li>
+ </ul>
+ <p></div>
+<dl>
+<dt><span class="simpleTagLabel">Since:</span></dt>
+<dd>1.40</dd>
+<dt><span class="simpleTagLabel">Author:</span></dt>
+<dd>Gregory Kotsaftis</dd>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../serialized-form.html#gr.zeus.ui.JMessage">Serialized Form</a></dd>
+</dl>
+</li>
+</ul>
+</div>
+<div class="summary">
+<ul class="blockList">
+<li class="blockList">
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="nested.class.summary">
+<!--   -->
+</a>
+<h3>Nested Class Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Nested Class Summary table, listing nested classes, and an explanation">
+<caption><span>Nested Classes</span><span class="tabEnd"> </span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Class and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>static class </code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../gr/zeus/ui/JMessage.JMessageButtonEnum.html" title="enum in gr.zeus.ui">JMessage.JMessageButtonEnum</a></span></code>
+<div class="block">Enum with all the supported buttons of the dialog.</div>
+</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="nested.classes.inherited.from.class.javax.swing.JDialog">
+<!--   -->
+</a>
+<h3>Nested classes/interfaces inherited from class javax.swing.JDialog</h3>
+<code>javax.swing.JDialog.AccessibleJDialog</code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="nested.classes.inherited.from.class.java.awt.Dialog">
+<!--   -->
+</a>
+<h3>Nested classes/interfaces inherited from class java.awt.Dialog</h3>
+<code>java.awt.Dialog.AccessibleAWTDialog, java.awt.Dialog.ModalExclusionType, java.awt.Dialog.ModalityType</code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="nested.classes.inherited.from.class.java.awt.Window">
+<!--   -->
+</a>
+<h3>Nested classes/interfaces inherited from class java.awt.Window</h3>
+<code>java.awt.Window.AccessibleAWTWindow, java.awt.Window.Type</code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="nested.classes.inherited.from.class.java.awt.Container">
+<!--   -->
+</a>
+<h3>Nested classes/interfaces inherited from class java.awt.Container</h3>
+<code>java.awt.Container.AccessibleAWTContainer</code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="nested.classes.inherited.from.class.java.awt.Component">
+<!--   -->
+</a>
+<h3>Nested classes/interfaces inherited from class java.awt.Component</h3>
+<code>java.awt.Component.AccessibleAWTComponent, java.awt.Component.BaselineResizeBehavior, java.awt.Component.BltBufferStrategy, java.awt.Component.FlipBufferStrategy</code></li>
+</ul>
+</li>
+</ul>
+<!-- =========== FIELD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field.summary">
+<!--   -->
+</a>
+<h3>Field Summary</h3>
+<ul class="blockList">
+<li class="blockList"><a name="fields.inherited.from.class.javax.swing.JDialog">
+<!--   -->
+</a>
+<h3>Fields inherited from class javax.swing.JDialog</h3>
+<code>accessibleContext, rootPane, rootPaneCheckingEnabled</code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="fields.inherited.from.class.java.awt.Dialog">
+<!--   -->
+</a>
+<h3>Fields inherited from class java.awt.Dialog</h3>
+<code>DEFAULT_MODALITY_TYPE</code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="fields.inherited.from.class.java.awt.Component">
+<!--   -->
+</a>
+<h3>Fields inherited from class java.awt.Component</h3>
+<code>BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT</code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="fields.inherited.from.class.javax.swing.WindowConstants">
+<!--   -->
+</a>
+<h3>Fields inherited from interface javax.swing.WindowConstants</h3>
+<code>DISPOSE_ON_CLOSE, DO_NOTHING_ON_CLOSE, EXIT_ON_CLOSE, HIDE_ON_CLOSE</code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="fields.inherited.from.class.java.awt.image.ImageObserver">
+<!--   -->
+</a>
+<h3>Fields inherited from interface java.awt.image.ImageObserver</h3>
+<code>ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH</code></li>
+</ul>
+</li>
+</ul>
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.summary">
+<!--   -->
+</a>
+<h3>Constructor Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
+<caption><span>Constructors</span><span class="tabEnd"> </span></caption>
+<tr>
+<th class="colOne" scope="col">Constructor and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../gr/zeus/ui/JMessage.html#JMessage-java.awt.Frame-java.lang.String-java.lang.String-int-int-gr.zeus.ui.JMessage.JMessageButtonEnum-javax.swing.Icon-java.lang.Throwable-java.lang.String-java.lang.String-java.lang.String-java.lang.String-">JMessage</a></span>(java.awt.Frame parent,
+        java.lang.String message,
+        java.lang.String frameTitle,
+        int messageType,
+        int optionType,
+        <a href="../../../gr/zeus/ui/JMessage.JMessageButtonEnum.html" title="enum in gr.zeus.ui">JMessage.JMessageButtonEnum</a> defaultButton,
+        javax.swing.Icon ico,
+        java.lang.Throwable ex,
+        java.lang.String okText,
+        java.lang.String cancelText,
+        java.lang.String yesText,
+        java.lang.String noText)</code>
+<div class="block">Constructor.</div>
+</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.summary">
+<!--   -->
+</a>
+<h3>Method Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
+<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd"> </span></span><span id="t1" class="tableTab"><span><a href="javascript:show(1);">Static Methods</a></span><span class="tabEnd"> </span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd"> </span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd [...]
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tr id="i0" class="altColor">
+<td class="colFirst"><code>int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../gr/zeus/ui/JMessage.html#getReturnStatus--">getReturnStatus</a></span>()</code>
+<div class="block">Returns the status of the dialog depending on which button was pressed.</div>
+</td>
+</tr>
+<tr id="i1" class="rowColor">
+<td class="colFirst"><code>static void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../gr/zeus/ui/JMessage.html#showErrorMessage-java.awt.Frame-java.lang.String-">showErrorMessage</a></span>(java.awt.Frame parent,
+                java.lang.String message)</code>
+<div class="block">Wrapper method for showMessageDialog().</div>
+</td>
+</tr>
+<tr id="i2" class="altColor">
+<td class="colFirst"><code>static void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../gr/zeus/ui/JMessage.html#showErrorMessage-java.awt.Frame-java.lang.String-java.lang.Throwable-">showErrorMessage</a></span>(java.awt.Frame parent,
+                java.lang.String message,
+                java.lang.Throwable ex)</code>
+<div class="block">Wrapper method for showMessageDialog().</div>
+</td>
+</tr>
+<tr id="i3" class="rowColor">
+<td class="colFirst"><code>static boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../gr/zeus/ui/JMessage.html#showErrorQuestionMessageY-java.awt.Frame-java.lang.String-java.lang.Throwable-">showErrorQuestionMessageY</a></span>(java.awt.Frame parent,
+                         java.lang.String message,
+                         java.lang.Throwable ex)</code>
+<div class="block">Shows a question window with YES/NO button options.</div>
+</td>
+</tr>
+<tr id="i4" class="altColor">
+<td class="colFirst"><code>static void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../gr/zeus/ui/JMessage.html#showInfoMessage-java.awt.Frame-java.lang.String-">showInfoMessage</a></span>(java.awt.Frame parent,
+               java.lang.String message)</code>
+<div class="block">Wrapper method for showMessageDialog().</div>
+</td>
+</tr>
+<tr id="i5" class="rowColor">
+<td class="colFirst"><code>static void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../gr/zeus/ui/JMessage.html#showInfoMessage-java.awt.Frame-java.lang.String-java.lang.Throwable-">showInfoMessage</a></span>(java.awt.Frame parent,
+               java.lang.String message,
+               java.lang.Throwable ex)</code>
+<div class="block">Wrapper method for showMessageDialog().</div>
+</td>
+</tr>
+<tr id="i6" class="altColor">
+<td class="colFirst"><code>static int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../gr/zeus/ui/JMessage.html#showMessageDialog-java.awt.Frame-java.lang.String-int-int-">showMessageDialog</a></span>(java.awt.Frame parent,
+                 java.lang.String message,
+                 int messageType,
+                 int optionType)</code>
+<div class="block">Factory method, create-show-return.</div>
+</td>
+</tr>
+<tr id="i7" class="rowColor">
+<td class="colFirst"><code>static int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../gr/zeus/ui/JMessage.html#showMessageDialog-java.awt.Frame-java.lang.String-int-int-gr.zeus.ui.JMessage.JMessageButtonEnum-">showMessageDialog</a></span>(java.awt.Frame parent,
+                 java.lang.String message,
+                 int messageType,
+                 int optionType,
+                 <a href="../../../gr/zeus/ui/JMessage.JMessageButtonEnum.html" title="enum in gr.zeus.ui">JMessage.JMessageButtonEnum</a> defaultButton)</code>
+<div class="block">Factory method, create-show-return.</div>
+</td>
+</tr>
+<tr id="i8" class="altColor">
+<td class="colFirst"><code>static int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../gr/zeus/ui/JMessage.html#showMessageDialog-java.awt.Frame-java.lang.String-int-int-java.lang.Throwable-">showMessageDialog</a></span>(java.awt.Frame parent,
+                 java.lang.String message,
+                 int messageType,
+                 int optionType,
+                 java.lang.Throwable ex)</code>
+<div class="block">Factory method, create-show-return.</div>
+</td>
+</tr>
+<tr id="i9" class="rowColor">
+<td class="colFirst"><code>static int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../gr/zeus/ui/JMessage.html#showMessageDialog-java.awt.Frame-java.lang.String-java.lang.String-int-int-gr.zeus.ui.JMessage.JMessageButtonEnum-javax.swing.Icon-java.lang.Throwable-java.lang.String-java.lang.String-java.lang.String-java.lang.String-">showMessageDialog</a></span>(java.awt.Frame parent,
+                 java.lang.String message,
+                 java.lang.String frameTitle,
+                 int messageType,
+                 int optionType,
+                 <a href="../../../gr/zeus/ui/JMessage.JMessageButtonEnum.html" title="enum in gr.zeus.ui">JMessage.JMessageButtonEnum</a> defaultButton,
+                 javax.swing.Icon ico,
+                 java.lang.Throwable ex,
+                 java.lang.String okText,
+                 java.lang.String cancelText,
+                 java.lang.String yesText,
+                 java.lang.String noText)</code>
+<div class="block">Factory method, create-show-return.</div>
+</td>
+</tr>
+<tr id="i10" class="altColor">
+<td class="colFirst"><code>static boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../gr/zeus/ui/JMessage.html#showQuestionMessageN-java.awt.Frame-java.lang.String-">showQuestionMessageN</a></span>(java.awt.Frame parent,
+                    java.lang.String message)</code>
+<div class="block">Wrapper method for showMessageDialog().</div>
+</td>
+</tr>
+<tr id="i11" class="rowColor">
+<td class="colFirst"><code>static boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../gr/zeus/ui/JMessage.html#showQuestionMessageY-java.awt.Frame-java.lang.String-">showQuestionMessageY</a></span>(java.awt.Frame parent,
+                    java.lang.String message)</code>
+<div class="block">Wrapper method for showMessageDialog().</div>
+</td>
+</tr>
+<tr id="i12" class="altColor">
+<td class="colFirst"><code>static void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../gr/zeus/ui/JMessage.html#showWarningMessage-java.awt.Frame-java.lang.String-">showWarningMessage</a></span>(java.awt.Frame parent,
+                  java.lang.String message)</code>
+<div class="block">Wrapper method for showMessageDialog().</div>
+</td>
+</tr>
+<tr id="i13" class="rowColor">
+<td class="colFirst"><code>static void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../gr/zeus/ui/JMessage.html#showWarningMessage-java.awt.Frame-java.lang.String-java.lang.Throwable-">showWarningMessage</a></span>(java.awt.Frame parent,
+                  java.lang.String message,
+                  java.lang.Throwable ex)</code>
+<div class="block">Wrapper method for showMessageDialog().</div>
+</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.javax.swing.JDialog">
+<!--   -->
+</a>
+<h3>Methods inherited from class javax.swing.JDialog</h3>
+<code>addImpl, createRootPane, dialogInit, getAccessibleContext, getContentPane, getDefaultCloseOperation, getGlassPane, getGraphics, getJMenuBar, getLayeredPane, getRootPane, getTransferHandler, isDefaultLookAndFeelDecorated, isRootPaneCheckingEnabled, paramString, processWindowEvent, remove, repaint, setContentPane, setDefaultCloseOperation, setDefaultLookAndFeelDecorated, setGlassPane, setJMenuBar, setLayeredPane, setLayout, setRootPane, setRootPaneCheckingEnabled, setTransferHandler, [...]
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.awt.Dialog">
+<!--   -->
+</a>
+<h3>Methods inherited from class java.awt.Dialog</h3>
+<code>addNotify, getModalityType, getTitle, hide, isModal, isResizable, isUndecorated, setBackground, setModal, setModalityType, setOpacity, setResizable, setShape, setTitle, setUndecorated, setVisible, show, toBack</code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.awt.Window">
+<!--   -->
+</a>
+<h3>Methods inherited from class java.awt.Window</h3>
+<code>addPropertyChangeListener, addPropertyChangeListener, addWindowFocusListener, addWindowListener, addWindowStateListener, applyResourceBundle, applyResourceBundle, createBufferStrategy, createBufferStrategy, dispose, getBackground, getBufferStrategy, getFocusableWindowState, getFocusCycleRootAncestor, getFocusOwner, getFocusTraversalKeys, getIconImages, getInputContext, getListeners, getLocale, getModalExclusionType, getMostRecentFocusOwner, getOpacity, getOwnedWindows, getOwner, ge [...]
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.awt.Container">
+<!--   -->
+</a>
+<h3>Methods inherited from class java.awt.Container</h3>
+<code>add, add, add, add, add, addContainerListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getAlignmentX, getAlignmentY, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalPolicy, getInsets, getLayout, getMaximumSize, getMinimumSize, getMousePosition, getPreferredSize, insets, invalidate, isAncestorOf, isFocusCy [...]
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.awt.Component">
+<!--   -->
+</a>
+<h3>Methods inherited from class java.awt.Component</h3>
+<code>action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, contains, createImage, createImage, createVolatileImage, createVolatileImage, disable, disableEvents, dispatchEvent, enable, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyC [...]
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
+<!--   -->
+</a>
+<h3>Methods inherited from class java.lang.Object</h3>
+<code>clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait</code></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="details">
+<ul class="blockList">
+<li class="blockList">
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.detail">
+<!--   -->
+</a>
+<h3>Constructor Detail</h3>
+<a name="JMessage-java.awt.Frame-java.lang.String-java.lang.String-int-int-gr.zeus.ui.JMessage.JMessageButtonEnum-javax.swing.Icon-java.lang.Throwable-java.lang.String-java.lang.String-java.lang.String-java.lang.String-">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>JMessage</h4>
+<pre>public JMessage(java.awt.Frame parent,
+                java.lang.String message,
+                java.lang.String frameTitle,
+                int messageType,
+                int optionType,
+                <a href="../../../gr/zeus/ui/JMessage.JMessageButtonEnum.html" title="enum in gr.zeus.ui">JMessage.JMessageButtonEnum</a> defaultButton,
+                javax.swing.Icon ico,
+                java.lang.Throwable ex,
+                java.lang.String okText,
+                java.lang.String cancelText,
+                java.lang.String yesText,
+                java.lang.String noText)</pre>
+<div class="block">Constructor. Creates fully customizable message dialog.
+ <p></div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>parent</code> - The parent relative frame, can be <code>null</code>.</dd>
+<dd><code>message</code> - The message to display, can be plain or html.</dd>
+<dd><code>frameTitle</code> - The title for the frame, if <code>null</code> the
+                      default is used.</dd>
+<dd><code>messageType</code> - Same as <code>JOptionPane</code>, one of:
+                      ERROR_MESSAGE, INFORMATION_MESSAGE, WARNING_MESSAGE,
+                      QUESTION_MESSAGE, or PLAIN_MESSAGE</dd>
+<dd><code>optionType</code> - Same as <code>JOptionPane</code>, one of:
+                      DEFAULT_OPTION, YES_NO_OPTION, YES_NO_CANCEL_OPTION,
+                      OK_CANCEL_OPTION</dd>
+<dd><code>defaultButton</code> - The default selected button for the dialog, if
+                      <code>null</code> the default for
+                      <code>optionType</code> will be selected.</dd>
+<dd><code>ico</code> - The custom icon to use, <code>null</code> means no
+                      icon.</dd>
+<dd><code>ex</code> - An exception to display it's stacktrace,
+                      <code>null</code> will disable the stacktrace button
+                      functionality.</dd>
+<dd><code>okText</code> - Ok button text, if <code>null</code> the default
+                      is used.</dd>
+<dd><code>cancelText</code> - Cancel button text, if <code>null</code> the default
+                      is used.</dd>
+<dd><code>yesText</code> - Yes button text, if <code>null</code> the default
+                      is used.</dd>
+<dd><code>noText</code> - No button text, if <code>null</code> the default
+                      is used.</dd>
+</dl>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ============ METHOD DETAIL ========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.detail">
+<!--   -->
+</a>
+<h3>Method Detail</h3>
+<a name="showErrorQuestionMessageY-java.awt.Frame-java.lang.String-java.lang.Throwable-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>showErrorQuestionMessageY</h4>
+<pre>public static boolean showErrorQuestionMessageY(java.awt.Frame parent,
+                                                java.lang.String message,
+                                                java.lang.Throwable ex)</pre>
+<div class="block">Shows a question window with YES/NO button options. Default button is YES.
+ Also enables button to print the stacktrace of an exception.
+ NOTE: On dialog close, it also returns false.
+ <p></div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>parent</code> - The parent relative frame, can be <code>null</code>.</dd>
+<dd><code>message</code> - The message to display, can be plain or html.</dd>
+<dd><code>ex</code> - An exception to display it's stacktrace,
+                      <code>null</code> will disable the stacktrace button
+                      functionality.
+ <p></dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>true for YES, false for NO</dd>
+</dl>
+</li>
+</ul>
+<a name="showErrorMessage-java.awt.Frame-java.lang.String-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>showErrorMessage</h4>
+<pre>public static void showErrorMessage(java.awt.Frame parent,
+                                    java.lang.String message)</pre>
+<div class="block">Wrapper method for showMessageDialog(). Shows an error window with
+ default button option.
+ <p></div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>parent</code> - The parent relative frame, can be <code>null</code>.</dd>
+<dd><code>message</code> - The message to display, can be plain or html.</dd>
+</dl>
+</li>
+</ul>
+<a name="showErrorMessage-java.awt.Frame-java.lang.String-java.lang.Throwable-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>showErrorMessage</h4>
+<pre>public static void showErrorMessage(java.awt.Frame parent,
+                                    java.lang.String message,
+                                    java.lang.Throwable ex)</pre>
+<div class="block">Wrapper method for showMessageDialog(). Shows an error window with
+ default button option.
+ <p></div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>parent</code> - The parent relative frame, can be <code>null</code>.</dd>
+<dd><code>message</code> - The message to display, can be plain or html.</dd>
+<dd><code>ex</code> - An exception to display it's stacktrace,
+                      <code>null</code> will disable the stacktrace button
+                      functionality.</dd>
+</dl>
+</li>
+</ul>
+<a name="showWarningMessage-java.awt.Frame-java.lang.String-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>showWarningMessage</h4>
+<pre>public static void showWarningMessage(java.awt.Frame parent,
+                                      java.lang.String message)</pre>
+<div class="block">Wrapper method for showMessageDialog(). Shows a warning window with
+ default button option.
+ <p></div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>parent</code> - The parent relative frame, can be <code>null</code>.</dd>
+<dd><code>message</code> - The message to display, can be plain or html.</dd>
+</dl>
+</li>
+</ul>
+<a name="showWarningMessage-java.awt.Frame-java.lang.String-java.lang.Throwable-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>showWarningMessage</h4>
+<pre>public static void showWarningMessage(java.awt.Frame parent,
+                                      java.lang.String message,
+                                      java.lang.Throwable ex)</pre>
+<div class="block">Wrapper method for showMessageDialog(). Shows a warning window with
+ default button option.
+ <p></div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>parent</code> - The parent relative frame, can be <code>null</code>.</dd>
+<dd><code>message</code> - The message to display, can be plain or html.</dd>
+<dd><code>ex</code> - An exception to display it's stacktrace,
+                      <code>null</code> will disable the stacktrace button
+                      functionality.</dd>
+</dl>
+</li>
+</ul>
+<a name="showInfoMessage-java.awt.Frame-java.lang.String-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>showInfoMessage</h4>
+<pre>public static void showInfoMessage(java.awt.Frame parent,
+                                   java.lang.String message)</pre>
+<div class="block">Wrapper method for showMessageDialog(). Shows an info window with
+ default button option.
+ <p></div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>parent</code> - The parent relative frame, can be <code>null</code>.</dd>
+<dd><code>message</code> - The message to display, can be plain or html.</dd>
+</dl>
+</li>
+</ul>
+<a name="showInfoMessage-java.awt.Frame-java.lang.String-java.lang.Throwable-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>showInfoMessage</h4>
+<pre>public static void showInfoMessage(java.awt.Frame parent,
+                                   java.lang.String message,
+                                   java.lang.Throwable ex)</pre>
+<div class="block">Wrapper method for showMessageDialog(). Shows an info window with
+ default button option.
+ <p></div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>parent</code> - The parent relative frame, can be <code>null</code>.</dd>
+<dd><code>message</code> - The message to display, can be plain or html.</dd>
+<dd><code>ex</code> - An exception to display it's stacktrace,
+                      <code>null</code> will disable the stacktrace button
+                      functionality.</dd>
+</dl>
+</li>
+</ul>
+<a name="showQuestionMessageN-java.awt.Frame-java.lang.String-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>showQuestionMessageN</h4>
+<pre>public static boolean showQuestionMessageN(java.awt.Frame parent,
+                                           java.lang.String message)</pre>
+<div class="block">Wrapper method for showMessageDialog(). Shows a question window with
+ YES/NO button options. Default button is NO, e.g. for use with delete
+ confirmation dialogs. NOTE: On dialog close, it also returns false.
+ <p></div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>parent</code> - The parent relative frame, can be <code>null</code>.</dd>
+<dd><code>message</code> - The message to display, can be plain or html.
+ <p></dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>true for YES, false for NO</dd>
+</dl>
+</li>
+</ul>
+<a name="showQuestionMessageY-java.awt.Frame-java.lang.String-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>showQuestionMessageY</h4>
+<pre>public static boolean showQuestionMessageY(java.awt.Frame parent,
+                                           java.lang.String message)</pre>
+<div class="block">Wrapper method for showMessageDialog(). Shows a question window with
+ YES/NO button options. Default button is YES, e.g. for use with save
+ confirmation dialogs. NOTE: On dialog close, it also returns false.
+ <p></div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>parent</code> - The parent relative frame, can be <code>null</code>.</dd>
+<dd><code>message</code> - The message to display, can be plain or html.
+ <p></dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>true for YES, false for NO</dd>
+</dl>
+</li>
+</ul>
+<a name="showMessageDialog-java.awt.Frame-java.lang.String-int-int-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>showMessageDialog</h4>
+<pre>public static int showMessageDialog(java.awt.Frame parent,
+                                    java.lang.String message,
+                                    int messageType,
+                                    int optionType)</pre>
+<div class="block">Factory method, create-show-return.
+ Creates a dialog relative to <code>parent</code> frame using UI defaults
+ for icon and a locale specific frame title.
+ <p></div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>parent</code> - The parent relative frame, can be <code>null</code>.</dd>
+<dd><code>message</code> - The message to display, can be plain or html.</dd>
+<dd><code>messageType</code> - Same as <code>JOptionPane</code>, one of:
+                      ERROR_MESSAGE, INFORMATION_MESSAGE, WARNING_MESSAGE,
+                      QUESTION_MESSAGE, or PLAIN_MESSAGE</dd>
+<dd><code>optionType</code> - Same as <code>JOptionPane</code>, one of:
+                      DEFAULT_OPTION, YES_NO_OPTION, YES_NO_CANCEL_OPTION,
+                      OK_CANCEL_OPTION
+ <p></dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>The status of the dialog depending on which button
+                      was pressed. Same as <code>JOptionPane</code>,
+                      one of: CANCEL_OPTION, NO_OPTION, YES_OPTION,
+                      OK_OPTION or CLOSED_OPTION if the dialog was closed.</dd>
+</dl>
+</li>
+</ul>
+<a name="showMessageDialog-java.awt.Frame-java.lang.String-int-int-gr.zeus.ui.JMessage.JMessageButtonEnum-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>showMessageDialog</h4>
+<pre>public static int showMessageDialog(java.awt.Frame parent,
+                                    java.lang.String message,
+                                    int messageType,
+                                    int optionType,
+                                    <a href="../../../gr/zeus/ui/JMessage.JMessageButtonEnum.html" title="enum in gr.zeus.ui">JMessage.JMessageButtonEnum</a> defaultButton)</pre>
+<div class="block">Factory method, create-show-return.
+ Creates a dialog relative to <code>parent</code> frame using UI defaults
+ for icon and a locale specific frame title.
+ Use <code>JMessageButtonEnum</code> to setup the default button.
+ <p></div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>parent</code> - The parent relative frame, can be <code>null</code>.</dd>
+<dd><code>message</code> - The message to display, can be plain or html.</dd>
+<dd><code>messageType</code> - Same as <code>JOptionPane</code>, one of:
+                      ERROR_MESSAGE, INFORMATION_MESSAGE, WARNING_MESSAGE,
+                      QUESTION_MESSAGE, or PLAIN_MESSAGE</dd>
+<dd><code>optionType</code> - Same as <code>JOptionPane</code>, one of:
+                      DEFAULT_OPTION, YES_NO_OPTION, YES_NO_CANCEL_OPTION,
+                      OK_CANCEL_OPTION</dd>
+<dd><code>defaultButton</code> - The default selected button for the dialog, if
+                      <code>null</code> the default for
+                      <code>optionType</code> will be selected.
+ <p></dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>The status of the dialog depending on which button
+                      was pressed. Same as <code>JOptionPane</code>,
+                      one of: CANCEL_OPTION, NO_OPTION, YES_OPTION,
+                      OK_OPTION or CLOSED_OPTION if the dialog was closed.</dd>
+</dl>
+</li>
+</ul>
+<a name="showMessageDialog-java.awt.Frame-java.lang.String-int-int-java.lang.Throwable-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>showMessageDialog</h4>
+<pre>public static int showMessageDialog(java.awt.Frame parent,
+                                    java.lang.String message,
+                                    int messageType,
+                                    int optionType,
+                                    java.lang.Throwable ex)</pre>
+<div class="block">Factory method, create-show-return.
+ Creates a dialog relative to <code>parent</code> frame using UI defaults
+ for icon and a locale specific frame title. Also enables button to print
+ the stacktrace of an exception.
+ <p></div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>parent</code> - The parent relative frame, can be <code>null</code>.</dd>
+<dd><code>message</code> - The message to display, can be plain or html.</dd>
+<dd><code>messageType</code> - Same as <code>JOptionPane</code>, one of:
+                      ERROR_MESSAGE, INFORMATION_MESSAGE, WARNING_MESSAGE,
+                      QUESTION_MESSAGE, or PLAIN_MESSAGE</dd>
+<dd><code>optionType</code> - Same as <code>JOptionPane</code>, one of:
+                      DEFAULT_OPTION, YES_NO_OPTION, YES_NO_CANCEL_OPTION,
+                      OK_CANCEL_OPTION</dd>
+<dd><code>ex</code> - An exception to display it's stacktrace,
+                      <code>null</code> will disable the stacktrace button
+                      functionality.
+ <p></dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>The status of the dialog depending on which button
+                      was pressed. Same as <code>JOptionPane</code>,
+                      one of: CANCEL_OPTION, NO_OPTION, YES_OPTION,
+                      OK_OPTION or CLOSED_OPTION if the dialog was closed.</dd>
+</dl>
+</li>
+</ul>
+<a name="showMessageDialog-java.awt.Frame-java.lang.String-java.lang.String-int-int-gr.zeus.ui.JMessage.JMessageButtonEnum-javax.swing.Icon-java.lang.Throwable-java.lang.String-java.lang.String-java.lang.String-java.lang.String-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>showMessageDialog</h4>
+<pre>public static int showMessageDialog(java.awt.Frame parent,
+                                    java.lang.String message,
+                                    java.lang.String frameTitle,
+                                    int messageType,
+                                    int optionType,
+                                    <a href="../../../gr/zeus/ui/JMessage.JMessageButtonEnum.html" title="enum in gr.zeus.ui">JMessage.JMessageButtonEnum</a> defaultButton,
+                                    javax.swing.Icon ico,
+                                    java.lang.Throwable ex,
+                                    java.lang.String okText,
+                                    java.lang.String cancelText,
+                                    java.lang.String yesText,
+                                    java.lang.String noText)</pre>
+<div class="block">Factory method, create-show-return.
+ Creates fully customizable message dialog.
+ <p></div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>parent</code> - The parent relative frame, can be <code>null</code>.</dd>
+<dd><code>message</code> - The message to display, can be plain or html.</dd>
+<dd><code>frameTitle</code> - The title for the frame, if <code>null</code> the
+                      default is used.</dd>
+<dd><code>messageType</code> - Same as <code>JOptionPane</code>, one of:
+                      ERROR_MESSAGE, INFORMATION_MESSAGE, WARNING_MESSAGE,
+                      QUESTION_MESSAGE, or PLAIN_MESSAGE</dd>
+<dd><code>optionType</code> - Same as <code>JOptionPane</code>, one of:
+                      DEFAULT_OPTION, YES_NO_OPTION, YES_NO_CANCEL_OPTION,
+                      OK_CANCEL_OPTION</dd>
+<dd><code>defaultButton</code> - The default selected button for the dialog, if
+                      <code>null</code> the default for
+                      <code>optionType</code> will be selected.</dd>
+<dd><code>ico</code> - The custom icon to use, <code>null</code> means no
+                      icon.</dd>
+<dd><code>ex</code> - An exception to display it's stacktrace,
+                      <code>null</code> will disable the stacktrace button
+                      functionality.</dd>
+<dd><code>okText</code> - Ok button text, if <code>null</code> the default
+                      is used.</dd>
+<dd><code>cancelText</code> - Cancel button text, if <code>null</code> the default
+                      is used.</dd>
+<dd><code>yesText</code> - Yes button text, if <code>null</code> the default
+                      is used.</dd>
+<dd><code>noText</code> - No button text, if <code>null</code> the default
+                      is used.
+ <p></dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>The status of the dialog depending on which button
+                      was pressed. Same as <code>JOptionPane</code>,
+                      one of: CANCEL_OPTION, NO_OPTION, YES_OPTION,
+                      OK_OPTION or CLOSED_OPTION if the dialog was closed.</dd>
+</dl>
+</li>
+</ul>
+<a name="getReturnStatus--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>getReturnStatus</h4>
+<pre>public int getReturnStatus()</pre>
+<div class="block">Returns the status of the dialog depending on which button was pressed.
+ <p></div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>Same as <code>JOptionPane</code>, one of:
+                      CANCEL_OPTION, NO_OPTION, YES_OPTION, OK_OPTION or
+                      CLOSED_OPTION if the dialog was closed.</dd>
+</dl>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+<!-- ========= END OF CLASS DATA ========= -->
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../index-all.html">Index</a></li>
+<li><a href="../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../gr/zeus/ui/JIConsole.html" title="class in gr.zeus.ui"><span class="typeNameLink">Prev Class</span></a></li>
+<li><a href="../../../gr/zeus/ui/JMessage.JMessageButtonEnum.html" title="enum in gr.zeus.ui"><span class="typeNameLink">Next Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../index.html?gr/zeus/ui/JMessage.html" target="_top">Frames</a></li>
+<li><a href="JMessage.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary: </li>
+<li><a href="#nested.class.summary">Nested</a> | </li>
+<li><a href="#fields.inherited.from.class.javax.swing.JDialog">Field</a> | </li>
+<li><a href="#constructor.summary">Constr</a> | </li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail: </li>
+<li>Field | </li>
+<li><a href="#constructor.detail">Constr</a> | </li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+</body>
+</html>
diff --git a/doc/api/gr/zeus/ui/JSplash.html b/doc/api/gr/zeus/ui/JSplash.html
new file mode 100644
index 0000000..42025db
--- /dev/null
+++ b/doc/api/gr/zeus/ui/JSplash.html
@@ -0,0 +1,523 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc (1.8.0_05) on Sat Jun 07 12:11:35 EEST 2014 -->
+<title>JSplash</title>
+<meta name="date" content="2014-06-07">
+<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="JSplash";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10};
+var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
+var altColor = "altColor";
+var rowColor = "rowColor";
+var tableTab = "tableTab";
+var activeTableTab = "activeTableTab";
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../index-all.html">Index</a></li>
+<li><a href="../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../gr/zeus/ui/JMessage.JMessageButtonEnum.html" title="enum in gr.zeus.ui"><span class="typeNameLink">Prev Class</span></a></li>
+<li><a href="../../../gr/zeus/ui/JSplashLabel.html" title="class in gr.zeus.ui"><span class="typeNameLink">Next Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../index.html?gr/zeus/ui/JSplash.html" target="_top">Frames</a></li>
+<li><a href="JSplash.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary: </li>
+<li><a href="#nested.classes.inherited.from.class.javax.swing.JWindow">Nested</a> | </li>
+<li><a href="#fields.inherited.from.class.javax.swing.JWindow">Field</a> | </li>
+<li><a href="#constructor.summary">Constr</a> | </li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail: </li>
+<li>Field | </li>
+<li><a href="#constructor.detail">Constr</a> | </li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="subTitle">gr.zeus.ui</div>
+<h2 title="Class JSplash" class="title">Class JSplash</h2>
+</div>
+<div class="contentContainer">
+<ul class="inheritance">
+<li>java.lang.Object</li>
+<li>
+<ul class="inheritance">
+<li>java.awt.Component</li>
+<li>
+<ul class="inheritance">
+<li>java.awt.Container</li>
+<li>
+<ul class="inheritance">
+<li>java.awt.Window</li>
+<li>
+<ul class="inheritance">
+<li>javax.swing.JWindow</li>
+<li>
+<ul class="inheritance">
+<li>gr.zeus.ui.JSplash</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<dl>
+<dt>All Implemented Interfaces:</dt>
+<dd>java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, javax.accessibility.Accessible, javax.swing.RootPaneContainer</dd>
+</dl>
+<hr>
+<br>
+<pre>public final class <span class="typeNameLabel">JSplash</span>
+extends javax.swing.JWindow</pre>
+<div class="block">A simple, yet nice splash screen implementation for java applications.
+ Follows Sun recommendations for splash screen and logos: see
+ <a href="http://java.sun.com/products/jlf/ed2/book/HIG.Graphics7.html">
+ <i>"Designing Graphics for Corporate and Product Identity"</i></a>.
+ Draws a black border of one pixel wide around the splash image.
+ Also uses a simple progress bar that the user must "progress" manually in his
+ code in order for it to work. Also, it has options for percent display,
+ custom loading messages display and application version string display at the
+ bottom-right corner of the image.
+ <p></div>
+<dl>
+<dt><span class="simpleTagLabel">Since:</span></dt>
+<dd>1.0</dd>
+<dt><span class="simpleTagLabel">Author:</span></dt>
+<dd>Gregory Kotsaftis</dd>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../serialized-form.html#gr.zeus.ui.JSplash">Serialized Form</a></dd>
+</dl>
+</li>
+</ul>
+</div>
+<div class="summary">
+<ul class="blockList">
+<li class="blockList">
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="nested.class.summary">
+<!--   -->
+</a>
+<h3>Nested Class Summary</h3>
+<ul class="blockList">
+<li class="blockList"><a name="nested.classes.inherited.from.class.javax.swing.JWindow">
+<!--   -->
+</a>
+<h3>Nested classes/interfaces inherited from class javax.swing.JWindow</h3>
+<code>javax.swing.JWindow.AccessibleJWindow</code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="nested.classes.inherited.from.class.java.awt.Window">
+<!--   -->
+</a>
+<h3>Nested classes/interfaces inherited from class java.awt.Window</h3>
+<code>java.awt.Window.AccessibleAWTWindow, java.awt.Window.Type</code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="nested.classes.inherited.from.class.java.awt.Container">
+<!--   -->
+</a>
+<h3>Nested classes/interfaces inherited from class java.awt.Container</h3>
+<code>java.awt.Container.AccessibleAWTContainer</code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="nested.classes.inherited.from.class.java.awt.Component">
+<!--   -->
+</a>
+<h3>Nested classes/interfaces inherited from class java.awt.Component</h3>
+<code>java.awt.Component.AccessibleAWTComponent, java.awt.Component.BaselineResizeBehavior, java.awt.Component.BltBufferStrategy, java.awt.Component.FlipBufferStrategy</code></li>
+</ul>
+</li>
+</ul>
+<!-- =========== FIELD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field.summary">
+<!--   -->
+</a>
+<h3>Field Summary</h3>
+<ul class="blockList">
+<li class="blockList"><a name="fields.inherited.from.class.javax.swing.JWindow">
+<!--   -->
+</a>
+<h3>Fields inherited from class javax.swing.JWindow</h3>
+<code>accessibleContext, rootPane, rootPaneCheckingEnabled</code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="fields.inherited.from.class.java.awt.Component">
+<!--   -->
+</a>
+<h3>Fields inherited from class java.awt.Component</h3>
+<code>BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT</code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="fields.inherited.from.class.java.awt.image.ImageObserver">
+<!--   -->
+</a>
+<h3>Fields inherited from interface java.awt.image.ImageObserver</h3>
+<code>ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH</code></li>
+</ul>
+</li>
+</ul>
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.summary">
+<!--   -->
+</a>
+<h3>Constructor Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
+<caption><span>Constructors</span><span class="tabEnd"> </span></caption>
+<tr>
+<th class="colOne" scope="col">Constructor and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../gr/zeus/ui/JSplash.html#JSplash-java.net.URL-boolean-boolean-boolean-java.lang.String-java.awt.Font-java.awt.Color-">JSplash</a></span>(java.net.URL url,
+       boolean progress,
+       boolean messages,
+       boolean percent,
+       java.lang.String versionString,
+       java.awt.Font versionStringFont,
+       java.awt.Color versionStringColor)</code>
+<div class="block">Constructor for the splash window.</div>
+</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.summary">
+<!--   -->
+</a>
+<h3>Method Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
+<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd"> </span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd"> </span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd"> </span></span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tr id="i0" class="altColor">
+<td class="colFirst"><code>javax.swing.JProgressBar</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../gr/zeus/ui/JSplash.html#getProgressBar--">getProgressBar</a></span>()</code>
+<div class="block">Get the progress bar for custom usage.</div>
+</td>
+</tr>
+<tr id="i1" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../gr/zeus/ui/JSplash.html#setProgress-int-">setProgress</a></span>(int value)</code>
+<div class="block">Sets the progress indicator (values: 0 - 100).</div>
+</td>
+</tr>
+<tr id="i2" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../gr/zeus/ui/JSplash.html#setProgress-int-java.lang.String-">setProgress</a></span>(int value,
+           java.lang.String msg)</code>
+<div class="block">Sets the progress indicator (values: 0 - 100) and a label to print
+ inside the progress bar.</div>
+</td>
+</tr>
+<tr id="i3" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../gr/zeus/ui/JSplash.html#splashOff--">splashOff</a></span>()</code>
+<div class="block">Hides and disposes the splash screen</div>
+</td>
+</tr>
+<tr id="i4" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../gr/zeus/ui/JSplash.html#splashOn--">splashOn</a></span>()</code>
+<div class="block">Displays the splash screen</div>
+</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.javax.swing.JWindow">
+<!--   -->
+</a>
+<h3>Methods inherited from class javax.swing.JWindow</h3>
+<code>addImpl, createRootPane, getAccessibleContext, getContentPane, getGlassPane, getGraphics, getLayeredPane, getRootPane, getTransferHandler, isRootPaneCheckingEnabled, paramString, remove, repaint, setContentPane, setGlassPane, setLayeredPane, setLayout, setRootPane, setRootPaneCheckingEnabled, setTransferHandler, update, windowInit</code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.awt.Window">
+<!--   -->
+</a>
+<h3>Methods inherited from class java.awt.Window</h3>
+<code>addNotify, addPropertyChangeListener, addPropertyChangeListener, addWindowFocusListener, addWindowListener, addWindowStateListener, applyResourceBundle, applyResourceBundle, createBufferStrategy, createBufferStrategy, dispose, getBackground, getBufferStrategy, getFocusableWindowState, getFocusCycleRootAncestor, getFocusOwner, getFocusTraversalKeys, getIconImages, getInputContext, getListeners, getLocale, getModalExclusionType, getMostRecentFocusOwner, getOpacity, getOwnedWindows, g [...]
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.awt.Container">
+<!--   -->
+</a>
+<h3>Methods inherited from class java.awt.Container</h3>
+<code>add, add, add, add, add, addContainerListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getAlignmentX, getAlignmentY, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalPolicy, getInsets, getLayout, getMaximumSize, getMinimumSize, getMousePosition, getPreferredSize, insets, invalidate, isAncestorOf, isFocusCy [...]
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.awt.Component">
+<!--   -->
+</a>
+<h3>Methods inherited from class java.awt.Component</h3>
+<code>action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, contains, createImage, createImage, createVolatileImage, createVolatileImage, disable, disableEvents, dispatchEvent, enable, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyC [...]
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
+<!--   -->
+</a>
+<h3>Methods inherited from class java.lang.Object</h3>
+<code>clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait</code></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="details">
+<ul class="blockList">
+<li class="blockList">
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.detail">
+<!--   -->
+</a>
+<h3>Constructor Detail</h3>
+<a name="JSplash-java.net.URL-boolean-boolean-boolean-java.lang.String-java.awt.Font-java.awt.Color-">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>JSplash</h4>
+<pre>public JSplash(java.net.URL url,
+               boolean progress,
+               boolean messages,
+               boolean percent,
+               java.lang.String versionString,
+               java.awt.Font versionStringFont,
+               java.awt.Color versionStringColor)</pre>
+<div class="block">Constructor for the splash window.
+ <p></div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>url</code> - Image for ImageIcon.</dd>
+<dd><code>progress</code> - Do we want a progress bar at all?</dd>
+<dd><code>messages</code> - If we want a progress bar, do we want to
+                              display messages inside the progress bar?</dd>
+<dd><code>percent</code> - If we want a progress bar, do we want to
+                              display the percent?</dd>
+<dd><code>versionString</code> - If null no string is displayed on the
+                              bottom-right of the splash window.</dd>
+<dd><code>versionStringFont</code> - Font for version string, if null default.</dd>
+<dd><code>versionStringColor</code> - Color for version string, if null default.
+ <p>
+ <b>NOTE:</b> Use only one flag for: messages / percent
+ (one or the other, NOT both).</dd>
+</dl>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ============ METHOD DETAIL ========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.detail">
+<!--   -->
+</a>
+<h3>Method Detail</h3>
+<a name="splashOn--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>splashOn</h4>
+<pre>public void splashOn()</pre>
+<div class="block">Displays the splash screen</div>
+</li>
+</ul>
+<a name="splashOff--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>splashOff</h4>
+<pre>public void splashOff()</pre>
+<div class="block">Hides and disposes the splash screen</div>
+</li>
+</ul>
+<a name="setProgress-int-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setProgress</h4>
+<pre>public void setProgress(int value)</pre>
+<div class="block">Sets the progress indicator (values: 0 - 100).
+ <p></div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>value</code> - The progress indicator value.</dd>
+</dl>
+</li>
+</ul>
+<a name="setProgress-int-java.lang.String-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setProgress</h4>
+<pre>public void setProgress(int value,
+                        java.lang.String msg)</pre>
+<div class="block">Sets the progress indicator (values: 0 - 100) and a label to print
+ inside the progress bar.
+ <p></div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>value</code> - The progress indicator value.</dd>
+<dd><code>msg</code> - The message to print.</dd>
+</dl>
+</li>
+</ul>
+<a name="getProgressBar--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>getProgressBar</h4>
+<pre>public final javax.swing.JProgressBar getProgressBar()</pre>
+<div class="block">Get the progress bar for custom usage.
+ <p></div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>The progress bar.</dd>
+</dl>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+<!-- ========= END OF CLASS DATA ========= -->
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../index-all.html">Index</a></li>
+<li><a href="../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../gr/zeus/ui/JMessage.JMessageButtonEnum.html" title="enum in gr.zeus.ui"><span class="typeNameLink">Prev Class</span></a></li>
+<li><a href="../../../gr/zeus/ui/JSplashLabel.html" title="class in gr.zeus.ui"><span class="typeNameLink">Next Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../index.html?gr/zeus/ui/JSplash.html" target="_top">Frames</a></li>
+<li><a href="JSplash.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary: </li>
+<li><a href="#nested.classes.inherited.from.class.javax.swing.JWindow">Nested</a> | </li>
+<li><a href="#fields.inherited.from.class.javax.swing.JWindow">Field</a> | </li>
+<li><a href="#constructor.summary">Constr</a> | </li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail: </li>
+<li>Field | </li>
+<li><a href="#constructor.detail">Constr</a> | </li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+</body>
+</html>
diff --git a/doc/api/gr/zeus/ui/JSplashLabel.html b/doc/api/gr/zeus/ui/JSplashLabel.html
new file mode 100644
index 0000000..fe24f28
--- /dev/null
+++ b/doc/api/gr/zeus/ui/JSplashLabel.html
@@ -0,0 +1,438 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc (1.8.0_05) on Sat Jun 07 12:11:35 EEST 2014 -->
+<title>JSplashLabel</title>
+<meta name="date" content="2014-06-07">
+<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="JSplashLabel";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = {"i0":10};
+var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
+var altColor = "altColor";
+var rowColor = "rowColor";
+var tableTab = "tableTab";
+var activeTableTab = "activeTableTab";
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../index-all.html">Index</a></li>
+<li><a href="../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../gr/zeus/ui/JSplash.html" title="class in gr.zeus.ui"><span class="typeNameLink">Prev Class</span></a></li>
+<li><a href="../../../gr/zeus/ui/OutLookToolBar.html" title="class in gr.zeus.ui"><span class="typeNameLink">Next Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../index.html?gr/zeus/ui/JSplashLabel.html" target="_top">Frames</a></li>
+<li><a href="JSplashLabel.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary: </li>
+<li><a href="#nested.classes.inherited.from.class.javax.swing.JLabel">Nested</a> | </li>
+<li><a href="#fields.inherited.from.class.javax.swing.JLabel">Field</a> | </li>
+<li><a href="#constructor.summary">Constr</a> | </li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail: </li>
+<li>Field | </li>
+<li><a href="#constructor.detail">Constr</a> | </li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="subTitle">gr.zeus.ui</div>
+<h2 title="Class JSplashLabel" class="title">Class JSplashLabel</h2>
+</div>
+<div class="contentContainer">
+<ul class="inheritance">
+<li>java.lang.Object</li>
+<li>
+<ul class="inheritance">
+<li>java.awt.Component</li>
+<li>
+<ul class="inheritance">
+<li>java.awt.Container</li>
+<li>
+<ul class="inheritance">
+<li>javax.swing.JComponent</li>
+<li>
+<ul class="inheritance">
+<li>javax.swing.JLabel</li>
+<li>
+<ul class="inheritance">
+<li>gr.zeus.ui.JSplashLabel</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<dl>
+<dt>All Implemented Interfaces:</dt>
+<dd>java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, javax.accessibility.Accessible, javax.swing.SwingConstants</dd>
+</dl>
+<hr>
+<br>
+<pre>public final class <span class="typeNameLabel">JSplashLabel</span>
+extends javax.swing.JLabel</pre>
+<div class="block">Extends JLabel to provide support for custom text drawing inside image used
+ for JSplash component.
+ <p></div>
+<dl>
+<dt><span class="simpleTagLabel">Since:</span></dt>
+<dd>1.06</dd>
+<dt><span class="simpleTagLabel">Author:</span></dt>
+<dd>Gregory Kotsaftis</dd>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../serialized-form.html#gr.zeus.ui.JSplashLabel">Serialized Form</a></dd>
+</dl>
+</li>
+</ul>
+</div>
+<div class="summary">
+<ul class="blockList">
+<li class="blockList">
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="nested.class.summary">
+<!--   -->
+</a>
+<h3>Nested Class Summary</h3>
+<ul class="blockList">
+<li class="blockList"><a name="nested.classes.inherited.from.class.javax.swing.JLabel">
+<!--   -->
+</a>
+<h3>Nested classes/interfaces inherited from class javax.swing.JLabel</h3>
+<code>javax.swing.JLabel.AccessibleJLabel</code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="nested.classes.inherited.from.class.javax.swing.JComponent">
+<!--   -->
+</a>
+<h3>Nested classes/interfaces inherited from class javax.swing.JComponent</h3>
+<code>javax.swing.JComponent.AccessibleJComponent</code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="nested.classes.inherited.from.class.java.awt.Container">
+<!--   -->
+</a>
+<h3>Nested classes/interfaces inherited from class java.awt.Container</h3>
+<code>java.awt.Container.AccessibleAWTContainer</code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="nested.classes.inherited.from.class.java.awt.Component">
+<!--   -->
+</a>
+<h3>Nested classes/interfaces inherited from class java.awt.Component</h3>
+<code>java.awt.Component.AccessibleAWTComponent, java.awt.Component.BaselineResizeBehavior, java.awt.Component.BltBufferStrategy, java.awt.Component.FlipBufferStrategy</code></li>
+</ul>
+</li>
+</ul>
+<!-- =========== FIELD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field.summary">
+<!--   -->
+</a>
+<h3>Field Summary</h3>
+<ul class="blockList">
+<li class="blockList"><a name="fields.inherited.from.class.javax.swing.JLabel">
+<!--   -->
+</a>
+<h3>Fields inherited from class javax.swing.JLabel</h3>
+<code>labelFor</code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="fields.inherited.from.class.javax.swing.JComponent">
+<!--   -->
+</a>
+<h3>Fields inherited from class javax.swing.JComponent</h3>
+<code>listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW</code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="fields.inherited.from.class.java.awt.Component">
+<!--   -->
+</a>
+<h3>Fields inherited from class java.awt.Component</h3>
+<code>accessibleContext, BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT</code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="fields.inherited.from.class.javax.swing.SwingConstants">
+<!--   -->
+</a>
+<h3>Fields inherited from interface javax.swing.SwingConstants</h3>
+<code>BOTTOM, CENTER, EAST, HORIZONTAL, LEADING, LEFT, NEXT, NORTH, NORTH_EAST, NORTH_WEST, PREVIOUS, RIGHT, SOUTH, SOUTH_EAST, SOUTH_WEST, TOP, TRAILING, VERTICAL, WEST</code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="fields.inherited.from.class.java.awt.image.ImageObserver">
+<!--   -->
+</a>
+<h3>Fields inherited from interface java.awt.image.ImageObserver</h3>
+<code>ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH</code></li>
+</ul>
+</li>
+</ul>
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.summary">
+<!--   -->
+</a>
+<h3>Constructor Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
+<caption><span>Constructors</span><span class="tabEnd"> </span></caption>
+<tr>
+<th class="colOne" scope="col">Constructor and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../gr/zeus/ui/JSplashLabel.html#JSplashLabel-java.net.URL-java.lang.String-java.awt.Font-java.awt.Color-">JSplashLabel</a></span>(java.net.URL url,
+            java.lang.String s,
+            java.awt.Font f,
+            java.awt.Color c)</code>
+<div class="block">Constructor.</div>
+</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.summary">
+<!--   -->
+</a>
+<h3>Method Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
+<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd"> </span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd"> </span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd"> </span></span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tr id="i0" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../gr/zeus/ui/JSplashLabel.html#paint-java.awt.Graphics-">paint</a></span>(java.awt.Graphics g)</code>
+<div class="block">Overrides paint in order to draw the version number on the splash screen.</div>
+</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.javax.swing.JLabel">
+<!--   -->
+</a>
+<h3>Methods inherited from class javax.swing.JLabel</h3>
+<code>checkHorizontalKey, checkVerticalKey, getAccessibleContext, getDisabledIcon, getDisplayedMnemonic, getDisplayedMnemonicIndex, getHorizontalAlignment, getHorizontalTextPosition, getIcon, getIconTextGap, getLabelFor, getText, getUI, getUIClassID, getVerticalAlignment, getVerticalTextPosition, imageUpdate, paramString, setDisabledIcon, setDisplayedMnemonic, setDisplayedMnemonic, setDisplayedMnemonicIndex, setHorizontalAlignment, setHorizontalTextPosition, setIcon, setIconTextGap, setL [...]
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.javax.swing.JComponent">
+<!--   -->
+</a>
+<h3>Methods inherited from class javax.swing.JComponent</h3>
+<code>addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBaseline, getBaselineResizeBehavior, getBorder, getBounds, getClientProperty, getComponentGraphics, getComponentPopupMenu, getConditionForKeyStroke, getDebugGraphicsOptions, get [...]
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.awt.Container">
+<!--   -->
+</a>
+<h3>Methods inherited from class java.awt.Container</h3>
+<code>add, add, add, add, add, addContainerListener, addImpl, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, getMousePosition, insets, invalidate, isAncestorOf, isFocusCycleRo [...]
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.awt.Component">
+<!--   -->
+</a>
+<h3>Methods inherited from class java.awt.Component</h3>
+<code>action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, createImage, createImage, createVolatileImage, createVolatileImage, disableEvents, dispatchEvent, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange,  [...]
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
+<!--   -->
+</a>
+<h3>Methods inherited from class java.lang.Object</h3>
+<code>clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait</code></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="details">
+<ul class="blockList">
+<li class="blockList">
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.detail">
+<!--   -->
+</a>
+<h3>Constructor Detail</h3>
+<a name="JSplashLabel-java.net.URL-java.lang.String-java.awt.Font-java.awt.Color-">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>JSplashLabel</h4>
+<pre>public JSplashLabel(java.net.URL url,
+                    java.lang.String s,
+                    java.awt.Font f,
+                    java.awt.Color c)</pre>
+<div class="block">Constructor.
+ <p></div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>url</code> - The location of the image (<b>it cannot be null</b>).</dd>
+<dd><code>s</code> - The string to draw (can be null).</dd>
+<dd><code>f</code> - The font to use (can be null).</dd>
+<dd><code>c</code> - The color to use (can be null).</dd>
+</dl>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ============ METHOD DETAIL ========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.detail">
+<!--   -->
+</a>
+<h3>Method Detail</h3>
+<a name="paint-java.awt.Graphics-">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>paint</h4>
+<pre>public void paint(java.awt.Graphics g)</pre>
+<div class="block">Overrides paint in order to draw the version number on the splash screen.
+ <p></div>
+<dl>
+<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
+<dd><code>paint</code> in class <code>javax.swing.JComponent</code></dd>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>g</code> - The graphics context to use.</dd>
+</dl>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+<!-- ========= END OF CLASS DATA ========= -->
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../index-all.html">Index</a></li>
+<li><a href="../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../gr/zeus/ui/JSplash.html" title="class in gr.zeus.ui"><span class="typeNameLink">Prev Class</span></a></li>
+<li><a href="../../../gr/zeus/ui/OutLookToolBar.html" title="class in gr.zeus.ui"><span class="typeNameLink">Next Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../index.html?gr/zeus/ui/JSplashLabel.html" target="_top">Frames</a></li>
+<li><a href="JSplashLabel.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary: </li>
+<li><a href="#nested.classes.inherited.from.class.javax.swing.JLabel">Nested</a> | </li>
+<li><a href="#fields.inherited.from.class.javax.swing.JLabel">Field</a> | </li>
+<li><a href="#constructor.summary">Constr</a> | </li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail: </li>
+<li>Field | </li>
+<li><a href="#constructor.detail">Constr</a> | </li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+</body>
+</html>
diff --git a/doc/api/gr/zeus/ui/OutLookToolBar.html b/doc/api/gr/zeus/ui/OutLookToolBar.html
new file mode 100644
index 0000000..723cc09
--- /dev/null
+++ b/doc/api/gr/zeus/ui/OutLookToolBar.html
@@ -0,0 +1,252 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc (1.8.0_05) on Sat Jun 07 12:11:35 EEST 2014 -->
+<title>OutLookToolBar</title>
+<meta name="date" content="2014-06-07">
+<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="OutLookToolBar";
+        }
+    }
+    catch(err) {
+    }
+//-->
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../index-all.html">Index</a></li>
+<li><a href="../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../gr/zeus/ui/JSplashLabel.html" title="class in gr.zeus.ui"><span class="typeNameLink">Prev Class</span></a></li>
+<li><a href="../../../gr/zeus/ui/SingleAppInstance.html" title="class in gr.zeus.ui"><span class="typeNameLink">Next Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../index.html?gr/zeus/ui/OutLookToolBar.html" target="_top">Frames</a></li>
+<li><a href="OutLookToolBar.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary: </li>
+<li>Nested | </li>
+<li>Field | </li>
+<li><a href="#constructor.summary">Constr</a> | </li>
+<li><a href="#methods.inherited.from.class.java.lang.Object">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail: </li>
+<li>Field | </li>
+<li><a href="#constructor.detail">Constr</a> | </li>
+<li>Method</li>
+</ul>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="subTitle">gr.zeus.ui</div>
+<h2 title="Class OutLookToolBar" class="title">Class OutLookToolBar</h2>
+</div>
+<div class="contentContainer">
+<ul class="inheritance">
+<li>java.lang.Object</li>
+<li>
+<ul class="inheritance">
+<li>gr.zeus.ui.OutLookToolBar</li>
+</ul>
+</li>
+</ul>
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<hr>
+<br>
+<pre>public final class <span class="typeNameLabel">OutLookToolBar</span>
+extends java.lang.Object</pre>
+<div class="block">Takes a simple <code>JToolBar</code> and transforms it into a
+ microsoft outlook like toolbar.
+ <p></div>
+<dl>
+<dt><span class="simpleTagLabel">Since:</span></dt>
+<dd>1.04</dd>
+<dt><span class="simpleTagLabel">Author:</span></dt>
+<dd>Gregory Kotsaftis</dd>
+</dl>
+</li>
+</ul>
+</div>
+<div class="summary">
+<ul class="blockList">
+<li class="blockList">
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.summary">
+<!--   -->
+</a>
+<h3>Constructor Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
+<caption><span>Constructors</span><span class="tabEnd"> </span></caption>
+<tr>
+<th class="colOne" scope="col">Constructor and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../gr/zeus/ui/OutLookToolBar.html#OutLookToolBar-javax.swing.JToolBar-">OutLookToolBar</a></span>(javax.swing.JToolBar t)</code>
+<div class="block">Constructor.</div>
+</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.summary">
+<!--   -->
+</a>
+<h3>Method Summary</h3>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
+<!--   -->
+</a>
+<h3>Methods inherited from class java.lang.Object</h3>
+<code>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</code></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="details">
+<ul class="blockList">
+<li class="blockList">
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.detail">
+<!--   -->
+</a>
+<h3>Constructor Detail</h3>
+<a name="OutLookToolBar-javax.swing.JToolBar-">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>OutLookToolBar</h4>
+<pre>public OutLookToolBar(javax.swing.JToolBar t)</pre>
+<div class="block">Constructor.
+ <p></div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>t</code> - The <code>JToolBar</code>.</dd>
+</dl>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+<!-- ========= END OF CLASS DATA ========= -->
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../index-all.html">Index</a></li>
+<li><a href="../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../gr/zeus/ui/JSplashLabel.html" title="class in gr.zeus.ui"><span class="typeNameLink">Prev Class</span></a></li>
+<li><a href="../../../gr/zeus/ui/SingleAppInstance.html" title="class in gr.zeus.ui"><span class="typeNameLink">Next Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../index.html?gr/zeus/ui/OutLookToolBar.html" target="_top">Frames</a></li>
+<li><a href="OutLookToolBar.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary: </li>
+<li>Nested | </li>
+<li>Field | </li>
+<li><a href="#constructor.summary">Constr</a> | </li>
+<li><a href="#methods.inherited.from.class.java.lang.Object">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail: </li>
+<li>Field | </li>
+<li><a href="#constructor.detail">Constr</a> | </li>
+<li>Method</li>
+</ul>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+</body>
+</html>
diff --git a/doc/api/gr/zeus/ui/SingleAppInstance.html b/doc/api/gr/zeus/ui/SingleAppInstance.html
new file mode 100644
index 0000000..3d89c9d
--- /dev/null
+++ b/doc/api/gr/zeus/ui/SingleAppInstance.html
@@ -0,0 +1,372 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc (1.8.0_05) on Sat Jun 07 12:11:35 EEST 2014 -->
+<title>SingleAppInstance</title>
+<meta name="date" content="2014-06-07">
+<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="SingleAppInstance";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = {"i0":9,"i1":9,"i2":10,"i3":10,"i4":10,"i5":10};
+var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
+var altColor = "altColor";
+var rowColor = "rowColor";
+var tableTab = "tableTab";
+var activeTableTab = "activeTableTab";
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../index-all.html">Index</a></li>
+<li><a href="../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../gr/zeus/ui/OutLookToolBar.html" title="class in gr.zeus.ui"><span class="typeNameLink">Prev Class</span></a></li>
+<li>Next Class</li>
+</ul>
+<ul class="navList">
+<li><a href="../../../index.html?gr/zeus/ui/SingleAppInstance.html" target="_top">Frames</a></li>
+<li><a href="SingleAppInstance.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary: </li>
+<li>Nested | </li>
+<li>Field | </li>
+<li>Constr | </li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail: </li>
+<li>Field | </li>
+<li>Constr | </li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="subTitle">gr.zeus.ui</div>
+<h2 title="Class SingleAppInstance" class="title">Class SingleAppInstance</h2>
+</div>
+<div class="contentContainer">
+<ul class="inheritance">
+<li>java.lang.Object</li>
+<li>
+<ul class="inheritance">
+<li>gr.zeus.ui.SingleAppInstance</li>
+</ul>
+</li>
+</ul>
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<hr>
+<br>
+<pre>public final class <span class="typeNameLabel">SingleAppInstance</span>
+extends java.lang.Object</pre>
+<div class="block">This helper component provides a simple solution to the multiple applications
+ instances problem. Just invoke <code>onInit()</code> at your application's
+ startup and <code>onExit()</code> at your application's shutdown and that's
+ all there is to it. <code>SingleAppInstance</code> creates and locks a file
+ within the startup directory so if anyone is to execute your application
+ again the second <code>onInit()</code> call fails with a message.
+ The <code>onExit()</code> method unlocks and deletes the file.
+ If <code>m_reportPopup</code> is true, a popup window is displayed for the
+ user to take action, else the user is informed via <code>stderr</code>.
+ If you wish to change the look and feel of the popup window invoke
+ <code>SingleAppInstance</code> after setting the look and feel inside your
+ application. If you wish to translate the messages for this component create
+ a new property file for your locale and place it inside
+ <b><code>/gr/zeus/</code></b> where the default
+ <b>"singleappinstance.properties"</b> resides.
+ <p></div>
+<dl>
+<dt><span class="simpleTagLabel">Since:</span></dt>
+<dd>1.05</dd>
+<dt><span class="simpleTagLabel">Author:</span></dt>
+<dd>Gregory Kotsaftis</dd>
+</dl>
+</li>
+</ul>
+</div>
+<div class="summary">
+<ul class="blockList">
+<li class="blockList">
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.summary">
+<!--   -->
+</a>
+<h3>Method Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
+<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd"> </span></span><span id="t1" class="tableTab"><span><a href="javascript:show(1);">Static Methods</a></span><span class="tabEnd"> </span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd"> </span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd [...]
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tr id="i0" class="altColor">
+<td class="colFirst"><code>static <a href="../../../gr/zeus/ui/SingleAppInstance.html" title="class in gr.zeus.ui">SingleAppInstance</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../gr/zeus/ui/SingleAppInstance.html#getInstance--">getInstance</a></span>()</code>
+<div class="block">This method returns the single instance of this class.</div>
+</td>
+</tr>
+<tr id="i1" class="rowColor">
+<td class="colFirst"><code>static <a href="../../../gr/zeus/ui/SingleAppInstance.html" title="class in gr.zeus.ui">SingleAppInstance</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../gr/zeus/ui/SingleAppInstance.html#getInstance-java.lang.String-">getInstance</a></span>(java.lang.String filename)</code>
+<div class="block">This method returns the single instance of this class.</div>
+</td>
+</tr>
+<tr id="i2" class="altColor">
+<td class="colFirst"><code>boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../gr/zeus/ui/SingleAppInstance.html#getReportPopup--">getReportPopup</a></span>()</code>
+<div class="block">Gets whether to report via a popup or via <code>stderr</code>.</div>
+</td>
+</tr>
+<tr id="i3" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../gr/zeus/ui/SingleAppInstance.html#onExit--">onExit</a></span>()</code>
+<div class="block">Release the file lock and delete the file.</div>
+</td>
+</tr>
+<tr id="i4" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../gr/zeus/ui/SingleAppInstance.html#onInit--">onInit</a></span>()</code>
+<div class="block">Creates a file and obtains a lock.</div>
+</td>
+</tr>
+<tr id="i5" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../gr/zeus/ui/SingleAppInstance.html#setReportPopup-boolean-">setReportPopup</a></span>(boolean f)</code>
+<div class="block">Sets whether to report via a popup or via <code>stderr</code>.</div>
+</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
+<!--   -->
+</a>
+<h3>Methods inherited from class java.lang.Object</h3>
+<code>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</code></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="details">
+<ul class="blockList">
+<li class="blockList">
+<!-- ============ METHOD DETAIL ========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.detail">
+<!--   -->
+</a>
+<h3>Method Detail</h3>
+<a name="getInstance--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getInstance</h4>
+<pre>public static <a href="../../../gr/zeus/ui/SingleAppInstance.html" title="class in gr.zeus.ui">SingleAppInstance</a> getInstance()</pre>
+<div class="block">This method returns the single instance of this class.
+ <p></div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>The single instance of this class.</dd>
+</dl>
+</li>
+</ul>
+<a name="getInstance-java.lang.String-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getInstance</h4>
+<pre>public static <a href="../../../gr/zeus/ui/SingleAppInstance.html" title="class in gr.zeus.ui">SingleAppInstance</a> getInstance(java.lang.String filename)</pre>
+<div class="block">This method returns the single instance of this class.
+ Uses the filename parameter instead of default filename.
+ <p></div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>filename</code> - The filename to create and lock, should be unique and
+                  within current folder.
+ <p></dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>The single instance of this class.</dd>
+</dl>
+</li>
+</ul>
+<a name="onInit--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>onInit</h4>
+<pre>public void onInit()</pre>
+<div class="block">Creates a file and obtains a lock. If the file exists or
+ there is any error creating it this method invokes
+ <code>System.exit()</code>. Should be invoked <b>ONCE</b>
+ inside <code>main()</code> in your application.</div>
+</li>
+</ul>
+<a name="onExit--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>onExit</h4>
+<pre>public void onExit()</pre>
+<div class="block">Release the file lock and delete the file.
+ Should be invoked <b>ONCE</b> just before calling
+ <code>System.exit()</code> on your application.</div>
+</li>
+</ul>
+<a name="getReportPopup--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getReportPopup</h4>
+<pre>public boolean getReportPopup()</pre>
+<div class="block">Gets whether to report via a popup or via <code>stderr</code>.
+ <p></div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>If <code>true</code>, a popup window is displayed,
+          else the user is informed via <code>stderr</code>.</dd>
+</dl>
+</li>
+</ul>
+<a name="setReportPopup-boolean-">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>setReportPopup</h4>
+<pre>public void setReportPopup(boolean f)</pre>
+<div class="block">Sets whether to report via a popup or via <code>stderr</code>.
+ <p></div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>f</code> - If <code>true</code>, via a popup window,
+              else via <code>stderr</code>.</dd>
+</dl>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+<!-- ========= END OF CLASS DATA ========= -->
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../index-all.html">Index</a></li>
+<li><a href="../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../gr/zeus/ui/OutLookToolBar.html" title="class in gr.zeus.ui"><span class="typeNameLink">Prev Class</span></a></li>
+<li>Next Class</li>
+</ul>
+<ul class="navList">
+<li><a href="../../../index.html?gr/zeus/ui/SingleAppInstance.html" target="_top">Frames</a></li>
+<li><a href="SingleAppInstance.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary: </li>
+<li>Nested | </li>
+<li>Field | </li>
+<li>Constr | </li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail: </li>
+<li>Field | </li>
+<li>Constr | </li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+</body>
+</html>
diff --git a/doc/api/gr/zeus/ui/mdi/JInternalFrameComparator.html b/doc/api/gr/zeus/ui/mdi/JInternalFrameComparator.html
new file mode 100644
index 0000000..12d17c3
--- /dev/null
+++ b/doc/api/gr/zeus/ui/mdi/JInternalFrameComparator.html
@@ -0,0 +1,305 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc (1.8.0_05) on Sat Jun 07 12:11:35 EEST 2014 -->
+<title>JInternalFrameComparator</title>
+<meta name="date" content="2014-06-07">
+<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="JInternalFrameComparator";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = {"i0":10};
+var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
+var altColor = "altColor";
+var rowColor = "rowColor";
+var tableTab = "tableTab";
+var activeTableTab = "activeTableTab";
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../index-all.html">Index</a></li>
+<li><a href="../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev Class</li>
+<li><a href="../../../../gr/zeus/ui/mdi/WindowManager.html" title="class in gr.zeus.ui.mdi"><span class="typeNameLink">Next Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../index.html?gr/zeus/ui/mdi/JInternalFrameComparator.html" target="_top">Frames</a></li>
+<li><a href="JInternalFrameComparator.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary: </li>
+<li>Nested | </li>
+<li>Field | </li>
+<li><a href="#constructor.summary">Constr</a> | </li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail: </li>
+<li>Field | </li>
+<li><a href="#constructor.detail">Constr</a> | </li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="subTitle">gr.zeus.ui.mdi</div>
+<h2 title="Class JInternalFrameComparator" class="title">Class JInternalFrameComparator</h2>
+</div>
+<div class="contentContainer">
+<ul class="inheritance">
+<li>java.lang.Object</li>
+<li>
+<ul class="inheritance">
+<li>gr.zeus.ui.mdi.JInternalFrameComparator</li>
+</ul>
+</li>
+</ul>
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<dl>
+<dt>All Implemented Interfaces:</dt>
+<dd>java.util.Comparator<javax.swing.JInternalFrame></dd>
+</dl>
+<hr>
+<br>
+<pre>public final class <span class="typeNameLabel">JInternalFrameComparator</span>
+extends java.lang.Object
+implements java.util.Comparator<javax.swing.JInternalFrame></pre>
+<div class="block">A simple comparator for <code>JInternalFrames</code>, based on their title.
+ <p></div>
+<dl>
+<dt><span class="simpleTagLabel">Since:</span></dt>
+<dd>1.04</dd>
+<dt><span class="simpleTagLabel">Author:</span></dt>
+<dd>Gregory Kotsaftis</dd>
+</dl>
+</li>
+</ul>
+</div>
+<div class="summary">
+<ul class="blockList">
+<li class="blockList">
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.summary">
+<!--   -->
+</a>
+<h3>Constructor Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
+<caption><span>Constructors</span><span class="tabEnd"> </span></caption>
+<tr>
+<th class="colOne" scope="col">Constructor and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/mdi/JInternalFrameComparator.html#JInternalFrameComparator--">JInternalFrameComparator</a></span>()</code> </td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.summary">
+<!--   -->
+</a>
+<h3>Method Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
+<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd"> </span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd"> </span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd"> </span></span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tr id="i0" class="altColor">
+<td class="colFirst"><code>int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/mdi/JInternalFrameComparator.html#compare-javax.swing.JInternalFrame-javax.swing.JInternalFrame-">compare</a></span>(javax.swing.JInternalFrame o1,
+       javax.swing.JInternalFrame o2)</code>
+<div class="block">Compares internal frames based on their title.</div>
+</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
+<!--   -->
+</a>
+<h3>Methods inherited from class java.lang.Object</h3>
+<code>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.util.Comparator">
+<!--   -->
+</a>
+<h3>Methods inherited from interface java.util.Comparator</h3>
+<code>comparing, comparing, comparingDouble, comparingInt, comparingLong, equals, naturalOrder, nullsFirst, nullsLast, reversed, reverseOrder, thenComparing, thenComparing, thenComparing, thenComparingDouble, thenComparingInt, thenComparingLong</code></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="details">
+<ul class="blockList">
+<li class="blockList">
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.detail">
+<!--   -->
+</a>
+<h3>Constructor Detail</h3>
+<a name="JInternalFrameComparator--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>JInternalFrameComparator</h4>
+<pre>public JInternalFrameComparator()</pre>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ============ METHOD DETAIL ========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.detail">
+<!--   -->
+</a>
+<h3>Method Detail</h3>
+<a name="compare-javax.swing.JInternalFrame-javax.swing.JInternalFrame-">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>compare</h4>
+<pre>public int compare(javax.swing.JInternalFrame o1,
+                   javax.swing.JInternalFrame o2)</pre>
+<div class="block">Compares internal frames based on their title.
+ <p></div>
+<dl>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code>compare</code> in interface <code>java.util.Comparator<javax.swing.JInternalFrame></code></dd>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>o1</code> - First frame.</dd>
+<dd><code>o2</code> - Second frame.
+ <p></dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>The comparison.</dd>
+</dl>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+<!-- ========= END OF CLASS DATA ========= -->
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../index-all.html">Index</a></li>
+<li><a href="../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev Class</li>
+<li><a href="../../../../gr/zeus/ui/mdi/WindowManager.html" title="class in gr.zeus.ui.mdi"><span class="typeNameLink">Next Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../index.html?gr/zeus/ui/mdi/JInternalFrameComparator.html" target="_top">Frames</a></li>
+<li><a href="JInternalFrameComparator.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary: </li>
+<li>Nested | </li>
+<li>Field | </li>
+<li><a href="#constructor.summary">Constr</a> | </li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail: </li>
+<li>Field | </li>
+<li><a href="#constructor.detail">Constr</a> | </li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+</body>
+</html>
diff --git a/doc/api/gr/zeus/ui/mdi/WindowManager.html b/doc/api/gr/zeus/ui/mdi/WindowManager.html
new file mode 100644
index 0000000..b135531
--- /dev/null
+++ b/doc/api/gr/zeus/ui/mdi/WindowManager.html
@@ -0,0 +1,816 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc (1.8.0_05) on Sat Jun 07 12:11:35 EEST 2014 -->
+<title>WindowManager</title>
+<meta name="date" content="2014-06-07">
+<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="WindowManager";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":10,"i19":10,"i20":10,"i21":10,"i22":10,"i23":10,"i24":10,"i25":10,"i26":10,"i27":10};
+var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
+var altColor = "altColor";
+var rowColor = "rowColor";
+var tableTab = "tableTab";
+var activeTableTab = "activeTableTab";
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../index-all.html">Index</a></li>
+<li><a href="../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../gr/zeus/ui/mdi/JInternalFrameComparator.html" title="class in gr.zeus.ui.mdi"><span class="typeNameLink">Prev Class</span></a></li>
+<li>Next Class</li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../index.html?gr/zeus/ui/mdi/WindowManager.html" target="_top">Frames</a></li>
+<li><a href="WindowManager.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary: </li>
+<li>Nested | </li>
+<li>Field | </li>
+<li><a href="#constructor.summary">Constr</a> | </li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail: </li>
+<li>Field | </li>
+<li><a href="#constructor.detail">Constr</a> | </li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="subTitle">gr.zeus.ui.mdi</div>
+<h2 title="Class WindowManager" class="title">Class WindowManager</h2>
+</div>
+<div class="contentContainer">
+<ul class="inheritance">
+<li>java.lang.Object</li>
+<li>
+<ul class="inheritance">
+<li>gr.zeus.ui.mdi.WindowManager</li>
+</ul>
+</li>
+</ul>
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<hr>
+<br>
+<pre>public final class <span class="typeNameLabel">WindowManager</span>
+extends java.lang.Object</pre>
+<div class="block">A JDesktop window manager.
+ <p>
+ Major functions implemented:
+ <ul>
+ <li>close()</li>
+ <li>closeAll()</li>
+ <li>minimize()</li>
+ <li>minimizeAll()</li>
+ <li>maximize()</li>
+ <li>maximizeAll()</li>
+ <li>restore()</li>
+ <li>restoreAll()</li>
+ <li>hide()</li>
+ <li>hideAll()</li>
+ <li>selectNext()</li>
+ <li>selectPrevious()</li>
+ <li>reset()</li>
+ <li>resetAll()</li>
+ <li>tileHorizontally()</li>
+ <li>tileVertically()</li>
+ <li>tile()</li>
+ <li>cascade()</li>
+ </ul>
+ <p></div>
+<dl>
+<dt><span class="simpleTagLabel">Since:</span></dt>
+<dd>1.04</dd>
+<dt><span class="simpleTagLabel">Author:</span></dt>
+<dd>Gregory Kotsaftis</dd>
+</dl>
+</li>
+</ul>
+</div>
+<div class="summary">
+<ul class="blockList">
+<li class="blockList">
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.summary">
+<!--   -->
+</a>
+<h3>Constructor Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
+<caption><span>Constructors</span><span class="tabEnd"> </span></caption>
+<tr>
+<th class="colOne" scope="col">Constructor and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/mdi/WindowManager.html#WindowManager-javax.swing.JDesktopPane-javax.swing.JMenu-">WindowManager</a></span>(javax.swing.JDesktopPane d,
+             javax.swing.JMenu windowsMenu)</code>
+<div class="block">Constructor.</div>
+</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.summary">
+<!--   -->
+</a>
+<h3>Method Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
+<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd"> </span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd"> </span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd"> </span></span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tr id="i0" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/mdi/WindowManager.html#cascade--">cascade</a></span>()</code>
+<div class="block">Cascades all frames.</div>
+</td>
+</tr>
+<tr id="i1" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/mdi/WindowManager.html#close--">close</a></span>()</code>
+<div class="block">Closes the selected frame if it is closable.</div>
+</td>
+</tr>
+<tr id="i2" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/mdi/WindowManager.html#closeAll--">closeAll</a></span>()</code>
+<div class="block">Closes all frames that are closable.</div>
+</td>
+</tr>
+<tr id="i3" class="rowColor">
+<td class="colFirst"><code>int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/mdi/WindowManager.html#countFrames--">countFrames</a></span>()</code>
+<div class="block">Counts all frames, even those that are closed with
+ <code>DefaultCloseOperation = HIDE_ON_CLOSE</code></div>
+</td>
+</tr>
+<tr id="i4" class="altColor">
+<td class="colFirst"><code>int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/mdi/WindowManager.html#countVisibleFrames--">countVisibleFrames</a></span>()</code>
+<div class="block">Counts only visible frames.</div>
+</td>
+</tr>
+<tr id="i5" class="rowColor">
+<td class="colFirst"><code>boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/mdi/WindowManager.html#getAutoPositionPolicy--">getAutoPositionPolicy</a></span>()</code>
+<div class="block">Gets the auto position frames policy.</div>
+</td>
+</tr>
+<tr id="i6" class="altColor">
+<td class="colFirst"><code>boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/mdi/WindowManager.html#getClosePolicy--">getClosePolicy</a></span>()</code>
+<div class="block">Gets the close policy.</div>
+</td>
+</tr>
+<tr id="i7" class="rowColor">
+<td class="colFirst"><code>boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/mdi/WindowManager.html#getDeiconifiablePolicy--">getDeiconifiablePolicy</a></span>()</code>
+<div class="block">Gets the de-iconifiable policy.</div>
+</td>
+</tr>
+<tr id="i8" class="altColor">
+<td class="colFirst"><code>boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/mdi/WindowManager.html#getOutlineDragMode--">getOutlineDragMode</a></span>()</code>
+<div class="block">Gets frames' drawing strategy.</div>
+</td>
+</tr>
+<tr id="i9" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/mdi/WindowManager.html#hide--">hide</a></span>()</code>
+<div class="block">Hides a frame.</div>
+</td>
+</tr>
+<tr id="i10" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/mdi/WindowManager.html#hideAll--">hideAll</a></span>()</code>
+<div class="block">Hides all frames.</div>
+</td>
+</tr>
+<tr id="i11" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/mdi/WindowManager.html#maximize--">maximize</a></span>()</code>
+<div class="block">Maximizes the selected frame if it is not already maximized.</div>
+</td>
+</tr>
+<tr id="i12" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/mdi/WindowManager.html#maximizeAll--">maximizeAll</a></span>()</code>
+<div class="block">Maximizes all frames that are not already maximized.</div>
+</td>
+</tr>
+<tr id="i13" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/mdi/WindowManager.html#minimize--">minimize</a></span>()</code>
+<div class="block">Minimizes the selected frame if it is iconifiable.</div>
+</td>
+</tr>
+<tr id="i14" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/mdi/WindowManager.html#minimizeAll--">minimizeAll</a></span>()</code>
+<div class="block">Minimizes all frames that are iconifiable.</div>
+</td>
+</tr>
+<tr id="i15" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/mdi/WindowManager.html#reset--">reset</a></span>()</code>
+<div class="block">Resets the frame to it's original preferred size of its components.</div>
+</td>
+</tr>
+<tr id="i16" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/mdi/WindowManager.html#resetAll--">resetAll</a></span>()</code>
+<div class="block">Resets all frames to their original preferred size of their components.</div>
+</td>
+</tr>
+<tr id="i17" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/mdi/WindowManager.html#restore--">restore</a></span>()</code>
+<div class="block">Restores the selected frame from it's maximized state.</div>
+</td>
+</tr>
+<tr id="i18" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/mdi/WindowManager.html#restoreAll--">restoreAll</a></span>()</code>
+<div class="block">Restores all frames from their maximized state.</div>
+</td>
+</tr>
+<tr id="i19" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/mdi/WindowManager.html#selectNext--">selectNext</a></span>()</code>
+<div class="block">Selects the next internal frame.</div>
+</td>
+</tr>
+<tr id="i20" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/mdi/WindowManager.html#selectPrevious--">selectPrevious</a></span>()</code>
+<div class="block">Selects the previous internal frame.</div>
+</td>
+</tr>
+<tr id="i21" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/mdi/WindowManager.html#setAutoPositionPolicy-boolean-">setAutoPositionPolicy</a></span>(boolean p)</code>
+<div class="block">Sets the auto position frames policy.</div>
+</td>
+</tr>
+<tr id="i22" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/mdi/WindowManager.html#setClosePolicy-boolean-">setClosePolicy</a></span>(boolean p)</code>
+<div class="block">Sets the close policy.</div>
+</td>
+</tr>
+<tr id="i23" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/mdi/WindowManager.html#setDeiconifiablePolicy-boolean-">setDeiconifiablePolicy</a></span>(boolean p)</code>
+<div class="block">Sets de-iconifiable policy.</div>
+</td>
+</tr>
+<tr id="i24" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/mdi/WindowManager.html#setOutlineDragMode-boolean-">setOutlineDragMode</a></span>(boolean outline)</code>
+<div class="block">Selects frames' drawing strategy.</div>
+</td>
+</tr>
+<tr id="i25" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/mdi/WindowManager.html#tile--">tile</a></span>()</code>
+<div class="block">Tiles all windows equally.</div>
+</td>
+</tr>
+<tr id="i26" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/mdi/WindowManager.html#tileHorizontally--">tileHorizontally</a></span>()</code>
+<div class="block">Tiles all windows horizontally.</div>
+</td>
+</tr>
+<tr id="i27" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/mdi/WindowManager.html#tileVertically--">tileVertically</a></span>()</code>
+<div class="block">Tiles all windows vertically.</div>
+</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
+<!--   -->
+</a>
+<h3>Methods inherited from class java.lang.Object</h3>
+<code>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</code></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="details">
+<ul class="blockList">
+<li class="blockList">
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.detail">
+<!--   -->
+</a>
+<h3>Constructor Detail</h3>
+<a name="WindowManager-javax.swing.JDesktopPane-javax.swing.JMenu-">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>WindowManager</h4>
+<pre>public WindowManager(javax.swing.JDesktopPane d,
+                     javax.swing.JMenu windowsMenu)</pre>
+<div class="block">Constructor. Creates a new <code>WindowManager</code> and
+ attaches it to a desktop pane.
+ <p></div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>d</code> - The <code>JDesktopPane</code> instance.</dd>
+<dd><code>windowsMenu</code> - The <code>JMenu</code> instance.</dd>
+</dl>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ============ METHOD DETAIL ========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.detail">
+<!--   -->
+</a>
+<h3>Method Detail</h3>
+<a name="setOutlineDragMode-boolean-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setOutlineDragMode</h4>
+<pre>public void setOutlineDragMode(boolean outline)</pre>
+<div class="block">Selects frames' drawing strategy.
+ <p></div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>outline</code> - <code>true</code> to enable
+                  <code>JDesktopPane.OUTLINE_DRAG_MODE</code>, or
+                  <code>false</code> to enable
+                  <code>JDesktopPane.LIVE_DRAG_MODE</code>.</dd>
+</dl>
+</li>
+</ul>
+<a name="getOutlineDragMode--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getOutlineDragMode</h4>
+<pre>public boolean getOutlineDragMode()</pre>
+<div class="block">Gets frames' drawing strategy.
+ <p></div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd><code>true</code> if desktop's <code>DragMode</code> is
+          <code>JDesktopPane.OUTLINE_DRAG_MODE</code> or
+          <code>false</code> if desktop's <code>DragMode</code> is
+          <code>JDesktopPane.LIVE_DRAG_MODE</code>.</dd>
+</dl>
+</li>
+</ul>
+<a name="setDeiconifiablePolicy-boolean-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setDeiconifiablePolicy</h4>
+<pre>public void setDeiconifiablePolicy(boolean p)</pre>
+<div class="block">Sets de-iconifiable policy. Should we force a frame to de-iconify
+ if it is iconified, during cascade operations?
+ <p></div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>p</code> - <code>true</code> if force, <code>false</code> otherwise.</dd>
+</dl>
+</li>
+</ul>
+<a name="getDeiconifiablePolicy--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getDeiconifiablePolicy</h4>
+<pre>public boolean getDeiconifiablePolicy()</pre>
+<div class="block">Gets the de-iconifiable policy.
+ <p></div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>The de-iconifiable policy.</dd>
+</dl>
+</li>
+</ul>
+<a name="setClosePolicy-boolean-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setClosePolicy</h4>
+<pre>public void setClosePolicy(boolean p)</pre>
+<div class="block">Sets the close policy. Should we do default close operation per frame
+ or force close it?
+ <p></div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>p</code> - <code>true</code> to force close,
+              <code>false</code> do default close operation.</dd>
+</dl>
+</li>
+</ul>
+<a name="getClosePolicy--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getClosePolicy</h4>
+<pre>public boolean getClosePolicy()</pre>
+<div class="block">Gets the close policy.
+ <p></div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd><code>true</code> for force close,
+          <code>false</code> for default close operation.</dd>
+</dl>
+</li>
+</ul>
+<a name="setAutoPositionPolicy-boolean-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setAutoPositionPolicy</h4>
+<pre>public void setAutoPositionPolicy(boolean p)</pre>
+<div class="block">Sets the auto position frames policy. Should we auto position the
+ new frames in the desktop or not?
+ <p></div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>p</code> - <code>true</code> for auto-position,
+              <code>false</code> for none.</dd>
+</dl>
+</li>
+</ul>
+<a name="getAutoPositionPolicy--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getAutoPositionPolicy</h4>
+<pre>public boolean getAutoPositionPolicy()</pre>
+<div class="block">Gets the auto position frames policy.
+ <p></div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>The auto-position policy.</dd>
+</dl>
+</li>
+</ul>
+<a name="countFrames--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>countFrames</h4>
+<pre>public int countFrames()</pre>
+<div class="block">Counts all frames, even those that are closed with
+ <code>DefaultCloseOperation = HIDE_ON_CLOSE</code>
+ <p>
+ <b>NOTE</b>Use this method in order to understand how many
+ "ghost" frames remain within the desktop.
+ <p></div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>The number of frames.</dd>
+</dl>
+</li>
+</ul>
+<a name="countVisibleFrames--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>countVisibleFrames</h4>
+<pre>public int countVisibleFrames()</pre>
+<div class="block">Counts only visible frames.
+ <p></div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>The number of visible frames.</dd>
+</dl>
+</li>
+</ul>
+<a name="close--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>close</h4>
+<pre>public void close()</pre>
+<div class="block">Closes the selected frame if it is closable.</div>
+</li>
+</ul>
+<a name="closeAll--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>closeAll</h4>
+<pre>public void closeAll()</pre>
+<div class="block">Closes all frames that are closable.</div>
+</li>
+</ul>
+<a name="minimize--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>minimize</h4>
+<pre>public void minimize()</pre>
+<div class="block">Minimizes the selected frame if it is iconifiable.</div>
+</li>
+</ul>
+<a name="minimizeAll--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>minimizeAll</h4>
+<pre>public void minimizeAll()</pre>
+<div class="block">Minimizes all frames that are iconifiable.</div>
+</li>
+</ul>
+<a name="restore--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>restore</h4>
+<pre>public void restore()</pre>
+<div class="block">Restores the selected frame from it's maximized state.</div>
+</li>
+</ul>
+<a name="restoreAll--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>restoreAll</h4>
+<pre>public void restoreAll()</pre>
+<div class="block">Restores all frames from their maximized state.</div>
+</li>
+</ul>
+<a name="maximize--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>maximize</h4>
+<pre>public void maximize()</pre>
+<div class="block">Maximizes the selected frame if it is not already maximized.</div>
+</li>
+</ul>
+<a name="maximizeAll--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>maximizeAll</h4>
+<pre>public void maximizeAll()</pre>
+<div class="block">Maximizes all frames that are not already maximized.</div>
+</li>
+</ul>
+<a name="reset--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>reset</h4>
+<pre>public void reset()</pre>
+<div class="block">Resets the frame to it's original preferred size of its components.</div>
+</li>
+</ul>
+<a name="resetAll--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>resetAll</h4>
+<pre>public void resetAll()</pre>
+<div class="block">Resets all frames to their original preferred size of their components.</div>
+</li>
+</ul>
+<a name="hide--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>hide</h4>
+<pre>public void hide()</pre>
+<div class="block">Hides a frame. The hidden frame is added to the menu with
+ disabled-like color.</div>
+</li>
+</ul>
+<a name="hideAll--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>hideAll</h4>
+<pre>public void hideAll()</pre>
+<div class="block">Hides all frames. The hidden frames are added to the menu with
+ disabled-like color.</div>
+</li>
+</ul>
+<a name="selectNext--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>selectNext</h4>
+<pre>public void selectNext()</pre>
+<div class="block">Selects the next internal frame.</div>
+</li>
+</ul>
+<a name="selectPrevious--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>selectPrevious</h4>
+<pre>public void selectPrevious()</pre>
+<div class="block">Selects the previous internal frame.</div>
+</li>
+</ul>
+<a name="cascade--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>cascade</h4>
+<pre>public void cascade()</pre>
+<div class="block">Cascades all frames. If De-iconifiablePolicy is false, minimized frames
+ stay minimized.During cascade, it also sorts frames based on their title.</div>
+</li>
+</ul>
+<a name="tileVertically--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>tileVertically</h4>
+<pre>public void tileVertically()</pre>
+<div class="block">Tiles all windows vertically.</div>
+</li>
+</ul>
+<a name="tileHorizontally--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>tileHorizontally</h4>
+<pre>public void tileHorizontally()</pre>
+<div class="block">Tiles all windows horizontally.</div>
+</li>
+</ul>
+<a name="tile--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>tile</h4>
+<pre>public void tile()</pre>
+<div class="block">Tiles all windows equally.</div>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+<!-- ========= END OF CLASS DATA ========= -->
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../index-all.html">Index</a></li>
+<li><a href="../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../gr/zeus/ui/mdi/JInternalFrameComparator.html" title="class in gr.zeus.ui.mdi"><span class="typeNameLink">Prev Class</span></a></li>
+<li>Next Class</li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../index.html?gr/zeus/ui/mdi/WindowManager.html" target="_top">Frames</a></li>
+<li><a href="WindowManager.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary: </li>
+<li>Nested | </li>
+<li>Field | </li>
+<li><a href="#constructor.summary">Constr</a> | </li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail: </li>
+<li>Field | </li>
+<li><a href="#constructor.detail">Constr</a> | </li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+</body>
+</html>
diff --git a/doc/api/gr/zeus/ui/mdi/package-frame.html b/doc/api/gr/zeus/ui/mdi/package-frame.html
new file mode 100644
index 0000000..503af55
--- /dev/null
+++ b/doc/api/gr/zeus/ui/mdi/package-frame.html
@@ -0,0 +1,21 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc (1.8.0_05) on Sat Jun 07 12:11:35 EEST 2014 -->
+<title>gr.zeus.ui.mdi</title>
+<meta name="date" content="2014-06-07">
+<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../script.js"></script>
+</head>
+<body>
+<h1 class="bar"><a href="../../../../gr/zeus/ui/mdi/package-summary.html" target="classFrame">gr.zeus.ui.mdi</a></h1>
+<div class="indexContainer">
+<h2 title="Classes">Classes</h2>
+<ul title="Classes">
+<li><a href="JInternalFrameComparator.html" title="class in gr.zeus.ui.mdi" target="classFrame">JInternalFrameComparator</a></li>
+<li><a href="WindowManager.html" title="class in gr.zeus.ui.mdi" target="classFrame">WindowManager</a></li>
+</ul>
+</div>
+</body>
+</html>
diff --git a/doc/api/gr/zeus/ui/mdi/package-summary.html b/doc/api/gr/zeus/ui/mdi/package-summary.html
new file mode 100644
index 0000000..f0b408d
--- /dev/null
+++ b/doc/api/gr/zeus/ui/mdi/package-summary.html
@@ -0,0 +1,148 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc (1.8.0_05) on Sat Jun 07 12:11:35 EEST 2014 -->
+<title>gr.zeus.ui.mdi</title>
+<meta name="date" content="2014-06-07">
+<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="gr.zeus.ui.mdi";
+        }
+    }
+    catch(err) {
+    }
+//-->
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../overview-summary.html">Overview</a></li>
+<li class="navBarCell1Rev">Package</li>
+<li>Class</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../index-all.html">Index</a></li>
+<li><a href="../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../gr/zeus/ui/package-summary.html">Prev Package</a></li>
+<li><a href="../../../../gr/zeus/ui/table/package-summary.html">Next Package</a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../index.html?gr/zeus/ui/mdi/package-summary.html" target="_top">Frames</a></li>
+<li><a href="package-summary.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<div class="header">
+<h1 title="Package" class="title">Package gr.zeus.ui.mdi</h1>
+</div>
+<div class="contentContainer">
+<ul class="blockList">
+<li class="blockList">
+<table class="typeSummary" border="0" cellpadding="3" cellspacing="0" summary="Class Summary table, listing classes, and an explanation">
+<caption><span>Class Summary</span><span class="tabEnd"> </span></caption>
+<tr>
+<th class="colFirst" scope="col">Class</th>
+<th class="colLast" scope="col">Description</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colFirst"><a href="../../../../gr/zeus/ui/mdi/JInternalFrameComparator.html" title="class in gr.zeus.ui.mdi">JInternalFrameComparator</a></td>
+<td class="colLast">
+<div class="block">A simple comparator for <code>JInternalFrames</code>, based on their title.</div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><a href="../../../../gr/zeus/ui/mdi/WindowManager.html" title="class in gr.zeus.ui.mdi">WindowManager</a></td>
+<td class="colLast">
+<div class="block">A JDesktop window manager.</div>
+</td>
+</tr>
+</tbody>
+</table>
+</li>
+</ul>
+</div>
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../overview-summary.html">Overview</a></li>
+<li class="navBarCell1Rev">Package</li>
+<li>Class</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../index-all.html">Index</a></li>
+<li><a href="../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../gr/zeus/ui/package-summary.html">Prev Package</a></li>
+<li><a href="../../../../gr/zeus/ui/table/package-summary.html">Next Package</a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../index.html?gr/zeus/ui/mdi/package-summary.html" target="_top">Frames</a></li>
+<li><a href="package-summary.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+</body>
+</html>
diff --git a/doc/api/gr/zeus/ui/mdi/package-tree.html b/doc/api/gr/zeus/ui/mdi/package-tree.html
new file mode 100644
index 0000000..61bdbe7
--- /dev/null
+++ b/doc/api/gr/zeus/ui/mdi/package-tree.html
@@ -0,0 +1,136 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc (1.8.0_05) on Sat Jun 07 12:11:35 EEST 2014 -->
+<title>gr.zeus.ui.mdi Class Hierarchy</title>
+<meta name="date" content="2014-06-07">
+<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="gr.zeus.ui.mdi Class Hierarchy";
+        }
+    }
+    catch(err) {
+    }
+//-->
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li>Class</li>
+<li class="navBarCell1Rev">Tree</li>
+<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../index-all.html">Index</a></li>
+<li><a href="../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../gr/zeus/ui/package-tree.html">Prev</a></li>
+<li><a href="../../../../gr/zeus/ui/table/package-tree.html">Next</a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../index.html?gr/zeus/ui/mdi/package-tree.html" target="_top">Frames</a></li>
+<li><a href="package-tree.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<div class="header">
+<h1 class="title">Hierarchy For Package gr.zeus.ui.mdi</h1>
+<span class="packageHierarchyLabel">Package Hierarchies:</span>
+<ul class="horizontal">
+<li><a href="../../../../overview-tree.html">All Packages</a></li>
+</ul>
+</div>
+<div class="contentContainer">
+<h2 title="Class Hierarchy">Class Hierarchy</h2>
+<ul>
+<li type="circle">java.lang.Object
+<ul>
+<li type="circle">gr.zeus.ui.mdi.<a href="../../../../gr/zeus/ui/mdi/JInternalFrameComparator.html" title="class in gr.zeus.ui.mdi"><span class="typeNameLink">JInternalFrameComparator</span></a> (implements java.util.Comparator<T>)</li>
+<li type="circle">gr.zeus.ui.mdi.<a href="../../../../gr/zeus/ui/mdi/WindowManager.html" title="class in gr.zeus.ui.mdi"><span class="typeNameLink">WindowManager</span></a></li>
+</ul>
+</li>
+</ul>
+</div>
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li>Class</li>
+<li class="navBarCell1Rev">Tree</li>
+<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../index-all.html">Index</a></li>
+<li><a href="../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../gr/zeus/ui/package-tree.html">Prev</a></li>
+<li><a href="../../../../gr/zeus/ui/table/package-tree.html">Next</a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../index.html?gr/zeus/ui/mdi/package-tree.html" target="_top">Frames</a></li>
+<li><a href="package-tree.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+</body>
+</html>
diff --git a/doc/api/gr/zeus/ui/package-frame.html b/doc/api/gr/zeus/ui/package-frame.html
new file mode 100644
index 0000000..1b5f125
--- /dev/null
+++ b/doc/api/gr/zeus/ui/package-frame.html
@@ -0,0 +1,31 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc (1.8.0_05) on Sat Jun 07 12:11:35 EEST 2014 -->
+<title>gr.zeus.ui</title>
+<meta name="date" content="2014-06-07">
+<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../script.js"></script>
+</head>
+<body>
+<h1 class="bar"><a href="../../../gr/zeus/ui/package-summary.html" target="classFrame">gr.zeus.ui</a></h1>
+<div class="indexContainer">
+<h2 title="Classes">Classes</h2>
+<ul title="Classes">
+<li><a href="JConsole.html" title="class in gr.zeus.ui" target="classFrame">JConsole</a></li>
+<li><a href="JConsolePane.html" title="class in gr.zeus.ui" target="classFrame">JConsolePane</a></li>
+<li><a href="JIConsole.html" title="class in gr.zeus.ui" target="classFrame">JIConsole</a></li>
+<li><a href="JMessage.html" title="class in gr.zeus.ui" target="classFrame">JMessage</a></li>
+<li><a href="JSplash.html" title="class in gr.zeus.ui" target="classFrame">JSplash</a></li>
+<li><a href="JSplashLabel.html" title="class in gr.zeus.ui" target="classFrame">JSplashLabel</a></li>
+<li><a href="OutLookToolBar.html" title="class in gr.zeus.ui" target="classFrame">OutLookToolBar</a></li>
+<li><a href="SingleAppInstance.html" title="class in gr.zeus.ui" target="classFrame">SingleAppInstance</a></li>
+</ul>
+<h2 title="Enums">Enums</h2>
+<ul title="Enums">
+<li><a href="JMessage.JMessageButtonEnum.html" title="enum in gr.zeus.ui" target="classFrame">JMessage.JMessageButtonEnum</a></li>
+</ul>
+</div>
+</body>
+</html>
diff --git a/doc/api/gr/zeus/ui/package-summary.html b/doc/api/gr/zeus/ui/package-summary.html
new file mode 100644
index 0000000..3eaaced
--- /dev/null
+++ b/doc/api/gr/zeus/ui/package-summary.html
@@ -0,0 +1,206 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc (1.8.0_05) on Sat Jun 07 12:11:35 EEST 2014 -->
+<title>gr.zeus.ui</title>
+<meta name="date" content="2014-06-07">
+<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="gr.zeus.ui";
+        }
+    }
+    catch(err) {
+    }
+//-->
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../overview-summary.html">Overview</a></li>
+<li class="navBarCell1Rev">Package</li>
+<li>Class</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../index-all.html">Index</a></li>
+<li><a href="../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev Package</li>
+<li><a href="../../../gr/zeus/ui/mdi/package-summary.html">Next Package</a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../index.html?gr/zeus/ui/package-summary.html" target="_top">Frames</a></li>
+<li><a href="package-summary.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<div class="header">
+<h1 title="Package" class="title">Package gr.zeus.ui</h1>
+</div>
+<div class="contentContainer">
+<ul class="blockList">
+<li class="blockList">
+<table class="typeSummary" border="0" cellpadding="3" cellspacing="0" summary="Class Summary table, listing classes, and an explanation">
+<caption><span>Class Summary</span><span class="tabEnd"> </span></caption>
+<tr>
+<th class="colFirst" scope="col">Class</th>
+<th class="colLast" scope="col">Description</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colFirst"><a href="../../../gr/zeus/ui/JConsole.html" title="class in gr.zeus.ui">JConsole</a></td>
+<td class="colLast">
+<div class="block">The JFrame edition of <b>JConsolePane</b>.<br>
+ <a href="../../../gr/zeus/ui/JConsolePane.html" title="class in gr.zeus.ui"><code>JConsolePane</code></a></div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><a href="../../../gr/zeus/ui/JConsolePane.html" title="class in gr.zeus.ui">JConsolePane</a></td>
+<td class="colLast">
+<div class="block">A java console to replace the command line window.</div>
+</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><a href="../../../gr/zeus/ui/JIConsole.html" title="class in gr.zeus.ui">JIConsole</a></td>
+<td class="colLast">
+<div class="block">The JInternalFrame edition of <b>JConsolePane</b>.<br>
+ <a href="../../../gr/zeus/ui/JConsolePane.html" title="class in gr.zeus.ui"><code>JConsolePane</code></a></div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><a href="../../../gr/zeus/ui/JMessage.html" title="class in gr.zeus.ui">JMessage</a></td>
+<td class="colLast">
+<div class="block">This component is similar to <code>javax.swing.JOptionPane</code> component.</div>
+</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><a href="../../../gr/zeus/ui/JSplash.html" title="class in gr.zeus.ui">JSplash</a></td>
+<td class="colLast">
+<div class="block">A simple, yet nice splash screen implementation for java applications.</div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><a href="../../../gr/zeus/ui/JSplashLabel.html" title="class in gr.zeus.ui">JSplashLabel</a></td>
+<td class="colLast">
+<div class="block">Extends JLabel to provide support for custom text drawing inside image used
+ for JSplash component.</div>
+</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><a href="../../../gr/zeus/ui/OutLookToolBar.html" title="class in gr.zeus.ui">OutLookToolBar</a></td>
+<td class="colLast">
+<div class="block">Takes a simple <code>JToolBar</code> and transforms it into a
+ microsoft outlook like toolbar.</div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><a href="../../../gr/zeus/ui/SingleAppInstance.html" title="class in gr.zeus.ui">SingleAppInstance</a></td>
+<td class="colLast">
+<div class="block">This helper component provides a simple solution to the multiple applications
+ instances problem.</div>
+</td>
+</tr>
+</tbody>
+</table>
+</li>
+<li class="blockList">
+<table class="typeSummary" border="0" cellpadding="3" cellspacing="0" summary="Enum Summary table, listing enums, and an explanation">
+<caption><span>Enum Summary</span><span class="tabEnd"> </span></caption>
+<tr>
+<th class="colFirst" scope="col">Enum</th>
+<th class="colLast" scope="col">Description</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colFirst"><a href="../../../gr/zeus/ui/JMessage.JMessageButtonEnum.html" title="enum in gr.zeus.ui">JMessage.JMessageButtonEnum</a></td>
+<td class="colLast">
+<div class="block">Enum with all the supported buttons of the dialog.</div>
+</td>
+</tr>
+</tbody>
+</table>
+</li>
+</ul>
+</div>
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../overview-summary.html">Overview</a></li>
+<li class="navBarCell1Rev">Package</li>
+<li>Class</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../index-all.html">Index</a></li>
+<li><a href="../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev Package</li>
+<li><a href="../../../gr/zeus/ui/mdi/package-summary.html">Next Package</a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../index.html?gr/zeus/ui/package-summary.html" target="_top">Frames</a></li>
+<li><a href="package-summary.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+</body>
+</html>
diff --git a/doc/api/gr/zeus/ui/package-tree.html b/doc/api/gr/zeus/ui/package-tree.html
new file mode 100644
index 0000000..007f1b3
--- /dev/null
+++ b/doc/api/gr/zeus/ui/package-tree.html
@@ -0,0 +1,202 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc (1.8.0_05) on Sat Jun 07 12:11:35 EEST 2014 -->
+<title>gr.zeus.ui Class Hierarchy</title>
+<meta name="date" content="2014-06-07">
+<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="gr.zeus.ui Class Hierarchy";
+        }
+    }
+    catch(err) {
+    }
+//-->
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li>Class</li>
+<li class="navBarCell1Rev">Tree</li>
+<li><a href="../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../index-all.html">Index</a></li>
+<li><a href="../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev</li>
+<li><a href="../../../gr/zeus/ui/mdi/package-tree.html">Next</a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../index.html?gr/zeus/ui/package-tree.html" target="_top">Frames</a></li>
+<li><a href="package-tree.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<div class="header">
+<h1 class="title">Hierarchy For Package gr.zeus.ui</h1>
+<span class="packageHierarchyLabel">Package Hierarchies:</span>
+<ul class="horizontal">
+<li><a href="../../../overview-tree.html">All Packages</a></li>
+</ul>
+</div>
+<div class="contentContainer">
+<h2 title="Class Hierarchy">Class Hierarchy</h2>
+<ul>
+<li type="circle">java.lang.Object
+<ul>
+<li type="circle">java.awt.Component (implements java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable)
+<ul>
+<li type="circle">java.awt.Container
+<ul>
+<li type="circle">javax.swing.JComponent (implements java.io.Serializable)
+<ul>
+<li type="circle">javax.swing.JInternalFrame (implements javax.accessibility.Accessible, javax.swing.RootPaneContainer, javax.swing.WindowConstants)
+<ul>
+<li type="circle">gr.zeus.ui.<a href="../../../gr/zeus/ui/JIConsole.html" title="class in gr.zeus.ui"><span class="typeNameLink">JIConsole</span></a></li>
+</ul>
+</li>
+<li type="circle">javax.swing.JLabel (implements javax.accessibility.Accessible, javax.swing.SwingConstants)
+<ul>
+<li type="circle">gr.zeus.ui.<a href="../../../gr/zeus/ui/JSplashLabel.html" title="class in gr.zeus.ui"><span class="typeNameLink">JSplashLabel</span></a></li>
+</ul>
+</li>
+<li type="circle">javax.swing.JPanel (implements javax.accessibility.Accessible)
+<ul>
+<li type="circle">gr.zeus.ui.<a href="../../../gr/zeus/ui/JConsolePane.html" title="class in gr.zeus.ui"><span class="typeNameLink">JConsolePane</span></a></li>
+</ul>
+</li>
+</ul>
+</li>
+<li type="circle">java.awt.Window (implements javax.accessibility.Accessible)
+<ul>
+<li type="circle">java.awt.Dialog
+<ul>
+<li type="circle">javax.swing.JDialog (implements javax.accessibility.Accessible, javax.swing.RootPaneContainer, javax.swing.WindowConstants)
+<ul>
+<li type="circle">gr.zeus.ui.<a href="../../../gr/zeus/ui/JMessage.html" title="class in gr.zeus.ui"><span class="typeNameLink">JMessage</span></a></li>
+</ul>
+</li>
+</ul>
+</li>
+<li type="circle">java.awt.Frame (implements java.awt.MenuContainer)
+<ul>
+<li type="circle">javax.swing.JFrame (implements javax.accessibility.Accessible, javax.swing.RootPaneContainer, javax.swing.WindowConstants)
+<ul>
+<li type="circle">gr.zeus.ui.<a href="../../../gr/zeus/ui/JConsole.html" title="class in gr.zeus.ui"><span class="typeNameLink">JConsole</span></a></li>
+</ul>
+</li>
+</ul>
+</li>
+<li type="circle">javax.swing.JWindow (implements javax.accessibility.Accessible, javax.swing.RootPaneContainer)
+<ul>
+<li type="circle">gr.zeus.ui.<a href="../../../gr/zeus/ui/JSplash.html" title="class in gr.zeus.ui"><span class="typeNameLink">JSplash</span></a></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+<li type="circle">gr.zeus.ui.<a href="../../../gr/zeus/ui/OutLookToolBar.html" title="class in gr.zeus.ui"><span class="typeNameLink">OutLookToolBar</span></a></li>
+<li type="circle">gr.zeus.ui.<a href="../../../gr/zeus/ui/SingleAppInstance.html" title="class in gr.zeus.ui"><span class="typeNameLink">SingleAppInstance</span></a></li>
+</ul>
+</li>
+</ul>
+<h2 title="Enum Hierarchy">Enum Hierarchy</h2>
+<ul>
+<li type="circle">java.lang.Object
+<ul>
+<li type="circle">java.lang.Enum<E> (implements java.lang.Comparable<T>, java.io.Serializable)
+<ul>
+<li type="circle">gr.zeus.ui.<a href="../../../gr/zeus/ui/JMessage.JMessageButtonEnum.html" title="enum in gr.zeus.ui"><span class="typeNameLink">JMessage.JMessageButtonEnum</span></a></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li>Class</li>
+<li class="navBarCell1Rev">Tree</li>
+<li><a href="../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../index-all.html">Index</a></li>
+<li><a href="../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev</li>
+<li><a href="../../../gr/zeus/ui/mdi/package-tree.html">Next</a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../index.html?gr/zeus/ui/package-tree.html" target="_top">Frames</a></li>
+<li><a href="package-tree.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+</body>
+</html>
diff --git a/doc/api/gr/zeus/ui/table/AutoResizeTableColumns.html b/doc/api/gr/zeus/ui/table/AutoResizeTableColumns.html
new file mode 100644
index 0000000..f919950
--- /dev/null
+++ b/doc/api/gr/zeus/ui/table/AutoResizeTableColumns.html
@@ -0,0 +1,441 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc (1.8.0_05) on Sat Jun 07 12:11:35 EEST 2014 -->
+<title>AutoResizeTableColumns</title>
+<meta name="date" content="2014-06-07">
+<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="AutoResizeTableColumns";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = {"i0":10,"i1":10};
+var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
+var altColor = "altColor";
+var rowColor = "rowColor";
+var tableTab = "tableTab";
+var activeTableTab = "activeTableTab";
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../index-all.html">Index</a></li>
+<li><a href="../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev Class</li>
+<li><a href="../../../../gr/zeus/ui/table/ProgressBarCellRenderer.html" title="class in gr.zeus.ui.table"><span class="typeNameLink">Next Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../index.html?gr/zeus/ui/table/AutoResizeTableColumns.html" target="_top">Frames</a></li>
+<li><a href="AutoResizeTableColumns.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary: </li>
+<li>Nested | </li>
+<li><a href="#field.summary">Field</a> | </li>
+<li><a href="#constructor.summary">Constr</a> | </li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail: </li>
+<li><a href="#field.detail">Field</a> | </li>
+<li><a href="#constructor.detail">Constr</a> | </li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="subTitle">gr.zeus.ui.table</div>
+<h2 title="Class AutoResizeTableColumns" class="title">Class AutoResizeTableColumns</h2>
+</div>
+<div class="contentContainer">
+<ul class="inheritance">
+<li>java.lang.Object</li>
+<li>
+<ul class="inheritance">
+<li>gr.zeus.ui.table.AutoResizeTableColumns</li>
+</ul>
+</li>
+</ul>
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<dl>
+<dt>All Implemented Interfaces:</dt>
+<dd>java.util.EventListener, javax.swing.event.TableModelListener</dd>
+</dl>
+<hr>
+<br>
+<pre>public final class <span class="typeNameLabel">AutoResizeTableColumns</span>
+extends java.lang.Object
+implements javax.swing.event.TableModelListener</pre>
+<div class="block"><b>
+ NOTE: This class needs a lot of testing in order to check all possible
+ use cases! Please use <code>setDebugMode(true)</code> and reports any bugs or
+ malfunctions to <a href="mailto:gregkotsaftis at yahoo.com">
+gregkotsaftis at yahoo.com</a>
+ </b><p>
+
+ This class can be used to dynamically resize a <code>JTable</code>, every
+ time it's data changes, based on header size and row data. It can also lock
+ any or all of the table's columns (no manual resize possible). Please note
+ that this class respects hidden columns (columns with all sizes set to zero)
+ and excludes them from the resize. Also take into consideration that if
+ performance is a must, you should avoid adding and removing single rows
+ in the table's model, to avoid multiple tableChanged() events leading to
+ multiple executions of this class. Instead you should store your data in
+ Vectors and pass them on to the table's model in a single step. Finally, you
+ can use the method <code>setDebugMode(true)</code> in order to understand
+ how this class functions and the results of your own application; note that
+ if you enable debuging, the performance will degrade by a major degree!
+ <p></div>
+<dl>
+<dt><span class="simpleTagLabel">Since:</span></dt>
+<dd>1.50</dd>
+<dt><span class="simpleTagLabel">Author:</span></dt>
+<dd>Gregory Kotsaftis</dd>
+</dl>
+</li>
+</ul>
+</div>
+<div class="summary">
+<ul class="blockList">
+<li class="blockList">
+<!-- =========== FIELD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field.summary">
+<!--   -->
+</a>
+<h3>Field Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Field Summary table, listing fields, and an explanation">
+<caption><span>Fields</span><span class="tabEnd"> </span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Field and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>static int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/table/AutoResizeTableColumns.html#DEFAULT_COLUMN_PADDING">DEFAULT_COLUMN_PADDING</a></span></code> </td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.summary">
+<!--   -->
+</a>
+<h3>Constructor Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
+<caption><span>Constructors</span><span class="tabEnd"> </span></caption>
+<tr>
+<th class="colOne" scope="col">Constructor and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/table/AutoResizeTableColumns.html#AutoResizeTableColumns-javax.swing.JTable-">AutoResizeTableColumns</a></span>(javax.swing.JTable tbl)</code>
+<div class="block">Constructor.</div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/table/AutoResizeTableColumns.html#AutoResizeTableColumns-javax.swing.JTable-boolean-">AutoResizeTableColumns</a></span>(javax.swing.JTable tbl,
+                      boolean allColumnsLock)</code>
+<div class="block">Constructor.</div>
+</td>
+</tr>
+<tr class="altColor">
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/table/AutoResizeTableColumns.html#AutoResizeTableColumns-javax.swing.JTable-javax.swing.table.TableModel-int-boolean-boolean-boolean:A-">AutoResizeTableColumns</a></span>(javax.swing.JTable tbl,
+                      javax.swing.table.TableModel mdl,
+                      int columnPadding,
+                      boolean includeHeaders,
+                      boolean includeRows,
+                      boolean[] lockColumns)</code>
+<div class="block">Constructor.</div>
+</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.summary">
+<!--   -->
+</a>
+<h3>Method Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
+<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd"> </span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd"> </span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd"> </span></span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tr id="i0" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/table/AutoResizeTableColumns.html#setDebugMode-boolean-">setDebugMode</a></span>(boolean debugMode)</code>
+<div class="block">Sets debug mode.</div>
+</td>
+</tr>
+<tr id="i1" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/table/AutoResizeTableColumns.html#tableChanged-javax.swing.event.TableModelEvent-">tableChanged</a></span>(javax.swing.event.TableModelEvent tableModelEvent)</code>
+<div class="block">Implementation of TableModelListener.</div>
+</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
+<!--   -->
+</a>
+<h3>Methods inherited from class java.lang.Object</h3>
+<code>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</code></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="details">
+<ul class="blockList">
+<li class="blockList">
+<!-- ============ FIELD DETAIL =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field.detail">
+<!--   -->
+</a>
+<h3>Field Detail</h3>
+<a name="DEFAULT_COLUMN_PADDING">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>DEFAULT_COLUMN_PADDING</h4>
+<pre>public static final int DEFAULT_COLUMN_PADDING</pre>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../constant-values.html#gr.zeus.ui.table.AutoResizeTableColumns.DEFAULT_COLUMN_PADDING">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.detail">
+<!--   -->
+</a>
+<h3>Constructor Detail</h3>
+<a name="AutoResizeTableColumns-javax.swing.JTable-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>AutoResizeTableColumns</h4>
+<pre>public AutoResizeTableColumns(javax.swing.JTable tbl)</pre>
+<div class="block">Constructor. Uses default values (includes headers and rows calculations,
+ does not lock columns and column padding is set to 5 pixels).
+ <p></div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>tbl</code> - The table instance.</dd>
+</dl>
+</li>
+</ul>
+<a name="AutoResizeTableColumns-javax.swing.JTable-boolean-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>AutoResizeTableColumns</h4>
+<pre>public AutoResizeTableColumns(javax.swing.JTable tbl,
+                              boolean allColumnsLock)</pre>
+<div class="block">Constructor. Uses default values (includes headers and rows calculations,
+ column padding is set to 5 pixels).
+ <p></div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>tbl</code> - The table instance.</dd>
+<dd><code>allColumnsLock</code> - true/false to lock/unlock all columns</dd>
+</dl>
+</li>
+</ul>
+<a name="AutoResizeTableColumns-javax.swing.JTable-javax.swing.table.TableModel-int-boolean-boolean-boolean:A-">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>AutoResizeTableColumns</h4>
+<pre>public AutoResizeTableColumns(javax.swing.JTable tbl,
+                              javax.swing.table.TableModel mdl,
+                              int columnPadding,
+                              boolean includeHeaders,
+                              boolean includeRows,
+                              boolean[] lockColumns)</pre>
+<div class="block">Constructor.
+ <p></div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>tbl</code> - The table instance.</dd>
+<dd><code>mdl</code> - The table model.</dd>
+<dd><code>columnPadding</code> - The pixels to use for column padding.</dd>
+<dd><code>includeHeaders</code> - true/false to include headers in calculation.</dd>
+<dd><code>includeRows</code> - true/false to include rows in calculation.</dd>
+<dd><code>lockColumns</code> - An array that contains the lock status of each
+                          individual column.</dd>
+</dl>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ============ METHOD DETAIL ========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.detail">
+<!--   -->
+</a>
+<h3>Method Detail</h3>
+<a name="setDebugMode-boolean-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setDebugMode</h4>
+<pre>public void setDebugMode(boolean debugMode)</pre>
+<div class="block">Sets debug mode.
+ <b>WARNING! Enabling this will slow down your application!</b>
+ <p></div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>debugMode</code> - true/false enable or disable the debug output.</dd>
+</dl>
+</li>
+</ul>
+<a name="tableChanged-javax.swing.event.TableModelEvent-">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>tableChanged</h4>
+<pre>public void tableChanged(javax.swing.event.TableModelEvent tableModelEvent)</pre>
+<div class="block">Implementation of TableModelListener.
+ <p></div>
+<dl>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code>tableChanged</code> in interface <code>javax.swing.event.TableModelListener</code></dd>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>tableModelEvent</code> - The event.</dd>
+</dl>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+<!-- ========= END OF CLASS DATA ========= -->
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../index-all.html">Index</a></li>
+<li><a href="../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev Class</li>
+<li><a href="../../../../gr/zeus/ui/table/ProgressBarCellRenderer.html" title="class in gr.zeus.ui.table"><span class="typeNameLink">Next Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../index.html?gr/zeus/ui/table/AutoResizeTableColumns.html" target="_top">Frames</a></li>
+<li><a href="AutoResizeTableColumns.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary: </li>
+<li>Nested | </li>
+<li><a href="#field.summary">Field</a> | </li>
+<li><a href="#constructor.summary">Constr</a> | </li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail: </li>
+<li><a href="#field.detail">Field</a> | </li>
+<li><a href="#constructor.detail">Constr</a> | </li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+</body>
+</html>
diff --git a/doc/api/gr/zeus/ui/table/ProgressBarCellRenderer.html b/doc/api/gr/zeus/ui/table/ProgressBarCellRenderer.html
new file mode 100644
index 0000000..c260067
--- /dev/null
+++ b/doc/api/gr/zeus/ui/table/ProgressBarCellRenderer.html
@@ -0,0 +1,501 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc (1.8.0_05) on Sat Jun 07 12:11:35 EEST 2014 -->
+<title>ProgressBarCellRenderer</title>
+<meta name="date" content="2014-06-07">
+<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="ProgressBarCellRenderer";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = {"i0":10,"i1":10};
+var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
+var altColor = "altColor";
+var rowColor = "rowColor";
+var tableTab = "tableTab";
+var activeTableTab = "activeTableTab";
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../index-all.html">Index</a></li>
+<li><a href="../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../gr/zeus/ui/table/AutoResizeTableColumns.html" title="class in gr.zeus.ui.table"><span class="typeNameLink">Prev Class</span></a></li>
+<li><a href="../../../../gr/zeus/ui/table/TableSorter.html" title="class in gr.zeus.ui.table"><span class="typeNameLink">Next Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../index.html?gr/zeus/ui/table/ProgressBarCellRenderer.html" target="_top">Frames</a></li>
+<li><a href="ProgressBarCellRenderer.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary: </li>
+<li><a href="#nested.classes.inherited.from.class.javax.swing.JProgressBar">Nested</a> | </li>
+<li><a href="#fields.inherited.from.class.javax.swing.JProgressBar">Field</a> | </li>
+<li><a href="#constructor.summary">Constr</a> | </li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail: </li>
+<li>Field | </li>
+<li><a href="#constructor.detail">Constr</a> | </li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="subTitle">gr.zeus.ui.table</div>
+<h2 title="Class ProgressBarCellRenderer" class="title">Class ProgressBarCellRenderer</h2>
+</div>
+<div class="contentContainer">
+<ul class="inheritance">
+<li>java.lang.Object</li>
+<li>
+<ul class="inheritance">
+<li>java.awt.Component</li>
+<li>
+<ul class="inheritance">
+<li>java.awt.Container</li>
+<li>
+<ul class="inheritance">
+<li>javax.swing.JComponent</li>
+<li>
+<ul class="inheritance">
+<li>javax.swing.JProgressBar</li>
+<li>
+<ul class="inheritance">
+<li>gr.zeus.ui.table.ProgressBarCellRenderer</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<dl>
+<dt>All Implemented Interfaces:</dt>
+<dd>java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, javax.accessibility.Accessible, javax.swing.SwingConstants, javax.swing.table.TableCellRenderer</dd>
+</dl>
+<hr>
+<br>
+<pre>public final class <span class="typeNameLabel">ProgressBarCellRenderer</span>
+extends javax.swing.JProgressBar
+implements javax.swing.table.TableCellRenderer</pre>
+<div class="block">Progress Bar Cell Renderer for JTable. Original code from:
+ <a href="http://www.senun.com/Left/Programming/Java_old/Examples_swing/
+SwingExamples.html">http://www.senun.com/Left/Programming/Java_old/
+Examples_swing/SwingExamples.html</a>
+ <p></div>
+<dl>
+<dt><span class="simpleTagLabel">Since:</span></dt>
+<dd>1.02</dd>
+<dt><span class="simpleTagLabel">Author:</span></dt>
+<dd>Gregory Kotsaftis</dd>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../serialized-form.html#gr.zeus.ui.table.ProgressBarCellRenderer">Serialized Form</a></dd>
+</dl>
+</li>
+</ul>
+</div>
+<div class="summary">
+<ul class="blockList">
+<li class="blockList">
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="nested.class.summary">
+<!--   -->
+</a>
+<h3>Nested Class Summary</h3>
+<ul class="blockList">
+<li class="blockList"><a name="nested.classes.inherited.from.class.javax.swing.JProgressBar">
+<!--   -->
+</a>
+<h3>Nested classes/interfaces inherited from class javax.swing.JProgressBar</h3>
+<code>javax.swing.JProgressBar.AccessibleJProgressBar</code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="nested.classes.inherited.from.class.javax.swing.JComponent">
+<!--   -->
+</a>
+<h3>Nested classes/interfaces inherited from class javax.swing.JComponent</h3>
+<code>javax.swing.JComponent.AccessibleJComponent</code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="nested.classes.inherited.from.class.java.awt.Container">
+<!--   -->
+</a>
+<h3>Nested classes/interfaces inherited from class java.awt.Container</h3>
+<code>java.awt.Container.AccessibleAWTContainer</code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="nested.classes.inherited.from.class.java.awt.Component">
+<!--   -->
+</a>
+<h3>Nested classes/interfaces inherited from class java.awt.Component</h3>
+<code>java.awt.Component.AccessibleAWTComponent, java.awt.Component.BaselineResizeBehavior, java.awt.Component.BltBufferStrategy, java.awt.Component.FlipBufferStrategy</code></li>
+</ul>
+</li>
+</ul>
+<!-- =========== FIELD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field.summary">
+<!--   -->
+</a>
+<h3>Field Summary</h3>
+<ul class="blockList">
+<li class="blockList"><a name="fields.inherited.from.class.javax.swing.JProgressBar">
+<!--   -->
+</a>
+<h3>Fields inherited from class javax.swing.JProgressBar</h3>
+<code>changeEvent, changeListener, model, orientation, paintBorder, paintString, progressString</code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="fields.inherited.from.class.javax.swing.JComponent">
+<!--   -->
+</a>
+<h3>Fields inherited from class javax.swing.JComponent</h3>
+<code>listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW</code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="fields.inherited.from.class.java.awt.Component">
+<!--   -->
+</a>
+<h3>Fields inherited from class java.awt.Component</h3>
+<code>accessibleContext, BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT</code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="fields.inherited.from.class.javax.swing.SwingConstants">
+<!--   -->
+</a>
+<h3>Fields inherited from interface javax.swing.SwingConstants</h3>
+<code>BOTTOM, CENTER, EAST, HORIZONTAL, LEADING, LEFT, NEXT, NORTH, NORTH_EAST, NORTH_WEST, PREVIOUS, RIGHT, SOUTH, SOUTH_EAST, SOUTH_WEST, TOP, TRAILING, VERTICAL, WEST</code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="fields.inherited.from.class.java.awt.image.ImageObserver">
+<!--   -->
+</a>
+<h3>Fields inherited from interface java.awt.image.ImageObserver</h3>
+<code>ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH</code></li>
+</ul>
+</li>
+</ul>
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.summary">
+<!--   -->
+</a>
+<h3>Constructor Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
+<caption><span>Constructors</span><span class="tabEnd"> </span></caption>
+<tr>
+<th class="colOne" scope="col">Constructor and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/table/ProgressBarCellRenderer.html#ProgressBarCellRenderer--">ProgressBarCellRenderer</a></span>()</code>
+<div class="block">Constructor.</div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/table/ProgressBarCellRenderer.html#ProgressBarCellRenderer-boolean-boolean-int-int-java.util.Hashtable-java.awt.Color-">ProgressBarCellRenderer</a></span>(boolean paintNum,
+                       boolean paintBorder,
+                       int min,
+                       int max,
+                       java.util.Hashtable limitColors,
+                       java.awt.Color bg)</code>
+<div class="block">Constructor.</div>
+</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.summary">
+<!--   -->
+</a>
+<h3>Method Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
+<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd"> </span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd"> </span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd"> </span></span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tr id="i0" class="altColor">
+<td class="colFirst"><code>java.awt.Component</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/table/ProgressBarCellRenderer.html#getTableCellRendererComponent-javax.swing.JTable-java.lang.Object-boolean-boolean-int-int-">getTableCellRendererComponent</a></span>(javax.swing.JTable table,
+                             java.lang.Object value,
+                             boolean isSelected,
+                             boolean hasFocus,
+                             int row,
+                             int column)</code>
+<div class="block">Gets the table cell renderer component.</div>
+</td>
+</tr>
+<tr id="i1" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/table/ProgressBarCellRenderer.html#setLimits-java.util.Hashtable-">setLimits</a></span>(java.util.Hashtable limitColors)</code>
+<div class="block">Sets the limits.</div>
+</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.javax.swing.JProgressBar">
+<!--   -->
+</a>
+<h3>Methods inherited from class javax.swing.JProgressBar</h3>
+<code>addChangeListener, createChangeListener, fireStateChanged, getAccessibleContext, getChangeListeners, getMaximum, getMinimum, getModel, getOrientation, getPercentComplete, getString, getUI, getUIClassID, getValue, isBorderPainted, isIndeterminate, isStringPainted, paintBorder, paramString, removeChangeListener, setBorderPainted, setIndeterminate, setMaximum, setMinimum, setModel, setOrientation, setString, setStringPainted, setUI, setValue, updateUI</code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.javax.swing.JComponent">
+<!--   -->
+</a>
+<h3>Methods inherited from class javax.swing.JComponent</h3>
+<code>addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBaseline, getBaselineResizeBehavior, getBorder, getBounds, getClientProperty, getComponentGraphics, getComponentPopupMenu, getConditionForKeyStroke, getDebugGraphicsOptions, get [...]
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.awt.Container">
+<!--   -->
+</a>
+<h3>Methods inherited from class java.awt.Container</h3>
+<code>add, add, add, add, add, addContainerListener, addImpl, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, getMousePosition, insets, invalidate, isAncestorOf, isFocusCycleRo [...]
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.awt.Component">
+<!--   -->
+</a>
+<h3>Methods inherited from class java.awt.Component</h3>
+<code>action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, createImage, createImage, createVolatileImage, createVolatileImage, disableEvents, dispatchEvent, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange,  [...]
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
+<!--   -->
+</a>
+<h3>Methods inherited from class java.lang.Object</h3>
+<code>clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait</code></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="details">
+<ul class="blockList">
+<li class="blockList">
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.detail">
+<!--   -->
+</a>
+<h3>Constructor Detail</h3>
+<a name="ProgressBarCellRenderer--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>ProgressBarCellRenderer</h4>
+<pre>public ProgressBarCellRenderer()</pre>
+<div class="block">Constructor.</div>
+</li>
+</ul>
+<a name="ProgressBarCellRenderer-boolean-boolean-int-int-java.util.Hashtable-java.awt.Color-">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>ProgressBarCellRenderer</h4>
+<pre>public ProgressBarCellRenderer(boolean paintNum,
+                               boolean paintBorder,
+                               int min,
+                               int max,
+                               java.util.Hashtable limitColors,
+                               java.awt.Color bg)</pre>
+<div class="block">Constructor.
+ <p></div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>paintNum</code> - <code>true</code> or <code>false</code>.</dd>
+<dd><code>paintBorder</code> - <code>true</code> or <code>false</code>.</dd>
+<dd><code>min</code> - Minimum value.</dd>
+<dd><code>max</code> - Maximum value.</dd>
+<dd><code>limitColors</code> - <code>Hashtable</code> of colors.</dd>
+<dd><code>bg</code> - The <code>Color</code>.</dd>
+</dl>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ============ METHOD DETAIL ========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.detail">
+<!--   -->
+</a>
+<h3>Method Detail</h3>
+<a name="getTableCellRendererComponent-javax.swing.JTable-java.lang.Object-boolean-boolean-int-int-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getTableCellRendererComponent</h4>
+<pre>public java.awt.Component getTableCellRendererComponent(javax.swing.JTable table,
+                                                        java.lang.Object value,
+                                                        boolean isSelected,
+                                                        boolean hasFocus,
+                                                        int row,
+                                                        int column)</pre>
+<div class="block">Gets the table cell renderer component.
+ <p></div>
+<dl>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code>getTableCellRendererComponent</code> in interface <code>javax.swing.table.TableCellRenderer</code></dd>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>table</code> - The <code>JTable</code>.</dd>
+<dd><code>value</code> - The <code>Object</code>.</dd>
+<dd><code>isSelected</code> - <code>true</code> if selected.</dd>
+<dd><code>hasFocus</code> - <code>true</code> if has focus.</dd>
+<dd><code>row</code> - The row number.</dd>
+<dd><code>column</code> - The column number.
+ <p></dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>The table cell renderer <code>Component</code>.</dd>
+</dl>
+</li>
+</ul>
+<a name="setLimits-java.util.Hashtable-">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>setLimits</h4>
+<pre>public void setLimits(java.util.Hashtable limitColors)</pre>
+<div class="block">Sets the limits.
+ <p></div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>limitColors</code> - <code>Hashtable</code>.</dd>
+</dl>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+<!-- ========= END OF CLASS DATA ========= -->
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../index-all.html">Index</a></li>
+<li><a href="../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../gr/zeus/ui/table/AutoResizeTableColumns.html" title="class in gr.zeus.ui.table"><span class="typeNameLink">Prev Class</span></a></li>
+<li><a href="../../../../gr/zeus/ui/table/TableSorter.html" title="class in gr.zeus.ui.table"><span class="typeNameLink">Next Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../index.html?gr/zeus/ui/table/ProgressBarCellRenderer.html" target="_top">Frames</a></li>
+<li><a href="ProgressBarCellRenderer.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary: </li>
+<li><a href="#nested.classes.inherited.from.class.javax.swing.JProgressBar">Nested</a> | </li>
+<li><a href="#fields.inherited.from.class.javax.swing.JProgressBar">Field</a> | </li>
+<li><a href="#constructor.summary">Constr</a> | </li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail: </li>
+<li>Field | </li>
+<li><a href="#constructor.detail">Constr</a> | </li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+</body>
+</html>
diff --git a/doc/api/gr/zeus/ui/table/TableSorter.html b/doc/api/gr/zeus/ui/table/TableSorter.html
new file mode 100644
index 0000000..4dc77fe
--- /dev/null
+++ b/doc/api/gr/zeus/ui/table/TableSorter.html
@@ -0,0 +1,780 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc (1.8.0_05) on Sat Jun 07 12:11:35 EEST 2014 -->
+<title>TableSorter</title>
+<meta name="date" content="2014-06-07">
+<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="TableSorter";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":10,"i19":10};
+var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
+var altColor = "altColor";
+var rowColor = "rowColor";
+var tableTab = "tableTab";
+var activeTableTab = "activeTableTab";
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../index-all.html">Index</a></li>
+<li><a href="../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../gr/zeus/ui/table/ProgressBarCellRenderer.html" title="class in gr.zeus.ui.table"><span class="typeNameLink">Prev Class</span></a></li>
+<li><a href="../../../../gr/zeus/ui/table/TableSorterIcons.html" title="class in gr.zeus.ui.table"><span class="typeNameLink">Next Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../index.html?gr/zeus/ui/table/TableSorter.html" target="_top">Frames</a></li>
+<li><a href="TableSorter.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary: </li>
+<li>Nested | </li>
+<li><a href="#field.summary">Field</a> | </li>
+<li><a href="#constructor.summary">Constr</a> | </li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail: </li>
+<li><a href="#field.detail">Field</a> | </li>
+<li><a href="#constructor.detail">Constr</a> | </li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="subTitle">gr.zeus.ui.table</div>
+<h2 title="Class TableSorter" class="title">Class TableSorter</h2>
+</div>
+<div class="contentContainer">
+<ul class="inheritance">
+<li>java.lang.Object</li>
+<li>
+<ul class="inheritance">
+<li>javax.swing.table.AbstractTableModel</li>
+<li>
+<ul class="inheritance">
+<li>gr.zeus.ui.table.TableSorter</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<dl>
+<dt>All Implemented Interfaces:</dt>
+<dd>java.io.Serializable, javax.swing.table.TableModel</dd>
+</dl>
+<hr>
+<br>
+<pre>public class <span class="typeNameLabel">TableSorter</span>
+extends javax.swing.table.AbstractTableModel</pre>
+<div class="block">TableSorter is a decorator for TableModels; adding sorting
+ functionality to a supplied TableModel. TableSorter does
+ not store or copy the data in its TableModel; instead it maintains
+ a map from the row indexes of the view to the row indexes of the
+ model. As requests are made of the sorter (like getValueAt(row, col))
+ they are passed to the underlying model after the row numbers
+ have been translated via the internal mapping array. This way,
+ the TableSorter appears to hold another copy of the table
+ with the rows in a different order.
+ <p/>
+ TableSorter registers itself as a listener to the underlying model,
+ just as the JTable itself would. Events recieved from the model
+ are examined, sometimes manipulated (typically widened), and then
+ passed on to the TableSorter's listeners (typically the JTable).
+ If a change to the model has invalidated the order of TableSorter's
+ rows, a note of this is made and the sorter will resort the
+ rows the next time a value is requested.
+ <p/>
+ When the tableHeader property is set, either by using the
+ setTableHeader() method or the two argument constructor, the
+ table header may be used as a complete UI for TableSorter.
+ The default renderer of the tableHeader is decorated with a renderer
+ that indicates the sorting status of each column. In addition,
+ a mouse listener is installed with the following behavior:
+ <ul>
+ <li>
+ Mouse-click: Clears the sorting status of all other columns
+ and advances the sorting status of that column through three
+ values: {NOT_SORTED, ASCENDING, DESCENDING} (then back to
+ NOT_SORTED again).
+ <li>
+ SHIFT-mouse-click: Clears the sorting status of all other columns
+ and cycles the sorting status of the column through the same
+ three values, in the opposite order: {NOT_SORTED, DESCENDING, ASCENDING}.
+ <li>
+ CONTROL-mouse-click and CONTROL-SHIFT-mouse-click: as above except
+ that the changes to the column do not cancel the statuses of columns
+ that are already sorting - giving a way to initiate a compound
+ sort.
+ </ul>
+ <p/>
+ This is a long overdue rewrite of a class of the same name that
+ first appeared in the swing table demos in 1997.
+
+ <p>
+ Modified by Gregory Kotsaftis in order to accept custom icon images
+ instead of just Arrow icon.
+ <p></div>
+<dl>
+<dt><span class="simpleTagLabel">Since:</span></dt>
+<dd>1.50</dd>
+<dt><span class="simpleTagLabel">Version:</span></dt>
+<dd>2.0 02/27/04</dd>
+<dt><span class="simpleTagLabel">Author:</span></dt>
+<dd>Philip Milne, Brendon McLean, Dan van Enckevort, Parwinder Sekhon, Gregory Kotsaftis</dd>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../serialized-form.html#gr.zeus.ui.table.TableSorter">Serialized Form</a></dd>
+</dl>
+</li>
+</ul>
+</div>
+<div class="summary">
+<ul class="blockList">
+<li class="blockList">
+<!-- =========== FIELD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field.summary">
+<!--   -->
+</a>
+<h3>Field Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Field Summary table, listing fields, and an explanation">
+<caption><span>Fields</span><span class="tabEnd"> </span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Field and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>static int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/table/TableSorter.html#ASCENDING">ASCENDING</a></span></code> </td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>static java.util.Comparator</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/table/TableSorter.html#COMPARABLE_COMPARATOR">COMPARABLE_COMPARATOR</a></span></code> </td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>static int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/table/TableSorter.html#DESCENDING">DESCENDING</a></span></code> </td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>static java.util.Comparator</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/table/TableSorter.html#LEXICAL_COMPARATOR">LEXICAL_COMPARATOR</a></span></code> </td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>static int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/table/TableSorter.html#NOT_SORTED">NOT_SORTED</a></span></code> </td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>protected javax.swing.table.TableModel</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/table/TableSorter.html#tableModel">tableModel</a></span></code> </td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="fields.inherited.from.class.javax.swing.table.AbstractTableModel">
+<!--   -->
+</a>
+<h3>Fields inherited from class javax.swing.table.AbstractTableModel</h3>
+<code>listenerList</code></li>
+</ul>
+</li>
+</ul>
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.summary">
+<!--   -->
+</a>
+<h3>Constructor Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
+<caption><span>Constructors</span><span class="tabEnd"> </span></caption>
+<tr>
+<th class="colOne" scope="col">Constructor and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/table/TableSorter.html#TableSorter--">TableSorter</a></span>()</code> </td>
+</tr>
+<tr class="rowColor">
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/table/TableSorter.html#TableSorter-javax.swing.table.TableModel-">TableSorter</a></span>(javax.swing.table.TableModel tableModel)</code> </td>
+</tr>
+<tr class="altColor">
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/table/TableSorter.html#TableSorter-javax.swing.table.TableModel-javax.swing.table.JTableHeader-">TableSorter</a></span>(javax.swing.table.TableModel tableModel,
+           javax.swing.table.JTableHeader tableHeader)</code> </td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.summary">
+<!--   -->
+</a>
+<h3>Method Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
+<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd"> </span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd"> </span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd"> </span></span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tr id="i0" class="altColor">
+<td class="colFirst"><code>java.lang.Class</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/table/TableSorter.html#getColumnClass-int-">getColumnClass</a></span>(int column)</code> </td>
+</tr>
+<tr id="i1" class="rowColor">
+<td class="colFirst"><code>int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/table/TableSorter.html#getColumnCount--">getColumnCount</a></span>()</code> </td>
+</tr>
+<tr id="i2" class="altColor">
+<td class="colFirst"><code>java.lang.String</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/table/TableSorter.html#getColumnName-int-">getColumnName</a></span>(int column)</code> </td>
+</tr>
+<tr id="i3" class="rowColor">
+<td class="colFirst"><code>protected java.util.Comparator</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/table/TableSorter.html#getComparator-int-">getComparator</a></span>(int column)</code> </td>
+</tr>
+<tr id="i4" class="altColor">
+<td class="colFirst"><code>protected javax.swing.Icon</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/table/TableSorter.html#getHeaderRendererCustomIcon-int-">getHeaderRendererCustomIcon</a></span>(int column)</code> </td>
+</tr>
+<tr id="i5" class="rowColor">
+<td class="colFirst"><code>protected javax.swing.Icon</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/table/TableSorter.html#getHeaderRendererIcon-int-int-">getHeaderRendererIcon</a></span>(int column,
+                     int size)</code> </td>
+</tr>
+<tr id="i6" class="altColor">
+<td class="colFirst"><code>int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/table/TableSorter.html#getRowCount--">getRowCount</a></span>()</code> </td>
+</tr>
+<tr id="i7" class="rowColor">
+<td class="colFirst"><code>int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/table/TableSorter.html#getSortingStatus-int-">getSortingStatus</a></span>(int column)</code> </td>
+</tr>
+<tr id="i8" class="altColor">
+<td class="colFirst"><code>javax.swing.table.JTableHeader</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/table/TableSorter.html#getTableHeader--">getTableHeader</a></span>()</code> </td>
+</tr>
+<tr id="i9" class="rowColor">
+<td class="colFirst"><code>javax.swing.table.TableModel</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/table/TableSorter.html#getTableModel--">getTableModel</a></span>()</code> </td>
+</tr>
+<tr id="i10" class="altColor">
+<td class="colFirst"><code>java.lang.Object</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/table/TableSorter.html#getValueAt-int-int-">getValueAt</a></span>(int row,
+          int column)</code> </td>
+</tr>
+<tr id="i11" class="rowColor">
+<td class="colFirst"><code>boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/table/TableSorter.html#isCellEditable-int-int-">isCellEditable</a></span>(int row,
+              int column)</code> </td>
+</tr>
+<tr id="i12" class="altColor">
+<td class="colFirst"><code>boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/table/TableSorter.html#isSorting--">isSorting</a></span>()</code> </td>
+</tr>
+<tr id="i13" class="rowColor">
+<td class="colFirst"><code>int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/table/TableSorter.html#modelIndex-int-">modelIndex</a></span>(int viewIndex)</code> </td>
+</tr>
+<tr id="i14" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/table/TableSorter.html#setColumnComparator-java.lang.Class-java.util.Comparator-">setColumnComparator</a></span>(java.lang.Class type,
+                   java.util.Comparator comparator)</code> </td>
+</tr>
+<tr id="i15" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/table/TableSorter.html#setCustomIcons-javax.swing.Icon:A-javax.swing.Icon:A-">setCustomIcons</a></span>(javax.swing.Icon[] ups,
+              javax.swing.Icon[] downs)</code>
+<div class="block">Arrays contains all custom icons with priority order from high to low.</div>
+</td>
+</tr>
+<tr id="i16" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/table/TableSorter.html#setSortingStatus-int-int-">setSortingStatus</a></span>(int column,
+                int status)</code> </td>
+</tr>
+<tr id="i17" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/table/TableSorter.html#setTableHeader-javax.swing.table.JTableHeader-">setTableHeader</a></span>(javax.swing.table.JTableHeader tableHeader)</code> </td>
+</tr>
+<tr id="i18" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/table/TableSorter.html#setTableModel-javax.swing.table.TableModel-">setTableModel</a></span>(javax.swing.table.TableModel tableModel)</code> </td>
+</tr>
+<tr id="i19" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/table/TableSorter.html#setValueAt-java.lang.Object-int-int-">setValueAt</a></span>(java.lang.Object aValue,
+          int row,
+          int column)</code> </td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.javax.swing.table.AbstractTableModel">
+<!--   -->
+</a>
+<h3>Methods inherited from class javax.swing.table.AbstractTableModel</h3>
+<code>addTableModelListener, findColumn, fireTableCellUpdated, fireTableChanged, fireTableDataChanged, fireTableRowsDeleted, fireTableRowsInserted, fireTableRowsUpdated, fireTableStructureChanged, getListeners, getTableModelListeners, removeTableModelListener</code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
+<!--   -->
+</a>
+<h3>Methods inherited from class java.lang.Object</h3>
+<code>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</code></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="details">
+<ul class="blockList">
+<li class="blockList">
+<!-- ============ FIELD DETAIL =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field.detail">
+<!--   -->
+</a>
+<h3>Field Detail</h3>
+<a name="tableModel">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>tableModel</h4>
+<pre>protected javax.swing.table.TableModel tableModel</pre>
+</li>
+</ul>
+<a name="DESCENDING">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>DESCENDING</h4>
+<pre>public static final int DESCENDING</pre>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../constant-values.html#gr.zeus.ui.table.TableSorter.DESCENDING">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="NOT_SORTED">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>NOT_SORTED</h4>
+<pre>public static final int NOT_SORTED</pre>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../constant-values.html#gr.zeus.ui.table.TableSorter.NOT_SORTED">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="ASCENDING">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>ASCENDING</h4>
+<pre>public static final int ASCENDING</pre>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../constant-values.html#gr.zeus.ui.table.TableSorter.ASCENDING">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="COMPARABLE_COMPARATOR">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>COMPARABLE_COMPARATOR</h4>
+<pre>public static final java.util.Comparator COMPARABLE_COMPARATOR</pre>
+</li>
+</ul>
+<a name="LEXICAL_COMPARATOR">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>LEXICAL_COMPARATOR</h4>
+<pre>public static final java.util.Comparator LEXICAL_COMPARATOR</pre>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.detail">
+<!--   -->
+</a>
+<h3>Constructor Detail</h3>
+<a name="TableSorter--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>TableSorter</h4>
+<pre>public TableSorter()</pre>
+</li>
+</ul>
+<a name="TableSorter-javax.swing.table.TableModel-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>TableSorter</h4>
+<pre>public TableSorter(javax.swing.table.TableModel tableModel)</pre>
+</li>
+</ul>
+<a name="TableSorter-javax.swing.table.TableModel-javax.swing.table.JTableHeader-">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>TableSorter</h4>
+<pre>public TableSorter(javax.swing.table.TableModel tableModel,
+                   javax.swing.table.JTableHeader tableHeader)</pre>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ============ METHOD DETAIL ========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.detail">
+<!--   -->
+</a>
+<h3>Method Detail</h3>
+<a name="getTableModel--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getTableModel</h4>
+<pre>public javax.swing.table.TableModel getTableModel()</pre>
+</li>
+</ul>
+<a name="setCustomIcons-javax.swing.Icon:A-javax.swing.Icon:A-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setCustomIcons</h4>
+<pre>public void setCustomIcons(javax.swing.Icon[] ups,
+                           javax.swing.Icon[] downs)</pre>
+<div class="block">Arrays contains all custom icons with priority order from high to low.
+ Greg</div>
+</li>
+</ul>
+<a name="setTableModel-javax.swing.table.TableModel-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setTableModel</h4>
+<pre>public void setTableModel(javax.swing.table.TableModel tableModel)</pre>
+</li>
+</ul>
+<a name="getTableHeader--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getTableHeader</h4>
+<pre>public javax.swing.table.JTableHeader getTableHeader()</pre>
+</li>
+</ul>
+<a name="setTableHeader-javax.swing.table.JTableHeader-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setTableHeader</h4>
+<pre>public void setTableHeader(javax.swing.table.JTableHeader tableHeader)</pre>
+</li>
+</ul>
+<a name="isSorting--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>isSorting</h4>
+<pre>public boolean isSorting()</pre>
+</li>
+</ul>
+<a name="getSortingStatus-int-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getSortingStatus</h4>
+<pre>public int getSortingStatus(int column)</pre>
+</li>
+</ul>
+<a name="setSortingStatus-int-int-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setSortingStatus</h4>
+<pre>public void setSortingStatus(int column,
+                             int status)</pre>
+</li>
+</ul>
+<a name="getHeaderRendererIcon-int-int-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getHeaderRendererIcon</h4>
+<pre>protected javax.swing.Icon getHeaderRendererIcon(int column,
+                                                 int size)</pre>
+</li>
+</ul>
+<a name="getHeaderRendererCustomIcon-int-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getHeaderRendererCustomIcon</h4>
+<pre>protected javax.swing.Icon getHeaderRendererCustomIcon(int column)</pre>
+</li>
+</ul>
+<a name="setColumnComparator-java.lang.Class-java.util.Comparator-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setColumnComparator</h4>
+<pre>public void setColumnComparator(java.lang.Class type,
+                                java.util.Comparator comparator)</pre>
+</li>
+</ul>
+<a name="getComparator-int-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getComparator</h4>
+<pre>protected java.util.Comparator getComparator(int column)</pre>
+</li>
+</ul>
+<a name="modelIndex-int-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>modelIndex</h4>
+<pre>public int modelIndex(int viewIndex)</pre>
+</li>
+</ul>
+<a name="getRowCount--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getRowCount</h4>
+<pre>public int getRowCount()</pre>
+</li>
+</ul>
+<a name="getColumnCount--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getColumnCount</h4>
+<pre>public int getColumnCount()</pre>
+</li>
+</ul>
+<a name="getColumnName-int-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getColumnName</h4>
+<pre>public java.lang.String getColumnName(int column)</pre>
+<dl>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code>getColumnName</code> in interface <code>javax.swing.table.TableModel</code></dd>
+<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
+<dd><code>getColumnName</code> in class <code>javax.swing.table.AbstractTableModel</code></dd>
+</dl>
+</li>
+</ul>
+<a name="getColumnClass-int-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getColumnClass</h4>
+<pre>public java.lang.Class getColumnClass(int column)</pre>
+<dl>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code>getColumnClass</code> in interface <code>javax.swing.table.TableModel</code></dd>
+<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
+<dd><code>getColumnClass</code> in class <code>javax.swing.table.AbstractTableModel</code></dd>
+</dl>
+</li>
+</ul>
+<a name="isCellEditable-int-int-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>isCellEditable</h4>
+<pre>public boolean isCellEditable(int row,
+                              int column)</pre>
+<dl>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code>isCellEditable</code> in interface <code>javax.swing.table.TableModel</code></dd>
+<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
+<dd><code>isCellEditable</code> in class <code>javax.swing.table.AbstractTableModel</code></dd>
+</dl>
+</li>
+</ul>
+<a name="getValueAt-int-int-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getValueAt</h4>
+<pre>public java.lang.Object getValueAt(int row,
+                                   int column)</pre>
+</li>
+</ul>
+<a name="setValueAt-java.lang.Object-int-int-">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>setValueAt</h4>
+<pre>public void setValueAt(java.lang.Object aValue,
+                       int row,
+                       int column)</pre>
+<dl>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code>setValueAt</code> in interface <code>javax.swing.table.TableModel</code></dd>
+<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
+<dd><code>setValueAt</code> in class <code>javax.swing.table.AbstractTableModel</code></dd>
+</dl>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+<!-- ========= END OF CLASS DATA ========= -->
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../index-all.html">Index</a></li>
+<li><a href="../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../gr/zeus/ui/table/ProgressBarCellRenderer.html" title="class in gr.zeus.ui.table"><span class="typeNameLink">Prev Class</span></a></li>
+<li><a href="../../../../gr/zeus/ui/table/TableSorterIcons.html" title="class in gr.zeus.ui.table"><span class="typeNameLink">Next Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../index.html?gr/zeus/ui/table/TableSorter.html" target="_top">Frames</a></li>
+<li><a href="TableSorter.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary: </li>
+<li>Nested | </li>
+<li><a href="#field.summary">Field</a> | </li>
+<li><a href="#constructor.summary">Constr</a> | </li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail: </li>
+<li><a href="#field.detail">Field</a> | </li>
+<li><a href="#constructor.detail">Constr</a> | </li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+</body>
+</html>
diff --git a/doc/api/gr/zeus/ui/table/TableSorterIcons.html b/doc/api/gr/zeus/ui/table/TableSorterIcons.html
new file mode 100644
index 0000000..63669ac
--- /dev/null
+++ b/doc/api/gr/zeus/ui/table/TableSorterIcons.html
@@ -0,0 +1,490 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc (1.8.0_05) on Sat Jun 07 12:11:35 EEST 2014 -->
+<title>TableSorterIcons</title>
+<meta name="date" content="2014-06-07">
+<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="TableSorterIcons";
+        }
+    }
+    catch(err) {
+    }
+//-->
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../index-all.html">Index</a></li>
+<li><a href="../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../gr/zeus/ui/table/TableSorter.html" title="class in gr.zeus.ui.table"><span class="typeNameLink">Prev Class</span></a></li>
+<li>Next Class</li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../index.html?gr/zeus/ui/table/TableSorterIcons.html" target="_top">Frames</a></li>
+<li><a href="TableSorterIcons.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary: </li>
+<li>Nested | </li>
+<li><a href="#field.summary">Field</a> | </li>
+<li><a href="#constructor.summary">Constr</a> | </li>
+<li><a href="#methods.inherited.from.class.java.lang.Object">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail: </li>
+<li><a href="#field.detail">Field</a> | </li>
+<li><a href="#constructor.detail">Constr</a> | </li>
+<li>Method</li>
+</ul>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="subTitle">gr.zeus.ui.table</div>
+<h2 title="Class TableSorterIcons" class="title">Class TableSorterIcons</h2>
+</div>
+<div class="contentContainer">
+<ul class="inheritance">
+<li>java.lang.Object</li>
+<li>
+<ul class="inheritance">
+<li>gr.zeus.ui.table.TableSorterIcons</li>
+</ul>
+</li>
+</ul>
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<hr>
+<br>
+<pre>public final class <span class="typeNameLabel">TableSorterIcons</span>
+extends java.lang.Object</pre>
+<div class="block">Icon constants.
+ <p></div>
+<dl>
+<dt><span class="simpleTagLabel">Since:</span></dt>
+<dd>1.50</dd>
+<dt><span class="simpleTagLabel">Author:</span></dt>
+<dd>Gregory Kotsaftis</dd>
+</dl>
+</li>
+</ul>
+</div>
+<div class="summary">
+<ul class="blockList">
+<li class="blockList">
+<!-- =========== FIELD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field.summary">
+<!--   -->
+</a>
+<h3>Field Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Field Summary table, listing fields, and an explanation">
+<caption><span>Fields</span><span class="tabEnd"> </span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Field and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>static javax.swing.ImageIcon</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/table/TableSorterIcons.html#DOWN1_ICON">DOWN1_ICON</a></span></code>
+<div class="block">Down image icon 1.</div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>static javax.swing.ImageIcon</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/table/TableSorterIcons.html#DOWN2_ICON">DOWN2_ICON</a></span></code>
+<div class="block">Down image icon 2.</div>
+</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>static javax.swing.ImageIcon</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/table/TableSorterIcons.html#DOWN3_ICON">DOWN3_ICON</a></span></code>
+<div class="block">Down image icon 3.</div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>static javax.swing.ImageIcon</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/table/TableSorterIcons.html#DOWN4_ICON">DOWN4_ICON</a></span></code>
+<div class="block">Down image icon 4.</div>
+</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>static javax.swing.ImageIcon</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/table/TableSorterIcons.html#DOWN5_ICON">DOWN5_ICON</a></span></code>
+<div class="block">Down image icon 5.</div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>static javax.swing.ImageIcon</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/table/TableSorterIcons.html#DOWN6_ICON">DOWN6_ICON</a></span></code>
+<div class="block">Down image icon 6.</div>
+</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>static javax.swing.ImageIcon</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/table/TableSorterIcons.html#DOWN7_ICON">DOWN7_ICON</a></span></code>
+<div class="block">Down image icon 7.</div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>static javax.swing.ImageIcon</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/table/TableSorterIcons.html#UP1_ICON">UP1_ICON</a></span></code>
+<div class="block">Up image icon 1.</div>
+</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>static javax.swing.ImageIcon</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/table/TableSorterIcons.html#UP2_ICON">UP2_ICON</a></span></code>
+<div class="block">Up image icon 2.</div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>static javax.swing.ImageIcon</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/table/TableSorterIcons.html#UP3_ICON">UP3_ICON</a></span></code>
+<div class="block">Up image icon 3.</div>
+</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>static javax.swing.ImageIcon</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/table/TableSorterIcons.html#UP4_ICON">UP4_ICON</a></span></code>
+<div class="block">Up image icon 4.</div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>static javax.swing.ImageIcon</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/table/TableSorterIcons.html#UP5_ICON">UP5_ICON</a></span></code>
+<div class="block">Up image icon 5.</div>
+</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>static javax.swing.ImageIcon</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/table/TableSorterIcons.html#UP6_ICON">UP6_ICON</a></span></code>
+<div class="block">Up image icon 6.</div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>static javax.swing.ImageIcon</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/table/TableSorterIcons.html#UP7_ICON">UP7_ICON</a></span></code>
+<div class="block">Up image icon 7.</div>
+</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.summary">
+<!--   -->
+</a>
+<h3>Constructor Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
+<caption><span>Constructors</span><span class="tabEnd"> </span></caption>
+<tr>
+<th class="colOne" scope="col">Constructor and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/table/TableSorterIcons.html#TableSorterIcons--">TableSorterIcons</a></span>()</code> </td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.summary">
+<!--   -->
+</a>
+<h3>Method Summary</h3>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
+<!--   -->
+</a>
+<h3>Methods inherited from class java.lang.Object</h3>
+<code>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</code></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="details">
+<ul class="blockList">
+<li class="blockList">
+<!-- ============ FIELD DETAIL =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field.detail">
+<!--   -->
+</a>
+<h3>Field Detail</h3>
+<a name="UP1_ICON">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>UP1_ICON</h4>
+<pre>public static final javax.swing.ImageIcon UP1_ICON</pre>
+<div class="block">Up image icon 1.</div>
+</li>
+</ul>
+<a name="DOWN1_ICON">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>DOWN1_ICON</h4>
+<pre>public static final javax.swing.ImageIcon DOWN1_ICON</pre>
+<div class="block">Down image icon 1.</div>
+</li>
+</ul>
+<a name="UP2_ICON">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>UP2_ICON</h4>
+<pre>public static final javax.swing.ImageIcon UP2_ICON</pre>
+<div class="block">Up image icon 2.</div>
+</li>
+</ul>
+<a name="DOWN2_ICON">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>DOWN2_ICON</h4>
+<pre>public static final javax.swing.ImageIcon DOWN2_ICON</pre>
+<div class="block">Down image icon 2.</div>
+</li>
+</ul>
+<a name="UP3_ICON">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>UP3_ICON</h4>
+<pre>public static final javax.swing.ImageIcon UP3_ICON</pre>
+<div class="block">Up image icon 3.</div>
+</li>
+</ul>
+<a name="DOWN3_ICON">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>DOWN3_ICON</h4>
+<pre>public static final javax.swing.ImageIcon DOWN3_ICON</pre>
+<div class="block">Down image icon 3.</div>
+</li>
+</ul>
+<a name="UP4_ICON">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>UP4_ICON</h4>
+<pre>public static final javax.swing.ImageIcon UP4_ICON</pre>
+<div class="block">Up image icon 4.</div>
+</li>
+</ul>
+<a name="DOWN4_ICON">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>DOWN4_ICON</h4>
+<pre>public static final javax.swing.ImageIcon DOWN4_ICON</pre>
+<div class="block">Down image icon 4.</div>
+</li>
+</ul>
+<a name="UP5_ICON">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>UP5_ICON</h4>
+<pre>public static final javax.swing.ImageIcon UP5_ICON</pre>
+<div class="block">Up image icon 5.</div>
+</li>
+</ul>
+<a name="DOWN5_ICON">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>DOWN5_ICON</h4>
+<pre>public static final javax.swing.ImageIcon DOWN5_ICON</pre>
+<div class="block">Down image icon 5.</div>
+</li>
+</ul>
+<a name="UP6_ICON">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>UP6_ICON</h4>
+<pre>public static final javax.swing.ImageIcon UP6_ICON</pre>
+<div class="block">Up image icon 6.</div>
+</li>
+</ul>
+<a name="DOWN6_ICON">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>DOWN6_ICON</h4>
+<pre>public static final javax.swing.ImageIcon DOWN6_ICON</pre>
+<div class="block">Down image icon 6.</div>
+</li>
+</ul>
+<a name="UP7_ICON">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>UP7_ICON</h4>
+<pre>public static final javax.swing.ImageIcon UP7_ICON</pre>
+<div class="block">Up image icon 7.</div>
+</li>
+</ul>
+<a name="DOWN7_ICON">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>DOWN7_ICON</h4>
+<pre>public static final javax.swing.ImageIcon DOWN7_ICON</pre>
+<div class="block">Down image icon 7.</div>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.detail">
+<!--   -->
+</a>
+<h3>Constructor Detail</h3>
+<a name="TableSorterIcons--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>TableSorterIcons</h4>
+<pre>public TableSorterIcons()</pre>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+<!-- ========= END OF CLASS DATA ========= -->
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../index-all.html">Index</a></li>
+<li><a href="../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../gr/zeus/ui/table/TableSorter.html" title="class in gr.zeus.ui.table"><span class="typeNameLink">Prev Class</span></a></li>
+<li>Next Class</li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../index.html?gr/zeus/ui/table/TableSorterIcons.html" target="_top">Frames</a></li>
+<li><a href="TableSorterIcons.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary: </li>
+<li>Nested | </li>
+<li><a href="#field.summary">Field</a> | </li>
+<li><a href="#constructor.summary">Constr</a> | </li>
+<li><a href="#methods.inherited.from.class.java.lang.Object">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail: </li>
+<li><a href="#field.detail">Field</a> | </li>
+<li><a href="#constructor.detail">Constr</a> | </li>
+<li>Method</li>
+</ul>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+</body>
+</html>
diff --git a/doc/api/gr/zeus/ui/table/package-frame.html b/doc/api/gr/zeus/ui/table/package-frame.html
new file mode 100644
index 0000000..7f1881d
--- /dev/null
+++ b/doc/api/gr/zeus/ui/table/package-frame.html
@@ -0,0 +1,23 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc (1.8.0_05) on Sat Jun 07 12:11:35 EEST 2014 -->
+<title>gr.zeus.ui.table</title>
+<meta name="date" content="2014-06-07">
+<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../script.js"></script>
+</head>
+<body>
+<h1 class="bar"><a href="../../../../gr/zeus/ui/table/package-summary.html" target="classFrame">gr.zeus.ui.table</a></h1>
+<div class="indexContainer">
+<h2 title="Classes">Classes</h2>
+<ul title="Classes">
+<li><a href="AutoResizeTableColumns.html" title="class in gr.zeus.ui.table" target="classFrame">AutoResizeTableColumns</a></li>
+<li><a href="ProgressBarCellRenderer.html" title="class in gr.zeus.ui.table" target="classFrame">ProgressBarCellRenderer</a></li>
+<li><a href="TableSorter.html" title="class in gr.zeus.ui.table" target="classFrame">TableSorter</a></li>
+<li><a href="TableSorterIcons.html" title="class in gr.zeus.ui.table" target="classFrame">TableSorterIcons</a></li>
+</ul>
+</div>
+</body>
+</html>
diff --git a/doc/api/gr/zeus/ui/table/package-summary.html b/doc/api/gr/zeus/ui/table/package-summary.html
new file mode 100644
index 0000000..1d728f2
--- /dev/null
+++ b/doc/api/gr/zeus/ui/table/package-summary.html
@@ -0,0 +1,166 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc (1.8.0_05) on Sat Jun 07 12:11:35 EEST 2014 -->
+<title>gr.zeus.ui.table</title>
+<meta name="date" content="2014-06-07">
+<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="gr.zeus.ui.table";
+        }
+    }
+    catch(err) {
+    }
+//-->
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../overview-summary.html">Overview</a></li>
+<li class="navBarCell1Rev">Package</li>
+<li>Class</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../index-all.html">Index</a></li>
+<li><a href="../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../gr/zeus/ui/mdi/package-summary.html">Prev Package</a></li>
+<li><a href="../../../../gr/zeus/ui/typesafe/package-summary.html">Next Package</a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../index.html?gr/zeus/ui/table/package-summary.html" target="_top">Frames</a></li>
+<li><a href="package-summary.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<div class="header">
+<h1 title="Package" class="title">Package gr.zeus.ui.table</h1>
+</div>
+<div class="contentContainer">
+<ul class="blockList">
+<li class="blockList">
+<table class="typeSummary" border="0" cellpadding="3" cellspacing="0" summary="Class Summary table, listing classes, and an explanation">
+<caption><span>Class Summary</span><span class="tabEnd"> </span></caption>
+<tr>
+<th class="colFirst" scope="col">Class</th>
+<th class="colLast" scope="col">Description</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colFirst"><a href="../../../../gr/zeus/ui/table/AutoResizeTableColumns.html" title="class in gr.zeus.ui.table">AutoResizeTableColumns</a></td>
+<td class="colLast">
+<div class="block"><b>
+ NOTE: This class needs a lot of testing in order to check all possible
+ use cases! Please use <code>setDebugMode(true)</code> and reports any bugs or
+ malfunctions to <a href="mailto:gregkotsaftis at yahoo.com">
+gregkotsaftis at yahoo.com</a>
+ </b></div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><a href="../../../../gr/zeus/ui/table/ProgressBarCellRenderer.html" title="class in gr.zeus.ui.table">ProgressBarCellRenderer</a></td>
+<td class="colLast">
+<div class="block">Progress Bar Cell Renderer for JTable.</div>
+</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><a href="../../../../gr/zeus/ui/table/TableSorter.html" title="class in gr.zeus.ui.table">TableSorter</a></td>
+<td class="colLast">
+<div class="block">TableSorter is a decorator for TableModels; adding sorting
+ functionality to a supplied TableModel.</div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><a href="../../../../gr/zeus/ui/table/TableSorterIcons.html" title="class in gr.zeus.ui.table">TableSorterIcons</a></td>
+<td class="colLast">
+<div class="block">Icon constants.</div>
+</td>
+</tr>
+</tbody>
+</table>
+</li>
+</ul>
+</div>
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../overview-summary.html">Overview</a></li>
+<li class="navBarCell1Rev">Package</li>
+<li>Class</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../index-all.html">Index</a></li>
+<li><a href="../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../gr/zeus/ui/mdi/package-summary.html">Prev Package</a></li>
+<li><a href="../../../../gr/zeus/ui/typesafe/package-summary.html">Next Package</a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../index.html?gr/zeus/ui/table/package-summary.html" target="_top">Frames</a></li>
+<li><a href="package-summary.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+</body>
+</html>
diff --git a/doc/api/gr/zeus/ui/table/package-tree.html b/doc/api/gr/zeus/ui/table/package-tree.html
new file mode 100644
index 0000000..e3adafc
--- /dev/null
+++ b/doc/api/gr/zeus/ui/table/package-tree.html
@@ -0,0 +1,158 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc (1.8.0_05) on Sat Jun 07 12:11:35 EEST 2014 -->
+<title>gr.zeus.ui.table Class Hierarchy</title>
+<meta name="date" content="2014-06-07">
+<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="gr.zeus.ui.table Class Hierarchy";
+        }
+    }
+    catch(err) {
+    }
+//-->
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li>Class</li>
+<li class="navBarCell1Rev">Tree</li>
+<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../index-all.html">Index</a></li>
+<li><a href="../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../gr/zeus/ui/mdi/package-tree.html">Prev</a></li>
+<li><a href="../../../../gr/zeus/ui/typesafe/package-tree.html">Next</a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../index.html?gr/zeus/ui/table/package-tree.html" target="_top">Frames</a></li>
+<li><a href="package-tree.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<div class="header">
+<h1 class="title">Hierarchy For Package gr.zeus.ui.table</h1>
+<span class="packageHierarchyLabel">Package Hierarchies:</span>
+<ul class="horizontal">
+<li><a href="../../../../overview-tree.html">All Packages</a></li>
+</ul>
+</div>
+<div class="contentContainer">
+<h2 title="Class Hierarchy">Class Hierarchy</h2>
+<ul>
+<li type="circle">java.lang.Object
+<ul>
+<li type="circle">javax.swing.table.AbstractTableModel (implements java.io.Serializable, javax.swing.table.TableModel)
+<ul>
+<li type="circle">gr.zeus.ui.table.<a href="../../../../gr/zeus/ui/table/TableSorter.html" title="class in gr.zeus.ui.table"><span class="typeNameLink">TableSorter</span></a></li>
+</ul>
+</li>
+<li type="circle">gr.zeus.ui.table.<a href="../../../../gr/zeus/ui/table/AutoResizeTableColumns.html" title="class in gr.zeus.ui.table"><span class="typeNameLink">AutoResizeTableColumns</span></a> (implements javax.swing.event.TableModelListener)</li>
+<li type="circle">java.awt.Component (implements java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable)
+<ul>
+<li type="circle">java.awt.Container
+<ul>
+<li type="circle">javax.swing.JComponent (implements java.io.Serializable)
+<ul>
+<li type="circle">javax.swing.JProgressBar (implements javax.accessibility.Accessible, javax.swing.SwingConstants)
+<ul>
+<li type="circle">gr.zeus.ui.table.<a href="../../../../gr/zeus/ui/table/ProgressBarCellRenderer.html" title="class in gr.zeus.ui.table"><span class="typeNameLink">ProgressBarCellRenderer</span></a> (implements javax.swing.table.TableCellRenderer)</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+<li type="circle">gr.zeus.ui.table.<a href="../../../../gr/zeus/ui/table/TableSorterIcons.html" title="class in gr.zeus.ui.table"><span class="typeNameLink">TableSorterIcons</span></a></li>
+</ul>
+</li>
+</ul>
+</div>
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li>Class</li>
+<li class="navBarCell1Rev">Tree</li>
+<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../index-all.html">Index</a></li>
+<li><a href="../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../gr/zeus/ui/mdi/package-tree.html">Prev</a></li>
+<li><a href="../../../../gr/zeus/ui/typesafe/package-tree.html">Next</a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../index.html?gr/zeus/ui/table/package-tree.html" target="_top">Frames</a></li>
+<li><a href="package-tree.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+</body>
+</html>
diff --git a/doc/api/gr/zeus/ui/typesafe/CustomFocusTraversalPolicy.html b/doc/api/gr/zeus/ui/typesafe/CustomFocusTraversalPolicy.html
new file mode 100644
index 0000000..84ba3cc
--- /dev/null
+++ b/doc/api/gr/zeus/ui/typesafe/CustomFocusTraversalPolicy.html
@@ -0,0 +1,443 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc (1.8.0_05) on Sat Jun 07 12:11:35 EEST 2014 -->
+<title>CustomFocusTraversalPolicy</title>
+<meta name="date" content="2014-06-07">
+<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="CustomFocusTraversalPolicy";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = {"i0":10,"i1":10,"i2":10,"i3":10};
+var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
+var altColor = "altColor";
+var rowColor = "rowColor";
+var tableTab = "tableTab";
+var activeTableTab = "activeTableTab";
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../index-all.html">Index</a></li>
+<li><a href="../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev Class</li>
+<li><a href="../../../../gr/zeus/ui/typesafe/SelectAllTextOnFocus.html" title="class in gr.zeus.ui.typesafe"><span class="typeNameLink">Next Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../index.html?gr/zeus/ui/typesafe/CustomFocusTraversalPolicy.html" target="_top">Frames</a></li>
+<li><a href="CustomFocusTraversalPolicy.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary: </li>
+<li>Nested | </li>
+<li>Field | </li>
+<li><a href="#constructor.summary">Constr</a> | </li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail: </li>
+<li>Field | </li>
+<li><a href="#constructor.detail">Constr</a> | </li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="subTitle">gr.zeus.ui.typesafe</div>
+<h2 title="Class CustomFocusTraversalPolicy" class="title">Class CustomFocusTraversalPolicy</h2>
+</div>
+<div class="contentContainer">
+<ul class="inheritance">
+<li>java.lang.Object</li>
+<li>
+<ul class="inheritance">
+<li>java.awt.FocusTraversalPolicy</li>
+<li>
+<ul class="inheritance">
+<li>javax.swing.InternalFrameFocusTraversalPolicy</li>
+<li>
+<ul class="inheritance">
+<li>javax.swing.SortingFocusTraversalPolicy</li>
+<li>
+<ul class="inheritance">
+<li>javax.swing.LayoutFocusTraversalPolicy</li>
+<li>
+<ul class="inheritance">
+<li>gr.zeus.ui.typesafe.CustomFocusTraversalPolicy</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<dl>
+<dt>All Implemented Interfaces:</dt>
+<dd>java.io.Serializable</dd>
+</dl>
+<hr>
+<br>
+<pre>public final class <span class="typeNameLabel">CustomFocusTraversalPolicy</span>
+extends javax.swing.LayoutFocusTraversalPolicy</pre>
+<div class="block">This class creates a custom focus policy for Swing components by extending
+ LayoutFocusTraversalPolicy. The focus policy is based upon an array of
+ components. These components are focused as they are placed in the array:
+ array[0] --> array[1] --> ... ---> array[last] ---> array[0]
+ Only components in the array are focused, all other components only gain
+ focus if you place the mouse pointer inside. This is a pretty clean and
+ solid solution to the Swing Focus Issue, at least until Sun provides us
+ with a better one.
+ <p></div>
+<dl>
+<dt><span class="simpleTagLabel">Since:</span></dt>
+<dd>1.20</dd>
+<dt><span class="simpleTagLabel">Author:</span></dt>
+<dd>Gregory Kotsaftis</dd>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../serialized-form.html#gr.zeus.ui.typesafe.CustomFocusTraversalPolicy">Serialized Form</a></dd>
+</dl>
+</li>
+</ul>
+</div>
+<div class="summary">
+<ul class="blockList">
+<li class="blockList">
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.summary">
+<!--   -->
+</a>
+<h3>Constructor Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
+<caption><span>Constructors</span><span class="tabEnd"> </span></caption>
+<tr>
+<th class="colOne" scope="col">Constructor and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/typesafe/CustomFocusTraversalPolicy.html#CustomFocusTraversalPolicy-java.awt.Component:A-">CustomFocusTraversalPolicy</a></span>(java.awt.Component[] all)</code>
+<div class="block">Constructor.</div>
+</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.summary">
+<!--   -->
+</a>
+<h3>Method Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
+<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd"> </span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd"> </span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd"> </span></span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tr id="i0" class="altColor">
+<td class="colFirst"><code>java.awt.Component</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/typesafe/CustomFocusTraversalPolicy.html#getComponentAfter-java.awt.Container-java.awt.Component-">getComponentAfter</a></span>(java.awt.Container aContainer,
+                 java.awt.Component aComponent)</code>
+<div class="block">Gets the next focusable component.</div>
+</td>
+</tr>
+<tr id="i1" class="rowColor">
+<td class="colFirst"><code>java.awt.Component</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/typesafe/CustomFocusTraversalPolicy.html#getComponentBefore-java.awt.Container-java.awt.Component-">getComponentBefore</a></span>(java.awt.Container aContainer,
+                  java.awt.Component aComponent)</code>
+<div class="block">Gets the previous focusable component.</div>
+</td>
+</tr>
+<tr id="i2" class="altColor">
+<td class="colFirst"><code>java.awt.Component</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/typesafe/CustomFocusTraversalPolicy.html#getFirstComponent-java.awt.Container-">getFirstComponent</a></span>(java.awt.Container aContainer)</code>
+<div class="block">Gets the first focusable component.</div>
+</td>
+</tr>
+<tr id="i3" class="rowColor">
+<td class="colFirst"><code>java.awt.Component</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/typesafe/CustomFocusTraversalPolicy.html#getLastComponent-java.awt.Container-">getLastComponent</a></span>(java.awt.Container aContainer)</code>
+<div class="block">Gets the last focusable component.</div>
+</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.javax.swing.LayoutFocusTraversalPolicy">
+<!--   -->
+</a>
+<h3>Methods inherited from class javax.swing.LayoutFocusTraversalPolicy</h3>
+<code>accept</code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.javax.swing.SortingFocusTraversalPolicy">
+<!--   -->
+</a>
+<h3>Methods inherited from class javax.swing.SortingFocusTraversalPolicy</h3>
+<code>getComparator, getDefaultComponent, getImplicitDownCycleTraversal, setComparator, setImplicitDownCycleTraversal</code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.javax.swing.InternalFrameFocusTraversalPolicy">
+<!--   -->
+</a>
+<h3>Methods inherited from class javax.swing.InternalFrameFocusTraversalPolicy</h3>
+<code>getInitialComponent</code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.awt.FocusTraversalPolicy">
+<!--   -->
+</a>
+<h3>Methods inherited from class java.awt.FocusTraversalPolicy</h3>
+<code>getInitialComponent</code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
+<!--   -->
+</a>
+<h3>Methods inherited from class java.lang.Object</h3>
+<code>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</code></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="details">
+<ul class="blockList">
+<li class="blockList">
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.detail">
+<!--   -->
+</a>
+<h3>Constructor Detail</h3>
+<a name="CustomFocusTraversalPolicy-java.awt.Component:A-">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>CustomFocusTraversalPolicy</h4>
+<pre>public CustomFocusTraversalPolicy(java.awt.Component[] all)</pre>
+<div class="block">Constructor.
+ <p></div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>all</code> - The array with the components.</dd>
+</dl>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ============ METHOD DETAIL ========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.detail">
+<!--   -->
+</a>
+<h3>Method Detail</h3>
+<a name="getComponentAfter-java.awt.Container-java.awt.Component-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getComponentAfter</h4>
+<pre>public java.awt.Component getComponentAfter(java.awt.Container aContainer,
+                                            java.awt.Component aComponent)</pre>
+<div class="block">Gets the next focusable component.
+ <p></div>
+<dl>
+<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
+<dd><code>getComponentAfter</code> in class <code>javax.swing.LayoutFocusTraversalPolicy</code></dd>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>aContainer</code> - The swing container, e.g. a JFrame.</dd>
+<dd><code>aComponent</code> - The component to calculate focus.
+ <p></dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>The next focusable component.</dd>
+</dl>
+</li>
+</ul>
+<a name="getComponentBefore-java.awt.Container-java.awt.Component-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getComponentBefore</h4>
+<pre>public java.awt.Component getComponentBefore(java.awt.Container aContainer,
+                                             java.awt.Component aComponent)</pre>
+<div class="block">Gets the previous focusable component.
+ <p></div>
+<dl>
+<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
+<dd><code>getComponentBefore</code> in class <code>javax.swing.LayoutFocusTraversalPolicy</code></dd>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>aContainer</code> - The swing container, e.g. a JFrame.</dd>
+<dd><code>aComponent</code> - The component to calculate focus.
+ <p></dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>The previous focusable component.</dd>
+</dl>
+</li>
+</ul>
+<a name="getFirstComponent-java.awt.Container-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getFirstComponent</h4>
+<pre>public java.awt.Component getFirstComponent(java.awt.Container aContainer)</pre>
+<div class="block">Gets the first focusable component.
+ <p></div>
+<dl>
+<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
+<dd><code>getFirstComponent</code> in class <code>javax.swing.LayoutFocusTraversalPolicy</code></dd>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>aContainer</code> - The swing container, e.g. a JFrame.
+ <p></dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>The first focusable component.</dd>
+</dl>
+</li>
+</ul>
+<a name="getLastComponent-java.awt.Container-">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>getLastComponent</h4>
+<pre>public java.awt.Component getLastComponent(java.awt.Container aContainer)</pre>
+<div class="block">Gets the last focusable component.
+ <p></div>
+<dl>
+<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
+<dd><code>getLastComponent</code> in class <code>javax.swing.LayoutFocusTraversalPolicy</code></dd>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>aContainer</code> - The swing container, e.g. a JFrame.
+ <p></dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>The last focusable component.</dd>
+</dl>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+<!-- ========= END OF CLASS DATA ========= -->
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../index-all.html">Index</a></li>
+<li><a href="../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev Class</li>
+<li><a href="../../../../gr/zeus/ui/typesafe/SelectAllTextOnFocus.html" title="class in gr.zeus.ui.typesafe"><span class="typeNameLink">Next Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../index.html?gr/zeus/ui/typesafe/CustomFocusTraversalPolicy.html" target="_top">Frames</a></li>
+<li><a href="CustomFocusTraversalPolicy.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary: </li>
+<li>Nested | </li>
+<li>Field | </li>
+<li><a href="#constructor.summary">Constr</a> | </li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail: </li>
+<li>Field | </li>
+<li><a href="#constructor.detail">Constr</a> | </li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+</body>
+</html>
diff --git a/doc/api/gr/zeus/ui/typesafe/SelectAllTextOnFocus.html b/doc/api/gr/zeus/ui/typesafe/SelectAllTextOnFocus.html
new file mode 100644
index 0000000..812d110
--- /dev/null
+++ b/doc/api/gr/zeus/ui/typesafe/SelectAllTextOnFocus.html
@@ -0,0 +1,361 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc (1.8.0_05) on Sat Jun 07 12:11:35 EEST 2014 -->
+<title>SelectAllTextOnFocus</title>
+<meta name="date" content="2014-06-07">
+<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="SelectAllTextOnFocus";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = {"i0":10,"i1":10,"i2":10,"i3":10};
+var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
+var altColor = "altColor";
+var rowColor = "rowColor";
+var tableTab = "tableTab";
+var activeTableTab = "activeTableTab";
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../index-all.html">Index</a></li>
+<li><a href="../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../gr/zeus/ui/typesafe/CustomFocusTraversalPolicy.html" title="class in gr.zeus.ui.typesafe"><span class="typeNameLink">Prev Class</span></a></li>
+<li><a href="../../../../gr/zeus/ui/typesafe/SimpleEditorPaneTraversal.html" title="class in gr.zeus.ui.typesafe"><span class="typeNameLink">Next Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../index.html?gr/zeus/ui/typesafe/SelectAllTextOnFocus.html" target="_top">Frames</a></li>
+<li><a href="SelectAllTextOnFocus.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary: </li>
+<li>Nested | </li>
+<li>Field | </li>
+<li><a href="#constructor.summary">Constr</a> | </li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail: </li>
+<li>Field | </li>
+<li><a href="#constructor.detail">Constr</a> | </li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="subTitle">gr.zeus.ui.typesafe</div>
+<h2 title="Class SelectAllTextOnFocus" class="title">Class SelectAllTextOnFocus</h2>
+</div>
+<div class="contentContainer">
+<ul class="inheritance">
+<li>java.lang.Object</li>
+<li>
+<ul class="inheritance">
+<li>gr.zeus.ui.typesafe.SelectAllTextOnFocus</li>
+</ul>
+</li>
+</ul>
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<dl>
+<dt>All Implemented Interfaces:</dt>
+<dd>java.awt.event.FocusListener, java.util.EventListener</dd>
+</dl>
+<hr>
+<br>
+<pre>public final class <span class="typeNameLabel">SelectAllTextOnFocus</span>
+extends java.lang.Object
+implements java.awt.event.FocusListener</pre>
+<div class="block">This class is a simple FocusListener that when enabled performs a selectAll()
+ to any JTextComponent.
+ <p></div>
+<dl>
+<dt><span class="simpleTagLabel">Since:</span></dt>
+<dd>1.20</dd>
+<dt><span class="simpleTagLabel">Author:</span></dt>
+<dd>Gregory Kotsaftis</dd>
+</dl>
+</li>
+</ul>
+</div>
+<div class="summary">
+<ul class="blockList">
+<li class="blockList">
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.summary">
+<!--   -->
+</a>
+<h3>Constructor Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
+<caption><span>Constructors</span><span class="tabEnd"> </span></caption>
+<tr>
+<th class="colOne" scope="col">Constructor and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/typesafe/SelectAllTextOnFocus.html#SelectAllTextOnFocus--">SelectAllTextOnFocus</a></span>()</code>
+<div class="block">Constructor.</div>
+</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.summary">
+<!--   -->
+</a>
+<h3>Method Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
+<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd"> </span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd"> </span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd"> </span></span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tr id="i0" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/typesafe/SelectAllTextOnFocus.html#focusGained-java.awt.event.FocusEvent-">focusGained</a></span>(java.awt.event.FocusEvent evt)</code>
+<div class="block">Focus gained event.</div>
+</td>
+</tr>
+<tr id="i1" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/typesafe/SelectAllTextOnFocus.html#focusLost-java.awt.event.FocusEvent-">focusLost</a></span>(java.awt.event.FocusEvent evt)</code>
+<div class="block">Focus lost event.</div>
+</td>
+</tr>
+<tr id="i2" class="altColor">
+<td class="colFirst"><code>boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/typesafe/SelectAllTextOnFocus.html#isEnabled--">isEnabled</a></span>()</code>
+<div class="block">Gets status flag.</div>
+</td>
+</tr>
+<tr id="i3" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/typesafe/SelectAllTextOnFocus.html#setEnabled-boolean-">setEnabled</a></span>(boolean f)</code>
+<div class="block">Sets status flag.</div>
+</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
+<!--   -->
+</a>
+<h3>Methods inherited from class java.lang.Object</h3>
+<code>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</code></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="details">
+<ul class="blockList">
+<li class="blockList">
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.detail">
+<!--   -->
+</a>
+<h3>Constructor Detail</h3>
+<a name="SelectAllTextOnFocus--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>SelectAllTextOnFocus</h4>
+<pre>public SelectAllTextOnFocus()</pre>
+<div class="block">Constructor.</div>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ============ METHOD DETAIL ========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.detail">
+<!--   -->
+</a>
+<h3>Method Detail</h3>
+<a name="isEnabled--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>isEnabled</h4>
+<pre>public boolean isEnabled()</pre>
+<div class="block">Gets status flag.
+ <p></div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>true/false.</dd>
+</dl>
+</li>
+</ul>
+<a name="setEnabled-boolean-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setEnabled</h4>
+<pre>public void setEnabled(boolean f)</pre>
+<div class="block">Sets status flag.
+ <p></div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>f</code> - true/false.</dd>
+</dl>
+</li>
+</ul>
+<a name="focusGained-java.awt.event.FocusEvent-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>focusGained</h4>
+<pre>public void focusGained(java.awt.event.FocusEvent evt)</pre>
+<div class="block">Focus gained event.
+ <p></div>
+<dl>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code>focusGained</code> in interface <code>java.awt.event.FocusListener</code></dd>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>evt</code> - The event.</dd>
+</dl>
+</li>
+</ul>
+<a name="focusLost-java.awt.event.FocusEvent-">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>focusLost</h4>
+<pre>public void focusLost(java.awt.event.FocusEvent evt)</pre>
+<div class="block">Focus lost event.
+ <p></div>
+<dl>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code>focusLost</code> in interface <code>java.awt.event.FocusListener</code></dd>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>evt</code> - The event.</dd>
+</dl>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+<!-- ========= END OF CLASS DATA ========= -->
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../index-all.html">Index</a></li>
+<li><a href="../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../gr/zeus/ui/typesafe/CustomFocusTraversalPolicy.html" title="class in gr.zeus.ui.typesafe"><span class="typeNameLink">Prev Class</span></a></li>
+<li><a href="../../../../gr/zeus/ui/typesafe/SimpleEditorPaneTraversal.html" title="class in gr.zeus.ui.typesafe"><span class="typeNameLink">Next Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../index.html?gr/zeus/ui/typesafe/SelectAllTextOnFocus.html" target="_top">Frames</a></li>
+<li><a href="SelectAllTextOnFocus.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary: </li>
+<li>Nested | </li>
+<li>Field | </li>
+<li><a href="#constructor.summary">Constr</a> | </li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail: </li>
+<li>Field | </li>
+<li><a href="#constructor.detail">Constr</a> | </li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+</body>
+</html>
diff --git a/doc/api/gr/zeus/ui/typesafe/SimpleEditorPaneTraversal.html b/doc/api/gr/zeus/ui/typesafe/SimpleEditorPaneTraversal.html
new file mode 100644
index 0000000..0fc51b4
--- /dev/null
+++ b/doc/api/gr/zeus/ui/typesafe/SimpleEditorPaneTraversal.html
@@ -0,0 +1,312 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc (1.8.0_05) on Sat Jun 07 12:11:35 EEST 2014 -->
+<title>SimpleEditorPaneTraversal</title>
+<meta name="date" content="2014-06-07">
+<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="SimpleEditorPaneTraversal";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = {"i0":10,"i1":10};
+var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
+var altColor = "altColor";
+var rowColor = "rowColor";
+var tableTab = "tableTab";
+var activeTableTab = "activeTableTab";
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../index-all.html">Index</a></li>
+<li><a href="../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../gr/zeus/ui/typesafe/SelectAllTextOnFocus.html" title="class in gr.zeus.ui.typesafe"><span class="typeNameLink">Prev Class</span></a></li>
+<li><a href="../../../../gr/zeus/ui/typesafe/SimpleTextAreaTraversal.html" title="class in gr.zeus.ui.typesafe"><span class="typeNameLink">Next Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../index.html?gr/zeus/ui/typesafe/SimpleEditorPaneTraversal.html" target="_top">Frames</a></li>
+<li><a href="SimpleEditorPaneTraversal.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary: </li>
+<li>Nested | </li>
+<li>Field | </li>
+<li><a href="#constructor.summary">Constr</a> | </li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail: </li>
+<li>Field | </li>
+<li><a href="#constructor.detail">Constr</a> | </li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="subTitle">gr.zeus.ui.typesafe</div>
+<h2 title="Class SimpleEditorPaneTraversal" class="title">Class SimpleEditorPaneTraversal</h2>
+</div>
+<div class="contentContainer">
+<ul class="inheritance">
+<li>java.lang.Object</li>
+<li>
+<ul class="inheritance">
+<li>gr.zeus.ui.typesafe.SimpleEditorPaneTraversal</li>
+</ul>
+</li>
+</ul>
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<hr>
+<br>
+<pre>public final class <span class="typeNameLabel">SimpleEditorPaneTraversal</span>
+extends java.lang.Object</pre>
+<div class="block">This class can be used to replace the default traversal keys for any
+ JEditorPane object. As you already know when advancing focus inside a form,
+ using the TAB key, when you reach a editor panel you need to press CTRL+TAB
+ in order to advance the focus to the next component. With this class you
+ can address this issue and use the TAB key instead.
+ <p></div>
+<dl>
+<dt><span class="simpleTagLabel">Since:</span></dt>
+<dd>1.50</dd>
+<dt><span class="simpleTagLabel">Author:</span></dt>
+<dd>Gregory Kotsaftis</dd>
+</dl>
+</li>
+</ul>
+</div>
+<div class="summary">
+<ul class="blockList">
+<li class="blockList">
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.summary">
+<!--   -->
+</a>
+<h3>Constructor Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
+<caption><span>Constructors</span><span class="tabEnd"> </span></caption>
+<tr>
+<th class="colOne" scope="col">Constructor and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/typesafe/SimpleEditorPaneTraversal.html#SimpleEditorPaneTraversal-javax.swing.JEditorPane-">SimpleEditorPaneTraversal</a></span>(javax.swing.JEditorPane ep)</code>
+<div class="block">Constructor, Stores a backup copy of the original traversal keys
+ of this editor panel.</div>
+</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.summary">
+<!--   -->
+</a>
+<h3>Method Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
+<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd"> </span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd"> </span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd"> </span></span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tr id="i0" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/typesafe/SimpleEditorPaneTraversal.html#changeTraveralKeys--">changeTraveralKeys</a></span>()</code>
+<div class="block">Replaces the original traversal keys with new ones.</div>
+</td>
+</tr>
+<tr id="i1" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/typesafe/SimpleEditorPaneTraversal.html#restoreTraveralKeys--">restoreTraveralKeys</a></span>()</code>
+<div class="block">Restores the original traversal keys.</div>
+</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
+<!--   -->
+</a>
+<h3>Methods inherited from class java.lang.Object</h3>
+<code>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</code></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="details">
+<ul class="blockList">
+<li class="blockList">
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.detail">
+<!--   -->
+</a>
+<h3>Constructor Detail</h3>
+<a name="SimpleEditorPaneTraversal-javax.swing.JEditorPane-">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>SimpleEditorPaneTraversal</h4>
+<pre>public SimpleEditorPaneTraversal(javax.swing.JEditorPane ep)</pre>
+<div class="block">Constructor, Stores a backup copy of the original traversal keys
+ of this editor panel.
+ <p></div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>ep</code> - The editor panel object.</dd>
+</dl>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ============ METHOD DETAIL ========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.detail">
+<!--   -->
+</a>
+<h3>Method Detail</h3>
+<a name="changeTraveralKeys--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>changeTraveralKeys</h4>
+<pre>public void changeTraveralKeys()</pre>
+<div class="block">Replaces the original traversal keys with new ones.
+ After invoking this method you can advance focus out of the editor panel
+ using only the TAB key instead of CTRL+TAB.</div>
+</li>
+</ul>
+<a name="restoreTraveralKeys--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>restoreTraveralKeys</h4>
+<pre>public void restoreTraveralKeys()</pre>
+<div class="block">Restores the original traversal keys.</div>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+<!-- ========= END OF CLASS DATA ========= -->
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../index-all.html">Index</a></li>
+<li><a href="../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../gr/zeus/ui/typesafe/SelectAllTextOnFocus.html" title="class in gr.zeus.ui.typesafe"><span class="typeNameLink">Prev Class</span></a></li>
+<li><a href="../../../../gr/zeus/ui/typesafe/SimpleTextAreaTraversal.html" title="class in gr.zeus.ui.typesafe"><span class="typeNameLink">Next Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../index.html?gr/zeus/ui/typesafe/SimpleEditorPaneTraversal.html" target="_top">Frames</a></li>
+<li><a href="SimpleEditorPaneTraversal.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary: </li>
+<li>Nested | </li>
+<li>Field | </li>
+<li><a href="#constructor.summary">Constr</a> | </li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail: </li>
+<li>Field | </li>
+<li><a href="#constructor.detail">Constr</a> | </li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+</body>
+</html>
diff --git a/doc/api/gr/zeus/ui/typesafe/SimpleTextAreaTraversal.html b/doc/api/gr/zeus/ui/typesafe/SimpleTextAreaTraversal.html
new file mode 100644
index 0000000..e793a6e
--- /dev/null
+++ b/doc/api/gr/zeus/ui/typesafe/SimpleTextAreaTraversal.html
@@ -0,0 +1,312 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc (1.8.0_05) on Sat Jun 07 12:11:35 EEST 2014 -->
+<title>SimpleTextAreaTraversal</title>
+<meta name="date" content="2014-06-07">
+<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="SimpleTextAreaTraversal";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = {"i0":10,"i1":10};
+var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
+var altColor = "altColor";
+var rowColor = "rowColor";
+var tableTab = "tableTab";
+var activeTableTab = "activeTableTab";
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../index-all.html">Index</a></li>
+<li><a href="../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../gr/zeus/ui/typesafe/SimpleEditorPaneTraversal.html" title="class in gr.zeus.ui.typesafe"><span class="typeNameLink">Prev Class</span></a></li>
+<li><a href="../../../../gr/zeus/ui/typesafe/SimpleTextPaneTraversal.html" title="class in gr.zeus.ui.typesafe"><span class="typeNameLink">Next Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../index.html?gr/zeus/ui/typesafe/SimpleTextAreaTraversal.html" target="_top">Frames</a></li>
+<li><a href="SimpleTextAreaTraversal.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary: </li>
+<li>Nested | </li>
+<li>Field | </li>
+<li><a href="#constructor.summary">Constr</a> | </li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail: </li>
+<li>Field | </li>
+<li><a href="#constructor.detail">Constr</a> | </li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="subTitle">gr.zeus.ui.typesafe</div>
+<h2 title="Class SimpleTextAreaTraversal" class="title">Class SimpleTextAreaTraversal</h2>
+</div>
+<div class="contentContainer">
+<ul class="inheritance">
+<li>java.lang.Object</li>
+<li>
+<ul class="inheritance">
+<li>gr.zeus.ui.typesafe.SimpleTextAreaTraversal</li>
+</ul>
+</li>
+</ul>
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<hr>
+<br>
+<pre>public final class <span class="typeNameLabel">SimpleTextAreaTraversal</span>
+extends java.lang.Object</pre>
+<div class="block">This class can be used to replace the default traversal keys for any
+ JTextArea object. As you already know when advancing focus inside a form,
+ using the TAB key, when you reach a text area you need to press CTRL+TAB
+ in order to advance the focus to the next component. With this class you
+ can address this issue and use the TAB key instead.
+ <p></div>
+<dl>
+<dt><span class="simpleTagLabel">Since:</span></dt>
+<dd>1.50</dd>
+<dt><span class="simpleTagLabel">Author:</span></dt>
+<dd>Gregory Kotsaftis</dd>
+</dl>
+</li>
+</ul>
+</div>
+<div class="summary">
+<ul class="blockList">
+<li class="blockList">
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.summary">
+<!--   -->
+</a>
+<h3>Constructor Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
+<caption><span>Constructors</span><span class="tabEnd"> </span></caption>
+<tr>
+<th class="colOne" scope="col">Constructor and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/typesafe/SimpleTextAreaTraversal.html#SimpleTextAreaTraversal-javax.swing.JTextArea-">SimpleTextAreaTraversal</a></span>(javax.swing.JTextArea ta)</code>
+<div class="block">Constructor, Stores a backup copy of the original traversal keys
+ of this text area.</div>
+</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.summary">
+<!--   -->
+</a>
+<h3>Method Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
+<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd"> </span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd"> </span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd"> </span></span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tr id="i0" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/typesafe/SimpleTextAreaTraversal.html#changeTraveralKeys--">changeTraveralKeys</a></span>()</code>
+<div class="block">Replaces the original traversal keys with new ones.</div>
+</td>
+</tr>
+<tr id="i1" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/typesafe/SimpleTextAreaTraversal.html#restoreTraveralKeys--">restoreTraveralKeys</a></span>()</code>
+<div class="block">Restores the original traversal keys.</div>
+</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
+<!--   -->
+</a>
+<h3>Methods inherited from class java.lang.Object</h3>
+<code>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</code></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="details">
+<ul class="blockList">
+<li class="blockList">
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.detail">
+<!--   -->
+</a>
+<h3>Constructor Detail</h3>
+<a name="SimpleTextAreaTraversal-javax.swing.JTextArea-">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>SimpleTextAreaTraversal</h4>
+<pre>public SimpleTextAreaTraversal(javax.swing.JTextArea ta)</pre>
+<div class="block">Constructor, Stores a backup copy of the original traversal keys
+ of this text area.
+ <p></div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>ta</code> - The text area object.</dd>
+</dl>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ============ METHOD DETAIL ========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.detail">
+<!--   -->
+</a>
+<h3>Method Detail</h3>
+<a name="changeTraveralKeys--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>changeTraveralKeys</h4>
+<pre>public void changeTraveralKeys()</pre>
+<div class="block">Replaces the original traversal keys with new ones.
+ After invoking this method you can advance focus out of the text area
+ using only the TAB key instead of CTRL+TAB.</div>
+</li>
+</ul>
+<a name="restoreTraveralKeys--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>restoreTraveralKeys</h4>
+<pre>public void restoreTraveralKeys()</pre>
+<div class="block">Restores the original traversal keys.</div>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+<!-- ========= END OF CLASS DATA ========= -->
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../index-all.html">Index</a></li>
+<li><a href="../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../gr/zeus/ui/typesafe/SimpleEditorPaneTraversal.html" title="class in gr.zeus.ui.typesafe"><span class="typeNameLink">Prev Class</span></a></li>
+<li><a href="../../../../gr/zeus/ui/typesafe/SimpleTextPaneTraversal.html" title="class in gr.zeus.ui.typesafe"><span class="typeNameLink">Next Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../index.html?gr/zeus/ui/typesafe/SimpleTextAreaTraversal.html" target="_top">Frames</a></li>
+<li><a href="SimpleTextAreaTraversal.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary: </li>
+<li>Nested | </li>
+<li>Field | </li>
+<li><a href="#constructor.summary">Constr</a> | </li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail: </li>
+<li>Field | </li>
+<li><a href="#constructor.detail">Constr</a> | </li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+</body>
+</html>
diff --git a/doc/api/gr/zeus/ui/typesafe/SimpleTextPaneTraversal.html b/doc/api/gr/zeus/ui/typesafe/SimpleTextPaneTraversal.html
new file mode 100644
index 0000000..3d78614
--- /dev/null
+++ b/doc/api/gr/zeus/ui/typesafe/SimpleTextPaneTraversal.html
@@ -0,0 +1,312 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc (1.8.0_05) on Sat Jun 07 12:11:35 EEST 2014 -->
+<title>SimpleTextPaneTraversal</title>
+<meta name="date" content="2014-06-07">
+<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="SimpleTextPaneTraversal";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = {"i0":10,"i1":10};
+var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
+var altColor = "altColor";
+var rowColor = "rowColor";
+var tableTab = "tableTab";
+var activeTableTab = "activeTableTab";
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../index-all.html">Index</a></li>
+<li><a href="../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../gr/zeus/ui/typesafe/SimpleTextAreaTraversal.html" title="class in gr.zeus.ui.typesafe"><span class="typeNameLink">Prev Class</span></a></li>
+<li><a href="../../../../gr/zeus/ui/typesafe/SwingConfigurationManager.html" title="class in gr.zeus.ui.typesafe"><span class="typeNameLink">Next Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../index.html?gr/zeus/ui/typesafe/SimpleTextPaneTraversal.html" target="_top">Frames</a></li>
+<li><a href="SimpleTextPaneTraversal.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary: </li>
+<li>Nested | </li>
+<li>Field | </li>
+<li><a href="#constructor.summary">Constr</a> | </li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail: </li>
+<li>Field | </li>
+<li><a href="#constructor.detail">Constr</a> | </li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="subTitle">gr.zeus.ui.typesafe</div>
+<h2 title="Class SimpleTextPaneTraversal" class="title">Class SimpleTextPaneTraversal</h2>
+</div>
+<div class="contentContainer">
+<ul class="inheritance">
+<li>java.lang.Object</li>
+<li>
+<ul class="inheritance">
+<li>gr.zeus.ui.typesafe.SimpleTextPaneTraversal</li>
+</ul>
+</li>
+</ul>
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<hr>
+<br>
+<pre>public final class <span class="typeNameLabel">SimpleTextPaneTraversal</span>
+extends java.lang.Object</pre>
+<div class="block">This class can be used to replace the default traversal keys for any
+ JTextPane object. As you already know when advancing focus inside a form,
+ using the TAB key, when you reach a text panel you need to press CTRL+TAB
+ in order to advance the focus to the next component. With this class you
+ can address this issue and use the TAB key instead.
+ <p></div>
+<dl>
+<dt><span class="simpleTagLabel">Since:</span></dt>
+<dd>1.50</dd>
+<dt><span class="simpleTagLabel">Author:</span></dt>
+<dd>Gregory Kotsaftis</dd>
+</dl>
+</li>
+</ul>
+</div>
+<div class="summary">
+<ul class="blockList">
+<li class="blockList">
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.summary">
+<!--   -->
+</a>
+<h3>Constructor Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
+<caption><span>Constructors</span><span class="tabEnd"> </span></caption>
+<tr>
+<th class="colOne" scope="col">Constructor and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/typesafe/SimpleTextPaneTraversal.html#SimpleTextPaneTraversal-javax.swing.JTextPane-">SimpleTextPaneTraversal</a></span>(javax.swing.JTextPane tp)</code>
+<div class="block">Constructor, Stores a backup copy of the original traversal keys
+ of this text panel.</div>
+</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.summary">
+<!--   -->
+</a>
+<h3>Method Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
+<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd"> </span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd"> </span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd"> </span></span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tr id="i0" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/typesafe/SimpleTextPaneTraversal.html#changeTraveralKeys--">changeTraveralKeys</a></span>()</code>
+<div class="block">Replaces the original traversal keys with new ones.</div>
+</td>
+</tr>
+<tr id="i1" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/typesafe/SimpleTextPaneTraversal.html#restoreTraveralKeys--">restoreTraveralKeys</a></span>()</code>
+<div class="block">Restores the original traversal keys.</div>
+</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
+<!--   -->
+</a>
+<h3>Methods inherited from class java.lang.Object</h3>
+<code>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</code></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="details">
+<ul class="blockList">
+<li class="blockList">
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.detail">
+<!--   -->
+</a>
+<h3>Constructor Detail</h3>
+<a name="SimpleTextPaneTraversal-javax.swing.JTextPane-">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>SimpleTextPaneTraversal</h4>
+<pre>public SimpleTextPaneTraversal(javax.swing.JTextPane tp)</pre>
+<div class="block">Constructor, Stores a backup copy of the original traversal keys
+ of this text panel.
+ <p></div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>tp</code> - The text panel object.</dd>
+</dl>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ============ METHOD DETAIL ========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.detail">
+<!--   -->
+</a>
+<h3>Method Detail</h3>
+<a name="changeTraveralKeys--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>changeTraveralKeys</h4>
+<pre>public void changeTraveralKeys()</pre>
+<div class="block">Replaces the original traversal keys with new ones.
+ After invoking this method you can advance focus out of the text panel
+ using only the TAB key instead of CTRL+TAB.</div>
+</li>
+</ul>
+<a name="restoreTraveralKeys--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>restoreTraveralKeys</h4>
+<pre>public void restoreTraveralKeys()</pre>
+<div class="block">Restores the original traversal keys.</div>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+<!-- ========= END OF CLASS DATA ========= -->
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../index-all.html">Index</a></li>
+<li><a href="../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../gr/zeus/ui/typesafe/SimpleTextAreaTraversal.html" title="class in gr.zeus.ui.typesafe"><span class="typeNameLink">Prev Class</span></a></li>
+<li><a href="../../../../gr/zeus/ui/typesafe/SwingConfigurationManager.html" title="class in gr.zeus.ui.typesafe"><span class="typeNameLink">Next Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../index.html?gr/zeus/ui/typesafe/SimpleTextPaneTraversal.html" target="_top">Frames</a></li>
+<li><a href="SimpleTextPaneTraversal.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary: </li>
+<li>Nested | </li>
+<li>Field | </li>
+<li><a href="#constructor.summary">Constr</a> | </li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail: </li>
+<li>Field | </li>
+<li><a href="#constructor.detail">Constr</a> | </li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+</body>
+</html>
diff --git a/doc/api/gr/zeus/ui/typesafe/SwingConfigurationManager.html b/doc/api/gr/zeus/ui/typesafe/SwingConfigurationManager.html
new file mode 100644
index 0000000..6e701a6
--- /dev/null
+++ b/doc/api/gr/zeus/ui/typesafe/SwingConfigurationManager.html
@@ -0,0 +1,363 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc (1.8.0_05) on Sat Jun 07 12:11:35 EEST 2014 -->
+<title>SwingConfigurationManager</title>
+<meta name="date" content="2014-06-07">
+<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="SwingConfigurationManager";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = {"i0":10,"i1":10};
+var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
+var altColor = "altColor";
+var rowColor = "rowColor";
+var tableTab = "tableTab";
+var activeTableTab = "activeTableTab";
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../index-all.html">Index</a></li>
+<li><a href="../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../gr/zeus/ui/typesafe/SimpleTextPaneTraversal.html" title="class in gr.zeus.ui.typesafe"><span class="typeNameLink">Prev Class</span></a></li>
+<li><a href="../../../../gr/zeus/ui/typesafe/TypeSafeTextDocumentFilter.html" title="class in gr.zeus.ui.typesafe"><span class="typeNameLink">Next Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../index.html?gr/zeus/ui/typesafe/SwingConfigurationManager.html" target="_top">Frames</a></li>
+<li><a href="SwingConfigurationManager.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary: </li>
+<li>Nested | </li>
+<li>Field | </li>
+<li><a href="#constructor.summary">Constr</a> | </li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail: </li>
+<li>Field | </li>
+<li><a href="#constructor.detail">Constr</a> | </li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="subTitle">gr.zeus.ui.typesafe</div>
+<h2 title="Class SwingConfigurationManager" class="title">Class SwingConfigurationManager</h2>
+</div>
+<div class="contentContainer">
+<ul class="inheritance">
+<li>java.lang.Object</li>
+<li>
+<ul class="inheritance">
+<li>gr.zeus.ui.typesafe.SwingConfigurationManager</li>
+</ul>
+</li>
+</ul>
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<hr>
+<br>
+<pre>public final class <span class="typeNameLabel">SwingConfigurationManager</span>
+extends java.lang.Object</pre>
+<div class="block">This class is the central point of execution for all the classes inside
+ <code>gr.zeus.ui.typesafe</code> package. Although each class can be used as
+ standalone, the SwingConfigurationManager provides an easy way to configure
+ multiple swing components within many forms via a property file. You can have
+ as many instances of this class as you need, just keep in mind that each
+ instance is attached to a single property file. The property file can also
+ exist inside a ResourceBundle. Aside the constructors the main methods are:
+ applyFocus(), initializes the focus for a container and configComponent(),
+ that configures all the swing components. Property file format example:
+ <br>customfocustraversalpolicy=true/false
+ <br>(tagname).(param)=(value)
+ <p>
+ <b>Note: Due to the internal design of the JFormattedTextField, the
+ TypeSafeTextDocumentFilter is not applied (see Sun's javadocs). Only the
+ Verifier's functionality is applied.</b>
+ <p></div>
+<dl>
+<dt><span class="simpleTagLabel">Since:</span></dt>
+<dd>1.20</dd>
+<dt><span class="simpleTagLabel">Author:</span></dt>
+<dd>Gregory Kotsaftis</dd>
+</dl>
+</li>
+</ul>
+</div>
+<div class="summary">
+<ul class="blockList">
+<li class="blockList">
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.summary">
+<!--   -->
+</a>
+<h3>Constructor Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
+<caption><span>Constructors</span><span class="tabEnd"> </span></caption>
+<tr>
+<th class="colOne" scope="col">Constructor and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/typesafe/SwingConfigurationManager.html#SwingConfigurationManager-java.util.ResourceBundle-">SwingConfigurationManager</a></span>(java.util.ResourceBundle res)</code>
+<div class="block">Constructor, creates the properties from the specified ResourceBundle.</div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/typesafe/SwingConfigurationManager.html#SwingConfigurationManager-java.lang.String-">SwingConfigurationManager</a></span>(java.lang.String propertyFile)</code>
+<div class="block">Constructor, loads the property file from the specified pathname.</div>
+</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.summary">
+<!--   -->
+</a>
+<h3>Method Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
+<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd"> </span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd"> </span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd"> </span></span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tr id="i0" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/typesafe/SwingConfigurationManager.html#applyFocus-java.awt.Container-java.awt.Component:A-">applyFocus</a></span>(java.awt.Container c,
+          java.awt.Component[] all)</code>
+<div class="block">Apply focus policy to all the components in the array, depending on the
+ component's placement within this array.</div>
+</td>
+</tr>
+<tr id="i1" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/typesafe/SwingConfigurationManager.html#configComponent-java.lang.String-javax.swing.text.JTextComponent...-">configComponent</a></span>(java.lang.String name,
+               javax.swing.text.JTextComponent... all)</code>
+<div class="block">Apply a configuration to one or more components.</div>
+</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
+<!--   -->
+</a>
+<h3>Methods inherited from class java.lang.Object</h3>
+<code>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</code></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="details">
+<ul class="blockList">
+<li class="blockList">
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.detail">
+<!--   -->
+</a>
+<h3>Constructor Detail</h3>
+<a name="SwingConfigurationManager-java.lang.String-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>SwingConfigurationManager</h4>
+<pre>public SwingConfigurationManager(java.lang.String propertyFile)</pre>
+<div class="block">Constructor, loads the property file from the specified pathname.
+ <p></div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>propertyFile</code> - The pathname to the property file.</dd>
+</dl>
+</li>
+</ul>
+<a name="SwingConfigurationManager-java.util.ResourceBundle-">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>SwingConfigurationManager</h4>
+<pre>public SwingConfigurationManager(java.util.ResourceBundle res)</pre>
+<div class="block">Constructor, creates the properties from the specified ResourceBundle.
+ <p></div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>res</code> - The resource bundle to load the properties from.</dd>
+</dl>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ============ METHOD DETAIL ========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.detail">
+<!--   -->
+</a>
+<h3>Method Detail</h3>
+<a name="applyFocus-java.awt.Container-java.awt.Component:A-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>applyFocus</h4>
+<pre>public void applyFocus(java.awt.Container c,
+                       java.awt.Component[] all)</pre>
+<div class="block">Apply focus policy to all the components in the array, depending on the
+ component's placement within this array.
+ Also changes the traversal keys for all JTextArea, JTextPane and
+ JEditorPane within this array if the appropriate properties are set in
+ the configuration file.
+ <p></div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>c</code> - The swing container, e.g. a JFrame.</dd>
+<dd><code>all</code> - The array with the components.</dd>
+</dl>
+</li>
+</ul>
+<a name="configComponent-java.lang.String-javax.swing.text.JTextComponent...-">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>configComponent</h4>
+<pre>public void configComponent(java.lang.String name,
+                            javax.swing.text.JTextComponent... all)
+                     throws java.lang.Exception</pre>
+<div class="block">Apply a configuration to one or more components.
+ <p></div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>name</code> - The tagname within the property file.</dd>
+<dd><code>all</code> - One or more components to apply the
+                          configuration rule.</dd>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code>java.lang.Exception</code></dd>
+</dl>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+<!-- ========= END OF CLASS DATA ========= -->
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../index-all.html">Index</a></li>
+<li><a href="../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../gr/zeus/ui/typesafe/SimpleTextPaneTraversal.html" title="class in gr.zeus.ui.typesafe"><span class="typeNameLink">Prev Class</span></a></li>
+<li><a href="../../../../gr/zeus/ui/typesafe/TypeSafeTextDocumentFilter.html" title="class in gr.zeus.ui.typesafe"><span class="typeNameLink">Next Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../index.html?gr/zeus/ui/typesafe/SwingConfigurationManager.html" target="_top">Frames</a></li>
+<li><a href="SwingConfigurationManager.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary: </li>
+<li>Nested | </li>
+<li>Field | </li>
+<li><a href="#constructor.summary">Constr</a> | </li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail: </li>
+<li>Field | </li>
+<li><a href="#constructor.detail">Constr</a> | </li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+</body>
+</html>
diff --git a/doc/api/gr/zeus/ui/typesafe/TypeSafeTextDocumentFilter.html b/doc/api/gr/zeus/ui/typesafe/TypeSafeTextDocumentFilter.html
new file mode 100644
index 0000000..3dc21a7
--- /dev/null
+++ b/doc/api/gr/zeus/ui/typesafe/TypeSafeTextDocumentFilter.html
@@ -0,0 +1,739 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc (1.8.0_05) on Sat Jun 07 12:11:35 EEST 2014 -->
+<title>TypeSafeTextDocumentFilter</title>
+<meta name="date" content="2014-06-07">
+<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="TypeSafeTextDocumentFilter";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10};
+var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
+var altColor = "altColor";
+var rowColor = "rowColor";
+var tableTab = "tableTab";
+var activeTableTab = "activeTableTab";
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../index-all.html">Index</a></li>
+<li><a href="../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../gr/zeus/ui/typesafe/SwingConfigurationManager.html" title="class in gr.zeus.ui.typesafe"><span class="typeNameLink">Prev Class</span></a></li>
+<li><a href="../../../../gr/zeus/ui/typesafe/TypeSafeVerifier.html" title="class in gr.zeus.ui.typesafe"><span class="typeNameLink">Next Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../index.html?gr/zeus/ui/typesafe/TypeSafeTextDocumentFilter.html" target="_top">Frames</a></li>
+<li><a href="TypeSafeTextDocumentFilter.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary: </li>
+<li><a href="#nested.classes.inherited.from.class.javax.swing.text.DocumentFilter">Nested</a> | </li>
+<li><a href="#field.summary">Field</a> | </li>
+<li><a href="#constructor.summary">Constr</a> | </li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail: </li>
+<li><a href="#field.detail">Field</a> | </li>
+<li><a href="#constructor.detail">Constr</a> | </li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="subTitle">gr.zeus.ui.typesafe</div>
+<h2 title="Class TypeSafeTextDocumentFilter" class="title">Class TypeSafeTextDocumentFilter</h2>
+</div>
+<div class="contentContainer">
+<ul class="inheritance">
+<li>java.lang.Object</li>
+<li>
+<ul class="inheritance">
+<li>javax.swing.text.DocumentFilter</li>
+<li>
+<ul class="inheritance">
+<li>gr.zeus.ui.typesafe.TypeSafeTextDocumentFilter</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<hr>
+<br>
+<pre>public final class <span class="typeNameLabel">TypeSafeTextDocumentFilter</span>
+extends javax.swing.text.DocumentFilter</pre>
+<div class="block">This class creates a custom filter for JTextComponents by extending the
+ DocumentFilter. With this filter we achieve the following data validation
+ within a field:
+ <li>max characters</li>
+ <li>uppercase/lowercase or not</li>
+ <li>valid characters</li>
+ <li>invalid characters</li>
+ <li>replaceable/replaced character pairs</li>
+ <p></div>
+<dl>
+<dt><span class="simpleTagLabel">Since:</span></dt>
+<dd>1.20</dd>
+<dt><span class="simpleTagLabel">Author:</span></dt>
+<dd>Gregory Kotsaftis</dd>
+</dl>
+</li>
+</ul>
+</div>
+<div class="summary">
+<ul class="blockList">
+<li class="blockList">
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="nested.class.summary">
+<!--   -->
+</a>
+<h3>Nested Class Summary</h3>
+<ul class="blockList">
+<li class="blockList"><a name="nested.classes.inherited.from.class.javax.swing.text.DocumentFilter">
+<!--   -->
+</a>
+<h3>Nested classes/interfaces inherited from class javax.swing.text.DocumentFilter</h3>
+<code>javax.swing.text.DocumentFilter.FilterBypass</code></li>
+</ul>
+</li>
+</ul>
+<!-- =========== FIELD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field.summary">
+<!--   -->
+</a>
+<h3>Field Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Field Summary table, listing fields, and an explanation">
+<caption><span>Fields</span><span class="tabEnd"> </span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Field and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>static int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/typesafe/TypeSafeTextDocumentFilter.html#DEFAULT_MAXCHARS">DEFAULT_MAXCHARS</a></span></code> </td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.summary">
+<!--   -->
+</a>
+<h3>Constructor Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
+<caption><span>Constructors</span><span class="tabEnd"> </span></caption>
+<tr>
+<th class="colOne" scope="col">Constructor and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/typesafe/TypeSafeTextDocumentFilter.html#TypeSafeTextDocumentFilter--">TypeSafeTextDocumentFilter</a></span>()</code>
+<div class="block">Constructor.</div>
+</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.summary">
+<!--   -->
+</a>
+<h3>Method Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
+<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd"> </span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd"> </span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd"> </span></span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tr id="i0" class="altColor">
+<td class="colFirst"><code>java.lang.String</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/typesafe/TypeSafeTextDocumentFilter.html#getInvalidChars--">getInvalidChars</a></span>()</code>
+<div class="block">Gets invalid characters.</div>
+</td>
+</tr>
+<tr id="i1" class="rowColor">
+<td class="colFirst"><code>boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/typesafe/TypeSafeTextDocumentFilter.html#getLowerCase--">getLowerCase</a></span>()</code>
+<div class="block">Gets lowercase flag.</div>
+</td>
+</tr>
+<tr id="i2" class="altColor">
+<td class="colFirst"><code>int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/typesafe/TypeSafeTextDocumentFilter.html#getMaxChars--">getMaxChars</a></span>()</code>
+<div class="block">Gets max characters allowed.</div>
+</td>
+</tr>
+<tr id="i3" class="rowColor">
+<td class="colFirst"><code>java.lang.String</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/typesafe/TypeSafeTextDocumentFilter.html#getReplacableChars--">getReplacableChars</a></span>()</code>
+<div class="block">Gets the replacable characters.</div>
+</td>
+</tr>
+<tr id="i4" class="altColor">
+<td class="colFirst"><code>java.lang.String</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/typesafe/TypeSafeTextDocumentFilter.html#getReplacedChars--">getReplacedChars</a></span>()</code>
+<div class="block">Gets the replaced characters.</div>
+</td>
+</tr>
+<tr id="i5" class="rowColor">
+<td class="colFirst"><code>boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/typesafe/TypeSafeTextDocumentFilter.html#getUpperCase--">getUpperCase</a></span>()</code>
+<div class="block">Gets uppercase flag.</div>
+</td>
+</tr>
+<tr id="i6" class="altColor">
+<td class="colFirst"><code>java.lang.String</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/typesafe/TypeSafeTextDocumentFilter.html#getValidChars--">getValidChars</a></span>()</code>
+<div class="block">Gets valid characters.</div>
+</td>
+</tr>
+<tr id="i7" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/typesafe/TypeSafeTextDocumentFilter.html#insertString-javax.swing.text.DocumentFilter.FilterBypass-int-java.lang.String-javax.swing.text.AttributeSet-">insertString</a></span>(javax.swing.text.DocumentFilter.FilterBypass fb,
+            int offset,
+            java.lang.String text,
+            javax.swing.text.AttributeSet attrs)</code>
+<div class="block">Invoked prior to insertion of text into the specified Document.</div>
+</td>
+</tr>
+<tr id="i8" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/typesafe/TypeSafeTextDocumentFilter.html#remove-javax.swing.text.DocumentFilter.FilterBypass-int-int-">remove</a></span>(javax.swing.text.DocumentFilter.FilterBypass fb,
+      int offset,
+      int length)</code>
+<div class="block">Invoked prior to removal of the specified region
+ in the specified Document.</div>
+</td>
+</tr>
+<tr id="i9" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/typesafe/TypeSafeTextDocumentFilter.html#replace-javax.swing.text.DocumentFilter.FilterBypass-int-int-java.lang.String-javax.swing.text.AttributeSet-">replace</a></span>(javax.swing.text.DocumentFilter.FilterBypass fb,
+       int offset,
+       int length,
+       java.lang.String text,
+       javax.swing.text.AttributeSet attrs)</code>
+<div class="block">Invoked prior to replacing a region of text in the specified Document.</div>
+</td>
+</tr>
+<tr id="i10" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/typesafe/TypeSafeTextDocumentFilter.html#setInvalidChars-java.lang.String-">setInvalidChars</a></span>(java.lang.String all)</code>
+<div class="block">Sets invalid characters.</div>
+</td>
+</tr>
+<tr id="i11" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/typesafe/TypeSafeTextDocumentFilter.html#setLowerCase-boolean-">setLowerCase</a></span>(boolean f)</code>
+<div class="block">Sets lowercase flag.</div>
+</td>
+</tr>
+<tr id="i12" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/typesafe/TypeSafeTextDocumentFilter.html#setMaxChars-int-">setMaxChars</a></span>(int num)</code>
+<div class="block">Sets max characters allowed.</div>
+</td>
+</tr>
+<tr id="i13" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/typesafe/TypeSafeTextDocumentFilter.html#setReplacableChars-java.lang.String-">setReplacableChars</a></span>(java.lang.String all)</code>
+<div class="block">Sets replacable characters.</div>
+</td>
+</tr>
+<tr id="i14" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/typesafe/TypeSafeTextDocumentFilter.html#setReplacedChars-java.lang.String-">setReplacedChars</a></span>(java.lang.String all)</code>
+<div class="block">Sets replaced characters.</div>
+</td>
+</tr>
+<tr id="i15" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/typesafe/TypeSafeTextDocumentFilter.html#setUpperCase-boolean-">setUpperCase</a></span>(boolean f)</code>
+<div class="block">Sets uppercase flag.</div>
+</td>
+</tr>
+<tr id="i16" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/typesafe/TypeSafeTextDocumentFilter.html#setValidChars-java.lang.String-">setValidChars</a></span>(java.lang.String all)</code>
+<div class="block">Sets valid characters.</div>
+</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
+<!--   -->
+</a>
+<h3>Methods inherited from class java.lang.Object</h3>
+<code>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</code></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="details">
+<ul class="blockList">
+<li class="blockList">
+<!-- ============ FIELD DETAIL =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field.detail">
+<!--   -->
+</a>
+<h3>Field Detail</h3>
+<a name="DEFAULT_MAXCHARS">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>DEFAULT_MAXCHARS</h4>
+<pre>public static final int DEFAULT_MAXCHARS</pre>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../constant-values.html#gr.zeus.ui.typesafe.TypeSafeTextDocumentFilter.DEFAULT_MAXCHARS">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.detail">
+<!--   -->
+</a>
+<h3>Constructor Detail</h3>
+<a name="TypeSafeTextDocumentFilter--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>TypeSafeTextDocumentFilter</h4>
+<pre>public TypeSafeTextDocumentFilter()</pre>
+<div class="block">Constructor.</div>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ============ METHOD DETAIL ========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.detail">
+<!--   -->
+</a>
+<h3>Method Detail</h3>
+<a name="insertString-javax.swing.text.DocumentFilter.FilterBypass-int-java.lang.String-javax.swing.text.AttributeSet-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>insertString</h4>
+<pre>public void insertString(javax.swing.text.DocumentFilter.FilterBypass fb,
+                         int offset,
+                         java.lang.String text,
+                         javax.swing.text.AttributeSet attrs)
+                  throws javax.swing.text.BadLocationException</pre>
+<div class="block">Invoked prior to insertion of text into the specified Document.
+ <p></div>
+<dl>
+<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
+<dd><code>insertString</code> in class <code>javax.swing.text.DocumentFilter</code></dd>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>fb</code> - The FilterBypass.</dd>
+<dd><code>offset</code> - The offset.</dd>
+<dd><code>text</code> - The text to insert.</dd>
+<dd><code>attrs</code> - The AttributeSet.</dd>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code>javax.swing.text.BadLocationException</code></dd>
+</dl>
+</li>
+</ul>
+<a name="remove-javax.swing.text.DocumentFilter.FilterBypass-int-int-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>remove</h4>
+<pre>public void remove(javax.swing.text.DocumentFilter.FilterBypass fb,
+                   int offset,
+                   int length)
+            throws javax.swing.text.BadLocationException</pre>
+<div class="block">Invoked prior to removal of the specified region
+ in the specified Document.
+ <p></div>
+<dl>
+<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
+<dd><code>remove</code> in class <code>javax.swing.text.DocumentFilter</code></dd>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>fb</code> - The FilterBypass.</dd>
+<dd><code>offset</code> - The offset.</dd>
+<dd><code>length</code> - The length to remove.</dd>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code>javax.swing.text.BadLocationException</code></dd>
+</dl>
+</li>
+</ul>
+<a name="replace-javax.swing.text.DocumentFilter.FilterBypass-int-int-java.lang.String-javax.swing.text.AttributeSet-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>replace</h4>
+<pre>public void replace(javax.swing.text.DocumentFilter.FilterBypass fb,
+                    int offset,
+                    int length,
+                    java.lang.String text,
+                    javax.swing.text.AttributeSet attrs)
+             throws javax.swing.text.BadLocationException</pre>
+<div class="block">Invoked prior to replacing a region of text in the specified Document.
+ <p></div>
+<dl>
+<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
+<dd><code>replace</code> in class <code>javax.swing.text.DocumentFilter</code></dd>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>fb</code> - The FilterBypass.</dd>
+<dd><code>offset</code> - The offset.</dd>
+<dd><code>length</code> - The length of the text.</dd>
+<dd><code>text</code> - The text to replace.</dd>
+<dd><code>attrs</code> - The AttributeSet.</dd>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code>javax.swing.text.BadLocationException</code></dd>
+</dl>
+</li>
+</ul>
+<a name="getUpperCase--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getUpperCase</h4>
+<pre>public boolean getUpperCase()</pre>
+<div class="block">Gets uppercase flag.
+ <p></div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>true/false.</dd>
+</dl>
+</li>
+</ul>
+<a name="setUpperCase-boolean-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setUpperCase</h4>
+<pre>public void setUpperCase(boolean f)</pre>
+<div class="block">Sets uppercase flag.
+ <p></div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>f</code> - true/false.</dd>
+</dl>
+</li>
+</ul>
+<a name="getLowerCase--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getLowerCase</h4>
+<pre>public boolean getLowerCase()</pre>
+<div class="block">Gets lowercase flag.
+ <p></div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>true/false.</dd>
+</dl>
+</li>
+</ul>
+<a name="setLowerCase-boolean-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setLowerCase</h4>
+<pre>public void setLowerCase(boolean f)</pre>
+<div class="block">Sets lowercase flag.
+ <p></div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>f</code> - true/false.</dd>
+</dl>
+</li>
+</ul>
+<a name="getMaxChars--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getMaxChars</h4>
+<pre>public int getMaxChars()</pre>
+<div class="block">Gets max characters allowed.
+ <p></div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>maxChars.</dd>
+</dl>
+</li>
+</ul>
+<a name="setMaxChars-int-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setMaxChars</h4>
+<pre>public void setMaxChars(int num)</pre>
+<div class="block">Sets max characters allowed.
+ <p></div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>num</code> - maxChars.</dd>
+</dl>
+</li>
+</ul>
+<a name="getValidChars--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getValidChars</h4>
+<pre>public java.lang.String getValidChars()</pre>
+<div class="block">Gets valid characters.
+ <p></div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>validChars.</dd>
+</dl>
+</li>
+</ul>
+<a name="setValidChars-java.lang.String-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setValidChars</h4>
+<pre>public void setValidChars(java.lang.String all)</pre>
+<div class="block">Sets valid characters.
+ <p></div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>all</code> - validChars.</dd>
+</dl>
+</li>
+</ul>
+<a name="getInvalidChars--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getInvalidChars</h4>
+<pre>public java.lang.String getInvalidChars()</pre>
+<div class="block">Gets invalid characters.
+ <p></div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>invalidChars.</dd>
+</dl>
+</li>
+</ul>
+<a name="setInvalidChars-java.lang.String-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setInvalidChars</h4>
+<pre>public void setInvalidChars(java.lang.String all)</pre>
+<div class="block">Sets invalid characters.
+ <p></div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>all</code> - invalidChars.</dd>
+</dl>
+</li>
+</ul>
+<a name="getReplacableChars--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getReplacableChars</h4>
+<pre>public java.lang.String getReplacableChars()</pre>
+<div class="block">Gets the replacable characters.
+ <b>Must be used in conjuction with replaced characters.</b>
+ <p></div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>replacableChars.</dd>
+</dl>
+</li>
+</ul>
+<a name="setReplacableChars-java.lang.String-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setReplacableChars</h4>
+<pre>public void setReplacableChars(java.lang.String all)</pre>
+<div class="block">Sets replacable characters.
+ <b>Must be used in conjuction with replaced characters.</b>
+ <p></div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>all</code> - replacableChars.</dd>
+</dl>
+</li>
+</ul>
+<a name="getReplacedChars--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getReplacedChars</h4>
+<pre>public java.lang.String getReplacedChars()</pre>
+<div class="block">Gets the replaced characters.
+ <b>Must be used in conjuction with replacable characters.</b>
+ <p></div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>replacedChars.</dd>
+</dl>
+</li>
+</ul>
+<a name="setReplacedChars-java.lang.String-">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>setReplacedChars</h4>
+<pre>public void setReplacedChars(java.lang.String all)</pre>
+<div class="block">Sets replaced characters.
+ <b>Must be used in conjuction with replacable characters.</b>
+ <p></div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>all</code> - replacedChars.</dd>
+</dl>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+<!-- ========= END OF CLASS DATA ========= -->
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../index-all.html">Index</a></li>
+<li><a href="../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../gr/zeus/ui/typesafe/SwingConfigurationManager.html" title="class in gr.zeus.ui.typesafe"><span class="typeNameLink">Prev Class</span></a></li>
+<li><a href="../../../../gr/zeus/ui/typesafe/TypeSafeVerifier.html" title="class in gr.zeus.ui.typesafe"><span class="typeNameLink">Next Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../index.html?gr/zeus/ui/typesafe/TypeSafeTextDocumentFilter.html" target="_top">Frames</a></li>
+<li><a href="TypeSafeTextDocumentFilter.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary: </li>
+<li><a href="#nested.classes.inherited.from.class.javax.swing.text.DocumentFilter">Nested</a> | </li>
+<li><a href="#field.summary">Field</a> | </li>
+<li><a href="#constructor.summary">Constr</a> | </li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail: </li>
+<li><a href="#field.detail">Field</a> | </li>
+<li><a href="#constructor.detail">Constr</a> | </li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+</body>
+</html>
diff --git a/doc/api/gr/zeus/ui/typesafe/TypeSafeVerifier.html b/doc/api/gr/zeus/ui/typesafe/TypeSafeVerifier.html
new file mode 100644
index 0000000..6695f4d
--- /dev/null
+++ b/doc/api/gr/zeus/ui/typesafe/TypeSafeVerifier.html
@@ -0,0 +1,1305 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc (1.8.0_05) on Sat Jun 07 12:11:35 EEST 2014 -->
+<title>TypeSafeVerifier</title>
+<meta name="date" content="2014-06-07">
+<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="TypeSafeVerifier";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":10,"i19":10,"i20":10,"i21":10,"i22":10,"i23":10,"i24":10,"i25":10,"i26":10,"i27":10,"i28":10,"i29":10,"i30":10,"i31":10,"i32":10,"i33":10,"i34":10,"i35":10,"i36":10,"i37":10,"i38":10,"i39":10,"i40":10,"i41":10,"i42":10,"i43":10,"i44":10,"i45":10,"i46":10,"i47":10};
+var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
+var altColor = "altColor";
+var rowColor = "rowColor";
+var tableTab = "tableTab";
+var activeTableTab = "activeTableTab";
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../index-all.html">Index</a></li>
+<li><a href="../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../gr/zeus/ui/typesafe/TypeSafeTextDocumentFilter.html" title="class in gr.zeus.ui.typesafe"><span class="typeNameLink">Prev Class</span></a></li>
+<li>Next Class</li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../index.html?gr/zeus/ui/typesafe/TypeSafeVerifier.html" target="_top">Frames</a></li>
+<li><a href="TypeSafeVerifier.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary: </li>
+<li>Nested | </li>
+<li>Field | </li>
+<li><a href="#constructor.summary">Constr</a> | </li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail: </li>
+<li>Field | </li>
+<li><a href="#constructor.detail">Constr</a> | </li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="subTitle">gr.zeus.ui.typesafe</div>
+<h2 title="Class TypeSafeVerifier" class="title">Class TypeSafeVerifier</h2>
+</div>
+<div class="contentContainer">
+<ul class="inheritance">
+<li>java.lang.Object</li>
+<li>
+<ul class="inheritance">
+<li>javax.swing.InputVerifier</li>
+<li>
+<ul class="inheritance">
+<li>gr.zeus.ui.typesafe.TypeSafeVerifier</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<hr>
+<br>
+<pre>public final class <span class="typeNameLabel">TypeSafeVerifier</span>
+extends javax.swing.InputVerifier</pre>
+<div class="block">This class creates a custom verifier for JTextComponents by extending the
+ InputVerifier. With this verifier we achieve the following data validation
+ within a field:
+ <li>min characters</li>
+ <li>trimspaces or not</li>
+ <li>byte,short,int and long numbers parsing</li>
+ <li>float and double numbers parsing</li>
+ <li>date parsing</li>
+ <p></div>
+<dl>
+<dt><span class="simpleTagLabel">Since:</span></dt>
+<dd>1.20</dd>
+<dt><span class="simpleTagLabel">Author:</span></dt>
+<dd>Gregory Kotsaftis</dd>
+</dl>
+</li>
+</ul>
+</div>
+<div class="summary">
+<ul class="blockList">
+<li class="blockList">
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.summary">
+<!--   -->
+</a>
+<h3>Constructor Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
+<caption><span>Constructors</span><span class="tabEnd"> </span></caption>
+<tr>
+<th class="colOne" scope="col">Constructor and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/typesafe/TypeSafeVerifier.html#TypeSafeVerifier-java.lang.Class-">TypeSafeVerifier</a></span>(java.lang.Class clsType)</code>
+<div class="block">Constructor, define the class type of the field.</div>
+</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.summary">
+<!--   -->
+</a>
+<h3>Method Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
+<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd"> </span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd"> </span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd"> </span></span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tr id="i0" class="altColor">
+<td class="colFirst"><code>java.lang.String</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/typesafe/TypeSafeVerifier.html#getDatePattern--">getDatePattern</a></span>()</code>
+<div class="block">Gets the date pattern.</div>
+</td>
+</tr>
+<tr id="i1" class="rowColor">
+<td class="colFirst"><code>byte</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/typesafe/TypeSafeVerifier.html#getDefaultByteValue--">getDefaultByteValue</a></span>()</code>
+<div class="block">Gets the default byte value.</div>
+</td>
+</tr>
+<tr id="i2" class="altColor">
+<td class="colFirst"><code>java.util.Date</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/typesafe/TypeSafeVerifier.html#getDefaultDateValue--">getDefaultDateValue</a></span>()</code>
+<div class="block">Gets the default date value.</div>
+</td>
+</tr>
+<tr id="i3" class="rowColor">
+<td class="colFirst"><code>double</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/typesafe/TypeSafeVerifier.html#getDefaultDoubleValue--">getDefaultDoubleValue</a></span>()</code>
+<div class="block">Gets the default double value.</div>
+</td>
+</tr>
+<tr id="i4" class="altColor">
+<td class="colFirst"><code>float</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/typesafe/TypeSafeVerifier.html#getDefaultFloatValue--">getDefaultFloatValue</a></span>()</code>
+<div class="block">Gets the default float value.</div>
+</td>
+</tr>
+<tr id="i5" class="rowColor">
+<td class="colFirst"><code>int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/typesafe/TypeSafeVerifier.html#getDefaultIntegerValue--">getDefaultIntegerValue</a></span>()</code>
+<div class="block">Gets the default integer value.</div>
+</td>
+</tr>
+<tr id="i6" class="altColor">
+<td class="colFirst"><code>long</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/typesafe/TypeSafeVerifier.html#getDefaultLongValue--">getDefaultLongValue</a></span>()</code>
+<div class="block">Gets the default long value.</div>
+</td>
+</tr>
+<tr id="i7" class="rowColor">
+<td class="colFirst"><code>short</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/typesafe/TypeSafeVerifier.html#getDefaultShortValue--">getDefaultShortValue</a></span>()</code>
+<div class="block">Gets the default short value.</div>
+</td>
+</tr>
+<tr id="i8" class="altColor">
+<td class="colFirst"><code>boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/typesafe/TypeSafeVerifier.html#getDefaultsOnError--">getDefaultsOnError</a></span>()</code>
+<div class="block">Gets defaultsOnError status.</div>
+</td>
+</tr>
+<tr id="i9" class="rowColor">
+<td class="colFirst"><code>byte</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/typesafe/TypeSafeVerifier.html#getMaxByteValue--">getMaxByteValue</a></span>()</code>
+<div class="block">Gets the max byte value.</div>
+</td>
+</tr>
+<tr id="i10" class="altColor">
+<td class="colFirst"><code>double</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/typesafe/TypeSafeVerifier.html#getMaxDoubleValue--">getMaxDoubleValue</a></span>()</code>
+<div class="block">Gets the max double value.</div>
+</td>
+</tr>
+<tr id="i11" class="rowColor">
+<td class="colFirst"><code>float</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/typesafe/TypeSafeVerifier.html#getMaxFloatValue--">getMaxFloatValue</a></span>()</code>
+<div class="block">Gets the max float value.</div>
+</td>
+</tr>
+<tr id="i12" class="altColor">
+<td class="colFirst"><code>int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/typesafe/TypeSafeVerifier.html#getMaxIntegerValue--">getMaxIntegerValue</a></span>()</code>
+<div class="block">Gets the max integer value.</div>
+</td>
+</tr>
+<tr id="i13" class="rowColor">
+<td class="colFirst"><code>long</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/typesafe/TypeSafeVerifier.html#getMaxLongValue--">getMaxLongValue</a></span>()</code>
+<div class="block">Gets the max long value.</div>
+</td>
+</tr>
+<tr id="i14" class="altColor">
+<td class="colFirst"><code>short</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/typesafe/TypeSafeVerifier.html#getMaxShortValue--">getMaxShortValue</a></span>()</code>
+<div class="block">Gets the max short value.</div>
+</td>
+</tr>
+<tr id="i15" class="rowColor">
+<td class="colFirst"><code>byte</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/typesafe/TypeSafeVerifier.html#getMinByteValue--">getMinByteValue</a></span>()</code>
+<div class="block">Gets the min byte value.</div>
+</td>
+</tr>
+<tr id="i16" class="altColor">
+<td class="colFirst"><code>int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/typesafe/TypeSafeVerifier.html#getMinChars--">getMinChars</a></span>()</code>
+<div class="block">Gets min characters allowed.</div>
+</td>
+</tr>
+<tr id="i17" class="rowColor">
+<td class="colFirst"><code>double</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/typesafe/TypeSafeVerifier.html#getMinDoubleValue--">getMinDoubleValue</a></span>()</code>
+<div class="block">Gets the min double value.</div>
+</td>
+</tr>
+<tr id="i18" class="altColor">
+<td class="colFirst"><code>float</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/typesafe/TypeSafeVerifier.html#getMinFloatValue--">getMinFloatValue</a></span>()</code>
+<div class="block">Gets the min float value.</div>
+</td>
+</tr>
+<tr id="i19" class="rowColor">
+<td class="colFirst"><code>int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/typesafe/TypeSafeVerifier.html#getMinIntegerValue--">getMinIntegerValue</a></span>()</code>
+<div class="block">Gets the min integer value.</div>
+</td>
+</tr>
+<tr id="i20" class="altColor">
+<td class="colFirst"><code>long</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/typesafe/TypeSafeVerifier.html#getMinLongValue--">getMinLongValue</a></span>()</code>
+<div class="block">Gets the min long value.</div>
+</td>
+</tr>
+<tr id="i21" class="rowColor">
+<td class="colFirst"><code>short</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/typesafe/TypeSafeVerifier.html#getMinShortValue--">getMinShortValue</a></span>()</code>
+<div class="block">Gets the min short value.</div>
+</td>
+</tr>
+<tr id="i22" class="altColor">
+<td class="colFirst"><code>boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/typesafe/TypeSafeVerifier.html#getTrimSpaces--">getTrimSpaces</a></span>()</code>
+<div class="block">Gets trimspaces status.</div>
+</td>
+</tr>
+<tr id="i23" class="rowColor">
+<td class="colFirst"><code>java.lang.Class</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/typesafe/TypeSafeVerifier.html#getVerifierClassType--">getVerifierClassType</a></span>()</code>
+<div class="block">Gets the class type.</div>
+</td>
+</tr>
+<tr id="i24" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/typesafe/TypeSafeVerifier.html#setDatePattern-java.lang.String-">setDatePattern</a></span>(java.lang.String v)</code>
+<div class="block">Sets the date pattern.</div>
+</td>
+</tr>
+<tr id="i25" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/typesafe/TypeSafeVerifier.html#setDefaultByteValue-byte-">setDefaultByteValue</a></span>(byte v)</code>
+<div class="block">Sets the default byte value.</div>
+</td>
+</tr>
+<tr id="i26" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/typesafe/TypeSafeVerifier.html#setDefaultDateValue-java.util.Date-">setDefaultDateValue</a></span>(java.util.Date v)</code>
+<div class="block">Sets the default date value.</div>
+</td>
+</tr>
+<tr id="i27" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/typesafe/TypeSafeVerifier.html#setDefaultDoubleValue-double-">setDefaultDoubleValue</a></span>(double v)</code>
+<div class="block">Sets the default double value.</div>
+</td>
+</tr>
+<tr id="i28" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/typesafe/TypeSafeVerifier.html#setDefaultFloatValue-float-">setDefaultFloatValue</a></span>(float v)</code>
+<div class="block">Sets the default float value.</div>
+</td>
+</tr>
+<tr id="i29" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/typesafe/TypeSafeVerifier.html#setDefaultIntegerValue-int-">setDefaultIntegerValue</a></span>(int v)</code>
+<div class="block">Sets the default integer value.</div>
+</td>
+</tr>
+<tr id="i30" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/typesafe/TypeSafeVerifier.html#setDefaultLongValue-long-">setDefaultLongValue</a></span>(long v)</code>
+<div class="block">Sets the default long value.</div>
+</td>
+</tr>
+<tr id="i31" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/typesafe/TypeSafeVerifier.html#setDefaultShortValue-short-">setDefaultShortValue</a></span>(short v)</code>
+<div class="block">Sets the default short value.</div>
+</td>
+</tr>
+<tr id="i32" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/typesafe/TypeSafeVerifier.html#setDefaultsOnError-boolean-">setDefaultsOnError</a></span>(boolean f)</code>
+<div class="block">Sets defaultsOnError status.</div>
+</td>
+</tr>
+<tr id="i33" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/typesafe/TypeSafeVerifier.html#setMaxByteValue-byte-">setMaxByteValue</a></span>(byte v)</code>
+<div class="block">Sets the max byte value.</div>
+</td>
+</tr>
+<tr id="i34" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/typesafe/TypeSafeVerifier.html#setMaxDoubleValue-double-">setMaxDoubleValue</a></span>(double v)</code>
+<div class="block">Sets the max double value.</div>
+</td>
+</tr>
+<tr id="i35" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/typesafe/TypeSafeVerifier.html#setMaxFloatValue-float-">setMaxFloatValue</a></span>(float v)</code>
+<div class="block">Sets the max float value.</div>
+</td>
+</tr>
+<tr id="i36" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/typesafe/TypeSafeVerifier.html#setMaxIntegerValue-int-">setMaxIntegerValue</a></span>(int v)</code>
+<div class="block">Sets the max integer value.</div>
+</td>
+</tr>
+<tr id="i37" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/typesafe/TypeSafeVerifier.html#setMaxLongValue-long-">setMaxLongValue</a></span>(long v)</code>
+<div class="block">Sets the max long value.</div>
+</td>
+</tr>
+<tr id="i38" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/typesafe/TypeSafeVerifier.html#setMaxShortValue-short-">setMaxShortValue</a></span>(short v)</code>
+<div class="block">Sets the max short value.</div>
+</td>
+</tr>
+<tr id="i39" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/typesafe/TypeSafeVerifier.html#setMinByteValue-byte-">setMinByteValue</a></span>(byte v)</code>
+<div class="block">Sets the min byte value.</div>
+</td>
+</tr>
+<tr id="i40" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/typesafe/TypeSafeVerifier.html#setMinChars-int-">setMinChars</a></span>(int v)</code>
+<div class="block">Sets min characters allowed.</div>
+</td>
+</tr>
+<tr id="i41" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/typesafe/TypeSafeVerifier.html#setMinDoubleValue-double-">setMinDoubleValue</a></span>(double v)</code>
+<div class="block">Sets the min double value.</div>
+</td>
+</tr>
+<tr id="i42" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/typesafe/TypeSafeVerifier.html#setMinFloatValue-float-">setMinFloatValue</a></span>(float v)</code>
+<div class="block">Sets the min float value.</div>
+</td>
+</tr>
+<tr id="i43" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/typesafe/TypeSafeVerifier.html#setMinIntegerValue-int-">setMinIntegerValue</a></span>(int v)</code>
+<div class="block">Sets the min integer value.</div>
+</td>
+</tr>
+<tr id="i44" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/typesafe/TypeSafeVerifier.html#setMinLongValue-long-">setMinLongValue</a></span>(long v)</code>
+<div class="block">Sets the min long value.</div>
+</td>
+</tr>
+<tr id="i45" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/typesafe/TypeSafeVerifier.html#setMinShortValue-short-">setMinShortValue</a></span>(short v)</code>
+<div class="block">Sets the min short value.</div>
+</td>
+</tr>
+<tr id="i46" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/typesafe/TypeSafeVerifier.html#setTrimSpaces-boolean-">setTrimSpaces</a></span>(boolean f)</code>
+<div class="block">Sets trimspaces status.</div>
+</td>
+</tr>
+<tr id="i47" class="rowColor">
+<td class="colFirst"><code>boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../gr/zeus/ui/typesafe/TypeSafeVerifier.html#verify-javax.swing.JComponent-">verify</a></span>(javax.swing.JComponent input)</code>
+<div class="block">Verify the component and return true in order to allow focus to progress
+ to the next component or false to block the user inside this component
+ until a valid input is entered.</div>
+</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.javax.swing.InputVerifier">
+<!--   -->
+</a>
+<h3>Methods inherited from class javax.swing.InputVerifier</h3>
+<code>shouldYieldFocus</code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
+<!--   -->
+</a>
+<h3>Methods inherited from class java.lang.Object</h3>
+<code>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</code></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="details">
+<ul class="blockList">
+<li class="blockList">
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.detail">
+<!--   -->
+</a>
+<h3>Constructor Detail</h3>
+<a name="TypeSafeVerifier-java.lang.Class-">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>TypeSafeVerifier</h4>
+<pre>public TypeSafeVerifier(java.lang.Class clsType)</pre>
+<div class="block">Constructor, define the class type of the field.</div>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ============ METHOD DETAIL ========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.detail">
+<!--   -->
+</a>
+<h3>Method Detail</h3>
+<a name="verify-javax.swing.JComponent-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>verify</h4>
+<pre>public boolean verify(javax.swing.JComponent input)</pre>
+<div class="block">Verify the component and return true in order to allow focus to progress
+ to the next component or false to block the user inside this component
+ until a valid input is entered.
+ <p></div>
+<dl>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code>verify</code> in class <code>javax.swing.InputVerifier</code></dd>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>input</code> - The component to verify.
+ <p></dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>true/false.</dd>
+</dl>
+</li>
+</ul>
+<a name="getVerifierClassType--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getVerifierClassType</h4>
+<pre>public java.lang.Class getVerifierClassType()</pre>
+<div class="block">Gets the class type.
+ <b>no setXXX() method for this one,
+ only set it through the constructor.</b>
+ <p></div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>classType.</dd>
+</dl>
+</li>
+</ul>
+<a name="getDefaultsOnError--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getDefaultsOnError</h4>
+<pre>public boolean getDefaultsOnError()</pre>
+<div class="block">Gets defaultsOnError status.
+ <p></div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>true/false.</dd>
+</dl>
+</li>
+</ul>
+<a name="setDefaultsOnError-boolean-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setDefaultsOnError</h4>
+<pre>public void setDefaultsOnError(boolean f)</pre>
+<div class="block">Sets defaultsOnError status.
+ <p></div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>f</code> - true/false.</dd>
+</dl>
+</li>
+</ul>
+<a name="getTrimSpaces--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getTrimSpaces</h4>
+<pre>public boolean getTrimSpaces()</pre>
+<div class="block">Gets trimspaces status.
+ <p></div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>true/false.</dd>
+</dl>
+</li>
+</ul>
+<a name="setTrimSpaces-boolean-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setTrimSpaces</h4>
+<pre>public void setTrimSpaces(boolean f)</pre>
+<div class="block">Sets trimspaces status.
+ <p></div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>f</code> - true/false.</dd>
+</dl>
+</li>
+</ul>
+<a name="getMinChars--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getMinChars</h4>
+<pre>public int getMinChars()</pre>
+<div class="block">Gets min characters allowed.
+ <p></div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>minChars.</dd>
+</dl>
+</li>
+</ul>
+<a name="setMinChars-int-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setMinChars</h4>
+<pre>public void setMinChars(int v)</pre>
+<div class="block">Sets min characters allowed.
+ <p></div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>v</code> - minChars.</dd>
+</dl>
+</li>
+</ul>
+<a name="getDatePattern--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getDatePattern</h4>
+<pre>public java.lang.String getDatePattern()</pre>
+<div class="block">Gets the date pattern.
+ <p></div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>datePattern.</dd>
+</dl>
+</li>
+</ul>
+<a name="setDatePattern-java.lang.String-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setDatePattern</h4>
+<pre>public void setDatePattern(java.lang.String v)</pre>
+<div class="block">Sets the date pattern.
+ <p></div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>v</code> - datePattern.</dd>
+</dl>
+</li>
+</ul>
+<a name="getDefaultDateValue--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getDefaultDateValue</h4>
+<pre>public java.util.Date getDefaultDateValue()</pre>
+<div class="block">Gets the default date value.
+ <p></div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>defaultDateValue.</dd>
+</dl>
+</li>
+</ul>
+<a name="setDefaultDateValue-java.util.Date-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setDefaultDateValue</h4>
+<pre>public void setDefaultDateValue(java.util.Date v)</pre>
+<div class="block">Sets the default date value.
+ <p></div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>v</code> - defaultDateValue.</dd>
+</dl>
+</li>
+</ul>
+<a name="getMinByteValue--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getMinByteValue</h4>
+<pre>public byte getMinByteValue()</pre>
+<div class="block">Gets the min byte value.
+ <p></div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>minByteValue.</dd>
+</dl>
+</li>
+</ul>
+<a name="setMinByteValue-byte-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setMinByteValue</h4>
+<pre>public void setMinByteValue(byte v)</pre>
+<div class="block">Sets the min byte value.
+ <p></div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>v</code> - minByteValue.</dd>
+</dl>
+</li>
+</ul>
+<a name="getMaxByteValue--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getMaxByteValue</h4>
+<pre>public byte getMaxByteValue()</pre>
+<div class="block">Gets the max byte value.
+ <p></div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>maxByteValue.</dd>
+</dl>
+</li>
+</ul>
+<a name="setMaxByteValue-byte-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setMaxByteValue</h4>
+<pre>public void setMaxByteValue(byte v)</pre>
+<div class="block">Sets the max byte value.
+ <p></div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>v</code> - maxByteValue.</dd>
+</dl>
+</li>
+</ul>
+<a name="getDefaultByteValue--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getDefaultByteValue</h4>
+<pre>public byte getDefaultByteValue()</pre>
+<div class="block">Gets the default byte value.
+ <p></div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>defaultByteValue.</dd>
+</dl>
+</li>
+</ul>
+<a name="setDefaultByteValue-byte-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setDefaultByteValue</h4>
+<pre>public void setDefaultByteValue(byte v)</pre>
+<div class="block">Sets the default byte value.
+ <p></div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>v</code> - defaultByteValue.</dd>
+</dl>
+</li>
+</ul>
+<a name="getMinShortValue--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getMinShortValue</h4>
+<pre>public short getMinShortValue()</pre>
+<div class="block">Gets the min short value.
+ <p></div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>minShortValue.</dd>
+</dl>
+</li>
+</ul>
+<a name="setMinShortValue-short-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setMinShortValue</h4>
+<pre>public void setMinShortValue(short v)</pre>
+<div class="block">Sets the min short value.
+ <p></div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>v</code> - minShortValue.</dd>
+</dl>
+</li>
+</ul>
+<a name="getMaxShortValue--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getMaxShortValue</h4>
+<pre>public short getMaxShortValue()</pre>
+<div class="block">Gets the max short value.
+ <p></div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>maxShortValue.</dd>
+</dl>
+</li>
+</ul>
+<a name="setMaxShortValue-short-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setMaxShortValue</h4>
+<pre>public void setMaxShortValue(short v)</pre>
+<div class="block">Sets the max short value.
+ <p></div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>v</code> - maxShortValue.</dd>
+</dl>
+</li>
+</ul>
+<a name="getDefaultShortValue--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getDefaultShortValue</h4>
+<pre>public short getDefaultShortValue()</pre>
+<div class="block">Gets the default short value.
+ <p></div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>defaultShortValue.</dd>
+</dl>
+</li>
+</ul>
+<a name="setDefaultShortValue-short-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setDefaultShortValue</h4>
+<pre>public void setDefaultShortValue(short v)</pre>
+<div class="block">Sets the default short value.
+ <p></div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>v</code> - defaultShortValue.</dd>
+</dl>
+</li>
+</ul>
+<a name="getMinIntegerValue--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getMinIntegerValue</h4>
+<pre>public int getMinIntegerValue()</pre>
+<div class="block">Gets the min integer value.
+ <p></div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>minIntegerValue.</dd>
+</dl>
+</li>
+</ul>
+<a name="setMinIntegerValue-int-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setMinIntegerValue</h4>
+<pre>public void setMinIntegerValue(int v)</pre>
+<div class="block">Sets the min integer value.
+ <p></div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>v</code> - minIntegerValue.</dd>
+</dl>
+</li>
+</ul>
+<a name="getMaxIntegerValue--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getMaxIntegerValue</h4>
+<pre>public int getMaxIntegerValue()</pre>
+<div class="block">Gets the max integer value.
+ <p></div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>maxIntegerValue.</dd>
+</dl>
+</li>
+</ul>
+<a name="setMaxIntegerValue-int-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setMaxIntegerValue</h4>
+<pre>public void setMaxIntegerValue(int v)</pre>
+<div class="block">Sets the max integer value.
+ <p></div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>v</code> - maxIntegerValue.</dd>
+</dl>
+</li>
+</ul>
+<a name="getDefaultIntegerValue--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getDefaultIntegerValue</h4>
+<pre>public int getDefaultIntegerValue()</pre>
+<div class="block">Gets the default integer value.
+ <p></div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>defaultIntegerValue.</dd>
+</dl>
+</li>
+</ul>
+<a name="setDefaultIntegerValue-int-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setDefaultIntegerValue</h4>
+<pre>public void setDefaultIntegerValue(int v)</pre>
+<div class="block">Sets the default integer value.
+ <p></div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>v</code> - defaultIntegerValue.</dd>
+</dl>
+</li>
+</ul>
+<a name="getMinLongValue--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getMinLongValue</h4>
+<pre>public long getMinLongValue()</pre>
+<div class="block">Gets the min long value.
+ <p></div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>minLongValue.</dd>
+</dl>
+</li>
+</ul>
+<a name="setMinLongValue-long-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setMinLongValue</h4>
+<pre>public void setMinLongValue(long v)</pre>
+<div class="block">Sets the min long value.
+ <p></div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>v</code> - minLongValue.</dd>
+</dl>
+</li>
+</ul>
+<a name="getMaxLongValue--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getMaxLongValue</h4>
+<pre>public long getMaxLongValue()</pre>
+<div class="block">Gets the max long value.
+ <p></div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>maxLongValue.</dd>
+</dl>
+</li>
+</ul>
+<a name="setMaxLongValue-long-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setMaxLongValue</h4>
+<pre>public void setMaxLongValue(long v)</pre>
+<div class="block">Sets the max long value.
+ <p></div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>v</code> - maxLongValue.</dd>
+</dl>
+</li>
+</ul>
+<a name="getDefaultLongValue--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getDefaultLongValue</h4>
+<pre>public long getDefaultLongValue()</pre>
+<div class="block">Gets the default long value.
+ <p></div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>defaultLongValue.</dd>
+</dl>
+</li>
+</ul>
+<a name="setDefaultLongValue-long-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setDefaultLongValue</h4>
+<pre>public void setDefaultLongValue(long v)</pre>
+<div class="block">Sets the default long value.
+ <p></div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>v</code> - defaultLongValue.</dd>
+</dl>
+</li>
+</ul>
+<a name="getMinFloatValue--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getMinFloatValue</h4>
+<pre>public float getMinFloatValue()</pre>
+<div class="block">Gets the min float value.
+ <p></div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>minFloatValue.</dd>
+</dl>
+</li>
+</ul>
+<a name="setMinFloatValue-float-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setMinFloatValue</h4>
+<pre>public void setMinFloatValue(float v)</pre>
+<div class="block">Sets the min float value.
+ <p></div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>v</code> - minFloatValue.</dd>
+</dl>
+</li>
+</ul>
+<a name="getMaxFloatValue--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getMaxFloatValue</h4>
+<pre>public float getMaxFloatValue()</pre>
+<div class="block">Gets the max float value.
+ <p></div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>maxFloatValue.</dd>
+</dl>
+</li>
+</ul>
+<a name="setMaxFloatValue-float-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setMaxFloatValue</h4>
+<pre>public void setMaxFloatValue(float v)</pre>
+<div class="block">Sets the max float value.
+ <p></div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>v</code> - maxFloatValue.</dd>
+</dl>
+</li>
+</ul>
+<a name="getDefaultFloatValue--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getDefaultFloatValue</h4>
+<pre>public float getDefaultFloatValue()</pre>
+<div class="block">Gets the default float value.
+ <p></div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>defaultFloatValue.</dd>
+</dl>
+</li>
+</ul>
+<a name="setDefaultFloatValue-float-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setDefaultFloatValue</h4>
+<pre>public void setDefaultFloatValue(float v)</pre>
+<div class="block">Sets the default float value.
+ <p></div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>v</code> - defaultFloatValue.</dd>
+</dl>
+</li>
+</ul>
+<a name="getMinDoubleValue--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getMinDoubleValue</h4>
+<pre>public double getMinDoubleValue()</pre>
+<div class="block">Gets the min double value.
+ <p></div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>minDoubleValue.</dd>
+</dl>
+</li>
+</ul>
+<a name="setMinDoubleValue-double-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setMinDoubleValue</h4>
+<pre>public void setMinDoubleValue(double v)</pre>
+<div class="block">Sets the min double value.
+ <p></div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>v</code> - m_minDoubleValue.</dd>
+</dl>
+</li>
+</ul>
+<a name="getMaxDoubleValue--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getMaxDoubleValue</h4>
+<pre>public double getMaxDoubleValue()</pre>
+<div class="block">Gets the max double value.
+ <p></div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>maxDoubleValue.</dd>
+</dl>
+</li>
+</ul>
+<a name="setMaxDoubleValue-double-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setMaxDoubleValue</h4>
+<pre>public void setMaxDoubleValue(double v)</pre>
+<div class="block">Sets the max double value.
+ <p></div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>v</code> - maxDoubleValue.</dd>
+</dl>
+</li>
+</ul>
+<a name="getDefaultDoubleValue--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getDefaultDoubleValue</h4>
+<pre>public double getDefaultDoubleValue()</pre>
+<div class="block">Gets the default double value.
+ <p></div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>defaultDoubleValue.</dd>
+</dl>
+</li>
+</ul>
+<a name="setDefaultDoubleValue-double-">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>setDefaultDoubleValue</h4>
+<pre>public void setDefaultDoubleValue(double v)</pre>
+<div class="block">Sets the default double value.
+ <p></div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>v</code> - defaultDoubleValue.</dd>
+</dl>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+<!-- ========= END OF CLASS DATA ========= -->
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../index-all.html">Index</a></li>
+<li><a href="../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../gr/zeus/ui/typesafe/TypeSafeTextDocumentFilter.html" title="class in gr.zeus.ui.typesafe"><span class="typeNameLink">Prev Class</span></a></li>
+<li>Next Class</li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../index.html?gr/zeus/ui/typesafe/TypeSafeVerifier.html" target="_top">Frames</a></li>
+<li><a href="TypeSafeVerifier.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary: </li>
+<li>Nested | </li>
+<li>Field | </li>
+<li><a href="#constructor.summary">Constr</a> | </li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail: </li>
+<li>Field | </li>
+<li><a href="#constructor.detail">Constr</a> | </li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+</body>
+</html>
diff --git a/doc/api/gr/zeus/ui/typesafe/package-frame.html b/doc/api/gr/zeus/ui/typesafe/package-frame.html
new file mode 100644
index 0000000..27ac4c1
--- /dev/null
+++ b/doc/api/gr/zeus/ui/typesafe/package-frame.html
@@ -0,0 +1,27 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc (1.8.0_05) on Sat Jun 07 12:11:35 EEST 2014 -->
+<title>gr.zeus.ui.typesafe</title>
+<meta name="date" content="2014-06-07">
+<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../script.js"></script>
+</head>
+<body>
+<h1 class="bar"><a href="../../../../gr/zeus/ui/typesafe/package-summary.html" target="classFrame">gr.zeus.ui.typesafe</a></h1>
+<div class="indexContainer">
+<h2 title="Classes">Classes</h2>
+<ul title="Classes">
+<li><a href="CustomFocusTraversalPolicy.html" title="class in gr.zeus.ui.typesafe" target="classFrame">CustomFocusTraversalPolicy</a></li>
+<li><a href="SelectAllTextOnFocus.html" title="class in gr.zeus.ui.typesafe" target="classFrame">SelectAllTextOnFocus</a></li>
+<li><a href="SimpleEditorPaneTraversal.html" title="class in gr.zeus.ui.typesafe" target="classFrame">SimpleEditorPaneTraversal</a></li>
+<li><a href="SimpleTextAreaTraversal.html" title="class in gr.zeus.ui.typesafe" target="classFrame">SimpleTextAreaTraversal</a></li>
+<li><a href="SimpleTextPaneTraversal.html" title="class in gr.zeus.ui.typesafe" target="classFrame">SimpleTextPaneTraversal</a></li>
+<li><a href="SwingConfigurationManager.html" title="class in gr.zeus.ui.typesafe" target="classFrame">SwingConfigurationManager</a></li>
+<li><a href="TypeSafeTextDocumentFilter.html" title="class in gr.zeus.ui.typesafe" target="classFrame">TypeSafeTextDocumentFilter</a></li>
+<li><a href="TypeSafeVerifier.html" title="class in gr.zeus.ui.typesafe" target="classFrame">TypeSafeVerifier</a></li>
+</ul>
+</div>
+</body>
+</html>
diff --git a/doc/api/gr/zeus/ui/typesafe/package-summary.html b/doc/api/gr/zeus/ui/typesafe/package-summary.html
new file mode 100644
index 0000000..408f97e
--- /dev/null
+++ b/doc/api/gr/zeus/ui/typesafe/package-summary.html
@@ -0,0 +1,192 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc (1.8.0_05) on Sat Jun 07 12:11:35 EEST 2014 -->
+<title>gr.zeus.ui.typesafe</title>
+<meta name="date" content="2014-06-07">
+<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="gr.zeus.ui.typesafe";
+        }
+    }
+    catch(err) {
+    }
+//-->
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../overview-summary.html">Overview</a></li>
+<li class="navBarCell1Rev">Package</li>
+<li>Class</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../index-all.html">Index</a></li>
+<li><a href="../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../gr/zeus/ui/table/package-summary.html">Prev Package</a></li>
+<li><a href="../../../../gr/zeus/util/package-summary.html">Next Package</a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../index.html?gr/zeus/ui/typesafe/package-summary.html" target="_top">Frames</a></li>
+<li><a href="package-summary.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<div class="header">
+<h1 title="Package" class="title">Package gr.zeus.ui.typesafe</h1>
+</div>
+<div class="contentContainer">
+<ul class="blockList">
+<li class="blockList">
+<table class="typeSummary" border="0" cellpadding="3" cellspacing="0" summary="Class Summary table, listing classes, and an explanation">
+<caption><span>Class Summary</span><span class="tabEnd"> </span></caption>
+<tr>
+<th class="colFirst" scope="col">Class</th>
+<th class="colLast" scope="col">Description</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colFirst"><a href="../../../../gr/zeus/ui/typesafe/CustomFocusTraversalPolicy.html" title="class in gr.zeus.ui.typesafe">CustomFocusTraversalPolicy</a></td>
+<td class="colLast">
+<div class="block">This class creates a custom focus policy for Swing components by extending
+ LayoutFocusTraversalPolicy.</div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><a href="../../../../gr/zeus/ui/typesafe/SelectAllTextOnFocus.html" title="class in gr.zeus.ui.typesafe">SelectAllTextOnFocus</a></td>
+<td class="colLast">
+<div class="block">This class is a simple FocusListener that when enabled performs a selectAll()
+ to any JTextComponent.</div>
+</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><a href="../../../../gr/zeus/ui/typesafe/SimpleEditorPaneTraversal.html" title="class in gr.zeus.ui.typesafe">SimpleEditorPaneTraversal</a></td>
+<td class="colLast">
+<div class="block">This class can be used to replace the default traversal keys for any
+ JEditorPane object.</div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><a href="../../../../gr/zeus/ui/typesafe/SimpleTextAreaTraversal.html" title="class in gr.zeus.ui.typesafe">SimpleTextAreaTraversal</a></td>
+<td class="colLast">
+<div class="block">This class can be used to replace the default traversal keys for any
+ JTextArea object.</div>
+</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><a href="../../../../gr/zeus/ui/typesafe/SimpleTextPaneTraversal.html" title="class in gr.zeus.ui.typesafe">SimpleTextPaneTraversal</a></td>
+<td class="colLast">
+<div class="block">This class can be used to replace the default traversal keys for any
+ JTextPane object.</div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><a href="../../../../gr/zeus/ui/typesafe/SwingConfigurationManager.html" title="class in gr.zeus.ui.typesafe">SwingConfigurationManager</a></td>
+<td class="colLast">
+<div class="block">This class is the central point of execution for all the classes inside
+ <code>gr.zeus.ui.typesafe</code> package.</div>
+</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><a href="../../../../gr/zeus/ui/typesafe/TypeSafeTextDocumentFilter.html" title="class in gr.zeus.ui.typesafe">TypeSafeTextDocumentFilter</a></td>
+<td class="colLast">
+<div class="block">This class creates a custom filter for JTextComponents by extending the
+ DocumentFilter.</div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><a href="../../../../gr/zeus/ui/typesafe/TypeSafeVerifier.html" title="class in gr.zeus.ui.typesafe">TypeSafeVerifier</a></td>
+<td class="colLast">
+<div class="block">This class creates a custom verifier for JTextComponents by extending the
+ InputVerifier.</div>
+</td>
+</tr>
+</tbody>
+</table>
+</li>
+</ul>
+</div>
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../overview-summary.html">Overview</a></li>
+<li class="navBarCell1Rev">Package</li>
+<li>Class</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../index-all.html">Index</a></li>
+<li><a href="../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../gr/zeus/ui/table/package-summary.html">Prev Package</a></li>
+<li><a href="../../../../gr/zeus/util/package-summary.html">Next Package</a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../index.html?gr/zeus/ui/typesafe/package-summary.html" target="_top">Frames</a></li>
+<li><a href="package-summary.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+</body>
+</html>
diff --git a/doc/api/gr/zeus/ui/typesafe/package-tree.html b/doc/api/gr/zeus/ui/typesafe/package-tree.html
new file mode 100644
index 0000000..d026eca
--- /dev/null
+++ b/doc/api/gr/zeus/ui/typesafe/package-tree.html
@@ -0,0 +1,166 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc (1.8.0_05) on Sat Jun 07 12:11:35 EEST 2014 -->
+<title>gr.zeus.ui.typesafe Class Hierarchy</title>
+<meta name="date" content="2014-06-07">
+<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="gr.zeus.ui.typesafe Class Hierarchy";
+        }
+    }
+    catch(err) {
+    }
+//-->
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li>Class</li>
+<li class="navBarCell1Rev">Tree</li>
+<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../index-all.html">Index</a></li>
+<li><a href="../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../gr/zeus/ui/table/package-tree.html">Prev</a></li>
+<li><a href="../../../../gr/zeus/util/package-tree.html">Next</a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../index.html?gr/zeus/ui/typesafe/package-tree.html" target="_top">Frames</a></li>
+<li><a href="package-tree.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<div class="header">
+<h1 class="title">Hierarchy For Package gr.zeus.ui.typesafe</h1>
+<span class="packageHierarchyLabel">Package Hierarchies:</span>
+<ul class="horizontal">
+<li><a href="../../../../overview-tree.html">All Packages</a></li>
+</ul>
+</div>
+<div class="contentContainer">
+<h2 title="Class Hierarchy">Class Hierarchy</h2>
+<ul>
+<li type="circle">java.lang.Object
+<ul>
+<li type="circle">javax.swing.text.DocumentFilter
+<ul>
+<li type="circle">gr.zeus.ui.typesafe.<a href="../../../../gr/zeus/ui/typesafe/TypeSafeTextDocumentFilter.html" title="class in gr.zeus.ui.typesafe"><span class="typeNameLink">TypeSafeTextDocumentFilter</span></a></li>
+</ul>
+</li>
+<li type="circle">java.awt.FocusTraversalPolicy
+<ul>
+<li type="circle">javax.swing.InternalFrameFocusTraversalPolicy
+<ul>
+<li type="circle">javax.swing.SortingFocusTraversalPolicy
+<ul>
+<li type="circle">javax.swing.LayoutFocusTraversalPolicy (implements java.io.Serializable)
+<ul>
+<li type="circle">gr.zeus.ui.typesafe.<a href="../../../../gr/zeus/ui/typesafe/CustomFocusTraversalPolicy.html" title="class in gr.zeus.ui.typesafe"><span class="typeNameLink">CustomFocusTraversalPolicy</span></a></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+<li type="circle">javax.swing.InputVerifier
+<ul>
+<li type="circle">gr.zeus.ui.typesafe.<a href="../../../../gr/zeus/ui/typesafe/TypeSafeVerifier.html" title="class in gr.zeus.ui.typesafe"><span class="typeNameLink">TypeSafeVerifier</span></a></li>
+</ul>
+</li>
+<li type="circle">gr.zeus.ui.typesafe.<a href="../../../../gr/zeus/ui/typesafe/SelectAllTextOnFocus.html" title="class in gr.zeus.ui.typesafe"><span class="typeNameLink">SelectAllTextOnFocus</span></a> (implements java.awt.event.FocusListener)</li>
+<li type="circle">gr.zeus.ui.typesafe.<a href="../../../../gr/zeus/ui/typesafe/SimpleEditorPaneTraversal.html" title="class in gr.zeus.ui.typesafe"><span class="typeNameLink">SimpleEditorPaneTraversal</span></a></li>
+<li type="circle">gr.zeus.ui.typesafe.<a href="../../../../gr/zeus/ui/typesafe/SimpleTextAreaTraversal.html" title="class in gr.zeus.ui.typesafe"><span class="typeNameLink">SimpleTextAreaTraversal</span></a></li>
+<li type="circle">gr.zeus.ui.typesafe.<a href="../../../../gr/zeus/ui/typesafe/SimpleTextPaneTraversal.html" title="class in gr.zeus.ui.typesafe"><span class="typeNameLink">SimpleTextPaneTraversal</span></a></li>
+<li type="circle">gr.zeus.ui.typesafe.<a href="../../../../gr/zeus/ui/typesafe/SwingConfigurationManager.html" title="class in gr.zeus.ui.typesafe"><span class="typeNameLink">SwingConfigurationManager</span></a></li>
+</ul>
+</li>
+</ul>
+</div>
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li>Class</li>
+<li class="navBarCell1Rev">Tree</li>
+<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../index-all.html">Index</a></li>
+<li><a href="../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../gr/zeus/ui/table/package-tree.html">Prev</a></li>
+<li><a href="../../../../gr/zeus/util/package-tree.html">Next</a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../index.html?gr/zeus/ui/typesafe/package-tree.html" target="_top">Frames</a></li>
+<li><a href="package-tree.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+</body>
+</html>
diff --git a/doc/api/gr/zeus/util/CurrentDateHelper.html b/doc/api/gr/zeus/util/CurrentDateHelper.html
new file mode 100644
index 0000000..975d726
--- /dev/null
+++ b/doc/api/gr/zeus/util/CurrentDateHelper.html
@@ -0,0 +1,432 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc (1.8.0_05) on Sat Jun 07 12:11:35 EEST 2014 -->
+<title>CurrentDateHelper</title>
+<meta name="date" content="2014-06-07">
+<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="CurrentDateHelper";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = {"i0":9,"i1":9,"i2":9,"i3":9,"i4":9,"i5":9,"i6":9,"i7":9};
+var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],8:["t4","Concrete Methods"]};
+var altColor = "altColor";
+var rowColor = "rowColor";
+var tableTab = "tableTab";
+var activeTableTab = "activeTableTab";
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../index-all.html">Index</a></li>
+<li><a href="../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev Class</li>
+<li><a href="../../../gr/zeus/util/DateHelper.html" title="class in gr.zeus.util"><span class="typeNameLink">Next Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../index.html?gr/zeus/util/CurrentDateHelper.html" target="_top">Frames</a></li>
+<li><a href="CurrentDateHelper.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary: </li>
+<li>Nested | </li>
+<li>Field | </li>
+<li><a href="#constructor.summary">Constr</a> | </li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail: </li>
+<li>Field | </li>
+<li><a href="#constructor.detail">Constr</a> | </li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="subTitle">gr.zeus.util</div>
+<h2 title="Class CurrentDateHelper" class="title">Class CurrentDateHelper</h2>
+</div>
+<div class="contentContainer">
+<ul class="inheritance">
+<li>java.lang.Object</li>
+<li>
+<ul class="inheritance">
+<li>gr.zeus.util.CurrentDateHelper</li>
+</ul>
+</li>
+</ul>
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<hr>
+<br>
+<pre>public final class <span class="typeNameLabel">CurrentDateHelper</span>
+extends java.lang.Object</pre>
+<div class="block">Helper methods for current date and time.
+ <p></div>
+<dl>
+<dt><span class="simpleTagLabel">Since:</span></dt>
+<dd>1.0</dd>
+<dt><span class="simpleTagLabel">Author:</span></dt>
+<dd>Gregory Kotsaftis</dd>
+</dl>
+</li>
+</ul>
+</div>
+<div class="summary">
+<ul class="blockList">
+<li class="blockList">
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.summary">
+<!--   -->
+</a>
+<h3>Constructor Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
+<caption><span>Constructors</span><span class="tabEnd"> </span></caption>
+<tr>
+<th class="colOne" scope="col">Constructor and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../gr/zeus/util/CurrentDateHelper.html#CurrentDateHelper--">CurrentDateHelper</a></span>()</code> </td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.summary">
+<!--   -->
+</a>
+<h3>Method Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
+<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd"> </span></span><span id="t1" class="tableTab"><span><a href="javascript:show(1);">Static Methods</a></span><span class="tabEnd"> </span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd"> </span></span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tr id="i0" class="altColor">
+<td class="colFirst"><code>static java.util.Date</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../gr/zeus/util/CurrentDateHelper.html#getCurrentDate--">getCurrentDate</a></span>()</code>
+<div class="block">Gets the current date.</div>
+</td>
+</tr>
+<tr id="i1" class="rowColor">
+<td class="colFirst"><code>static long</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../gr/zeus/util/CurrentDateHelper.html#getCurrentDateLong--">getCurrentDateLong</a></span>()</code>
+<div class="block">Gets the current date in long number format.</div>
+</td>
+</tr>
+<tr id="i2" class="altColor">
+<td class="colFirst"><code>static int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../gr/zeus/util/CurrentDateHelper.html#getCurrentDay--">getCurrentDay</a></span>()</code>
+<div class="block">Gets the current day in the month (1...31).</div>
+</td>
+</tr>
+<tr id="i3" class="rowColor">
+<td class="colFirst"><code>static int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../gr/zeus/util/CurrentDateHelper.html#getCurrentHour--">getCurrentHour</a></span>()</code>
+<div class="block">Gets the current hour in 24 hours format.</div>
+</td>
+</tr>
+<tr id="i4" class="altColor">
+<td class="colFirst"><code>static int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../gr/zeus/util/CurrentDateHelper.html#getCurrentMinutes--">getCurrentMinutes</a></span>()</code>
+<div class="block">Gets the current minutes in hour.</div>
+</td>
+</tr>
+<tr id="i5" class="rowColor">
+<td class="colFirst"><code>static int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../gr/zeus/util/CurrentDateHelper.html#getCurrentMonth--">getCurrentMonth</a></span>()</code>
+<div class="block">Gets the current month, JANUARY = 1,......,DECEMBER = 12.</div>
+</td>
+</tr>
+<tr id="i6" class="altColor">
+<td class="colFirst"><code>static int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../gr/zeus/util/CurrentDateHelper.html#getCurrentSeconds--">getCurrentSeconds</a></span>()</code>
+<div class="block">Gets the current seconds in hour.</div>
+</td>
+</tr>
+<tr id="i7" class="rowColor">
+<td class="colFirst"><code>static int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../gr/zeus/util/CurrentDateHelper.html#getCurrentYear--">getCurrentYear</a></span>()</code>
+<div class="block">Gets the current year, e.g.</div>
+</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
+<!--   -->
+</a>
+<h3>Methods inherited from class java.lang.Object</h3>
+<code>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</code></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="details">
+<ul class="blockList">
+<li class="blockList">
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.detail">
+<!--   -->
+</a>
+<h3>Constructor Detail</h3>
+<a name="CurrentDateHelper--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>CurrentDateHelper</h4>
+<pre>public CurrentDateHelper()</pre>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ============ METHOD DETAIL ========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.detail">
+<!--   -->
+</a>
+<h3>Method Detail</h3>
+<a name="getCurrentDate--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getCurrentDate</h4>
+<pre>public static java.util.Date getCurrentDate()</pre>
+<div class="block">Gets the current date.
+ <p></div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>The current date in <code>java.util.Date</code> object.</dd>
+</dl>
+</li>
+</ul>
+<a name="getCurrentDateLong--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getCurrentDateLong</h4>
+<pre>public static long getCurrentDateLong()</pre>
+<div class="block">Gets the current date in long number format.
+ <p></div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>The current date in long number format.</dd>
+</dl>
+</li>
+</ul>
+<a name="getCurrentYear--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getCurrentYear</h4>
+<pre>public static int getCurrentYear()</pre>
+<div class="block">Gets the current year, e.g. 2004.
+ <p></div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>The current year.</dd>
+</dl>
+</li>
+</ul>
+<a name="getCurrentMonth--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getCurrentMonth</h4>
+<pre>public static int getCurrentMonth()</pre>
+<div class="block">Gets the current month, JANUARY = 1,......,DECEMBER = 12.
+ <p></div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>The current month.</dd>
+</dl>
+</li>
+</ul>
+<a name="getCurrentDay--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getCurrentDay</h4>
+<pre>public static int getCurrentDay()</pre>
+<div class="block">Gets the current day in the month (1...31).
+ <p></div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>The current day in a month.</dd>
+</dl>
+</li>
+</ul>
+<a name="getCurrentHour--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getCurrentHour</h4>
+<pre>public static int getCurrentHour()</pre>
+<div class="block">Gets the current hour in 24 hours format.
+ <p></div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>The current hour in 24 hours format.</dd>
+</dl>
+</li>
+</ul>
+<a name="getCurrentMinutes--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getCurrentMinutes</h4>
+<pre>public static int getCurrentMinutes()</pre>
+<div class="block">Gets the current minutes in hour.
+ <p></div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>The current minutes in hour.</dd>
+</dl>
+</li>
+</ul>
+<a name="getCurrentSeconds--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>getCurrentSeconds</h4>
+<pre>public static int getCurrentSeconds()</pre>
+<div class="block">Gets the current seconds in hour.
+ <p></div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>The current seconds in hour.</dd>
+</dl>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+<!-- ========= END OF CLASS DATA ========= -->
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../index-all.html">Index</a></li>
+<li><a href="../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev Class</li>
+<li><a href="../../../gr/zeus/util/DateHelper.html" title="class in gr.zeus.util"><span class="typeNameLink">Next Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../index.html?gr/zeus/util/CurrentDateHelper.html" target="_top">Frames</a></li>
+<li><a href="CurrentDateHelper.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary: </li>
+<li>Nested | </li>
+<li>Field | </li>
+<li><a href="#constructor.summary">Constr</a> | </li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail: </li>
+<li>Field | </li>
+<li><a href="#constructor.detail">Constr</a> | </li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+</body>
+</html>
diff --git a/doc/api/gr/zeus/util/DateHelper.html b/doc/api/gr/zeus/util/DateHelper.html
new file mode 100644
index 0000000..81612cb
--- /dev/null
+++ b/doc/api/gr/zeus/util/DateHelper.html
@@ -0,0 +1,557 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc (1.8.0_05) on Sat Jun 07 12:11:35 EEST 2014 -->
+<title>DateHelper</title>
+<meta name="date" content="2014-06-07">
+<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="DateHelper";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = {"i0":9,"i1":9,"i2":9,"i3":9,"i4":9,"i5":9,"i6":9,"i7":9,"i8":9,"i9":9};
+var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],8:["t4","Concrete Methods"]};
+var altColor = "altColor";
+var rowColor = "rowColor";
+var tableTab = "tableTab";
+var activeTableTab = "activeTableTab";
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../index-all.html">Index</a></li>
+<li><a href="../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../gr/zeus/util/CurrentDateHelper.html" title="class in gr.zeus.util"><span class="typeNameLink">Prev Class</span></a></li>
+<li><a href="../../../gr/zeus/util/GUIUtils.html" title="class in gr.zeus.util"><span class="typeNameLink">Next Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../index.html?gr/zeus/util/DateHelper.html" target="_top">Frames</a></li>
+<li><a href="DateHelper.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary: </li>
+<li>Nested | </li>
+<li>Field | </li>
+<li><a href="#constructor.summary">Constr</a> | </li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail: </li>
+<li>Field | </li>
+<li><a href="#constructor.detail">Constr</a> | </li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="subTitle">gr.zeus.util</div>
+<h2 title="Class DateHelper" class="title">Class DateHelper</h2>
+</div>
+<div class="contentContainer">
+<ul class="inheritance">
+<li>java.lang.Object</li>
+<li>
+<ul class="inheritance">
+<li>gr.zeus.util.DateHelper</li>
+</ul>
+</li>
+</ul>
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<hr>
+<br>
+<pre>public final class <span class="typeNameLabel">DateHelper</span>
+extends java.lang.Object</pre>
+<div class="block">Helper methods for <code>java.util.Date</code>
+ <p></div>
+<dl>
+<dt><span class="simpleTagLabel">Since:</span></dt>
+<dd>1.05</dd>
+<dt><span class="simpleTagLabel">Author:</span></dt>
+<dd>Gregory Kotsaftis</dd>
+</dl>
+</li>
+</ul>
+</div>
+<div class="summary">
+<ul class="blockList">
+<li class="blockList">
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.summary">
+<!--   -->
+</a>
+<h3>Constructor Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
+<caption><span>Constructors</span><span class="tabEnd"> </span></caption>
+<tr>
+<th class="colOne" scope="col">Constructor and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../gr/zeus/util/DateHelper.html#DateHelper--">DateHelper</a></span>()</code> </td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.summary">
+<!--   -->
+</a>
+<h3>Method Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
+<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd"> </span></span><span id="t1" class="tableTab"><span><a href="javascript:show(1);">Static Methods</a></span><span class="tabEnd"> </span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd"> </span></span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tr id="i0" class="altColor">
+<td class="colFirst"><code>static void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../gr/zeus/util/DateHelper.html#addDaysToDate-java.util.Calendar-int-">addDaysToDate</a></span>(java.util.Calendar cal,
+             int days)</code>
+<div class="block">Adds 'days' to a calendar taking into consideration
+ the month, year and leap years change as well.</div>
+</td>
+</tr>
+<tr id="i1" class="rowColor">
+<td class="colFirst"><code>static java.lang.String</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../gr/zeus/util/DateHelper.html#dateToString-java.util.Date-java.lang.String-">dateToString</a></span>(java.util.Date uDate,
+            java.lang.String pattern)</code>
+<div class="block">Converts a date to a string based on a
+ <code>SimpleDateFormat</code> pattern.</div>
+</td>
+</tr>
+<tr id="i2" class="altColor">
+<td class="colFirst"><code>static int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../gr/zeus/util/DateHelper.html#getDayForDate-java.lang.String-java.lang.String-">getDayForDate</a></span>(java.lang.String dateToCheck,
+             java.lang.String pattern)</code>
+<div class="block">Parses a string into a date.</div>
+</td>
+</tr>
+<tr id="i3" class="rowColor">
+<td class="colFirst"><code>static java.lang.String</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../gr/zeus/util/DateHelper.html#getDayNameForDate-java.util.Date-boolean-">getDayNameForDate</a></span>(java.util.Date dt,
+                 boolean fullname)</code>
+<div class="block">Gets the name of a day based on a date and current locale.</div>
+</td>
+</tr>
+<tr id="i4" class="altColor">
+<td class="colFirst"><code>static int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../gr/zeus/util/DateHelper.html#getMonthForDate-java.lang.String-java.lang.String-">getMonthForDate</a></span>(java.lang.String dateToCheck,
+               java.lang.String pattern)</code>
+<div class="block">Parses a string into a date.</div>
+</td>
+</tr>
+<tr id="i5" class="rowColor">
+<td class="colFirst"><code>static int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../gr/zeus/util/DateHelper.html#getYearForDate-java.lang.String-java.lang.String-">getYearForDate</a></span>(java.lang.String dateToCheck,
+              java.lang.String pattern)</code>
+<div class="block">Parses a string into a date.</div>
+</td>
+</tr>
+<tr id="i6" class="altColor">
+<td class="colFirst"><code>static boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../gr/zeus/util/DateHelper.html#isDateValid-java.lang.String-java.lang.String-">isDateValid</a></span>(java.lang.String dateToCheck,
+           java.lang.String pattern)</code>
+<div class="block">Checks a string to see if it contains a valid date in
+ <code>SimpleDateFormat</code>.</div>
+</td>
+</tr>
+<tr id="i7" class="rowColor">
+<td class="colFirst"><code>static boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../gr/zeus/util/DateHelper.html#isLeapYear-int-">isLeapYear</a></span>(int year)</code>
+<div class="block">Leap years occur in years exactly divisible by four,
+ <i>except</i> those years ending in 00 are leap years
+ only if they are divisible by 400.</div>
+</td>
+</tr>
+<tr id="i8" class="altColor">
+<td class="colFirst"><code>static java.util.Date</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../gr/zeus/util/DateHelper.html#parseDate-java.lang.String-java.lang.String-">parseDate</a></span>(java.lang.String myDate,
+         java.lang.String pattern)</code>
+<div class="block">Parses a string into a date.</div>
+</td>
+</tr>
+<tr id="i9" class="rowColor">
+<td class="colFirst"><code>static void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../gr/zeus/util/DateHelper.html#subDaysFromDate-java.util.Calendar-int-">subDaysFromDate</a></span>(java.util.Calendar cal,
+               int days)</code>
+<div class="block">Subtracts 'days' from a calendar taking into consideration
+ the month, year and leap years change as well.</div>
+</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
+<!--   -->
+</a>
+<h3>Methods inherited from class java.lang.Object</h3>
+<code>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</code></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="details">
+<ul class="blockList">
+<li class="blockList">
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.detail">
+<!--   -->
+</a>
+<h3>Constructor Detail</h3>
+<a name="DateHelper--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>DateHelper</h4>
+<pre>public DateHelper()</pre>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ============ METHOD DETAIL ========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.detail">
+<!--   -->
+</a>
+<h3>Method Detail</h3>
+<a name="subDaysFromDate-java.util.Calendar-int-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>subDaysFromDate</h4>
+<pre>public static void subDaysFromDate(java.util.Calendar cal,
+                                   int days)</pre>
+<div class="block">Subtracts 'days' from a calendar taking into consideration
+ the month, year and leap years change as well.
+ <p></div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>cal</code> - The <code>Calendar</code>.</dd>
+<dd><code>days</code> - The number of days.</dd>
+</dl>
+</li>
+</ul>
+<a name="addDaysToDate-java.util.Calendar-int-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>addDaysToDate</h4>
+<pre>public static void addDaysToDate(java.util.Calendar cal,
+                                 int days)</pre>
+<div class="block">Adds 'days' to a calendar taking into consideration
+ the month, year and leap years change as well.
+ <p></div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>cal</code> - The <code>Calendar</code>.</dd>
+<dd><code>days</code> - The number of days.</dd>
+</dl>
+</li>
+</ul>
+<a name="isLeapYear-int-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>isLeapYear</h4>
+<pre>public static boolean isLeapYear(int year)</pre>
+<div class="block">Leap years occur in years exactly divisible by four,
+ <i>except</i> those years ending in 00 are leap years
+ only if they are divisible by 400.
+ <p></div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>year</code> - The year number.
+ <p></dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd><code>true</code> if it is a leap year.</dd>
+</dl>
+</li>
+</ul>
+<a name="parseDate-java.lang.String-java.lang.String-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>parseDate</h4>
+<pre>public static java.util.Date parseDate(java.lang.String myDate,
+                                       java.lang.String pattern)
+                                throws java.text.ParseException</pre>
+<div class="block">Parses a string into a date. String should be in
+ <code>SimpleDateFormat</code> format.
+ e.g. <code>java.util.Date d = parseDate(myDate, "dd/MM/yyyy");</code>
+ <p></div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>myDate</code> - The date string.</dd>
+<dd><code>pattern</code> - The pattern to use.
+ <p></dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>The <code>Date</code>.
+ <p></dd>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code>java.text.ParseException</code></dd>
+</dl>
+</li>
+</ul>
+<a name="dateToString-java.util.Date-java.lang.String-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>dateToString</h4>
+<pre>public static java.lang.String dateToString(java.util.Date uDate,
+                                            java.lang.String pattern)</pre>
+<div class="block">Converts a date to a string based on a
+ <code>SimpleDateFormat</code> pattern.
+ e.g. <code>String s = dateToString(uDate, "dd/MM/yyyy");</code>
+ <p></div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>uDate</code> - The date string.</dd>
+<dd><code>pattern</code> - The pattern to use.
+ <p></dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>The string of the date or <code>null</code> on error.</dd>
+</dl>
+</li>
+</ul>
+<a name="isDateValid-java.lang.String-java.lang.String-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>isDateValid</h4>
+<pre>public static boolean isDateValid(java.lang.String dateToCheck,
+                                  java.lang.String pattern)</pre>
+<div class="block">Checks a string to see if it contains a valid date in
+ <code>SimpleDateFormat</code>.
+ <p></div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>dateToCheck</code> - The date string to check.</dd>
+<dd><code>pattern</code> - The pattern to use.
+ <p></dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd><code>true</code> if it contains a valid date in
+                      <code>SimpleDateFormat</code>.</dd>
+</dl>
+</li>
+</ul>
+<a name="getYearForDate-java.lang.String-java.lang.String-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getYearForDate</h4>
+<pre>public static int getYearForDate(java.lang.String dateToCheck,
+                                 java.lang.String pattern)</pre>
+<div class="block">Parses a string into a date. String should be in
+ <code>SimpleDateFormat</code> format. Returns only the year of the date
+ or -1 on error.
+ <p>
+ <b>NOTE:</b> only 'yyyy' is supported!
+ <p></div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>dateToCheck</code> - The date string to check.</dd>
+<dd><code>pattern</code> - the   The pattern to use.
+ <p></dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>The date or -1 on error.</dd>
+</dl>
+</li>
+</ul>
+<a name="getMonthForDate-java.lang.String-java.lang.String-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getMonthForDate</h4>
+<pre>public static int getMonthForDate(java.lang.String dateToCheck,
+                                  java.lang.String pattern)</pre>
+<div class="block">Parses a string into a date. String should be in
+ <code>SimpleDateFormat</code> format. Returns only the month of the date
+ or -1 on error.
+ <p>
+ <b>NOTE:</b> only 'MM' is supported!
+ <p></div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>dateToCheck</code> - The date string to check.</dd>
+<dd><code>pattern</code> - The pattern to use.
+ <p></dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>The date or -1 on error.</dd>
+</dl>
+</li>
+</ul>
+<a name="getDayForDate-java.lang.String-java.lang.String-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getDayForDate</h4>
+<pre>public static int getDayForDate(java.lang.String dateToCheck,
+                                java.lang.String pattern)</pre>
+<div class="block">Parses a string into a date. String should be in
+ <code>SimpleDateFormat</code> format. Returns only the day of the date
+ or -1 on error.
+ <p>
+ <b>NOTE:</b> only 'dd' is supported!
+ <p></div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>dateToCheck</code> - The date string to check.</dd>
+<dd><code>pattern</code> - The pattern to use.
+ <p></dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>The day for the date or -1 on error.</dd>
+</dl>
+</li>
+</ul>
+<a name="getDayNameForDate-java.util.Date-boolean-">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>getDayNameForDate</h4>
+<pre>public static java.lang.String getDayNameForDate(java.util.Date dt,
+                                                 boolean fullname)</pre>
+<div class="block">Gets the name of a day based on a date and current locale.
+ <p></div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>dt</code> - The date.</dd>
+<dd><code>fullname</code> - Fetch complete day's name or the short one.
+ <p></dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>A string with the name of the day.</dd>
+</dl>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+<!-- ========= END OF CLASS DATA ========= -->
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../index-all.html">Index</a></li>
+<li><a href="../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../gr/zeus/util/CurrentDateHelper.html" title="class in gr.zeus.util"><span class="typeNameLink">Prev Class</span></a></li>
+<li><a href="../../../gr/zeus/util/GUIUtils.html" title="class in gr.zeus.util"><span class="typeNameLink">Next Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../index.html?gr/zeus/util/DateHelper.html" target="_top">Frames</a></li>
+<li><a href="DateHelper.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary: </li>
+<li>Nested | </li>
+<li>Field | </li>
+<li><a href="#constructor.summary">Constr</a> | </li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail: </li>
+<li>Field | </li>
+<li><a href="#constructor.detail">Constr</a> | </li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+</body>
+</html>
diff --git a/doc/api/gr/zeus/util/GUIUtils.html b/doc/api/gr/zeus/util/GUIUtils.html
new file mode 100644
index 0000000..3a90181
--- /dev/null
+++ b/doc/api/gr/zeus/util/GUIUtils.html
@@ -0,0 +1,372 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc (1.8.0_05) on Sat Jun 07 12:11:35 EEST 2014 -->
+<title>GUIUtils</title>
+<meta name="date" content="2014-06-07">
+<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="GUIUtils";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = {"i0":9,"i1":9,"i2":9,"i3":9,"i4":9};
+var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],8:["t4","Concrete Methods"]};
+var altColor = "altColor";
+var rowColor = "rowColor";
+var tableTab = "tableTab";
+var activeTableTab = "activeTableTab";
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../index-all.html">Index</a></li>
+<li><a href="../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../gr/zeus/util/DateHelper.html" title="class in gr.zeus.util"><span class="typeNameLink">Prev Class</span></a></li>
+<li><a href="../../../gr/zeus/util/IOHelper.html" title="class in gr.zeus.util"><span class="typeNameLink">Next Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../index.html?gr/zeus/util/GUIUtils.html" target="_top">Frames</a></li>
+<li><a href="GUIUtils.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary: </li>
+<li>Nested | </li>
+<li>Field | </li>
+<li><a href="#constructor.summary">Constr</a> | </li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail: </li>
+<li>Field | </li>
+<li><a href="#constructor.detail">Constr</a> | </li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="subTitle">gr.zeus.util</div>
+<h2 title="Class GUIUtils" class="title">Class GUIUtils</h2>
+</div>
+<div class="contentContainer">
+<ul class="inheritance">
+<li>java.lang.Object</li>
+<li>
+<ul class="inheritance">
+<li>gr.zeus.util.GUIUtils</li>
+</ul>
+</li>
+</ul>
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<hr>
+<br>
+<pre>public final class <span class="typeNameLabel">GUIUtils</span>
+extends java.lang.Object</pre>
+<div class="block">GUI Helper class, contains static methods that are used all the time.
+ <p></div>
+<dl>
+<dt><span class="simpleTagLabel">Since:</span></dt>
+<dd>1.0</dd>
+<dt><span class="simpleTagLabel">Author:</span></dt>
+<dd>Gregory Kotsaftis</dd>
+</dl>
+</li>
+</ul>
+</div>
+<div class="summary">
+<ul class="blockList">
+<li class="blockList">
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.summary">
+<!--   -->
+</a>
+<h3>Constructor Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
+<caption><span>Constructors</span><span class="tabEnd"> </span></caption>
+<tr>
+<th class="colOne" scope="col">Constructor and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../gr/zeus/util/GUIUtils.html#GUIUtils--">GUIUtils</a></span>()</code> </td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.summary">
+<!--   -->
+</a>
+<h3>Method Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
+<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd"> </span></span><span id="t1" class="tableTab"><span><a href="javascript:show(1);">Static Methods</a></span><span class="tabEnd"> </span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd"> </span></span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tr id="i0" class="altColor">
+<td class="colFirst"><code>static void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../gr/zeus/util/GUIUtils.html#centerOnScreen-java.awt.Window-">centerOnScreen</a></span>(java.awt.Window w)</code>
+<div class="block">Centers a window on screen.</div>
+</td>
+</tr>
+<tr id="i1" class="rowColor">
+<td class="colFirst"><code>static void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../gr/zeus/util/GUIUtils.html#hideJTableColumn-javax.swing.table.TableColumn-">hideJTableColumn</a></span>(javax.swing.table.TableColumn tc)</code>
+<div class="block">Hides a specific column of a JTable.</div>
+</td>
+</tr>
+<tr id="i2" class="altColor">
+<td class="colFirst"><code>static void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../gr/zeus/util/GUIUtils.html#invokeAndWait-java.lang.Runnable-">invokeAndWait</a></span>(java.lang.Runnable task)</code>
+<div class="block">Execute a task on EDT and block's it, until the task is finished.</div>
+</td>
+</tr>
+<tr id="i3" class="rowColor">
+<td class="colFirst"><code>static void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../gr/zeus/util/GUIUtils.html#lockJTableColumnWidth-javax.swing.table.TableColumn-int-">lockJTableColumnWidth</a></span>(javax.swing.table.TableColumn tc,
+                     int pixels)</code>
+<div class="block">Locks a Jtable's column width with 'pixels' size.</div>
+</td>
+</tr>
+<tr id="i4" class="altColor">
+<td class="colFirst"><code>static void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../gr/zeus/util/GUIUtils.html#maximizeJFrame-javax.swing.JFrame-">maximizeJFrame</a></span>(javax.swing.JFrame f)</code>
+<div class="block">Maximizes a JFrame, just like the 'maximize window' button does.</div>
+</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
+<!--   -->
+</a>
+<h3>Methods inherited from class java.lang.Object</h3>
+<code>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</code></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="details">
+<ul class="blockList">
+<li class="blockList">
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.detail">
+<!--   -->
+</a>
+<h3>Constructor Detail</h3>
+<a name="GUIUtils--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>GUIUtils</h4>
+<pre>public GUIUtils()</pre>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ============ METHOD DETAIL ========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.detail">
+<!--   -->
+</a>
+<h3>Method Detail</h3>
+<a name="invokeAndWait-java.lang.Runnable-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>invokeAndWait</h4>
+<pre>public static void invokeAndWait(java.lang.Runnable task)</pre>
+<div class="block">Execute a task on EDT and block's it, until the task is finished.
+ If there is an exception, it is converted to a RuntimeException.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>task</code> - The process to run.</dd>
+</dl>
+</li>
+</ul>
+<a name="centerOnScreen-java.awt.Window-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>centerOnScreen</h4>
+<pre>public static void centerOnScreen(java.awt.Window w)</pre>
+<div class="block">Centers a window on screen.
+ <p></div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>w</code> - The window to center.</dd>
+</dl>
+</li>
+</ul>
+<a name="maximizeJFrame-javax.swing.JFrame-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>maximizeJFrame</h4>
+<pre>public static void maximizeJFrame(javax.swing.JFrame f)</pre>
+<div class="block">Maximizes a JFrame, just like the 'maximize window' button does.
+ <p></div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>f</code> - The frame to maximize.</dd>
+</dl>
+</li>
+</ul>
+<a name="lockJTableColumnWidth-javax.swing.table.TableColumn-int-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>lockJTableColumnWidth</h4>
+<pre>public static void lockJTableColumnWidth(javax.swing.table.TableColumn tc,
+                                         int pixels)</pre>
+<div class="block">Locks a Jtable's column width with 'pixels' size.
+ <p></div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>tc</code> - The table column.</dd>
+<dd><code>pixels</code> - The desired pixels.</dd>
+</dl>
+</li>
+</ul>
+<a name="hideJTableColumn-javax.swing.table.TableColumn-">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>hideJTableColumn</h4>
+<pre>public static void hideJTableColumn(javax.swing.table.TableColumn tc)</pre>
+<div class="block">Hides a specific column of a JTable.
+ <p></div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>tc</code> - The table column.</dd>
+</dl>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+<!-- ========= END OF CLASS DATA ========= -->
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../index-all.html">Index</a></li>
+<li><a href="../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../gr/zeus/util/DateHelper.html" title="class in gr.zeus.util"><span class="typeNameLink">Prev Class</span></a></li>
+<li><a href="../../../gr/zeus/util/IOHelper.html" title="class in gr.zeus.util"><span class="typeNameLink">Next Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../index.html?gr/zeus/util/GUIUtils.html" target="_top">Frames</a></li>
+<li><a href="GUIUtils.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary: </li>
+<li>Nested | </li>
+<li>Field | </li>
+<li><a href="#constructor.summary">Constr</a> | </li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail: </li>
+<li>Field | </li>
+<li><a href="#constructor.detail">Constr</a> | </li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+</body>
+</html>
diff --git a/doc/api/gr/zeus/util/IOHelper.html b/doc/api/gr/zeus/util/IOHelper.html
new file mode 100644
index 0000000..973868a
--- /dev/null
+++ b/doc/api/gr/zeus/util/IOHelper.html
@@ -0,0 +1,700 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc (1.8.0_05) on Sat Jun 07 12:11:35 EEST 2014 -->
+<title>IOHelper</title>
+<meta name="date" content="2014-06-07">
+<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="IOHelper";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = {"i0":9,"i1":9,"i2":9,"i3":9,"i4":9,"i5":9,"i6":9,"i7":9,"i8":9,"i9":9,"i10":9,"i11":9,"i12":9,"i13":9,"i14":9};
+var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],8:["t4","Concrete Methods"]};
+var altColor = "altColor";
+var rowColor = "rowColor";
+var tableTab = "tableTab";
+var activeTableTab = "activeTableTab";
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../index-all.html">Index</a></li>
+<li><a href="../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../gr/zeus/util/GUIUtils.html" title="class in gr.zeus.util"><span class="typeNameLink">Prev Class</span></a></li>
+<li><a href="../../../gr/zeus/util/SimpleTimerMillis.html" title="class in gr.zeus.util"><span class="typeNameLink">Next Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../index.html?gr/zeus/util/IOHelper.html" target="_top">Frames</a></li>
+<li><a href="IOHelper.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary: </li>
+<li>Nested | </li>
+<li>Field | </li>
+<li><a href="#constructor.summary">Constr</a> | </li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail: </li>
+<li>Field | </li>
+<li><a href="#constructor.detail">Constr</a> | </li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="subTitle">gr.zeus.util</div>
+<h2 title="Class IOHelper" class="title">Class IOHelper</h2>
+</div>
+<div class="contentContainer">
+<ul class="inheritance">
+<li>java.lang.Object</li>
+<li>
+<ul class="inheritance">
+<li>gr.zeus.util.IOHelper</li>
+</ul>
+</li>
+</ul>
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<hr>
+<br>
+<pre>public final class <span class="typeNameLabel">IOHelper</span>
+extends java.lang.Object</pre>
+<div class="block">IO helper methods.
+ <p></div>
+<dl>
+<dt><span class="simpleTagLabel">Since:</span></dt>
+<dd>1.0</dd>
+<dt><span class="simpleTagLabel">Author:</span></dt>
+<dd>Gregory Kotsaftis</dd>
+</dl>
+</li>
+</ul>
+</div>
+<div class="summary">
+<ul class="blockList">
+<li class="blockList">
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.summary">
+<!--   -->
+</a>
+<h3>Constructor Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
+<caption><span>Constructors</span><span class="tabEnd"> </span></caption>
+<tr>
+<th class="colOne" scope="col">Constructor and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../gr/zeus/util/IOHelper.html#IOHelper--">IOHelper</a></span>()</code> </td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.summary">
+<!--   -->
+</a>
+<h3>Method Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
+<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd"> </span></span><span id="t1" class="tableTab"><span><a href="javascript:show(1);">Static Methods</a></span><span class="tabEnd"> </span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd"> </span></span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tr id="i0" class="altColor">
+<td class="colFirst"><code>static boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../gr/zeus/util/IOHelper.html#copyFile-java.io.File-java.io.File-boolean-">copyFile</a></span>(java.io.File fromFile,
+        java.io.File toFile,
+        boolean overwrite)</code>
+<div class="block">Copies a file to another location/file.</div>
+</td>
+</tr>
+<tr id="i1" class="rowColor">
+<td class="colFirst"><code>static boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../gr/zeus/util/IOHelper.html#copyFile-java.lang.String-java.lang.String-boolean-">copyFile</a></span>(java.lang.String fromName,
+        java.lang.String toName,
+        boolean overwrite)</code>
+<div class="block">Copies a file to another location/file.</div>
+</td>
+</tr>
+<tr id="i2" class="altColor">
+<td class="colFirst"><code>static void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../gr/zeus/util/IOHelper.html#createDirectoryTreeForFile-java.lang.String-">createDirectoryTreeForFile</a></span>(java.lang.String file)</code>
+<div class="block">Creates the complete directory structure for a complete
+ <b>FILE</b> pathname.</div>
+</td>
+</tr>
+<tr id="i3" class="rowColor">
+<td class="colFirst"><code>static java.lang.String</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../gr/zeus/util/IOHelper.html#createDirectoryTreeForFolder-java.lang.String-">createDirectoryTreeForFolder</a></span>(java.lang.String folder)</code>
+<div class="block">Creates the complete directory structure for a complete
+ <b>FOLDER</b> pathname.</div>
+</td>
+</tr>
+<tr id="i4" class="altColor">
+<td class="colFirst"><code>static boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../gr/zeus/util/IOHelper.html#deleteDirectory-java.io.File-">deleteDirectory</a></span>(java.io.File dir)</code>
+<div class="block">Deletes all files and subdirectories under <i>dir</i>.</div>
+</td>
+</tr>
+<tr id="i5" class="rowColor">
+<td class="colFirst"><code>static boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../gr/zeus/util/IOHelper.html#deleteDirectory-java.lang.String-">deleteDirectory</a></span>(java.lang.String pathname)</code>
+<div class="block">Deletes all files and subdirectories under <i>dir</i>.</div>
+</td>
+</tr>
+<tr id="i6" class="altColor">
+<td class="colFirst"><code>static boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../gr/zeus/util/IOHelper.html#deleteFile-java.lang.String-">deleteFile</a></span>(java.lang.String pathname)</code>
+<div class="block">Deletes a file.</div>
+</td>
+</tr>
+<tr id="i7" class="rowColor">
+<td class="colFirst"><code>static boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../gr/zeus/util/IOHelper.html#fileOrDirectoryExists-java.lang.String-">fileOrDirectoryExists</a></span>(java.lang.String pathname)</code>
+<div class="block">Determines if a file or directory exists.</div>
+</td>
+</tr>
+<tr id="i8" class="altColor">
+<td class="colFirst"><code>static boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../gr/zeus/util/IOHelper.html#isDirectory-java.lang.String-">isDirectory</a></span>(java.lang.String pathname)</code>
+<div class="block">Determines if a directory exists.</div>
+</td>
+</tr>
+<tr id="i9" class="rowColor">
+<td class="colFirst"><code>static boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../gr/zeus/util/IOHelper.html#isFile-java.lang.String-">isFile</a></span>(java.lang.String pathname)</code>
+<div class="block">Determines if a file exists.</div>
+</td>
+</tr>
+<tr id="i10" class="altColor">
+<td class="colFirst"><code>static boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../gr/zeus/util/IOHelper.html#isTheSameFile-java.lang.String-java.lang.String-">isTheSameFile</a></span>(java.lang.String pathname1,
+             java.lang.String pathname2)</code>
+<div class="block">Determines if two filename paths refer to the same file.</div>
+</td>
+</tr>
+<tr id="i11" class="rowColor">
+<td class="colFirst"><code>static java.lang.String</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../gr/zeus/util/IOHelper.html#readTxtFile-java.io.File-">readTxtFile</a></span>(java.io.File f)</code>
+<div class="block">Reads a text file into a string.</div>
+</td>
+</tr>
+<tr id="i12" class="altColor">
+<td class="colFirst"><code>static java.lang.String</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../gr/zeus/util/IOHelper.html#readTxtFile-java.lang.String-">readTxtFile</a></span>(java.lang.String pathname)</code>
+<div class="block">Reads a text file into a string.</div>
+</td>
+</tr>
+<tr id="i13" class="rowColor">
+<td class="colFirst"><code>static void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../gr/zeus/util/IOHelper.html#saveTxtFile-java.io.File-java.lang.String-boolean-">saveTxtFile</a></span>(java.io.File f,
+           java.lang.String data,
+           boolean append)</code>
+<div class="block">Saves a string to a text file.</div>
+</td>
+</tr>
+<tr id="i14" class="altColor">
+<td class="colFirst"><code>static void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../gr/zeus/util/IOHelper.html#saveTxtFile-java.lang.String-java.lang.String-boolean-">saveTxtFile</a></span>(java.lang.String pathname,
+           java.lang.String data,
+           boolean append)</code>
+<div class="block">Saves a string to a text file.</div>
+</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
+<!--   -->
+</a>
+<h3>Methods inherited from class java.lang.Object</h3>
+<code>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</code></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="details">
+<ul class="blockList">
+<li class="blockList">
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.detail">
+<!--   -->
+</a>
+<h3>Constructor Detail</h3>
+<a name="IOHelper--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>IOHelper</h4>
+<pre>public IOHelper()</pre>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ============ METHOD DETAIL ========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.detail">
+<!--   -->
+</a>
+<h3>Method Detail</h3>
+<a name="createDirectoryTreeForFolder-java.lang.String-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>createDirectoryTreeForFolder</h4>
+<pre>public static java.lang.String createDirectoryTreeForFolder(java.lang.String folder)
+                                                     throws java.io.IOException</pre>
+<div class="block">Creates the complete directory structure for a complete
+ <b>FOLDER</b> pathname.
+ <p></div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>folder</code> - The folder pathname.
+ <p></dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>The folder pathname.
+ <p></dd>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code>java.io.IOException</code></dd>
+</dl>
+</li>
+</ul>
+<a name="createDirectoryTreeForFile-java.lang.String-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>createDirectoryTreeForFile</h4>
+<pre>public static void createDirectoryTreeForFile(java.lang.String file)
+                                       throws java.io.IOException</pre>
+<div class="block">Creates the complete directory structure for a complete
+ <b>FILE</b> pathname.
+ <p></div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>file</code> - The file pathname.
+ <p></dd>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code>java.io.IOException</code></dd>
+</dl>
+</li>
+</ul>
+<a name="isTheSameFile-java.lang.String-java.lang.String-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>isTheSameFile</h4>
+<pre>public static boolean isTheSameFile(java.lang.String pathname1,
+                                    java.lang.String pathname2)
+                             throws java.io.IOException</pre>
+<div class="block">Determines if two filename paths refer to the same file.
+ <p></div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>pathname1</code> - The first pathname.</dd>
+<dd><code>pathname2</code> - The second pathname.
+ <p></dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd><code>true</code> if two filename paths refer
+                      to the same file.
+ <p></dd>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code>java.io.IOException</code> - <p></dd>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="http://javaalmanac.com/egs/java.io/Canonical.html">
+ http://javaalmanac.com/egs/java.io/Canonical.html</a></dd>
+</dl>
+</li>
+</ul>
+<a name="fileOrDirectoryExists-java.lang.String-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>fileOrDirectoryExists</h4>
+<pre>public static boolean fileOrDirectoryExists(java.lang.String pathname)</pre>
+<div class="block">Determines if a file or directory exists.
+ <p></div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>pathname</code> - The file or directory pathname.
+ <p></dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd><code>true</code> if it exists.</dd>
+</dl>
+</li>
+</ul>
+<a name="isFile-java.lang.String-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>isFile</h4>
+<pre>public static boolean isFile(java.lang.String pathname)</pre>
+<div class="block">Determines if a file exists.
+ <p></div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>pathname</code> - The file to check.
+ <p></dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd><code>true</code> if it exists.</dd>
+</dl>
+</li>
+</ul>
+<a name="isDirectory-java.lang.String-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>isDirectory</h4>
+<pre>public static boolean isDirectory(java.lang.String pathname)</pre>
+<div class="block">Determines if a directory exists.
+ <p></div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>pathname</code> - The directory pathname.
+ <p></dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd><code>true</code> if it exists.</dd>
+</dl>
+</li>
+</ul>
+<a name="saveTxtFile-java.lang.String-java.lang.String-boolean-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>saveTxtFile</h4>
+<pre>public static void saveTxtFile(java.lang.String pathname,
+                               java.lang.String data,
+                               boolean append)
+                        throws java.io.IOException</pre>
+<div class="block">Saves a string to a text file.
+ <p></div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>pathname</code> - The pathname to the file.</dd>
+<dd><code>data</code> - The string to be saved.</dd>
+<dd><code>append</code> - <code>true</code> if the string is to be appended
+                  to the end of existing text.
+ <p></dd>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code>java.io.IOException</code></dd>
+</dl>
+</li>
+</ul>
+<a name="saveTxtFile-java.io.File-java.lang.String-boolean-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>saveTxtFile</h4>
+<pre>public static void saveTxtFile(java.io.File f,
+                               java.lang.String data,
+                               boolean append)
+                        throws java.io.IOException</pre>
+<div class="block">Saves a string to a text file.
+ <p></div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>f</code> - The file.</dd>
+<dd><code>data</code> - The string to save.</dd>
+<dd><code>append</code> - <code>true</code> if the string is to be appended
+                  to the end of existing text.
+ <p></dd>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code>java.io.IOException</code></dd>
+</dl>
+</li>
+</ul>
+<a name="readTxtFile-java.lang.String-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>readTxtFile</h4>
+<pre>public static java.lang.String readTxtFile(java.lang.String pathname)
+                                    throws java.io.IOException</pre>
+<div class="block">Reads a text file into a string.
+ <p></div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>pathname</code> - The path to the text file.
+ <p></dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>The text in the file.
+ <p></dd>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code>java.io.IOException</code></dd>
+</dl>
+</li>
+</ul>
+<a name="readTxtFile-java.io.File-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>readTxtFile</h4>
+<pre>public static java.lang.String readTxtFile(java.io.File f)
+                                    throws java.io.IOException</pre>
+<div class="block">Reads a text file into a string.
+ <p></div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>f</code> - The file.
+ <p></dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>The text in the file.
+ <p></dd>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code>java.io.IOException</code></dd>
+</dl>
+</li>
+</ul>
+<a name="deleteDirectory-java.io.File-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>deleteDirectory</h4>
+<pre>public static boolean deleteDirectory(java.io.File dir)</pre>
+<div class="block">Deletes all files and subdirectories under <i>dir</i>.
+ Returns <code>true</code> if all deletions were successful.
+ If a deletion fails, the method stops attempting
+ to delete and returns <code>false</code>.
+ <p></div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>dir</code> - The directory to delete from.
+ <p></dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd><code>true</code> if all deletions were successful.</dd>
+</dl>
+</li>
+</ul>
+<a name="deleteDirectory-java.lang.String-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>deleteDirectory</h4>
+<pre>public static boolean deleteDirectory(java.lang.String pathname)</pre>
+<div class="block">Deletes all files and subdirectories under <i>dir</i>.
+ Returns <code>true</code> if all deletions were successful.
+ If a deletion fails, the method stops attempting
+ to delete and returns <code>false</code>.
+ <p></div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>pathname</code> - The path to the directory.
+ <p></dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd><code>true</code> if all deletions were successful.</dd>
+</dl>
+</li>
+</ul>
+<a name="deleteFile-java.lang.String-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>deleteFile</h4>
+<pre>public static boolean deleteFile(java.lang.String pathname)</pre>
+<div class="block">Deletes a file.
+ <p></div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>pathname</code> - The pathname to the file.
+ <p></dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd><code>true</code> if successful.</dd>
+</dl>
+</li>
+</ul>
+<a name="copyFile-java.lang.String-java.lang.String-boolean-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>copyFile</h4>
+<pre>public static boolean copyFile(java.lang.String fromName,
+                               java.lang.String toName,
+                               boolean overwrite)
+                        throws java.io.IOException</pre>
+<div class="block">Copies a file to another location/file.
+ <p></div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>fromName</code> - The file to copy from.</dd>
+<dd><code>toName</code> - The file to copy to.</dd>
+<dd><code>overwrite</code> - <code>true</code> to overwrite if the file already
+                      exists.
+ <p></dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd><code>true</code> if file copied or
+                      <code>false</code> if not (possibly the file existed
+                      and 'overwrite' was not set).
+ <p></dd>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code>java.io.IOException</code></dd>
+</dl>
+</li>
+</ul>
+<a name="copyFile-java.io.File-java.io.File-boolean-">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>copyFile</h4>
+<pre>public static boolean copyFile(java.io.File fromFile,
+                               java.io.File toFile,
+                               boolean overwrite)
+                        throws java.io.IOException</pre>
+<div class="block">Copies a file to another location/file.
+ <p></div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>fromFile</code> - The file to copy from.</dd>
+<dd><code>toFile</code> - The file to copy to.</dd>
+<dd><code>overwrite</code> - <code>true</code> to overwrite if the file already
+                      exists.
+ <p></dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd><code>true</code> if file copied or
+                      <code>false</code> if not (possibly the file existed
+                      and 'overwrite' was not set).
+ <p></dd>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code>java.io.IOException</code></dd>
+</dl>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+<!-- ========= END OF CLASS DATA ========= -->
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../index-all.html">Index</a></li>
+<li><a href="../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../gr/zeus/util/GUIUtils.html" title="class in gr.zeus.util"><span class="typeNameLink">Prev Class</span></a></li>
+<li><a href="../../../gr/zeus/util/SimpleTimerMillis.html" title="class in gr.zeus.util"><span class="typeNameLink">Next Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../index.html?gr/zeus/util/IOHelper.html" target="_top">Frames</a></li>
+<li><a href="IOHelper.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary: </li>
+<li>Nested | </li>
+<li>Field | </li>
+<li><a href="#constructor.summary">Constr</a> | </li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail: </li>
+<li>Field | </li>
+<li><a href="#constructor.detail">Constr</a> | </li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+</body>
+</html>
diff --git a/doc/api/gr/zeus/util/SimpleTimerMillis.html b/doc/api/gr/zeus/util/SimpleTimerMillis.html
new file mode 100644
index 0000000..cb615b6
--- /dev/null
+++ b/doc/api/gr/zeus/util/SimpleTimerMillis.html
@@ -0,0 +1,342 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc (1.8.0_05) on Sat Jun 07 12:11:35 EEST 2014 -->
+<title>SimpleTimerMillis</title>
+<meta name="date" content="2014-06-07">
+<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="SimpleTimerMillis";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = {"i0":10,"i1":10,"i2":10,"i3":10};
+var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
+var altColor = "altColor";
+var rowColor = "rowColor";
+var tableTab = "tableTab";
+var activeTableTab = "activeTableTab";
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../index-all.html">Index</a></li>
+<li><a href="../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../gr/zeus/util/IOHelper.html" title="class in gr.zeus.util"><span class="typeNameLink">Prev Class</span></a></li>
+<li><a href="../../../gr/zeus/util/SimpleTimerNanos.html" title="class in gr.zeus.util"><span class="typeNameLink">Next Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../index.html?gr/zeus/util/SimpleTimerMillis.html" target="_top">Frames</a></li>
+<li><a href="SimpleTimerMillis.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary: </li>
+<li>Nested | </li>
+<li>Field | </li>
+<li><a href="#constructor.summary">Constr</a> | </li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail: </li>
+<li>Field | </li>
+<li><a href="#constructor.detail">Constr</a> | </li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="subTitle">gr.zeus.util</div>
+<h2 title="Class SimpleTimerMillis" class="title">Class SimpleTimerMillis</h2>
+</div>
+<div class="contentContainer">
+<ul class="inheritance">
+<li>java.lang.Object</li>
+<li>
+<ul class="inheritance">
+<li>gr.zeus.util.SimpleTimerMillis</li>
+</ul>
+</li>
+</ul>
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<hr>
+<br>
+<pre>public final class <span class="typeNameLabel">SimpleTimerMillis</span>
+extends java.lang.Object</pre>
+<div class="block">A very simple timer for timing java method calls and other processes.
+ Millisecond precision.
+ <p></div>
+<dl>
+<dt><span class="simpleTagLabel">Since:</span></dt>
+<dd>1.05</dd>
+<dt><span class="simpleTagLabel">Author:</span></dt>
+<dd>Gregory Kotsaftis</dd>
+</dl>
+</li>
+</ul>
+</div>
+<div class="summary">
+<ul class="blockList">
+<li class="blockList">
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.summary">
+<!--   -->
+</a>
+<h3>Constructor Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
+<caption><span>Constructors</span><span class="tabEnd"> </span></caption>
+<tr>
+<th class="colOne" scope="col">Constructor and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../gr/zeus/util/SimpleTimerMillis.html#SimpleTimerMillis--">SimpleTimerMillis</a></span>()</code>
+<div class="block">Constructor.</div>
+</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.summary">
+<!--   -->
+</a>
+<h3>Method Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
+<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd"> </span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd"> </span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd"> </span></span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tr id="i0" class="altColor">
+<td class="colFirst"><code>long</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../gr/zeus/util/SimpleTimerMillis.html#elapsedMillis--">elapsedMillis</a></span>()</code>
+<div class="block">Get elapsed time in milliseconds.</div>
+</td>
+</tr>
+<tr id="i1" class="rowColor">
+<td class="colFirst"><code>double</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../gr/zeus/util/SimpleTimerMillis.html#elapsedSeconds--">elapsedSeconds</a></span>()</code>
+<div class="block">Get elapsed time in seconds.</div>
+</td>
+</tr>
+<tr id="i2" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../gr/zeus/util/SimpleTimerMillis.html#reset--">reset</a></span>()</code>
+<div class="block">Resets the timer.</div>
+</td>
+</tr>
+<tr id="i3" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../gr/zeus/util/SimpleTimerMillis.html#start--">start</a></span>()</code>
+<div class="block">Starts timing a job.</div>
+</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
+<!--   -->
+</a>
+<h3>Methods inherited from class java.lang.Object</h3>
+<code>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</code></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="details">
+<ul class="blockList">
+<li class="blockList">
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.detail">
+<!--   -->
+</a>
+<h3>Constructor Detail</h3>
+<a name="SimpleTimerMillis--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>SimpleTimerMillis</h4>
+<pre>public SimpleTimerMillis()</pre>
+<div class="block">Constructor.</div>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ============ METHOD DETAIL ========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.detail">
+<!--   -->
+</a>
+<h3>Method Detail</h3>
+<a name="reset--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>reset</h4>
+<pre>public void reset()</pre>
+<div class="block">Resets the timer.</div>
+</li>
+</ul>
+<a name="start--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>start</h4>
+<pre>public void start()</pre>
+<div class="block">Starts timing a job.</div>
+</li>
+</ul>
+<a name="elapsedMillis--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>elapsedMillis</h4>
+<pre>public long elapsedMillis()</pre>
+<div class="block">Get elapsed time in milliseconds.
+ <p></div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>The elapsed time in milliseconds.</dd>
+</dl>
+</li>
+</ul>
+<a name="elapsedSeconds--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>elapsedSeconds</h4>
+<pre>public double elapsedSeconds()</pre>
+<div class="block">Get elapsed time in seconds.
+ <p></div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>The elapsed time in seconds.</dd>
+</dl>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+<!-- ========= END OF CLASS DATA ========= -->
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../index-all.html">Index</a></li>
+<li><a href="../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../gr/zeus/util/IOHelper.html" title="class in gr.zeus.util"><span class="typeNameLink">Prev Class</span></a></li>
+<li><a href="../../../gr/zeus/util/SimpleTimerNanos.html" title="class in gr.zeus.util"><span class="typeNameLink">Next Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../index.html?gr/zeus/util/SimpleTimerMillis.html" target="_top">Frames</a></li>
+<li><a href="SimpleTimerMillis.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary: </li>
+<li>Nested | </li>
+<li>Field | </li>
+<li><a href="#constructor.summary">Constr</a> | </li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail: </li>
+<li>Field | </li>
+<li><a href="#constructor.detail">Constr</a> | </li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+</body>
+</html>
diff --git a/doc/api/gr/zeus/util/SimpleTimerNanos.html b/doc/api/gr/zeus/util/SimpleTimerNanos.html
new file mode 100644
index 0000000..893319a
--- /dev/null
+++ b/doc/api/gr/zeus/util/SimpleTimerNanos.html
@@ -0,0 +1,363 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc (1.8.0_05) on Sat Jun 07 12:11:35 EEST 2014 -->
+<title>SimpleTimerNanos</title>
+<meta name="date" content="2014-06-07">
+<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="SimpleTimerNanos";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10};
+var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
+var altColor = "altColor";
+var rowColor = "rowColor";
+var tableTab = "tableTab";
+var activeTableTab = "activeTableTab";
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../index-all.html">Index</a></li>
+<li><a href="../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../gr/zeus/util/SimpleTimerMillis.html" title="class in gr.zeus.util"><span class="typeNameLink">Prev Class</span></a></li>
+<li><a href="../../../gr/zeus/util/SimpleUIDGenerator.html" title="class in gr.zeus.util"><span class="typeNameLink">Next Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../index.html?gr/zeus/util/SimpleTimerNanos.html" target="_top">Frames</a></li>
+<li><a href="SimpleTimerNanos.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary: </li>
+<li>Nested | </li>
+<li>Field | </li>
+<li><a href="#constructor.summary">Constr</a> | </li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail: </li>
+<li>Field | </li>
+<li><a href="#constructor.detail">Constr</a> | </li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="subTitle">gr.zeus.util</div>
+<h2 title="Class SimpleTimerNanos" class="title">Class SimpleTimerNanos</h2>
+</div>
+<div class="contentContainer">
+<ul class="inheritance">
+<li>java.lang.Object</li>
+<li>
+<ul class="inheritance">
+<li>gr.zeus.util.SimpleTimerNanos</li>
+</ul>
+</li>
+</ul>
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<hr>
+<br>
+<pre>public final class <span class="typeNameLabel">SimpleTimerNanos</span>
+extends java.lang.Object</pre>
+<div class="block">A very simple timer for timing java method calls and other processes
+ (JDK 5, nanos implementation).
+ <p></div>
+<dl>
+<dt><span class="simpleTagLabel">Since:</span></dt>
+<dd>1.06</dd>
+<dt><span class="simpleTagLabel">Author:</span></dt>
+<dd>Gregory Kotsaftis</dd>
+</dl>
+</li>
+</ul>
+</div>
+<div class="summary">
+<ul class="blockList">
+<li class="blockList">
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.summary">
+<!--   -->
+</a>
+<h3>Constructor Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
+<caption><span>Constructors</span><span class="tabEnd"> </span></caption>
+<tr>
+<th class="colOne" scope="col">Constructor and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../gr/zeus/util/SimpleTimerNanos.html#SimpleTimerNanos--">SimpleTimerNanos</a></span>()</code>
+<div class="block">Constructor.</div>
+</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.summary">
+<!--   -->
+</a>
+<h3>Method Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
+<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd"> </span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd"> </span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd"> </span></span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tr id="i0" class="altColor">
+<td class="colFirst"><code>double</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../gr/zeus/util/SimpleTimerNanos.html#elapsedMillis--">elapsedMillis</a></span>()</code>
+<div class="block">Gets elapsed time in milliseconds.</div>
+</td>
+</tr>
+<tr id="i1" class="rowColor">
+<td class="colFirst"><code>long</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../gr/zeus/util/SimpleTimerNanos.html#elapsedNanos--">elapsedNanos</a></span>()</code>
+<div class="block">Gets elapsed time in nanoseconds.</div>
+</td>
+</tr>
+<tr id="i2" class="altColor">
+<td class="colFirst"><code>double</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../gr/zeus/util/SimpleTimerNanos.html#elapsedSeconds--">elapsedSeconds</a></span>()</code>
+<div class="block">Gets elapsed time in seconds.</div>
+</td>
+</tr>
+<tr id="i3" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../gr/zeus/util/SimpleTimerNanos.html#reset--">reset</a></span>()</code>
+<div class="block">Resets the timer.</div>
+</td>
+</tr>
+<tr id="i4" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../gr/zeus/util/SimpleTimerNanos.html#start--">start</a></span>()</code>
+<div class="block">Starts timing a job.</div>
+</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
+<!--   -->
+</a>
+<h3>Methods inherited from class java.lang.Object</h3>
+<code>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</code></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="details">
+<ul class="blockList">
+<li class="blockList">
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.detail">
+<!--   -->
+</a>
+<h3>Constructor Detail</h3>
+<a name="SimpleTimerNanos--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>SimpleTimerNanos</h4>
+<pre>public SimpleTimerNanos()</pre>
+<div class="block">Constructor.</div>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ============ METHOD DETAIL ========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.detail">
+<!--   -->
+</a>
+<h3>Method Detail</h3>
+<a name="reset--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>reset</h4>
+<pre>public void reset()</pre>
+<div class="block">Resets the timer.</div>
+</li>
+</ul>
+<a name="start--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>start</h4>
+<pre>public void start()</pre>
+<div class="block">Starts timing a job.</div>
+</li>
+</ul>
+<a name="elapsedNanos--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>elapsedNanos</h4>
+<pre>public long elapsedNanos()</pre>
+<div class="block">Gets elapsed time in nanoseconds.
+ <p></div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>The elapsed time in nanoseconds.</dd>
+</dl>
+</li>
+</ul>
+<a name="elapsedMillis--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>elapsedMillis</h4>
+<pre>public double elapsedMillis()</pre>
+<div class="block">Gets elapsed time in milliseconds.
+ <p></div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>The elapsed time in milliseconds.</dd>
+</dl>
+</li>
+</ul>
+<a name="elapsedSeconds--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>elapsedSeconds</h4>
+<pre>public double elapsedSeconds()</pre>
+<div class="block">Gets elapsed time in seconds.
+ <p></div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>The elapsed time in seconds.</dd>
+</dl>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+<!-- ========= END OF CLASS DATA ========= -->
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../index-all.html">Index</a></li>
+<li><a href="../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../gr/zeus/util/SimpleTimerMillis.html" title="class in gr.zeus.util"><span class="typeNameLink">Prev Class</span></a></li>
+<li><a href="../../../gr/zeus/util/SimpleUIDGenerator.html" title="class in gr.zeus.util"><span class="typeNameLink">Next Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../index.html?gr/zeus/util/SimpleTimerNanos.html" target="_top">Frames</a></li>
+<li><a href="SimpleTimerNanos.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary: </li>
+<li>Nested | </li>
+<li>Field | </li>
+<li><a href="#constructor.summary">Constr</a> | </li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail: </li>
+<li>Field | </li>
+<li><a href="#constructor.detail">Constr</a> | </li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+</body>
+</html>
diff --git a/doc/api/gr/zeus/util/SimpleUIDGenerator.html b/doc/api/gr/zeus/util/SimpleUIDGenerator.html
new file mode 100644
index 0000000..f7b4329
--- /dev/null
+++ b/doc/api/gr/zeus/util/SimpleUIDGenerator.html
@@ -0,0 +1,286 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc (1.8.0_05) on Sat Jun 07 12:11:35 EEST 2014 -->
+<title>SimpleUIDGenerator</title>
+<meta name="date" content="2014-06-07">
+<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="SimpleUIDGenerator";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = {"i0":9};
+var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],8:["t4","Concrete Methods"]};
+var altColor = "altColor";
+var rowColor = "rowColor";
+var tableTab = "tableTab";
+var activeTableTab = "activeTableTab";
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../index-all.html">Index</a></li>
+<li><a href="../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../gr/zeus/util/SimpleTimerNanos.html" title="class in gr.zeus.util"><span class="typeNameLink">Prev Class</span></a></li>
+<li>Next Class</li>
+</ul>
+<ul class="navList">
+<li><a href="../../../index.html?gr/zeus/util/SimpleUIDGenerator.html" target="_top">Frames</a></li>
+<li><a href="SimpleUIDGenerator.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary: </li>
+<li>Nested | </li>
+<li>Field | </li>
+<li><a href="#constructor.summary">Constr</a> | </li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail: </li>
+<li>Field | </li>
+<li><a href="#constructor.detail">Constr</a> | </li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="subTitle">gr.zeus.util</div>
+<h2 title="Class SimpleUIDGenerator" class="title">Class SimpleUIDGenerator</h2>
+</div>
+<div class="contentContainer">
+<ul class="inheritance">
+<li>java.lang.Object</li>
+<li>
+<ul class="inheritance">
+<li>gr.zeus.util.SimpleUIDGenerator</li>
+</ul>
+</li>
+</ul>
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<hr>
+<br>
+<pre>public final class <span class="typeNameLabel">SimpleUIDGenerator</span>
+extends java.lang.Object</pre>
+<div class="block">Generates unique ID's within this JVM.
+ <p></div>
+<dl>
+<dt><span class="simpleTagLabel">Since:</span></dt>
+<dd>1.0</dd>
+<dt><span class="simpleTagLabel">Author:</span></dt>
+<dd>Gregory Kotsaftis</dd>
+</dl>
+</li>
+</ul>
+</div>
+<div class="summary">
+<ul class="blockList">
+<li class="blockList">
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.summary">
+<!--   -->
+</a>
+<h3>Constructor Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
+<caption><span>Constructors</span><span class="tabEnd"> </span></caption>
+<tr>
+<th class="colOne" scope="col">Constructor and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../gr/zeus/util/SimpleUIDGenerator.html#SimpleUIDGenerator--">SimpleUIDGenerator</a></span>()</code> </td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.summary">
+<!--   -->
+</a>
+<h3>Method Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
+<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd"> </span></span><span id="t1" class="tableTab"><span><a href="javascript:show(1);">Static Methods</a></span><span class="tabEnd"> </span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd"> </span></span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tr id="i0" class="altColor">
+<td class="colFirst"><code>static long</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../gr/zeus/util/SimpleUIDGenerator.html#getNextUID--">getNextUID</a></span>()</code>
+<div class="block">Always returns a unique number > 0 for the existing VM.</div>
+</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
+<!--   -->
+</a>
+<h3>Methods inherited from class java.lang.Object</h3>
+<code>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</code></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="details">
+<ul class="blockList">
+<li class="blockList">
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.detail">
+<!--   -->
+</a>
+<h3>Constructor Detail</h3>
+<a name="SimpleUIDGenerator--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>SimpleUIDGenerator</h4>
+<pre>public SimpleUIDGenerator()</pre>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ============ METHOD DETAIL ========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.detail">
+<!--   -->
+</a>
+<h3>Method Detail</h3>
+<a name="getNextUID--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>getNextUID</h4>
+<pre>public static long getNextUID()</pre>
+<div class="block">Always returns a unique number > 0 for the existing VM.
+ This method IS thread safe.
+ <p></div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>A unique number > 0 for the existing VM.</dd>
+</dl>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+<!-- ========= END OF CLASS DATA ========= -->
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../index-all.html">Index</a></li>
+<li><a href="../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../gr/zeus/util/SimpleTimerNanos.html" title="class in gr.zeus.util"><span class="typeNameLink">Prev Class</span></a></li>
+<li>Next Class</li>
+</ul>
+<ul class="navList">
+<li><a href="../../../index.html?gr/zeus/util/SimpleUIDGenerator.html" target="_top">Frames</a></li>
+<li><a href="SimpleUIDGenerator.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary: </li>
+<li>Nested | </li>
+<li>Field | </li>
+<li><a href="#constructor.summary">Constr</a> | </li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail: </li>
+<li>Field | </li>
+<li><a href="#constructor.detail">Constr</a> | </li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+</body>
+</html>
diff --git a/doc/api/gr/zeus/util/package-frame.html b/doc/api/gr/zeus/util/package-frame.html
new file mode 100644
index 0000000..f6f64eb
--- /dev/null
+++ b/doc/api/gr/zeus/util/package-frame.html
@@ -0,0 +1,26 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc (1.8.0_05) on Sat Jun 07 12:11:35 EEST 2014 -->
+<title>gr.zeus.util</title>
+<meta name="date" content="2014-06-07">
+<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../script.js"></script>
+</head>
+<body>
+<h1 class="bar"><a href="../../../gr/zeus/util/package-summary.html" target="classFrame">gr.zeus.util</a></h1>
+<div class="indexContainer">
+<h2 title="Classes">Classes</h2>
+<ul title="Classes">
+<li><a href="CurrentDateHelper.html" title="class in gr.zeus.util" target="classFrame">CurrentDateHelper</a></li>
+<li><a href="DateHelper.html" title="class in gr.zeus.util" target="classFrame">DateHelper</a></li>
+<li><a href="GUIUtils.html" title="class in gr.zeus.util" target="classFrame">GUIUtils</a></li>
+<li><a href="IOHelper.html" title="class in gr.zeus.util" target="classFrame">IOHelper</a></li>
+<li><a href="SimpleTimerMillis.html" title="class in gr.zeus.util" target="classFrame">SimpleTimerMillis</a></li>
+<li><a href="SimpleTimerNanos.html" title="class in gr.zeus.util" target="classFrame">SimpleTimerNanos</a></li>
+<li><a href="SimpleUIDGenerator.html" title="class in gr.zeus.util" target="classFrame">SimpleUIDGenerator</a></li>
+</ul>
+</div>
+</body>
+</html>
diff --git a/doc/api/gr/zeus/util/package-summary.html b/doc/api/gr/zeus/util/package-summary.html
new file mode 100644
index 0000000..09d4f7b
--- /dev/null
+++ b/doc/api/gr/zeus/util/package-summary.html
@@ -0,0 +1,179 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc (1.8.0_05) on Sat Jun 07 12:11:35 EEST 2014 -->
+<title>gr.zeus.util</title>
+<meta name="date" content="2014-06-07">
+<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="gr.zeus.util";
+        }
+    }
+    catch(err) {
+    }
+//-->
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../overview-summary.html">Overview</a></li>
+<li class="navBarCell1Rev">Package</li>
+<li>Class</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../index-all.html">Index</a></li>
+<li><a href="../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../gr/zeus/ui/typesafe/package-summary.html">Prev Package</a></li>
+<li>Next Package</li>
+</ul>
+<ul class="navList">
+<li><a href="../../../index.html?gr/zeus/util/package-summary.html" target="_top">Frames</a></li>
+<li><a href="package-summary.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<div class="header">
+<h1 title="Package" class="title">Package gr.zeus.util</h1>
+</div>
+<div class="contentContainer">
+<ul class="blockList">
+<li class="blockList">
+<table class="typeSummary" border="0" cellpadding="3" cellspacing="0" summary="Class Summary table, listing classes, and an explanation">
+<caption><span>Class Summary</span><span class="tabEnd"> </span></caption>
+<tr>
+<th class="colFirst" scope="col">Class</th>
+<th class="colLast" scope="col">Description</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colFirst"><a href="../../../gr/zeus/util/CurrentDateHelper.html" title="class in gr.zeus.util">CurrentDateHelper</a></td>
+<td class="colLast">
+<div class="block">Helper methods for current date and time.</div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><a href="../../../gr/zeus/util/DateHelper.html" title="class in gr.zeus.util">DateHelper</a></td>
+<td class="colLast">
+<div class="block">Helper methods for <code>java.util.Date</code></div>
+</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><a href="../../../gr/zeus/util/GUIUtils.html" title="class in gr.zeus.util">GUIUtils</a></td>
+<td class="colLast">
+<div class="block">GUI Helper class, contains static methods that are used all the time.</div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><a href="../../../gr/zeus/util/IOHelper.html" title="class in gr.zeus.util">IOHelper</a></td>
+<td class="colLast">
+<div class="block">IO helper methods.</div>
+</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><a href="../../../gr/zeus/util/SimpleTimerMillis.html" title="class in gr.zeus.util">SimpleTimerMillis</a></td>
+<td class="colLast">
+<div class="block">A very simple timer for timing java method calls and other processes.</div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><a href="../../../gr/zeus/util/SimpleTimerNanos.html" title="class in gr.zeus.util">SimpleTimerNanos</a></td>
+<td class="colLast">
+<div class="block">A very simple timer for timing java method calls and other processes
+ (JDK 5, nanos implementation).</div>
+</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><a href="../../../gr/zeus/util/SimpleUIDGenerator.html" title="class in gr.zeus.util">SimpleUIDGenerator</a></td>
+<td class="colLast">
+<div class="block">Generates unique ID's within this JVM.</div>
+</td>
+</tr>
+</tbody>
+</table>
+</li>
+</ul>
+</div>
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../overview-summary.html">Overview</a></li>
+<li class="navBarCell1Rev">Package</li>
+<li>Class</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../index-all.html">Index</a></li>
+<li><a href="../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../gr/zeus/ui/typesafe/package-summary.html">Prev Package</a></li>
+<li>Next Package</li>
+</ul>
+<ul class="navList">
+<li><a href="../../../index.html?gr/zeus/util/package-summary.html" target="_top">Frames</a></li>
+<li><a href="package-summary.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+</body>
+</html>
diff --git a/doc/api/gr/zeus/util/package-tree.html b/doc/api/gr/zeus/util/package-tree.html
new file mode 100644
index 0000000..b793af8
--- /dev/null
+++ b/doc/api/gr/zeus/util/package-tree.html
@@ -0,0 +1,141 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc (1.8.0_05) on Sat Jun 07 12:11:35 EEST 2014 -->
+<title>gr.zeus.util Class Hierarchy</title>
+<meta name="date" content="2014-06-07">
+<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="gr.zeus.util Class Hierarchy";
+        }
+    }
+    catch(err) {
+    }
+//-->
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li>Class</li>
+<li class="navBarCell1Rev">Tree</li>
+<li><a href="../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../index-all.html">Index</a></li>
+<li><a href="../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../gr/zeus/ui/typesafe/package-tree.html">Prev</a></li>
+<li>Next</li>
+</ul>
+<ul class="navList">
+<li><a href="../../../index.html?gr/zeus/util/package-tree.html" target="_top">Frames</a></li>
+<li><a href="package-tree.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<div class="header">
+<h1 class="title">Hierarchy For Package gr.zeus.util</h1>
+<span class="packageHierarchyLabel">Package Hierarchies:</span>
+<ul class="horizontal">
+<li><a href="../../../overview-tree.html">All Packages</a></li>
+</ul>
+</div>
+<div class="contentContainer">
+<h2 title="Class Hierarchy">Class Hierarchy</h2>
+<ul>
+<li type="circle">java.lang.Object
+<ul>
+<li type="circle">gr.zeus.util.<a href="../../../gr/zeus/util/CurrentDateHelper.html" title="class in gr.zeus.util"><span class="typeNameLink">CurrentDateHelper</span></a></li>
+<li type="circle">gr.zeus.util.<a href="../../../gr/zeus/util/DateHelper.html" title="class in gr.zeus.util"><span class="typeNameLink">DateHelper</span></a></li>
+<li type="circle">gr.zeus.util.<a href="../../../gr/zeus/util/GUIUtils.html" title="class in gr.zeus.util"><span class="typeNameLink">GUIUtils</span></a></li>
+<li type="circle">gr.zeus.util.<a href="../../../gr/zeus/util/IOHelper.html" title="class in gr.zeus.util"><span class="typeNameLink">IOHelper</span></a></li>
+<li type="circle">gr.zeus.util.<a href="../../../gr/zeus/util/SimpleTimerMillis.html" title="class in gr.zeus.util"><span class="typeNameLink">SimpleTimerMillis</span></a></li>
+<li type="circle">gr.zeus.util.<a href="../../../gr/zeus/util/SimpleTimerNanos.html" title="class in gr.zeus.util"><span class="typeNameLink">SimpleTimerNanos</span></a></li>
+<li type="circle">gr.zeus.util.<a href="../../../gr/zeus/util/SimpleUIDGenerator.html" title="class in gr.zeus.util"><span class="typeNameLink">SimpleUIDGenerator</span></a></li>
+</ul>
+</li>
+</ul>
+</div>
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li>Class</li>
+<li class="navBarCell1Rev">Tree</li>
+<li><a href="../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../index-all.html">Index</a></li>
+<li><a href="../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../gr/zeus/ui/typesafe/package-tree.html">Prev</a></li>
+<li>Next</li>
+</ul>
+<ul class="navList">
+<li><a href="../../../index.html?gr/zeus/util/package-tree.html" target="_top">Frames</a></li>
+<li><a href="package-tree.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+</body>
+</html>
diff --git a/doc/api/help-doc.html b/doc/api/help-doc.html
new file mode 100644
index 0000000..1153714
--- /dev/null
+++ b/doc/api/help-doc.html
@@ -0,0 +1,223 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc (1.8.0_05) on Sat Jun 07 12:11:35 EEST 2014 -->
+<title>API Help</title>
+<meta name="date" content="2014-06-07">
+<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
+<script type="text/javascript" src="script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="API Help";
+        }
+    }
+    catch(err) {
+    }
+//-->
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="overview-summary.html">Overview</a></li>
+<li>Package</li>
+<li>Class</li>
+<li><a href="overview-tree.html">Tree</a></li>
+<li><a href="deprecated-list.html">Deprecated</a></li>
+<li><a href="index-all.html">Index</a></li>
+<li class="navBarCell1Rev">Help</li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev</li>
+<li>Next</li>
+</ul>
+<ul class="navList">
+<li><a href="index.html?help-doc.html" target="_top">Frames</a></li>
+<li><a href="help-doc.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<div class="header">
+<h1 class="title">How This API Document Is Organized</h1>
+<div class="subTitle">This API (Application Programming Interface) document has pages corresponding to the items in the navigation bar, described as follows.</div>
+</div>
+<div class="contentContainer">
+<ul class="blockList">
+<li class="blockList">
+<h2>Overview</h2>
+<p>The <a href="overview-summary.html">Overview</a> page is the front page of this API document and provides a list of all packages with a summary for each.  This page can also contain an overall description of the set of packages.</p>
+</li>
+<li class="blockList">
+<h2>Package</h2>
+<p>Each package has a page that contains a list of its classes and interfaces, with a summary for each. This page can contain six categories:</p>
+<ul>
+<li>Interfaces (italic)</li>
+<li>Classes</li>
+<li>Enums</li>
+<li>Exceptions</li>
+<li>Errors</li>
+<li>Annotation Types</li>
+</ul>
+</li>
+<li class="blockList">
+<h2>Class/Interface</h2>
+<p>Each class, interface, nested class and nested interface has its own separate page. Each of these pages has three sections consisting of a class/interface description, summary tables, and detailed member descriptions:</p>
+<ul>
+<li>Class inheritance diagram</li>
+<li>Direct Subclasses</li>
+<li>All Known Subinterfaces</li>
+<li>All Known Implementing Classes</li>
+<li>Class/interface declaration</li>
+<li>Class/interface description</li>
+</ul>
+<ul>
+<li>Nested Class Summary</li>
+<li>Field Summary</li>
+<li>Constructor Summary</li>
+<li>Method Summary</li>
+</ul>
+<ul>
+<li>Field Detail</li>
+<li>Constructor Detail</li>
+<li>Method Detail</li>
+</ul>
+<p>Each summary entry contains the first sentence from the detailed description for that item. The summary entries are alphabetical, while the detailed descriptions are in the order they appear in the source code. This preserves the logical groupings established by the programmer.</p>
+</li>
+<li class="blockList">
+<h2>Annotation Type</h2>
+<p>Each annotation type has its own separate page with the following sections:</p>
+<ul>
+<li>Annotation Type declaration</li>
+<li>Annotation Type description</li>
+<li>Required Element Summary</li>
+<li>Optional Element Summary</li>
+<li>Element Detail</li>
+</ul>
+</li>
+<li class="blockList">
+<h2>Enum</h2>
+<p>Each enum has its own separate page with the following sections:</p>
+<ul>
+<li>Enum declaration</li>
+<li>Enum description</li>
+<li>Enum Constant Summary</li>
+<li>Enum Constant Detail</li>
+</ul>
+</li>
+<li class="blockList">
+<h2>Tree (Class Hierarchy)</h2>
+<p>There is a <a href="overview-tree.html">Class Hierarchy</a> page for all packages, plus a hierarchy for each package. Each hierarchy page contains a list of classes and a list of interfaces. The classes are organized by inheritance structure starting with <code>java.lang.Object</code>. The interfaces do not inherit from <code>java.lang.Object</code>.</p>
+<ul>
+<li>When viewing the Overview page, clicking on "Tree" displays the hierarchy for all packages.</li>
+<li>When viewing a particular package, class or interface page, clicking "Tree" displays the hierarchy for only that package.</li>
+</ul>
+</li>
+<li class="blockList">
+<h2>Deprecated API</h2>
+<p>The <a href="deprecated-list.html">Deprecated API</a> page lists all of the API that have been deprecated. A deprecated API is not recommended for use, generally due to improvements, and a replacement API is usually given. Deprecated APIs may be removed in future implementations.</p>
+</li>
+<li class="blockList">
+<h2>Index</h2>
+<p>The <a href="index-all.html">Index</a> contains an alphabetic list of all classes, interfaces, constructors, methods, and fields.</p>
+</li>
+<li class="blockList">
+<h2>Prev/Next</h2>
+<p>These links take you to the next or previous class, interface, package, or related page.</p>
+</li>
+<li class="blockList">
+<h2>Frames/No Frames</h2>
+<p>These links show and hide the HTML frames.  All pages are available with or without frames.</p>
+</li>
+<li class="blockList">
+<h2>All Classes</h2>
+<p>The <a href="allclasses-noframe.html">All Classes</a> link shows all classes and interfaces except non-static nested types.</p>
+</li>
+<li class="blockList">
+<h2>Serialized Form</h2>
+<p>Each serializable or externalizable class has a description of its serialization fields and methods. This information is of interest to re-implementors, not to developers using the API. While there is no link in the navigation bar, you can get to this information by going to any serialized class and clicking "Serialized Form" in the "See also" section of the class description.</p>
+</li>
+<li class="blockList">
+<h2>Constant Field Values</h2>
+<p>The <a href="constant-values.html">Constant Field Values</a> page lists the static final fields and their values.</p>
+</li>
+</ul>
+<span class="emphasizedPhrase">This help file applies to API documentation generated using the standard doclet.</span></div>
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="overview-summary.html">Overview</a></li>
+<li>Package</li>
+<li>Class</li>
+<li><a href="overview-tree.html">Tree</a></li>
+<li><a href="deprecated-list.html">Deprecated</a></li>
+<li><a href="index-all.html">Index</a></li>
+<li class="navBarCell1Rev">Help</li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev</li>
+<li>Next</li>
+</ul>
+<ul class="navList">
+<li><a href="index.html?help-doc.html" target="_top">Frames</a></li>
+<li><a href="help-doc.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+</body>
+</html>
diff --git a/doc/api/index-all.html b/doc/api/index-all.html
new file mode 100644
index 0000000..925fb14
--- /dev/null
+++ b/doc/api/index-all.html
@@ -0,0 +1,1594 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc (1.8.0_05) on Sat Jun 07 12:11:35 EEST 2014 -->
+<title>Index</title>
+<meta name="date" content="2014-06-07">
+<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
+<script type="text/javascript" src="script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="Index";
+        }
+    }
+    catch(err) {
+    }
+//-->
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="overview-summary.html">Overview</a></li>
+<li>Package</li>
+<li>Class</li>
+<li><a href="overview-tree.html">Tree</a></li>
+<li><a href="deprecated-list.html">Deprecated</a></li>
+<li class="navBarCell1Rev">Index</li>
+<li><a href="help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev</li>
+<li>Next</li>
+</ul>
+<ul class="navList">
+<li><a href="index.html?index-all.html" target="_top">Frames</a></li>
+<li><a href="index-all.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<div class="contentContainer"><a href="#I:A">A</a> <a href="#I:C">C</a> <a href="#I:D">D</a> <a href="#I:E">E</a> <a href="#I:F">F</a> <a href="#I:G">G</a> <a href="#I:H">H</a> <a href="#I:I">I</a> <a href="#I:J">J</a> <a href="#I:L">L</a> <a href="#I:M">M</a> <a href="#I:N">N</a> <a href="#I:O">O</a> <a href="#I:P">P</a> <a href="#I:R">R</a> <a href="#I:S">S</a> <a href="#I:T">T</a> <a href="#I:U">U</a> [...]
+<!--   -->
+</a>
+<h2 class="title">A</h2>
+<dl>
+<dt><span class="memberNameLink"><a href="gr/zeus/util/DateHelper.html#addDaysToDate-java.util.Calendar-int-">addDaysToDate(Calendar, int)</a></span> - Static method in class gr.zeus.util.<a href="gr/zeus/util/DateHelper.html" title="class in gr.zeus.util">DateHelper</a></dt>
+<dd>
+<div class="block">Adds 'days' to a calendar taking into consideration
+ the month, year and leap years change as well.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/typesafe/SwingConfigurationManager.html#applyFocus-java.awt.Container-java.awt.Component:A-">applyFocus(Container, Component[])</a></span> - Method in class gr.zeus.ui.typesafe.<a href="gr/zeus/ui/typesafe/SwingConfigurationManager.html" title="class in gr.zeus.ui.typesafe">SwingConfigurationManager</a></dt>
+<dd>
+<div class="block">Apply focus policy to all the components in the array, depending on the
+ component's placement within this array.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/table/TableSorter.html#ASCENDING">ASCENDING</a></span> - Static variable in class gr.zeus.ui.table.<a href="gr/zeus/ui/table/TableSorter.html" title="class in gr.zeus.ui.table">TableSorter</a></dt>
+<dd> </dd>
+<dt><a href="gr/zeus/ui/table/AutoResizeTableColumns.html" title="class in gr.zeus.ui.table"><span class="typeNameLink">AutoResizeTableColumns</span></a> - Class in <a href="gr/zeus/ui/table/package-summary.html">gr.zeus.ui.table</a></dt>
+<dd>
+<div class="block"><b>
+ NOTE: This class needs a lot of testing in order to check all possible
+ use cases! Please use <code>setDebugMode(true)</code> and reports any bugs or
+ malfunctions to <a href="mailto:gregkotsaftis at yahoo.com">
+gregkotsaftis at yahoo.com</a>
+ </b></div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/table/AutoResizeTableColumns.html#AutoResizeTableColumns-javax.swing.JTable-">AutoResizeTableColumns(JTable)</a></span> - Constructor for class gr.zeus.ui.table.<a href="gr/zeus/ui/table/AutoResizeTableColumns.html" title="class in gr.zeus.ui.table">AutoResizeTableColumns</a></dt>
+<dd>
+<div class="block">Constructor.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/table/AutoResizeTableColumns.html#AutoResizeTableColumns-javax.swing.JTable-boolean-">AutoResizeTableColumns(JTable, boolean)</a></span> - Constructor for class gr.zeus.ui.table.<a href="gr/zeus/ui/table/AutoResizeTableColumns.html" title="class in gr.zeus.ui.table">AutoResizeTableColumns</a></dt>
+<dd>
+<div class="block">Constructor.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/table/AutoResizeTableColumns.html#AutoResizeTableColumns-javax.swing.JTable-javax.swing.table.TableModel-int-boolean-boolean-boolean:A-">AutoResizeTableColumns(JTable, TableModel, int, boolean, boolean, boolean[])</a></span> - Constructor for class gr.zeus.ui.table.<a href="gr/zeus/ui/table/AutoResizeTableColumns.html" title="class in gr.zeus.ui.table">AutoResizeTableColumns</a></dt>
+<dd>
+<div class="block">Constructor.</div>
+</dd>
+</dl>
+<a name="I:C">
+<!--   -->
+</a>
+<h2 class="title">C</h2>
+<dl>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/mdi/WindowManager.html#cascade--">cascade()</a></span> - Method in class gr.zeus.ui.mdi.<a href="gr/zeus/ui/mdi/WindowManager.html" title="class in gr.zeus.ui.mdi">WindowManager</a></dt>
+<dd>
+<div class="block">Cascades all frames.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/util/GUIUtils.html#centerOnScreen-java.awt.Window-">centerOnScreen(Window)</a></span> - Static method in class gr.zeus.util.<a href="gr/zeus/util/GUIUtils.html" title="class in gr.zeus.util">GUIUtils</a></dt>
+<dd>
+<div class="block">Centers a window on screen.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/typesafe/SimpleEditorPaneTraversal.html#changeTraveralKeys--">changeTraveralKeys()</a></span> - Method in class gr.zeus.ui.typesafe.<a href="gr/zeus/ui/typesafe/SimpleEditorPaneTraversal.html" title="class in gr.zeus.ui.typesafe">SimpleEditorPaneTraversal</a></dt>
+<dd>
+<div class="block">Replaces the original traversal keys with new ones.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/typesafe/SimpleTextAreaTraversal.html#changeTraveralKeys--">changeTraveralKeys()</a></span> - Method in class gr.zeus.ui.typesafe.<a href="gr/zeus/ui/typesafe/SimpleTextAreaTraversal.html" title="class in gr.zeus.ui.typesafe">SimpleTextAreaTraversal</a></dt>
+<dd>
+<div class="block">Replaces the original traversal keys with new ones.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/typesafe/SimpleTextPaneTraversal.html#changeTraveralKeys--">changeTraveralKeys()</a></span> - Method in class gr.zeus.ui.typesafe.<a href="gr/zeus/ui/typesafe/SimpleTextPaneTraversal.html" title="class in gr.zeus.ui.typesafe">SimpleTextPaneTraversal</a></dt>
+<dd>
+<div class="block">Replaces the original traversal keys with new ones.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/JConsolePane.html#clearBufferMessages--">clearBufferMessages()</a></span> - Method in class gr.zeus.ui.<a href="gr/zeus/ui/JConsolePane.html" title="class in gr.zeus.ui">JConsolePane</a></dt>
+<dd>
+<div class="block">Clears all the messages stored in the internal buffer from the beginning
+ of the <code>JConsolePane</code>.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/JConsolePane.html#clearScreenMessages--">clearScreenMessages()</a></span> - Method in class gr.zeus.ui.<a href="gr/zeus/ui/JConsolePane.html" title="class in gr.zeus.ui">JConsolePane</a></dt>
+<dd>
+<div class="block">Clears only the messages that are displayed in the textarea.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/mdi/WindowManager.html#close--">close()</a></span> - Method in class gr.zeus.ui.mdi.<a href="gr/zeus/ui/mdi/WindowManager.html" title="class in gr.zeus.ui.mdi">WindowManager</a></dt>
+<dd>
+<div class="block">Closes the selected frame if it is closable.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/mdi/WindowManager.html#closeAll--">closeAll()</a></span> - Method in class gr.zeus.ui.mdi.<a href="gr/zeus/ui/mdi/WindowManager.html" title="class in gr.zeus.ui.mdi">WindowManager</a></dt>
+<dd>
+<div class="block">Closes all frames that are closable.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/table/TableSorter.html#COMPARABLE_COMPARATOR">COMPARABLE_COMPARATOR</a></span> - Static variable in class gr.zeus.ui.table.<a href="gr/zeus/ui/table/TableSorter.html" title="class in gr.zeus.ui.table">TableSorter</a></dt>
+<dd> </dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/mdi/JInternalFrameComparator.html#compare-javax.swing.JInternalFrame-javax.swing.JInternalFrame-">compare(JInternalFrame, JInternalFrame)</a></span> - Method in class gr.zeus.ui.mdi.<a href="gr/zeus/ui/mdi/JInternalFrameComparator.html" title="class in gr.zeus.ui.mdi">JInternalFrameComparator</a></dt>
+<dd>
+<div class="block">Compares internal frames based on their title.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/typesafe/SwingConfigurationManager.html#configComponent-java.lang.String-javax.swing.text.JTextComponent...-">configComponent(String, JTextComponent...)</a></span> - Method in class gr.zeus.ui.typesafe.<a href="gr/zeus/ui/typesafe/SwingConfigurationManager.html" title="class in gr.zeus.ui.typesafe">SwingConfigurationManager</a></dt>
+<dd>
+<div class="block">Apply a configuration to one or more components.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/util/IOHelper.html#copyFile-java.lang.String-java.lang.String-boolean-">copyFile(String, String, boolean)</a></span> - Static method in class gr.zeus.util.<a href="gr/zeus/util/IOHelper.html" title="class in gr.zeus.util">IOHelper</a></dt>
+<dd>
+<div class="block">Copies a file to another location/file.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/util/IOHelper.html#copyFile-java.io.File-java.io.File-boolean-">copyFile(File, File, boolean)</a></span> - Static method in class gr.zeus.util.<a href="gr/zeus/util/IOHelper.html" title="class in gr.zeus.util">IOHelper</a></dt>
+<dd>
+<div class="block">Copies a file to another location/file.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/mdi/WindowManager.html#countFrames--">countFrames()</a></span> - Method in class gr.zeus.ui.mdi.<a href="gr/zeus/ui/mdi/WindowManager.html" title="class in gr.zeus.ui.mdi">WindowManager</a></dt>
+<dd>
+<div class="block">Counts all frames, even those that are closed with
+ <code>DefaultCloseOperation = HIDE_ON_CLOSE</code></div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/mdi/WindowManager.html#countVisibleFrames--">countVisibleFrames()</a></span> - Method in class gr.zeus.ui.mdi.<a href="gr/zeus/ui/mdi/WindowManager.html" title="class in gr.zeus.ui.mdi">WindowManager</a></dt>
+<dd>
+<div class="block">Counts only visible frames.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/util/IOHelper.html#createDirectoryTreeForFile-java.lang.String-">createDirectoryTreeForFile(String)</a></span> - Static method in class gr.zeus.util.<a href="gr/zeus/util/IOHelper.html" title="class in gr.zeus.util">IOHelper</a></dt>
+<dd>
+<div class="block">Creates the complete directory structure for a complete
+ <b>FILE</b> pathname.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/util/IOHelper.html#createDirectoryTreeForFolder-java.lang.String-">createDirectoryTreeForFolder(String)</a></span> - Static method in class gr.zeus.util.<a href="gr/zeus/util/IOHelper.html" title="class in gr.zeus.util">IOHelper</a></dt>
+<dd>
+<div class="block">Creates the complete directory structure for a complete
+ <b>FOLDER</b> pathname.</div>
+</dd>
+<dt><a href="gr/zeus/util/CurrentDateHelper.html" title="class in gr.zeus.util"><span class="typeNameLink">CurrentDateHelper</span></a> - Class in <a href="gr/zeus/util/package-summary.html">gr.zeus.util</a></dt>
+<dd>
+<div class="block">Helper methods for current date and time.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/util/CurrentDateHelper.html#CurrentDateHelper--">CurrentDateHelper()</a></span> - Constructor for class gr.zeus.util.<a href="gr/zeus/util/CurrentDateHelper.html" title="class in gr.zeus.util">CurrentDateHelper</a></dt>
+<dd> </dd>
+<dt><a href="gr/zeus/ui/typesafe/CustomFocusTraversalPolicy.html" title="class in gr.zeus.ui.typesafe"><span class="typeNameLink">CustomFocusTraversalPolicy</span></a> - Class in <a href="gr/zeus/ui/typesafe/package-summary.html">gr.zeus.ui.typesafe</a></dt>
+<dd>
+<div class="block">This class creates a custom focus policy for Swing components by extending
+ LayoutFocusTraversalPolicy.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/typesafe/CustomFocusTraversalPolicy.html#CustomFocusTraversalPolicy-java.awt.Component:A-">CustomFocusTraversalPolicy(Component[])</a></span> - Constructor for class gr.zeus.ui.typesafe.<a href="gr/zeus/ui/typesafe/CustomFocusTraversalPolicy.html" title="class in gr.zeus.ui.typesafe">CustomFocusTraversalPolicy</a></dt>
+<dd>
+<div class="block">Constructor.</div>
+</dd>
+</dl>
+<a name="I:D">
+<!--   -->
+</a>
+<h2 class="title">D</h2>
+<dl>
+<dt><a href="gr/zeus/util/DateHelper.html" title="class in gr.zeus.util"><span class="typeNameLink">DateHelper</span></a> - Class in <a href="gr/zeus/util/package-summary.html">gr.zeus.util</a></dt>
+<dd>
+<div class="block">Helper methods for <code>java.util.Date</code></div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/util/DateHelper.html#DateHelper--">DateHelper()</a></span> - Constructor for class gr.zeus.util.<a href="gr/zeus/util/DateHelper.html" title="class in gr.zeus.util">DateHelper</a></dt>
+<dd> </dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/util/DateHelper.html#dateToString-java.util.Date-java.lang.String-">dateToString(Date, String)</a></span> - Static method in class gr.zeus.util.<a href="gr/zeus/util/DateHelper.html" title="class in gr.zeus.util">DateHelper</a></dt>
+<dd>
+<div class="block">Converts a date to a string based on a
+ <code>SimpleDateFormat</code> pattern.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/table/AutoResizeTableColumns.html#DEFAULT_COLUMN_PADDING">DEFAULT_COLUMN_PADDING</a></span> - Static variable in class gr.zeus.ui.table.<a href="gr/zeus/ui/table/AutoResizeTableColumns.html" title="class in gr.zeus.ui.table">AutoResizeTableColumns</a></dt>
+<dd> </dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/typesafe/TypeSafeTextDocumentFilter.html#DEFAULT_MAXCHARS">DEFAULT_MAXCHARS</a></span> - Static variable in class gr.zeus.ui.typesafe.<a href="gr/zeus/ui/typesafe/TypeSafeTextDocumentFilter.html" title="class in gr.zeus.ui.typesafe">TypeSafeTextDocumentFilter</a></dt>
+<dd> </dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/util/IOHelper.html#deleteDirectory-java.io.File-">deleteDirectory(File)</a></span> - Static method in class gr.zeus.util.<a href="gr/zeus/util/IOHelper.html" title="class in gr.zeus.util">IOHelper</a></dt>
+<dd>
+<div class="block">Deletes all files and subdirectories under <i>dir</i>.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/util/IOHelper.html#deleteDirectory-java.lang.String-">deleteDirectory(String)</a></span> - Static method in class gr.zeus.util.<a href="gr/zeus/util/IOHelper.html" title="class in gr.zeus.util">IOHelper</a></dt>
+<dd>
+<div class="block">Deletes all files and subdirectories under <i>dir</i>.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/util/IOHelper.html#deleteFile-java.lang.String-">deleteFile(String)</a></span> - Static method in class gr.zeus.util.<a href="gr/zeus/util/IOHelper.html" title="class in gr.zeus.util">IOHelper</a></dt>
+<dd>
+<div class="block">Deletes a file.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/table/TableSorter.html#DESCENDING">DESCENDING</a></span> - Static variable in class gr.zeus.ui.table.<a href="gr/zeus/ui/table/TableSorter.html" title="class in gr.zeus.ui.table">TableSorter</a></dt>
+<dd> </dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/JConsolePane.html#destroyConsole--">destroyConsole()</a></span> - Method in class gr.zeus.ui.<a href="gr/zeus/ui/JConsolePane.html" title="class in gr.zeus.ui">JConsolePane</a></dt>
+<dd>
+<div class="block">Destroys the console.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/table/TableSorterIcons.html#DOWN1_ICON">DOWN1_ICON</a></span> - Static variable in class gr.zeus.ui.table.<a href="gr/zeus/ui/table/TableSorterIcons.html" title="class in gr.zeus.ui.table">TableSorterIcons</a></dt>
+<dd>
+<div class="block">Down image icon 1.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/table/TableSorterIcons.html#DOWN2_ICON">DOWN2_ICON</a></span> - Static variable in class gr.zeus.ui.table.<a href="gr/zeus/ui/table/TableSorterIcons.html" title="class in gr.zeus.ui.table">TableSorterIcons</a></dt>
+<dd>
+<div class="block">Down image icon 2.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/table/TableSorterIcons.html#DOWN3_ICON">DOWN3_ICON</a></span> - Static variable in class gr.zeus.ui.table.<a href="gr/zeus/ui/table/TableSorterIcons.html" title="class in gr.zeus.ui.table">TableSorterIcons</a></dt>
+<dd>
+<div class="block">Down image icon 3.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/table/TableSorterIcons.html#DOWN4_ICON">DOWN4_ICON</a></span> - Static variable in class gr.zeus.ui.table.<a href="gr/zeus/ui/table/TableSorterIcons.html" title="class in gr.zeus.ui.table">TableSorterIcons</a></dt>
+<dd>
+<div class="block">Down image icon 4.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/table/TableSorterIcons.html#DOWN5_ICON">DOWN5_ICON</a></span> - Static variable in class gr.zeus.ui.table.<a href="gr/zeus/ui/table/TableSorterIcons.html" title="class in gr.zeus.ui.table">TableSorterIcons</a></dt>
+<dd>
+<div class="block">Down image icon 5.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/table/TableSorterIcons.html#DOWN6_ICON">DOWN6_ICON</a></span> - Static variable in class gr.zeus.ui.table.<a href="gr/zeus/ui/table/TableSorterIcons.html" title="class in gr.zeus.ui.table">TableSorterIcons</a></dt>
+<dd>
+<div class="block">Down image icon 6.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/table/TableSorterIcons.html#DOWN7_ICON">DOWN7_ICON</a></span> - Static variable in class gr.zeus.ui.table.<a href="gr/zeus/ui/table/TableSorterIcons.html" title="class in gr.zeus.ui.table">TableSorterIcons</a></dt>
+<dd>
+<div class="block">Down image icon 7.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/JConsolePane.html#dumpConsole-java.lang.String-boolean-">dumpConsole(String, boolean)</a></span> - Method in class gr.zeus.ui.<a href="gr/zeus/ui/JConsolePane.html" title="class in gr.zeus.ui">JConsolePane</a></dt>
+<dd>
+<div class="block">Dumps all the console messages (up to now) to a file (not only the
+ messages displayed in the textarea).</div>
+</dd>
+</dl>
+<a name="I:E">
+<!--   -->
+</a>
+<h2 class="title">E</h2>
+<dl>
+<dt><span class="memberNameLink"><a href="gr/zeus/util/SimpleTimerMillis.html#elapsedMillis--">elapsedMillis()</a></span> - Method in class gr.zeus.util.<a href="gr/zeus/util/SimpleTimerMillis.html" title="class in gr.zeus.util">SimpleTimerMillis</a></dt>
+<dd>
+<div class="block">Get elapsed time in milliseconds.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/util/SimpleTimerNanos.html#elapsedMillis--">elapsedMillis()</a></span> - Method in class gr.zeus.util.<a href="gr/zeus/util/SimpleTimerNanos.html" title="class in gr.zeus.util">SimpleTimerNanos</a></dt>
+<dd>
+<div class="block">Gets elapsed time in milliseconds.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/util/SimpleTimerNanos.html#elapsedNanos--">elapsedNanos()</a></span> - Method in class gr.zeus.util.<a href="gr/zeus/util/SimpleTimerNanos.html" title="class in gr.zeus.util">SimpleTimerNanos</a></dt>
+<dd>
+<div class="block">Gets elapsed time in nanoseconds.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/util/SimpleTimerMillis.html#elapsedSeconds--">elapsedSeconds()</a></span> - Method in class gr.zeus.util.<a href="gr/zeus/util/SimpleTimerMillis.html" title="class in gr.zeus.util">SimpleTimerMillis</a></dt>
+<dd>
+<div class="block">Get elapsed time in seconds.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/util/SimpleTimerNanos.html#elapsedSeconds--">elapsedSeconds()</a></span> - Method in class gr.zeus.util.<a href="gr/zeus/util/SimpleTimerNanos.html" title="class in gr.zeus.util">SimpleTimerNanos</a></dt>
+<dd>
+<div class="block">Gets elapsed time in seconds.</div>
+</dd>
+</dl>
+<a name="I:F">
+<!--   -->
+</a>
+<h2 class="title">F</h2>
+<dl>
+<dt><span class="memberNameLink"><a href="gr/zeus/util/IOHelper.html#fileOrDirectoryExists-java.lang.String-">fileOrDirectoryExists(String)</a></span> - Static method in class gr.zeus.util.<a href="gr/zeus/util/IOHelper.html" title="class in gr.zeus.util">IOHelper</a></dt>
+<dd>
+<div class="block">Determines if a file or directory exists.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/typesafe/SelectAllTextOnFocus.html#focusGained-java.awt.event.FocusEvent-">focusGained(FocusEvent)</a></span> - Method in class gr.zeus.ui.typesafe.<a href="gr/zeus/ui/typesafe/SelectAllTextOnFocus.html" title="class in gr.zeus.ui.typesafe">SelectAllTextOnFocus</a></dt>
+<dd>
+<div class="block">Focus gained event.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/typesafe/SelectAllTextOnFocus.html#focusLost-java.awt.event.FocusEvent-">focusLost(FocusEvent)</a></span> - Method in class gr.zeus.ui.typesafe.<a href="gr/zeus/ui/typesafe/SelectAllTextOnFocus.html" title="class in gr.zeus.ui.typesafe">SelectAllTextOnFocus</a></dt>
+<dd>
+<div class="block">Focus lost event.</div>
+</dd>
+</dl>
+<a name="I:G">
+<!--   -->
+</a>
+<h2 class="title">G</h2>
+<dl>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/JConsolePane.html#getAppendFirstTime--">getAppendFirstTime()</a></span> - Method in class gr.zeus.ui.<a href="gr/zeus/ui/JConsolePane.html" title="class in gr.zeus.ui">JConsolePane</a></dt>
+<dd>
+<div class="block">Gets append policy.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/mdi/WindowManager.html#getAutoPositionPolicy--">getAutoPositionPolicy()</a></span> - Method in class gr.zeus.ui.mdi.<a href="gr/zeus/ui/mdi/WindowManager.html" title="class in gr.zeus.ui.mdi">WindowManager</a></dt>
+<dd>
+<div class="block">Gets the auto position frames policy.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/JConsolePane.html#getAutoSave--">getAutoSave()</a></span> - Method in class gr.zeus.ui.<a href="gr/zeus/ui/JConsolePane.html" title="class in gr.zeus.ui">JConsolePane</a></dt>
+<dd>
+<div class="block">Gets auto save status.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/JConsolePane.html#getBackgroundColor--">getBackgroundColor()</a></span> - Method in class gr.zeus.ui.<a href="gr/zeus/ui/JConsolePane.html" title="class in gr.zeus.ui">JConsolePane</a></dt>
+<dd>
+<div class="block">Gets the background color of the textarea.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/JConsolePane.html#getClearButtonText--">getClearButtonText()</a></span> - Method in class gr.zeus.ui.<a href="gr/zeus/ui/JConsolePane.html" title="class in gr.zeus.ui">JConsolePane</a></dt>
+<dd>
+<div class="block">Gets the text of the clear button.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/JConsolePane.html#getCloseButtonText--">getCloseButtonText()</a></span> - Method in class gr.zeus.ui.<a href="gr/zeus/ui/JConsolePane.html" title="class in gr.zeus.ui">JConsolePane</a></dt>
+<dd>
+<div class="block">Gets the text of the close button.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/mdi/WindowManager.html#getClosePolicy--">getClosePolicy()</a></span> - Method in class gr.zeus.ui.mdi.<a href="gr/zeus/ui/mdi/WindowManager.html" title="class in gr.zeus.ui.mdi">WindowManager</a></dt>
+<dd>
+<div class="block">Gets the close policy.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/table/TableSorter.html#getColumnClass-int-">getColumnClass(int)</a></span> - Method in class gr.zeus.ui.table.<a href="gr/zeus/ui/table/TableSorter.html" title="class in gr.zeus.ui.table">TableSorter</a></dt>
+<dd> </dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/table/TableSorter.html#getColumnCount--">getColumnCount()</a></span> - Method in class gr.zeus.ui.table.<a href="gr/zeus/ui/table/TableSorter.html" title="class in gr.zeus.ui.table">TableSorter</a></dt>
+<dd> </dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/table/TableSorter.html#getColumnName-int-">getColumnName(int)</a></span> - Method in class gr.zeus.ui.table.<a href="gr/zeus/ui/table/TableSorter.html" title="class in gr.zeus.ui.table">TableSorter</a></dt>
+<dd> </dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/table/TableSorter.html#getComparator-int-">getComparator(int)</a></span> - Method in class gr.zeus.ui.table.<a href="gr/zeus/ui/table/TableSorter.html" title="class in gr.zeus.ui.table">TableSorter</a></dt>
+<dd> </dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/typesafe/CustomFocusTraversalPolicy.html#getComponentAfter-java.awt.Container-java.awt.Component-">getComponentAfter(Container, Component)</a></span> - Method in class gr.zeus.ui.typesafe.<a href="gr/zeus/ui/typesafe/CustomFocusTraversalPolicy.html" title="class in gr.zeus.ui.typesafe">CustomFocusTraversalPolicy</a></dt>
+<dd>
+<div class="block">Gets the next focusable component.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/typesafe/CustomFocusTraversalPolicy.html#getComponentBefore-java.awt.Container-java.awt.Component-">getComponentBefore(Container, Component)</a></span> - Method in class gr.zeus.ui.typesafe.<a href="gr/zeus/ui/typesafe/CustomFocusTraversalPolicy.html" title="class in gr.zeus.ui.typesafe">CustomFocusTraversalPolicy</a></dt>
+<dd>
+<div class="block">Gets the previous focusable component.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/JConsolePane.html#getConfimMessage--">getConfimMessage()</a></span> - Method in class gr.zeus.ui.<a href="gr/zeus/ui/JConsolePane.html" title="class in gr.zeus.ui">JConsolePane</a></dt>
+<dd>
+<div class="block">Gets the text for the popup window that confirms file overwrite.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/JConsolePane.html#getConfimTitle--">getConfimTitle()</a></span> - Method in class gr.zeus.ui.<a href="gr/zeus/ui/JConsolePane.html" title="class in gr.zeus.ui">JConsolePane</a></dt>
+<dd>
+<div class="block">Gets the title for the popup window that confirms file overwrite.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/JConsole.html#getConsole--">getConsole()</a></span> - Static method in class gr.zeus.ui.<a href="gr/zeus/ui/JConsole.html" title="class in gr.zeus.ui">JConsole</a></dt>
+<dd>
+<div class="block">Returns the instance of the <code>JConsolePane</code> for further
+ configuration.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/JIConsole.html#getConsole--">getConsole()</a></span> - Static method in class gr.zeus.ui.<a href="gr/zeus/ui/JIConsole.html" title="class in gr.zeus.ui">JIConsole</a></dt>
+<dd>
+<div class="block">Returns the instance of the <code>JConsolePane</code> for further
+ configuration.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/JConsolePane.html#getConsolePane--">getConsolePane()</a></span> - Static method in class gr.zeus.ui.<a href="gr/zeus/ui/JConsolePane.html" title="class in gr.zeus.ui">JConsolePane</a></dt>
+<dd>
+<div class="block">Singleton constructor.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/util/CurrentDateHelper.html#getCurrentDate--">getCurrentDate()</a></span> - Static method in class gr.zeus.util.<a href="gr/zeus/util/CurrentDateHelper.html" title="class in gr.zeus.util">CurrentDateHelper</a></dt>
+<dd>
+<div class="block">Gets the current date.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/util/CurrentDateHelper.html#getCurrentDateLong--">getCurrentDateLong()</a></span> - Static method in class gr.zeus.util.<a href="gr/zeus/util/CurrentDateHelper.html" title="class in gr.zeus.util">CurrentDateHelper</a></dt>
+<dd>
+<div class="block">Gets the current date in long number format.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/util/CurrentDateHelper.html#getCurrentDay--">getCurrentDay()</a></span> - Static method in class gr.zeus.util.<a href="gr/zeus/util/CurrentDateHelper.html" title="class in gr.zeus.util">CurrentDateHelper</a></dt>
+<dd>
+<div class="block">Gets the current day in the month (1...31).</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/util/CurrentDateHelper.html#getCurrentHour--">getCurrentHour()</a></span> - Static method in class gr.zeus.util.<a href="gr/zeus/util/CurrentDateHelper.html" title="class in gr.zeus.util">CurrentDateHelper</a></dt>
+<dd>
+<div class="block">Gets the current hour in 24 hours format.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/util/CurrentDateHelper.html#getCurrentMinutes--">getCurrentMinutes()</a></span> - Static method in class gr.zeus.util.<a href="gr/zeus/util/CurrentDateHelper.html" title="class in gr.zeus.util">CurrentDateHelper</a></dt>
+<dd>
+<div class="block">Gets the current minutes in hour.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/util/CurrentDateHelper.html#getCurrentMonth--">getCurrentMonth()</a></span> - Static method in class gr.zeus.util.<a href="gr/zeus/util/CurrentDateHelper.html" title="class in gr.zeus.util">CurrentDateHelper</a></dt>
+<dd>
+<div class="block">Gets the current month, JANUARY = 1,......,DECEMBER = 12.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/util/CurrentDateHelper.html#getCurrentSeconds--">getCurrentSeconds()</a></span> - Static method in class gr.zeus.util.<a href="gr/zeus/util/CurrentDateHelper.html" title="class in gr.zeus.util">CurrentDateHelper</a></dt>
+<dd>
+<div class="block">Gets the current seconds in hour.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/util/CurrentDateHelper.html#getCurrentYear--">getCurrentYear()</a></span> - Static method in class gr.zeus.util.<a href="gr/zeus/util/CurrentDateHelper.html" title="class in gr.zeus.util">CurrentDateHelper</a></dt>
+<dd>
+<div class="block">Gets the current year, e.g.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/typesafe/TypeSafeVerifier.html#getDatePattern--">getDatePattern()</a></span> - Method in class gr.zeus.ui.typesafe.<a href="gr/zeus/ui/typesafe/TypeSafeVerifier.html" title="class in gr.zeus.ui.typesafe">TypeSafeVerifier</a></dt>
+<dd>
+<div class="block">Gets the date pattern.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/util/DateHelper.html#getDayForDate-java.lang.String-java.lang.String-">getDayForDate(String, String)</a></span> - Static method in class gr.zeus.util.<a href="gr/zeus/util/DateHelper.html" title="class in gr.zeus.util">DateHelper</a></dt>
+<dd>
+<div class="block">Parses a string into a date.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/util/DateHelper.html#getDayNameForDate-java.util.Date-boolean-">getDayNameForDate(Date, boolean)</a></span> - Static method in class gr.zeus.util.<a href="gr/zeus/util/DateHelper.html" title="class in gr.zeus.util">DateHelper</a></dt>
+<dd>
+<div class="block">Gets the name of a day based on a date and current locale.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/typesafe/TypeSafeVerifier.html#getDefaultByteValue--">getDefaultByteValue()</a></span> - Method in class gr.zeus.ui.typesafe.<a href="gr/zeus/ui/typesafe/TypeSafeVerifier.html" title="class in gr.zeus.ui.typesafe">TypeSafeVerifier</a></dt>
+<dd>
+<div class="block">Gets the default byte value.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/typesafe/TypeSafeVerifier.html#getDefaultDateValue--">getDefaultDateValue()</a></span> - Method in class gr.zeus.ui.typesafe.<a href="gr/zeus/ui/typesafe/TypeSafeVerifier.html" title="class in gr.zeus.ui.typesafe">TypeSafeVerifier</a></dt>
+<dd>
+<div class="block">Gets the default date value.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/typesafe/TypeSafeVerifier.html#getDefaultDoubleValue--">getDefaultDoubleValue()</a></span> - Method in class gr.zeus.ui.typesafe.<a href="gr/zeus/ui/typesafe/TypeSafeVerifier.html" title="class in gr.zeus.ui.typesafe">TypeSafeVerifier</a></dt>
+<dd>
+<div class="block">Gets the default double value.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/typesafe/TypeSafeVerifier.html#getDefaultFloatValue--">getDefaultFloatValue()</a></span> - Method in class gr.zeus.ui.typesafe.<a href="gr/zeus/ui/typesafe/TypeSafeVerifier.html" title="class in gr.zeus.ui.typesafe">TypeSafeVerifier</a></dt>
+<dd>
+<div class="block">Gets the default float value.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/typesafe/TypeSafeVerifier.html#getDefaultIntegerValue--">getDefaultIntegerValue()</a></span> - Method in class gr.zeus.ui.typesafe.<a href="gr/zeus/ui/typesafe/TypeSafeVerifier.html" title="class in gr.zeus.ui.typesafe">TypeSafeVerifier</a></dt>
+<dd>
+<div class="block">Gets the default integer value.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/typesafe/TypeSafeVerifier.html#getDefaultLongValue--">getDefaultLongValue()</a></span> - Method in class gr.zeus.ui.typesafe.<a href="gr/zeus/ui/typesafe/TypeSafeVerifier.html" title="class in gr.zeus.ui.typesafe">TypeSafeVerifier</a></dt>
+<dd>
+<div class="block">Gets the default long value.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/typesafe/TypeSafeVerifier.html#getDefaultShortValue--">getDefaultShortValue()</a></span> - Method in class gr.zeus.ui.typesafe.<a href="gr/zeus/ui/typesafe/TypeSafeVerifier.html" title="class in gr.zeus.ui.typesafe">TypeSafeVerifier</a></dt>
+<dd>
+<div class="block">Gets the default short value.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/typesafe/TypeSafeVerifier.html#getDefaultsOnError--">getDefaultsOnError()</a></span> - Method in class gr.zeus.ui.typesafe.<a href="gr/zeus/ui/typesafe/TypeSafeVerifier.html" title="class in gr.zeus.ui.typesafe">TypeSafeVerifier</a></dt>
+<dd>
+<div class="block">Gets defaultsOnError status.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/mdi/WindowManager.html#getDeiconifiablePolicy--">getDeiconifiablePolicy()</a></span> - Method in class gr.zeus.ui.mdi.<a href="gr/zeus/ui/mdi/WindowManager.html" title="class in gr.zeus.ui.mdi">WindowManager</a></dt>
+<dd>
+<div class="block">Gets the de-iconifiable policy.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/JConsolePane.html#getFilechooserApproveButtonText--">getFilechooserApproveButtonText()</a></span> - Method in class gr.zeus.ui.<a href="gr/zeus/ui/JConsolePane.html" title="class in gr.zeus.ui">JConsolePane</a></dt>
+<dd>
+<div class="block">Gets the filechooser approve button text.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/JConsolePane.html#getFilechooserTitle--">getFilechooserTitle()</a></span> - Method in class gr.zeus.ui.<a href="gr/zeus/ui/JConsolePane.html" title="class in gr.zeus.ui">JConsolePane</a></dt>
+<dd>
+<div class="block">Gets the filechooser title.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/typesafe/CustomFocusTraversalPolicy.html#getFirstComponent-java.awt.Container-">getFirstComponent(Container)</a></span> - Method in class gr.zeus.ui.typesafe.<a href="gr/zeus/ui/typesafe/CustomFocusTraversalPolicy.html" title="class in gr.zeus.ui.typesafe">CustomFocusTraversalPolicy</a></dt>
+<dd>
+<div class="block">Gets the first focusable component.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/JConsolePane.html#getForegroundColor--">getForegroundColor()</a></span> - Method in class gr.zeus.ui.<a href="gr/zeus/ui/JConsolePane.html" title="class in gr.zeus.ui">JConsolePane</a></dt>
+<dd>
+<div class="block">Gets the foreground color of the textarea.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/table/TableSorter.html#getHeaderRendererCustomIcon-int-">getHeaderRendererCustomIcon(int)</a></span> - Method in class gr.zeus.ui.table.<a href="gr/zeus/ui/table/TableSorter.html" title="class in gr.zeus.ui.table">TableSorter</a></dt>
+<dd> </dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/table/TableSorter.html#getHeaderRendererIcon-int-int-">getHeaderRendererIcon(int, int)</a></span> - Method in class gr.zeus.ui.table.<a href="gr/zeus/ui/table/TableSorter.html" title="class in gr.zeus.ui.table">TableSorter</a></dt>
+<dd> </dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/SingleAppInstance.html#getInstance--">getInstance()</a></span> - Static method in class gr.zeus.ui.<a href="gr/zeus/ui/SingleAppInstance.html" title="class in gr.zeus.ui">SingleAppInstance</a></dt>
+<dd>
+<div class="block">This method returns the single instance of this class.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/SingleAppInstance.html#getInstance-java.lang.String-">getInstance(String)</a></span> - Static method in class gr.zeus.ui.<a href="gr/zeus/ui/SingleAppInstance.html" title="class in gr.zeus.ui">SingleAppInstance</a></dt>
+<dd>
+<div class="block">This method returns the single instance of this class.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/typesafe/TypeSafeTextDocumentFilter.html#getInvalidChars--">getInvalidChars()</a></span> - Method in class gr.zeus.ui.typesafe.<a href="gr/zeus/ui/typesafe/TypeSafeTextDocumentFilter.html" title="class in gr.zeus.ui.typesafe">TypeSafeTextDocumentFilter</a></dt>
+<dd>
+<div class="block">Gets invalid characters.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/typesafe/CustomFocusTraversalPolicy.html#getLastComponent-java.awt.Container-">getLastComponent(Container)</a></span> - Method in class gr.zeus.ui.typesafe.<a href="gr/zeus/ui/typesafe/CustomFocusTraversalPolicy.html" title="class in gr.zeus.ui.typesafe">CustomFocusTraversalPolicy</a></dt>
+<dd>
+<div class="block">Gets the last focusable component.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/typesafe/TypeSafeTextDocumentFilter.html#getLowerCase--">getLowerCase()</a></span> - Method in class gr.zeus.ui.typesafe.<a href="gr/zeus/ui/typesafe/TypeSafeTextDocumentFilter.html" title="class in gr.zeus.ui.typesafe">TypeSafeTextDocumentFilter</a></dt>
+<dd>
+<div class="block">Gets lowercase flag.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/typesafe/TypeSafeVerifier.html#getMaxByteValue--">getMaxByteValue()</a></span> - Method in class gr.zeus.ui.typesafe.<a href="gr/zeus/ui/typesafe/TypeSafeVerifier.html" title="class in gr.zeus.ui.typesafe">TypeSafeVerifier</a></dt>
+<dd>
+<div class="block">Gets the max byte value.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/JConsolePane.html#getMaxChars--">getMaxChars()</a></span> - Method in class gr.zeus.ui.<a href="gr/zeus/ui/JConsolePane.html" title="class in gr.zeus.ui">JConsolePane</a></dt>
+<dd>
+<div class="block">If -1 no limit, else the messages will be flushed to 'traceFilename' and
+ cleared when this limit is reached.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/typesafe/TypeSafeTextDocumentFilter.html#getMaxChars--">getMaxChars()</a></span> - Method in class gr.zeus.ui.typesafe.<a href="gr/zeus/ui/typesafe/TypeSafeTextDocumentFilter.html" title="class in gr.zeus.ui.typesafe">TypeSafeTextDocumentFilter</a></dt>
+<dd>
+<div class="block">Gets max characters allowed.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/typesafe/TypeSafeVerifier.html#getMaxDoubleValue--">getMaxDoubleValue()</a></span> - Method in class gr.zeus.ui.typesafe.<a href="gr/zeus/ui/typesafe/TypeSafeVerifier.html" title="class in gr.zeus.ui.typesafe">TypeSafeVerifier</a></dt>
+<dd>
+<div class="block">Gets the max double value.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/typesafe/TypeSafeVerifier.html#getMaxFloatValue--">getMaxFloatValue()</a></span> - Method in class gr.zeus.ui.typesafe.<a href="gr/zeus/ui/typesafe/TypeSafeVerifier.html" title="class in gr.zeus.ui.typesafe">TypeSafeVerifier</a></dt>
+<dd>
+<div class="block">Gets the max float value.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/typesafe/TypeSafeVerifier.html#getMaxIntegerValue--">getMaxIntegerValue()</a></span> - Method in class gr.zeus.ui.typesafe.<a href="gr/zeus/ui/typesafe/TypeSafeVerifier.html" title="class in gr.zeus.ui.typesafe">TypeSafeVerifier</a></dt>
+<dd>
+<div class="block">Gets the max integer value.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/typesafe/TypeSafeVerifier.html#getMaxLongValue--">getMaxLongValue()</a></span> - Method in class gr.zeus.ui.typesafe.<a href="gr/zeus/ui/typesafe/TypeSafeVerifier.html" title="class in gr.zeus.ui.typesafe">TypeSafeVerifier</a></dt>
+<dd>
+<div class="block">Gets the max long value.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/typesafe/TypeSafeVerifier.html#getMaxShortValue--">getMaxShortValue()</a></span> - Method in class gr.zeus.ui.typesafe.<a href="gr/zeus/ui/typesafe/TypeSafeVerifier.html" title="class in gr.zeus.ui.typesafe">TypeSafeVerifier</a></dt>
+<dd>
+<div class="block">Gets the max short value.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/JConsolePane.html#getMessagesFilename--">getMessagesFilename()</a></span> - Method in class gr.zeus.ui.<a href="gr/zeus/ui/JConsolePane.html" title="class in gr.zeus.ui">JConsolePane</a></dt>
+<dd>
+<div class="block">Gets the default filename for the filechooser.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/typesafe/TypeSafeVerifier.html#getMinByteValue--">getMinByteValue()</a></span> - Method in class gr.zeus.ui.typesafe.<a href="gr/zeus/ui/typesafe/TypeSafeVerifier.html" title="class in gr.zeus.ui.typesafe">TypeSafeVerifier</a></dt>
+<dd>
+<div class="block">Gets the min byte value.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/typesafe/TypeSafeVerifier.html#getMinChars--">getMinChars()</a></span> - Method in class gr.zeus.ui.typesafe.<a href="gr/zeus/ui/typesafe/TypeSafeVerifier.html" title="class in gr.zeus.ui.typesafe">TypeSafeVerifier</a></dt>
+<dd>
+<div class="block">Gets min characters allowed.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/typesafe/TypeSafeVerifier.html#getMinDoubleValue--">getMinDoubleValue()</a></span> - Method in class gr.zeus.ui.typesafe.<a href="gr/zeus/ui/typesafe/TypeSafeVerifier.html" title="class in gr.zeus.ui.typesafe">TypeSafeVerifier</a></dt>
+<dd>
+<div class="block">Gets the min double value.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/typesafe/TypeSafeVerifier.html#getMinFloatValue--">getMinFloatValue()</a></span> - Method in class gr.zeus.ui.typesafe.<a href="gr/zeus/ui/typesafe/TypeSafeVerifier.html" title="class in gr.zeus.ui.typesafe">TypeSafeVerifier</a></dt>
+<dd>
+<div class="block">Gets the min float value.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/typesafe/TypeSafeVerifier.html#getMinIntegerValue--">getMinIntegerValue()</a></span> - Method in class gr.zeus.ui.typesafe.<a href="gr/zeus/ui/typesafe/TypeSafeVerifier.html" title="class in gr.zeus.ui.typesafe">TypeSafeVerifier</a></dt>
+<dd>
+<div class="block">Gets the min integer value.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/typesafe/TypeSafeVerifier.html#getMinLongValue--">getMinLongValue()</a></span> - Method in class gr.zeus.ui.typesafe.<a href="gr/zeus/ui/typesafe/TypeSafeVerifier.html" title="class in gr.zeus.ui.typesafe">TypeSafeVerifier</a></dt>
+<dd>
+<div class="block">Gets the min long value.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/typesafe/TypeSafeVerifier.html#getMinShortValue--">getMinShortValue()</a></span> - Method in class gr.zeus.ui.typesafe.<a href="gr/zeus/ui/typesafe/TypeSafeVerifier.html" title="class in gr.zeus.ui.typesafe">TypeSafeVerifier</a></dt>
+<dd>
+<div class="block">Gets the min short value.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/util/DateHelper.html#getMonthForDate-java.lang.String-java.lang.String-">getMonthForDate(String, String)</a></span> - Static method in class gr.zeus.util.<a href="gr/zeus/util/DateHelper.html" title="class in gr.zeus.util">DateHelper</a></dt>
+<dd>
+<div class="block">Parses a string into a date.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/util/SimpleUIDGenerator.html#getNextUID--">getNextUID()</a></span> - Static method in class gr.zeus.util.<a href="gr/zeus/util/SimpleUIDGenerator.html" title="class in gr.zeus.util">SimpleUIDGenerator</a></dt>
+<dd>
+<div class="block">Always returns a unique number > 0 for the existing VM.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/mdi/WindowManager.html#getOutlineDragMode--">getOutlineDragMode()</a></span> - Method in class gr.zeus.ui.mdi.<a href="gr/zeus/ui/mdi/WindowManager.html" title="class in gr.zeus.ui.mdi">WindowManager</a></dt>
+<dd>
+<div class="block">Gets frames' drawing strategy.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/JSplash.html#getProgressBar--">getProgressBar()</a></span> - Method in class gr.zeus.ui.<a href="gr/zeus/ui/JSplash.html" title="class in gr.zeus.ui">JSplash</a></dt>
+<dd>
+<div class="block">Get the progress bar for custom usage.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/typesafe/TypeSafeTextDocumentFilter.html#getReplacableChars--">getReplacableChars()</a></span> - Method in class gr.zeus.ui.typesafe.<a href="gr/zeus/ui/typesafe/TypeSafeTextDocumentFilter.html" title="class in gr.zeus.ui.typesafe">TypeSafeTextDocumentFilter</a></dt>
+<dd>
+<div class="block">Gets the replacable characters.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/typesafe/TypeSafeTextDocumentFilter.html#getReplacedChars--">getReplacedChars()</a></span> - Method in class gr.zeus.ui.typesafe.<a href="gr/zeus/ui/typesafe/TypeSafeTextDocumentFilter.html" title="class in gr.zeus.ui.typesafe">TypeSafeTextDocumentFilter</a></dt>
+<dd>
+<div class="block">Gets the replaced characters.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/SingleAppInstance.html#getReportPopup--">getReportPopup()</a></span> - Method in class gr.zeus.ui.<a href="gr/zeus/ui/SingleAppInstance.html" title="class in gr.zeus.ui">SingleAppInstance</a></dt>
+<dd>
+<div class="block">Gets whether to report via a popup or via <code>stderr</code>.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/JMessage.html#getReturnStatus--">getReturnStatus()</a></span> - Method in class gr.zeus.ui.<a href="gr/zeus/ui/JMessage.html" title="class in gr.zeus.ui">JMessage</a></dt>
+<dd>
+<div class="block">Returns the status of the dialog depending on which button was pressed.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/table/TableSorter.html#getRowCount--">getRowCount()</a></span> - Method in class gr.zeus.ui.table.<a href="gr/zeus/ui/table/TableSorter.html" title="class in gr.zeus.ui.table">TableSorter</a></dt>
+<dd> </dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/JConsolePane.html#getSaveButtonText--">getSaveButtonText()</a></span> - Method in class gr.zeus.ui.<a href="gr/zeus/ui/JConsolePane.html" title="class in gr.zeus.ui">JConsolePane</a></dt>
+<dd>
+<div class="block">Gets the text of the save button.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/JConsolePane.html#getSelectedTextColor--">getSelectedTextColor()</a></span> - Method in class gr.zeus.ui.<a href="gr/zeus/ui/JConsolePane.html" title="class in gr.zeus.ui">JConsolePane</a></dt>
+<dd>
+<div class="block">Gets the selected text color of the textarea.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/JConsolePane.html#getSelectionColor--">getSelectionColor()</a></span> - Method in class gr.zeus.ui.<a href="gr/zeus/ui/JConsolePane.html" title="class in gr.zeus.ui">JConsolePane</a></dt>
+<dd>
+<div class="block">Gets the selection color of the textarea.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/table/TableSorter.html#getSortingStatus-int-">getSortingStatus(int)</a></span> - Method in class gr.zeus.ui.table.<a href="gr/zeus/ui/table/TableSorter.html" title="class in gr.zeus.ui.table">TableSorter</a></dt>
+<dd> </dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/table/ProgressBarCellRenderer.html#getTableCellRendererComponent-javax.swing.JTable-java.lang.Object-boolean-boolean-int-int-">getTableCellRendererComponent(JTable, Object, boolean, boolean, int, int)</a></span> - Method in class gr.zeus.ui.table.<a href="gr/zeus/ui/table/ProgressBarCellRenderer.html" title="class in gr.zeus.ui.table">ProgressBarCellRenderer</a></dt>
+<dd>
+<div class="block">Gets the table cell renderer component.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/table/TableSorter.html#getTableHeader--">getTableHeader()</a></span> - Method in class gr.zeus.ui.table.<a href="gr/zeus/ui/table/TableSorter.html" title="class in gr.zeus.ui.table">TableSorter</a></dt>
+<dd> </dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/table/TableSorter.html#getTableModel--">getTableModel()</a></span> - Method in class gr.zeus.ui.table.<a href="gr/zeus/ui/table/TableSorter.html" title="class in gr.zeus.ui.table">TableSorter</a></dt>
+<dd> </dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/JConsolePane.html#getTextFont--">getTextFont()</a></span> - Method in class gr.zeus.ui.<a href="gr/zeus/ui/JConsolePane.html" title="class in gr.zeus.ui">JConsolePane</a></dt>
+<dd>
+<div class="block">Gets the font of the textarea.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/JConsolePane.html#getTraceFilename--">getTraceFilename()</a></span> - Method in class gr.zeus.ui.<a href="gr/zeus/ui/JConsolePane.html" title="class in gr.zeus.ui">JConsolePane</a></dt>
+<dd>
+<div class="block">Gets the file used by <code>dumpConsole()</code> and
+ all auto save methods.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/typesafe/TypeSafeVerifier.html#getTrimSpaces--">getTrimSpaces()</a></span> - Method in class gr.zeus.ui.typesafe.<a href="gr/zeus/ui/typesafe/TypeSafeVerifier.html" title="class in gr.zeus.ui.typesafe">TypeSafeVerifier</a></dt>
+<dd>
+<div class="block">Gets trimspaces status.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/typesafe/TypeSafeTextDocumentFilter.html#getUpperCase--">getUpperCase()</a></span> - Method in class gr.zeus.ui.typesafe.<a href="gr/zeus/ui/typesafe/TypeSafeTextDocumentFilter.html" title="class in gr.zeus.ui.typesafe">TypeSafeTextDocumentFilter</a></dt>
+<dd>
+<div class="block">Gets uppercase flag.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/typesafe/TypeSafeTextDocumentFilter.html#getValidChars--">getValidChars()</a></span> - Method in class gr.zeus.ui.typesafe.<a href="gr/zeus/ui/typesafe/TypeSafeTextDocumentFilter.html" title="class in gr.zeus.ui.typesafe">TypeSafeTextDocumentFilter</a></dt>
+<dd>
+<div class="block">Gets valid characters.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/table/TableSorter.html#getValueAt-int-int-">getValueAt(int, int)</a></span> - Method in class gr.zeus.ui.table.<a href="gr/zeus/ui/table/TableSorter.html" title="class in gr.zeus.ui.table">TableSorter</a></dt>
+<dd> </dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/typesafe/TypeSafeVerifier.html#getVerifierClassType--">getVerifierClassType()</a></span> - Method in class gr.zeus.ui.typesafe.<a href="gr/zeus/ui/typesafe/TypeSafeVerifier.html" title="class in gr.zeus.ui.typesafe">TypeSafeVerifier</a></dt>
+<dd>
+<div class="block">Gets the class type.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/util/DateHelper.html#getYearForDate-java.lang.String-java.lang.String-">getYearForDate(String, String)</a></span> - Static method in class gr.zeus.util.<a href="gr/zeus/util/DateHelper.html" title="class in gr.zeus.util">DateHelper</a></dt>
+<dd>
+<div class="block">Parses a string into a date.</div>
+</dd>
+<dt><a href="gr/zeus/ui/package-summary.html">gr.zeus.ui</a> - package gr.zeus.ui</dt>
+<dd> </dd>
+<dt><a href="gr/zeus/ui/mdi/package-summary.html">gr.zeus.ui.mdi</a> - package gr.zeus.ui.mdi</dt>
+<dd> </dd>
+<dt><a href="gr/zeus/ui/table/package-summary.html">gr.zeus.ui.table</a> - package gr.zeus.ui.table</dt>
+<dd> </dd>
+<dt><a href="gr/zeus/ui/typesafe/package-summary.html">gr.zeus.ui.typesafe</a> - package gr.zeus.ui.typesafe</dt>
+<dd> </dd>
+<dt><a href="gr/zeus/util/package-summary.html">gr.zeus.util</a> - package gr.zeus.util</dt>
+<dd> </dd>
+<dt><a href="gr/zeus/util/GUIUtils.html" title="class in gr.zeus.util"><span class="typeNameLink">GUIUtils</span></a> - Class in <a href="gr/zeus/util/package-summary.html">gr.zeus.util</a></dt>
+<dd>
+<div class="block">GUI Helper class, contains static methods that are used all the time.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/util/GUIUtils.html#GUIUtils--">GUIUtils()</a></span> - Constructor for class gr.zeus.util.<a href="gr/zeus/util/GUIUtils.html" title="class in gr.zeus.util">GUIUtils</a></dt>
+<dd> </dd>
+</dl>
+<a name="I:H">
+<!--   -->
+</a>
+<h2 class="title">H</h2>
+<dl>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/mdi/WindowManager.html#hide--">hide()</a></span> - Method in class gr.zeus.ui.mdi.<a href="gr/zeus/ui/mdi/WindowManager.html" title="class in gr.zeus.ui.mdi">WindowManager</a></dt>
+<dd>
+<div class="block">Hides a frame.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/mdi/WindowManager.html#hideAll--">hideAll()</a></span> - Method in class gr.zeus.ui.mdi.<a href="gr/zeus/ui/mdi/WindowManager.html" title="class in gr.zeus.ui.mdi">WindowManager</a></dt>
+<dd>
+<div class="block">Hides all frames.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/JConsolePane.html#hideConsole--">hideConsole()</a></span> - Method in class gr.zeus.ui.<a href="gr/zeus/ui/JConsolePane.html" title="class in gr.zeus.ui">JConsolePane</a></dt>
+<dd>
+<div class="block">Hides the console.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/JConsolePane.html#hideControlButtons--">hideControlButtons()</a></span> - Method in class gr.zeus.ui.<a href="gr/zeus/ui/JConsolePane.html" title="class in gr.zeus.ui">JConsolePane</a></dt>
+<dd>
+<div class="block">Hides the control buttons.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/util/GUIUtils.html#hideJTableColumn-javax.swing.table.TableColumn-">hideJTableColumn(TableColumn)</a></span> - Static method in class gr.zeus.util.<a href="gr/zeus/util/GUIUtils.html" title="class in gr.zeus.util">GUIUtils</a></dt>
+<dd>
+<div class="block">Hides a specific column of a JTable.</div>
+</dd>
+</dl>
+<a name="I:I">
+<!--   -->
+</a>
+<h2 class="title">I</h2>
+<dl>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/typesafe/TypeSafeTextDocumentFilter.html#insertString-javax.swing.text.DocumentFilter.FilterBypass-int-java.lang.String-javax.swing.text.AttributeSet-">insertString(DocumentFilter.FilterBypass, int, String, AttributeSet)</a></span> - Method in class gr.zeus.ui.typesafe.<a href="gr/zeus/ui/typesafe/TypeSafeTextDocumentFilter.html" title="class in gr.zeus.ui.typesafe">TypeSafeTextDocumentFilter</a></dt>
+<dd>
+<div class="block">Invoked prior to insertion of text into the specified Document.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/util/GUIUtils.html#invokeAndWait-java.lang.Runnable-">invokeAndWait(Runnable)</a></span> - Static method in class gr.zeus.util.<a href="gr/zeus/util/GUIUtils.html" title="class in gr.zeus.util">GUIUtils</a></dt>
+<dd>
+<div class="block">Execute a task on EDT and block's it, until the task is finished.</div>
+</dd>
+<dt><a href="gr/zeus/util/IOHelper.html" title="class in gr.zeus.util"><span class="typeNameLink">IOHelper</span></a> - Class in <a href="gr/zeus/util/package-summary.html">gr.zeus.util</a></dt>
+<dd>
+<div class="block">IO helper methods.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/util/IOHelper.html#IOHelper--">IOHelper()</a></span> - Constructor for class gr.zeus.util.<a href="gr/zeus/util/IOHelper.html" title="class in gr.zeus.util">IOHelper</a></dt>
+<dd> </dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/table/TableSorter.html#isCellEditable-int-int-">isCellEditable(int, int)</a></span> - Method in class gr.zeus.ui.table.<a href="gr/zeus/ui/table/TableSorter.html" title="class in gr.zeus.ui.table">TableSorter</a></dt>
+<dd> </dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/util/DateHelper.html#isDateValid-java.lang.String-java.lang.String-">isDateValid(String, String)</a></span> - Static method in class gr.zeus.util.<a href="gr/zeus/util/DateHelper.html" title="class in gr.zeus.util">DateHelper</a></dt>
+<dd>
+<div class="block">Checks a string to see if it contains a valid date in
+ <code>SimpleDateFormat</code>.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/util/IOHelper.html#isDirectory-java.lang.String-">isDirectory(String)</a></span> - Static method in class gr.zeus.util.<a href="gr/zeus/util/IOHelper.html" title="class in gr.zeus.util">IOHelper</a></dt>
+<dd>
+<div class="block">Determines if a directory exists.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/typesafe/SelectAllTextOnFocus.html#isEnabled--">isEnabled()</a></span> - Method in class gr.zeus.ui.typesafe.<a href="gr/zeus/ui/typesafe/SelectAllTextOnFocus.html" title="class in gr.zeus.ui.typesafe">SelectAllTextOnFocus</a></dt>
+<dd>
+<div class="block">Gets status flag.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/util/IOHelper.html#isFile-java.lang.String-">isFile(String)</a></span> - Static method in class gr.zeus.util.<a href="gr/zeus/util/IOHelper.html" title="class in gr.zeus.util">IOHelper</a></dt>
+<dd>
+<div class="block">Determines if a file exists.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/util/DateHelper.html#isLeapYear-int-">isLeapYear(int)</a></span> - Static method in class gr.zeus.util.<a href="gr/zeus/util/DateHelper.html" title="class in gr.zeus.util">DateHelper</a></dt>
+<dd>
+<div class="block">Leap years occur in years exactly divisible by four,
+ <i>except</i> those years ending in 00 are leap years
+ only if they are divisible by 400.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/table/TableSorter.html#isSorting--">isSorting()</a></span> - Method in class gr.zeus.ui.table.<a href="gr/zeus/ui/table/TableSorter.html" title="class in gr.zeus.ui.table">TableSorter</a></dt>
+<dd> </dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/util/IOHelper.html#isTheSameFile-java.lang.String-java.lang.String-">isTheSameFile(String, String)</a></span> - Static method in class gr.zeus.util.<a href="gr/zeus/util/IOHelper.html" title="class in gr.zeus.util">IOHelper</a></dt>
+<dd>
+<div class="block">Determines if two filename paths refer to the same file.</div>
+</dd>
+</dl>
+<a name="I:J">
+<!--   -->
+</a>
+<h2 class="title">J</h2>
+<dl>
+<dt><a href="gr/zeus/ui/JConsole.html" title="class in gr.zeus.ui"><span class="typeNameLink">JConsole</span></a> - Class in <a href="gr/zeus/ui/package-summary.html">gr.zeus.ui</a></dt>
+<dd>
+<div class="block">The JFrame edition of <b>JConsolePane</b>.<br>
+ <a href="gr/zeus/ui/JConsolePane.html" title="class in gr.zeus.ui"><code>JConsolePane</code></a></div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/JConsole.html#JConsole--">JConsole()</a></span> - Constructor for class gr.zeus.ui.<a href="gr/zeus/ui/JConsole.html" title="class in gr.zeus.ui">JConsole</a></dt>
+<dd>
+<div class="block">Constructor.</div>
+</dd>
+<dt><a href="gr/zeus/ui/JConsolePane.html" title="class in gr.zeus.ui"><span class="typeNameLink">JConsolePane</span></a> - Class in <a href="gr/zeus/ui/package-summary.html">gr.zeus.ui</a></dt>
+<dd>
+<div class="block">A java console to replace the command line window.</div>
+</dd>
+<dt><a href="gr/zeus/ui/JIConsole.html" title="class in gr.zeus.ui"><span class="typeNameLink">JIConsole</span></a> - Class in <a href="gr/zeus/ui/package-summary.html">gr.zeus.ui</a></dt>
+<dd>
+<div class="block">The JInternalFrame edition of <b>JConsolePane</b>.<br>
+ <a href="gr/zeus/ui/JConsolePane.html" title="class in gr.zeus.ui"><code>JConsolePane</code></a></div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/JIConsole.html#JIConsole--">JIConsole()</a></span> - Constructor for class gr.zeus.ui.<a href="gr/zeus/ui/JIConsole.html" title="class in gr.zeus.ui">JIConsole</a></dt>
+<dd>
+<div class="block">Constructor.</div>
+</dd>
+<dt><a href="gr/zeus/ui/mdi/JInternalFrameComparator.html" title="class in gr.zeus.ui.mdi"><span class="typeNameLink">JInternalFrameComparator</span></a> - Class in <a href="gr/zeus/ui/mdi/package-summary.html">gr.zeus.ui.mdi</a></dt>
+<dd>
+<div class="block">A simple comparator for <code>JInternalFrames</code>, based on their title.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/mdi/JInternalFrameComparator.html#JInternalFrameComparator--">JInternalFrameComparator()</a></span> - Constructor for class gr.zeus.ui.mdi.<a href="gr/zeus/ui/mdi/JInternalFrameComparator.html" title="class in gr.zeus.ui.mdi">JInternalFrameComparator</a></dt>
+<dd> </dd>
+<dt><a href="gr/zeus/ui/JMessage.html" title="class in gr.zeus.ui"><span class="typeNameLink">JMessage</span></a> - Class in <a href="gr/zeus/ui/package-summary.html">gr.zeus.ui</a></dt>
+<dd>
+<div class="block">This component is similar to <code>javax.swing.JOptionPane</code> component.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/JMessage.html#JMessage-java.awt.Frame-java.lang.String-java.lang.String-int-int-gr.zeus.ui.JMessage.JMessageButtonEnum-javax.swing.Icon-java.lang.Throwable-java.lang.String-java.lang.String-java.lang.String-java.lang.String-">JMessage(Frame, String, String, int, int, JMessage.JMessageButtonEnum, Icon, Throwable, String, String, String, String)</a></span> - Constructor for class gr.zeus.ui.<a href="gr/zeus/ui/JMessage.html" title="class [...]
+<dd>
+<div class="block">Constructor.</div>
+</dd>
+<dt><a href="gr/zeus/ui/JMessage.JMessageButtonEnum.html" title="enum in gr.zeus.ui"><span class="typeNameLink">JMessage.JMessageButtonEnum</span></a> - Enum in <a href="gr/zeus/ui/package-summary.html">gr.zeus.ui</a></dt>
+<dd>
+<div class="block">Enum with all the supported buttons of the dialog.</div>
+</dd>
+<dt><a href="gr/zeus/ui/JSplash.html" title="class in gr.zeus.ui"><span class="typeNameLink">JSplash</span></a> - Class in <a href="gr/zeus/ui/package-summary.html">gr.zeus.ui</a></dt>
+<dd>
+<div class="block">A simple, yet nice splash screen implementation for java applications.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/JSplash.html#JSplash-java.net.URL-boolean-boolean-boolean-java.lang.String-java.awt.Font-java.awt.Color-">JSplash(URL, boolean, boolean, boolean, String, Font, Color)</a></span> - Constructor for class gr.zeus.ui.<a href="gr/zeus/ui/JSplash.html" title="class in gr.zeus.ui">JSplash</a></dt>
+<dd>
+<div class="block">Constructor for the splash window.</div>
+</dd>
+<dt><a href="gr/zeus/ui/JSplashLabel.html" title="class in gr.zeus.ui"><span class="typeNameLink">JSplashLabel</span></a> - Class in <a href="gr/zeus/ui/package-summary.html">gr.zeus.ui</a></dt>
+<dd>
+<div class="block">Extends JLabel to provide support for custom text drawing inside image used
+ for JSplash component.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/JSplashLabel.html#JSplashLabel-java.net.URL-java.lang.String-java.awt.Font-java.awt.Color-">JSplashLabel(URL, String, Font, Color)</a></span> - Constructor for class gr.zeus.ui.<a href="gr/zeus/ui/JSplashLabel.html" title="class in gr.zeus.ui">JSplashLabel</a></dt>
+<dd>
+<div class="block">Constructor.</div>
+</dd>
+</dl>
+<a name="I:L">
+<!--   -->
+</a>
+<h2 class="title">L</h2>
+<dl>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/table/TableSorter.html#LEXICAL_COMPARATOR">LEXICAL_COMPARATOR</a></span> - Static variable in class gr.zeus.ui.table.<a href="gr/zeus/ui/table/TableSorter.html" title="class in gr.zeus.ui.table">TableSorter</a></dt>
+<dd> </dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/util/GUIUtils.html#lockJTableColumnWidth-javax.swing.table.TableColumn-int-">lockJTableColumnWidth(TableColumn, int)</a></span> - Static method in class gr.zeus.util.<a href="gr/zeus/util/GUIUtils.html" title="class in gr.zeus.util">GUIUtils</a></dt>
+<dd>
+<div class="block">Locks a Jtable's column width with 'pixels' size.</div>
+</dd>
+</dl>
+<a name="I:M">
+<!--   -->
+</a>
+<h2 class="title">M</h2>
+<dl>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/mdi/WindowManager.html#maximize--">maximize()</a></span> - Method in class gr.zeus.ui.mdi.<a href="gr/zeus/ui/mdi/WindowManager.html" title="class in gr.zeus.ui.mdi">WindowManager</a></dt>
+<dd>
+<div class="block">Maximizes the selected frame if it is not already maximized.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/mdi/WindowManager.html#maximizeAll--">maximizeAll()</a></span> - Method in class gr.zeus.ui.mdi.<a href="gr/zeus/ui/mdi/WindowManager.html" title="class in gr.zeus.ui.mdi">WindowManager</a></dt>
+<dd>
+<div class="block">Maximizes all frames that are not already maximized.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/util/GUIUtils.html#maximizeJFrame-javax.swing.JFrame-">maximizeJFrame(JFrame)</a></span> - Static method in class gr.zeus.util.<a href="gr/zeus/util/GUIUtils.html" title="class in gr.zeus.util">GUIUtils</a></dt>
+<dd>
+<div class="block">Maximizes a JFrame, just like the 'maximize window' button does.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/mdi/WindowManager.html#minimize--">minimize()</a></span> - Method in class gr.zeus.ui.mdi.<a href="gr/zeus/ui/mdi/WindowManager.html" title="class in gr.zeus.ui.mdi">WindowManager</a></dt>
+<dd>
+<div class="block">Minimizes the selected frame if it is iconifiable.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/mdi/WindowManager.html#minimizeAll--">minimizeAll()</a></span> - Method in class gr.zeus.ui.mdi.<a href="gr/zeus/ui/mdi/WindowManager.html" title="class in gr.zeus.ui.mdi">WindowManager</a></dt>
+<dd>
+<div class="block">Minimizes all frames that are iconifiable.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/table/TableSorter.html#modelIndex-int-">modelIndex(int)</a></span> - Method in class gr.zeus.ui.table.<a href="gr/zeus/ui/table/TableSorter.html" title="class in gr.zeus.ui.table">TableSorter</a></dt>
+<dd> </dd>
+</dl>
+<a name="I:N">
+<!--   -->
+</a>
+<h2 class="title">N</h2>
+<dl>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/table/TableSorter.html#NOT_SORTED">NOT_SORTED</a></span> - Static variable in class gr.zeus.ui.table.<a href="gr/zeus/ui/table/TableSorter.html" title="class in gr.zeus.ui.table">TableSorter</a></dt>
+<dd> </dd>
+</dl>
+<a name="I:O">
+<!--   -->
+</a>
+<h2 class="title">O</h2>
+<dl>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/SingleAppInstance.html#onExit--">onExit()</a></span> - Method in class gr.zeus.ui.<a href="gr/zeus/ui/SingleAppInstance.html" title="class in gr.zeus.ui">SingleAppInstance</a></dt>
+<dd>
+<div class="block">Release the file lock and delete the file.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/SingleAppInstance.html#onInit--">onInit()</a></span> - Method in class gr.zeus.ui.<a href="gr/zeus/ui/SingleAppInstance.html" title="class in gr.zeus.ui">SingleAppInstance</a></dt>
+<dd>
+<div class="block">Creates a file and obtains a lock.</div>
+</dd>
+<dt><a href="gr/zeus/ui/OutLookToolBar.html" title="class in gr.zeus.ui"><span class="typeNameLink">OutLookToolBar</span></a> - Class in <a href="gr/zeus/ui/package-summary.html">gr.zeus.ui</a></dt>
+<dd>
+<div class="block">Takes a simple <code>JToolBar</code> and transforms it into a
+ microsoft outlook like toolbar.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/OutLookToolBar.html#OutLookToolBar-javax.swing.JToolBar-">OutLookToolBar(JToolBar)</a></span> - Constructor for class gr.zeus.ui.<a href="gr/zeus/ui/OutLookToolBar.html" title="class in gr.zeus.ui">OutLookToolBar</a></dt>
+<dd>
+<div class="block">Constructor.</div>
+</dd>
+</dl>
+<a name="I:P">
+<!--   -->
+</a>
+<h2 class="title">P</h2>
+<dl>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/JSplashLabel.html#paint-java.awt.Graphics-">paint(Graphics)</a></span> - Method in class gr.zeus.ui.<a href="gr/zeus/ui/JSplashLabel.html" title="class in gr.zeus.ui">JSplashLabel</a></dt>
+<dd>
+<div class="block">Overrides paint in order to draw the version number on the splash screen.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/util/DateHelper.html#parseDate-java.lang.String-java.lang.String-">parseDate(String, String)</a></span> - Static method in class gr.zeus.util.<a href="gr/zeus/util/DateHelper.html" title="class in gr.zeus.util">DateHelper</a></dt>
+<dd>
+<div class="block">Parses a string into a date.</div>
+</dd>
+<dt><a href="gr/zeus/ui/table/ProgressBarCellRenderer.html" title="class in gr.zeus.ui.table"><span class="typeNameLink">ProgressBarCellRenderer</span></a> - Class in <a href="gr/zeus/ui/table/package-summary.html">gr.zeus.ui.table</a></dt>
+<dd>
+<div class="block">Progress Bar Cell Renderer for JTable.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/table/ProgressBarCellRenderer.html#ProgressBarCellRenderer--">ProgressBarCellRenderer()</a></span> - Constructor for class gr.zeus.ui.table.<a href="gr/zeus/ui/table/ProgressBarCellRenderer.html" title="class in gr.zeus.ui.table">ProgressBarCellRenderer</a></dt>
+<dd>
+<div class="block">Constructor.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/table/ProgressBarCellRenderer.html#ProgressBarCellRenderer-boolean-boolean-int-int-java.util.Hashtable-java.awt.Color-">ProgressBarCellRenderer(boolean, boolean, int, int, Hashtable, Color)</a></span> - Constructor for class gr.zeus.ui.table.<a href="gr/zeus/ui/table/ProgressBarCellRenderer.html" title="class in gr.zeus.ui.table">ProgressBarCellRenderer</a></dt>
+<dd>
+<div class="block">Constructor.</div>
+</dd>
+</dl>
+<a name="I:R">
+<!--   -->
+</a>
+<h2 class="title">R</h2>
+<dl>
+<dt><span class="memberNameLink"><a href="gr/zeus/util/IOHelper.html#readTxtFile-java.lang.String-">readTxtFile(String)</a></span> - Static method in class gr.zeus.util.<a href="gr/zeus/util/IOHelper.html" title="class in gr.zeus.util">IOHelper</a></dt>
+<dd>
+<div class="block">Reads a text file into a string.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/util/IOHelper.html#readTxtFile-java.io.File-">readTxtFile(File)</a></span> - Static method in class gr.zeus.util.<a href="gr/zeus/util/IOHelper.html" title="class in gr.zeus.util">IOHelper</a></dt>
+<dd>
+<div class="block">Reads a text file into a string.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/typesafe/TypeSafeTextDocumentFilter.html#remove-javax.swing.text.DocumentFilter.FilterBypass-int-int-">remove(DocumentFilter.FilterBypass, int, int)</a></span> - Method in class gr.zeus.ui.typesafe.<a href="gr/zeus/ui/typesafe/TypeSafeTextDocumentFilter.html" title="class in gr.zeus.ui.typesafe">TypeSafeTextDocumentFilter</a></dt>
+<dd>
+<div class="block">Invoked prior to removal of the specified region
+ in the specified Document.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/typesafe/TypeSafeTextDocumentFilter.html#replace-javax.swing.text.DocumentFilter.FilterBypass-int-int-java.lang.String-javax.swing.text.AttributeSet-">replace(DocumentFilter.FilterBypass, int, int, String, AttributeSet)</a></span> - Method in class gr.zeus.ui.typesafe.<a href="gr/zeus/ui/typesafe/TypeSafeTextDocumentFilter.html" title="class in gr.zeus.ui.typesafe">TypeSafeTextDocumentFilter</a></dt>
+<dd>
+<div class="block">Invoked prior to replacing a region of text in the specified Document.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/mdi/WindowManager.html#reset--">reset()</a></span> - Method in class gr.zeus.ui.mdi.<a href="gr/zeus/ui/mdi/WindowManager.html" title="class in gr.zeus.ui.mdi">WindowManager</a></dt>
+<dd>
+<div class="block">Resets the frame to it's original preferred size of its components.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/util/SimpleTimerMillis.html#reset--">reset()</a></span> - Method in class gr.zeus.util.<a href="gr/zeus/util/SimpleTimerMillis.html" title="class in gr.zeus.util">SimpleTimerMillis</a></dt>
+<dd>
+<div class="block">Resets the timer.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/util/SimpleTimerNanos.html#reset--">reset()</a></span> - Method in class gr.zeus.util.<a href="gr/zeus/util/SimpleTimerNanos.html" title="class in gr.zeus.util">SimpleTimerNanos</a></dt>
+<dd>
+<div class="block">Resets the timer.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/mdi/WindowManager.html#resetAll--">resetAll()</a></span> - Method in class gr.zeus.ui.mdi.<a href="gr/zeus/ui/mdi/WindowManager.html" title="class in gr.zeus.ui.mdi">WindowManager</a></dt>
+<dd>
+<div class="block">Resets all frames to their original preferred size of their components.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/mdi/WindowManager.html#restore--">restore()</a></span> - Method in class gr.zeus.ui.mdi.<a href="gr/zeus/ui/mdi/WindowManager.html" title="class in gr.zeus.ui.mdi">WindowManager</a></dt>
+<dd>
+<div class="block">Restores the selected frame from it's maximized state.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/mdi/WindowManager.html#restoreAll--">restoreAll()</a></span> - Method in class gr.zeus.ui.mdi.<a href="gr/zeus/ui/mdi/WindowManager.html" title="class in gr.zeus.ui.mdi">WindowManager</a></dt>
+<dd>
+<div class="block">Restores all frames from their maximized state.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/typesafe/SimpleEditorPaneTraversal.html#restoreTraveralKeys--">restoreTraveralKeys()</a></span> - Method in class gr.zeus.ui.typesafe.<a href="gr/zeus/ui/typesafe/SimpleEditorPaneTraversal.html" title="class in gr.zeus.ui.typesafe">SimpleEditorPaneTraversal</a></dt>
+<dd>
+<div class="block">Restores the original traversal keys.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/typesafe/SimpleTextAreaTraversal.html#restoreTraveralKeys--">restoreTraveralKeys()</a></span> - Method in class gr.zeus.ui.typesafe.<a href="gr/zeus/ui/typesafe/SimpleTextAreaTraversal.html" title="class in gr.zeus.ui.typesafe">SimpleTextAreaTraversal</a></dt>
+<dd>
+<div class="block">Restores the original traversal keys.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/typesafe/SimpleTextPaneTraversal.html#restoreTraveralKeys--">restoreTraveralKeys()</a></span> - Method in class gr.zeus.ui.typesafe.<a href="gr/zeus/ui/typesafe/SimpleTextPaneTraversal.html" title="class in gr.zeus.ui.typesafe">SimpleTextPaneTraversal</a></dt>
+<dd>
+<div class="block">Restores the original traversal keys.</div>
+</dd>
+</dl>
+<a name="I:S">
+<!--   -->
+</a>
+<h2 class="title">S</h2>
+<dl>
+<dt><span class="memberNameLink"><a href="gr/zeus/util/IOHelper.html#saveTxtFile-java.lang.String-java.lang.String-boolean-">saveTxtFile(String, String, boolean)</a></span> - Static method in class gr.zeus.util.<a href="gr/zeus/util/IOHelper.html" title="class in gr.zeus.util">IOHelper</a></dt>
+<dd>
+<div class="block">Saves a string to a text file.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/util/IOHelper.html#saveTxtFile-java.io.File-java.lang.String-boolean-">saveTxtFile(File, String, boolean)</a></span> - Static method in class gr.zeus.util.<a href="gr/zeus/util/IOHelper.html" title="class in gr.zeus.util">IOHelper</a></dt>
+<dd>
+<div class="block">Saves a string to a text file.</div>
+</dd>
+<dt><a href="gr/zeus/ui/typesafe/SelectAllTextOnFocus.html" title="class in gr.zeus.ui.typesafe"><span class="typeNameLink">SelectAllTextOnFocus</span></a> - Class in <a href="gr/zeus/ui/typesafe/package-summary.html">gr.zeus.ui.typesafe</a></dt>
+<dd>
+<div class="block">This class is a simple FocusListener that when enabled performs a selectAll()
+ to any JTextComponent.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/typesafe/SelectAllTextOnFocus.html#SelectAllTextOnFocus--">SelectAllTextOnFocus()</a></span> - Constructor for class gr.zeus.ui.typesafe.<a href="gr/zeus/ui/typesafe/SelectAllTextOnFocus.html" title="class in gr.zeus.ui.typesafe">SelectAllTextOnFocus</a></dt>
+<dd>
+<div class="block">Constructor.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/mdi/WindowManager.html#selectNext--">selectNext()</a></span> - Method in class gr.zeus.ui.mdi.<a href="gr/zeus/ui/mdi/WindowManager.html" title="class in gr.zeus.ui.mdi">WindowManager</a></dt>
+<dd>
+<div class="block">Selects the next internal frame.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/mdi/WindowManager.html#selectPrevious--">selectPrevious()</a></span> - Method in class gr.zeus.ui.mdi.<a href="gr/zeus/ui/mdi/WindowManager.html" title="class in gr.zeus.ui.mdi">WindowManager</a></dt>
+<dd>
+<div class="block">Selects the previous internal frame.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/JConsolePane.html#setAppendFirstTime-boolean-">setAppendFirstTime(boolean)</a></span> - Method in class gr.zeus.ui.<a href="gr/zeus/ui/JConsolePane.html" title="class in gr.zeus.ui">JConsolePane</a></dt>
+<dd>
+<div class="block">Sets append policy.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/mdi/WindowManager.html#setAutoPositionPolicy-boolean-">setAutoPositionPolicy(boolean)</a></span> - Method in class gr.zeus.ui.mdi.<a href="gr/zeus/ui/mdi/WindowManager.html" title="class in gr.zeus.ui.mdi">WindowManager</a></dt>
+<dd>
+<div class="block">Sets the auto position frames policy.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/JConsolePane.html#setAutoSave-boolean-">setAutoSave(boolean)</a></span> - Method in class gr.zeus.ui.<a href="gr/zeus/ui/JConsolePane.html" title="class in gr.zeus.ui">JConsolePane</a></dt>
+<dd>
+<div class="block">Sets auto save status.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/JConsolePane.html#setBackgroundColor-java.awt.Color-">setBackgroundColor(Color)</a></span> - Method in class gr.zeus.ui.<a href="gr/zeus/ui/JConsolePane.html" title="class in gr.zeus.ui">JConsolePane</a></dt>
+<dd>
+<div class="block">Sets the background color of the textarea.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/JConsolePane.html#setClearButtonText-java.lang.String-">setClearButtonText(String)</a></span> - Method in class gr.zeus.ui.<a href="gr/zeus/ui/JConsolePane.html" title="class in gr.zeus.ui">JConsolePane</a></dt>
+<dd>
+<div class="block">Sets the text of the clear button.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/JConsolePane.html#setCloseButtonText-java.lang.String-">setCloseButtonText(String)</a></span> - Method in class gr.zeus.ui.<a href="gr/zeus/ui/JConsolePane.html" title="class in gr.zeus.ui">JConsolePane</a></dt>
+<dd>
+<div class="block">Sets the text of the close button.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/mdi/WindowManager.html#setClosePolicy-boolean-">setClosePolicy(boolean)</a></span> - Method in class gr.zeus.ui.mdi.<a href="gr/zeus/ui/mdi/WindowManager.html" title="class in gr.zeus.ui.mdi">WindowManager</a></dt>
+<dd>
+<div class="block">Sets the close policy.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/table/TableSorter.html#setColumnComparator-java.lang.Class-java.util.Comparator-">setColumnComparator(Class, Comparator)</a></span> - Method in class gr.zeus.ui.table.<a href="gr/zeus/ui/table/TableSorter.html" title="class in gr.zeus.ui.table">TableSorter</a></dt>
+<dd> </dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/JConsolePane.html#setConfimMessage-java.lang.String-">setConfimMessage(String)</a></span> - Method in class gr.zeus.ui.<a href="gr/zeus/ui/JConsolePane.html" title="class in gr.zeus.ui">JConsolePane</a></dt>
+<dd>
+<div class="block">Sets the text for the popup window that confirms file overwrite.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/JConsolePane.html#setConfimTitle-java.lang.String-">setConfimTitle(String)</a></span> - Method in class gr.zeus.ui.<a href="gr/zeus/ui/JConsolePane.html" title="class in gr.zeus.ui">JConsolePane</a></dt>
+<dd>
+<div class="block">Sets the title for the popup window that confirms file overwrite.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/table/TableSorter.html#setCustomIcons-javax.swing.Icon:A-javax.swing.Icon:A-">setCustomIcons(Icon[], Icon[])</a></span> - Method in class gr.zeus.ui.table.<a href="gr/zeus/ui/table/TableSorter.html" title="class in gr.zeus.ui.table">TableSorter</a></dt>
+<dd>
+<div class="block">Arrays contains all custom icons with priority order from high to low.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/typesafe/TypeSafeVerifier.html#setDatePattern-java.lang.String-">setDatePattern(String)</a></span> - Method in class gr.zeus.ui.typesafe.<a href="gr/zeus/ui/typesafe/TypeSafeVerifier.html" title="class in gr.zeus.ui.typesafe">TypeSafeVerifier</a></dt>
+<dd>
+<div class="block">Sets the date pattern.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/table/AutoResizeTableColumns.html#setDebugMode-boolean-">setDebugMode(boolean)</a></span> - Method in class gr.zeus.ui.table.<a href="gr/zeus/ui/table/AutoResizeTableColumns.html" title="class in gr.zeus.ui.table">AutoResizeTableColumns</a></dt>
+<dd>
+<div class="block">Sets debug mode.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/typesafe/TypeSafeVerifier.html#setDefaultByteValue-byte-">setDefaultByteValue(byte)</a></span> - Method in class gr.zeus.ui.typesafe.<a href="gr/zeus/ui/typesafe/TypeSafeVerifier.html" title="class in gr.zeus.ui.typesafe">TypeSafeVerifier</a></dt>
+<dd>
+<div class="block">Sets the default byte value.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/typesafe/TypeSafeVerifier.html#setDefaultDateValue-java.util.Date-">setDefaultDateValue(Date)</a></span> - Method in class gr.zeus.ui.typesafe.<a href="gr/zeus/ui/typesafe/TypeSafeVerifier.html" title="class in gr.zeus.ui.typesafe">TypeSafeVerifier</a></dt>
+<dd>
+<div class="block">Sets the default date value.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/typesafe/TypeSafeVerifier.html#setDefaultDoubleValue-double-">setDefaultDoubleValue(double)</a></span> - Method in class gr.zeus.ui.typesafe.<a href="gr/zeus/ui/typesafe/TypeSafeVerifier.html" title="class in gr.zeus.ui.typesafe">TypeSafeVerifier</a></dt>
+<dd>
+<div class="block">Sets the default double value.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/typesafe/TypeSafeVerifier.html#setDefaultFloatValue-float-">setDefaultFloatValue(float)</a></span> - Method in class gr.zeus.ui.typesafe.<a href="gr/zeus/ui/typesafe/TypeSafeVerifier.html" title="class in gr.zeus.ui.typesafe">TypeSafeVerifier</a></dt>
+<dd>
+<div class="block">Sets the default float value.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/typesafe/TypeSafeVerifier.html#setDefaultIntegerValue-int-">setDefaultIntegerValue(int)</a></span> - Method in class gr.zeus.ui.typesafe.<a href="gr/zeus/ui/typesafe/TypeSafeVerifier.html" title="class in gr.zeus.ui.typesafe">TypeSafeVerifier</a></dt>
+<dd>
+<div class="block">Sets the default integer value.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/typesafe/TypeSafeVerifier.html#setDefaultLongValue-long-">setDefaultLongValue(long)</a></span> - Method in class gr.zeus.ui.typesafe.<a href="gr/zeus/ui/typesafe/TypeSafeVerifier.html" title="class in gr.zeus.ui.typesafe">TypeSafeVerifier</a></dt>
+<dd>
+<div class="block">Sets the default long value.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/typesafe/TypeSafeVerifier.html#setDefaultShortValue-short-">setDefaultShortValue(short)</a></span> - Method in class gr.zeus.ui.typesafe.<a href="gr/zeus/ui/typesafe/TypeSafeVerifier.html" title="class in gr.zeus.ui.typesafe">TypeSafeVerifier</a></dt>
+<dd>
+<div class="block">Sets the default short value.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/typesafe/TypeSafeVerifier.html#setDefaultsOnError-boolean-">setDefaultsOnError(boolean)</a></span> - Method in class gr.zeus.ui.typesafe.<a href="gr/zeus/ui/typesafe/TypeSafeVerifier.html" title="class in gr.zeus.ui.typesafe">TypeSafeVerifier</a></dt>
+<dd>
+<div class="block">Sets defaultsOnError status.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/mdi/WindowManager.html#setDeiconifiablePolicy-boolean-">setDeiconifiablePolicy(boolean)</a></span> - Method in class gr.zeus.ui.mdi.<a href="gr/zeus/ui/mdi/WindowManager.html" title="class in gr.zeus.ui.mdi">WindowManager</a></dt>
+<dd>
+<div class="block">Sets de-iconifiable policy.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/typesafe/SelectAllTextOnFocus.html#setEnabled-boolean-">setEnabled(boolean)</a></span> - Method in class gr.zeus.ui.typesafe.<a href="gr/zeus/ui/typesafe/SelectAllTextOnFocus.html" title="class in gr.zeus.ui.typesafe">SelectAllTextOnFocus</a></dt>
+<dd>
+<div class="block">Sets status flag.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/JConsolePane.html#setFilechooserApproveButtonText-java.lang.String-">setFilechooserApproveButtonText(String)</a></span> - Method in class gr.zeus.ui.<a href="gr/zeus/ui/JConsolePane.html" title="class in gr.zeus.ui">JConsolePane</a></dt>
+<dd>
+<div class="block">Sets the filechooser approve button text.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/JConsolePane.html#setFilechooserTitle-java.lang.String-">setFilechooserTitle(String)</a></span> - Method in class gr.zeus.ui.<a href="gr/zeus/ui/JConsolePane.html" title="class in gr.zeus.ui">JConsolePane</a></dt>
+<dd>
+<div class="block">Sets the filechooser title.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/JConsolePane.html#setForegroundColor-java.awt.Color-">setForegroundColor(Color)</a></span> - Method in class gr.zeus.ui.<a href="gr/zeus/ui/JConsolePane.html" title="class in gr.zeus.ui">JConsolePane</a></dt>
+<dd>
+<div class="block">Sets the foreground color of the textarea.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/typesafe/TypeSafeTextDocumentFilter.html#setInvalidChars-java.lang.String-">setInvalidChars(String)</a></span> - Method in class gr.zeus.ui.typesafe.<a href="gr/zeus/ui/typesafe/TypeSafeTextDocumentFilter.html" title="class in gr.zeus.ui.typesafe">TypeSafeTextDocumentFilter</a></dt>
+<dd>
+<div class="block">Sets invalid characters.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/table/ProgressBarCellRenderer.html#setLimits-java.util.Hashtable-">setLimits(Hashtable)</a></span> - Method in class gr.zeus.ui.table.<a href="gr/zeus/ui/table/ProgressBarCellRenderer.html" title="class in gr.zeus.ui.table">ProgressBarCellRenderer</a></dt>
+<dd>
+<div class="block">Sets the limits.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/typesafe/TypeSafeTextDocumentFilter.html#setLowerCase-boolean-">setLowerCase(boolean)</a></span> - Method in class gr.zeus.ui.typesafe.<a href="gr/zeus/ui/typesafe/TypeSafeTextDocumentFilter.html" title="class in gr.zeus.ui.typesafe">TypeSafeTextDocumentFilter</a></dt>
+<dd>
+<div class="block">Sets lowercase flag.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/typesafe/TypeSafeVerifier.html#setMaxByteValue-byte-">setMaxByteValue(byte)</a></span> - Method in class gr.zeus.ui.typesafe.<a href="gr/zeus/ui/typesafe/TypeSafeVerifier.html" title="class in gr.zeus.ui.typesafe">TypeSafeVerifier</a></dt>
+<dd>
+<div class="block">Sets the max byte value.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/JConsolePane.html#setMaxChars-int-">setMaxChars(int)</a></span> - Method in class gr.zeus.ui.<a href="gr/zeus/ui/JConsolePane.html" title="class in gr.zeus.ui">JConsolePane</a></dt>
+<dd>
+<div class="block">If -1 no limit, else the messages will be flushed to 'traceFilename' and
+ cleared when this limit is reached.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/typesafe/TypeSafeTextDocumentFilter.html#setMaxChars-int-">setMaxChars(int)</a></span> - Method in class gr.zeus.ui.typesafe.<a href="gr/zeus/ui/typesafe/TypeSafeTextDocumentFilter.html" title="class in gr.zeus.ui.typesafe">TypeSafeTextDocumentFilter</a></dt>
+<dd>
+<div class="block">Sets max characters allowed.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/typesafe/TypeSafeVerifier.html#setMaxDoubleValue-double-">setMaxDoubleValue(double)</a></span> - Method in class gr.zeus.ui.typesafe.<a href="gr/zeus/ui/typesafe/TypeSafeVerifier.html" title="class in gr.zeus.ui.typesafe">TypeSafeVerifier</a></dt>
+<dd>
+<div class="block">Sets the max double value.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/typesafe/TypeSafeVerifier.html#setMaxFloatValue-float-">setMaxFloatValue(float)</a></span> - Method in class gr.zeus.ui.typesafe.<a href="gr/zeus/ui/typesafe/TypeSafeVerifier.html" title="class in gr.zeus.ui.typesafe">TypeSafeVerifier</a></dt>
+<dd>
+<div class="block">Sets the max float value.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/typesafe/TypeSafeVerifier.html#setMaxIntegerValue-int-">setMaxIntegerValue(int)</a></span> - Method in class gr.zeus.ui.typesafe.<a href="gr/zeus/ui/typesafe/TypeSafeVerifier.html" title="class in gr.zeus.ui.typesafe">TypeSafeVerifier</a></dt>
+<dd>
+<div class="block">Sets the max integer value.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/typesafe/TypeSafeVerifier.html#setMaxLongValue-long-">setMaxLongValue(long)</a></span> - Method in class gr.zeus.ui.typesafe.<a href="gr/zeus/ui/typesafe/TypeSafeVerifier.html" title="class in gr.zeus.ui.typesafe">TypeSafeVerifier</a></dt>
+<dd>
+<div class="block">Sets the max long value.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/typesafe/TypeSafeVerifier.html#setMaxShortValue-short-">setMaxShortValue(short)</a></span> - Method in class gr.zeus.ui.typesafe.<a href="gr/zeus/ui/typesafe/TypeSafeVerifier.html" title="class in gr.zeus.ui.typesafe">TypeSafeVerifier</a></dt>
+<dd>
+<div class="block">Sets the max short value.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/JConsolePane.html#setMessagesFilename-java.lang.String-">setMessagesFilename(String)</a></span> - Method in class gr.zeus.ui.<a href="gr/zeus/ui/JConsolePane.html" title="class in gr.zeus.ui">JConsolePane</a></dt>
+<dd>
+<div class="block">Sets the default filename for the filechooser.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/typesafe/TypeSafeVerifier.html#setMinByteValue-byte-">setMinByteValue(byte)</a></span> - Method in class gr.zeus.ui.typesafe.<a href="gr/zeus/ui/typesafe/TypeSafeVerifier.html" title="class in gr.zeus.ui.typesafe">TypeSafeVerifier</a></dt>
+<dd>
+<div class="block">Sets the min byte value.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/typesafe/TypeSafeVerifier.html#setMinChars-int-">setMinChars(int)</a></span> - Method in class gr.zeus.ui.typesafe.<a href="gr/zeus/ui/typesafe/TypeSafeVerifier.html" title="class in gr.zeus.ui.typesafe">TypeSafeVerifier</a></dt>
+<dd>
+<div class="block">Sets min characters allowed.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/typesafe/TypeSafeVerifier.html#setMinDoubleValue-double-">setMinDoubleValue(double)</a></span> - Method in class gr.zeus.ui.typesafe.<a href="gr/zeus/ui/typesafe/TypeSafeVerifier.html" title="class in gr.zeus.ui.typesafe">TypeSafeVerifier</a></dt>
+<dd>
+<div class="block">Sets the min double value.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/typesafe/TypeSafeVerifier.html#setMinFloatValue-float-">setMinFloatValue(float)</a></span> - Method in class gr.zeus.ui.typesafe.<a href="gr/zeus/ui/typesafe/TypeSafeVerifier.html" title="class in gr.zeus.ui.typesafe">TypeSafeVerifier</a></dt>
+<dd>
+<div class="block">Sets the min float value.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/typesafe/TypeSafeVerifier.html#setMinIntegerValue-int-">setMinIntegerValue(int)</a></span> - Method in class gr.zeus.ui.typesafe.<a href="gr/zeus/ui/typesafe/TypeSafeVerifier.html" title="class in gr.zeus.ui.typesafe">TypeSafeVerifier</a></dt>
+<dd>
+<div class="block">Sets the min integer value.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/typesafe/TypeSafeVerifier.html#setMinLongValue-long-">setMinLongValue(long)</a></span> - Method in class gr.zeus.ui.typesafe.<a href="gr/zeus/ui/typesafe/TypeSafeVerifier.html" title="class in gr.zeus.ui.typesafe">TypeSafeVerifier</a></dt>
+<dd>
+<div class="block">Sets the min long value.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/typesafe/TypeSafeVerifier.html#setMinShortValue-short-">setMinShortValue(short)</a></span> - Method in class gr.zeus.ui.typesafe.<a href="gr/zeus/ui/typesafe/TypeSafeVerifier.html" title="class in gr.zeus.ui.typesafe">TypeSafeVerifier</a></dt>
+<dd>
+<div class="block">Sets the min short value.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/mdi/WindowManager.html#setOutlineDragMode-boolean-">setOutlineDragMode(boolean)</a></span> - Method in class gr.zeus.ui.mdi.<a href="gr/zeus/ui/mdi/WindowManager.html" title="class in gr.zeus.ui.mdi">WindowManager</a></dt>
+<dd>
+<div class="block">Selects frames' drawing strategy.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/JSplash.html#setProgress-int-">setProgress(int)</a></span> - Method in class gr.zeus.ui.<a href="gr/zeus/ui/JSplash.html" title="class in gr.zeus.ui">JSplash</a></dt>
+<dd>
+<div class="block">Sets the progress indicator (values: 0 - 100).</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/JSplash.html#setProgress-int-java.lang.String-">setProgress(int, String)</a></span> - Method in class gr.zeus.ui.<a href="gr/zeus/ui/JSplash.html" title="class in gr.zeus.ui">JSplash</a></dt>
+<dd>
+<div class="block">Sets the progress indicator (values: 0 - 100) and a label to print
+ inside the progress bar.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/typesafe/TypeSafeTextDocumentFilter.html#setReplacableChars-java.lang.String-">setReplacableChars(String)</a></span> - Method in class gr.zeus.ui.typesafe.<a href="gr/zeus/ui/typesafe/TypeSafeTextDocumentFilter.html" title="class in gr.zeus.ui.typesafe">TypeSafeTextDocumentFilter</a></dt>
+<dd>
+<div class="block">Sets replacable characters.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/typesafe/TypeSafeTextDocumentFilter.html#setReplacedChars-java.lang.String-">setReplacedChars(String)</a></span> - Method in class gr.zeus.ui.typesafe.<a href="gr/zeus/ui/typesafe/TypeSafeTextDocumentFilter.html" title="class in gr.zeus.ui.typesafe">TypeSafeTextDocumentFilter</a></dt>
+<dd>
+<div class="block">Sets replaced characters.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/SingleAppInstance.html#setReportPopup-boolean-">setReportPopup(boolean)</a></span> - Method in class gr.zeus.ui.<a href="gr/zeus/ui/SingleAppInstance.html" title="class in gr.zeus.ui">SingleAppInstance</a></dt>
+<dd>
+<div class="block">Sets whether to report via a popup or via <code>stderr</code>.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/JConsolePane.html#setSaveButtonText-java.lang.String-">setSaveButtonText(String)</a></span> - Method in class gr.zeus.ui.<a href="gr/zeus/ui/JConsolePane.html" title="class in gr.zeus.ui">JConsolePane</a></dt>
+<dd>
+<div class="block">Sets the text of the save button.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/JConsolePane.html#setSelectedTextColor-java.awt.Color-">setSelectedTextColor(Color)</a></span> - Method in class gr.zeus.ui.<a href="gr/zeus/ui/JConsolePane.html" title="class in gr.zeus.ui">JConsolePane</a></dt>
+<dd>
+<div class="block">Sets the selected text color of the textarea.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/JConsolePane.html#setSelectionColor-java.awt.Color-">setSelectionColor(Color)</a></span> - Method in class gr.zeus.ui.<a href="gr/zeus/ui/JConsolePane.html" title="class in gr.zeus.ui">JConsolePane</a></dt>
+<dd>
+<div class="block">Sets the selection color of the textarea.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/table/TableSorter.html#setSortingStatus-int-int-">setSortingStatus(int, int)</a></span> - Method in class gr.zeus.ui.table.<a href="gr/zeus/ui/table/TableSorter.html" title="class in gr.zeus.ui.table">TableSorter</a></dt>
+<dd> </dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/table/TableSorter.html#setTableHeader-javax.swing.table.JTableHeader-">setTableHeader(JTableHeader)</a></span> - Method in class gr.zeus.ui.table.<a href="gr/zeus/ui/table/TableSorter.html" title="class in gr.zeus.ui.table">TableSorter</a></dt>
+<dd> </dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/table/TableSorter.html#setTableModel-javax.swing.table.TableModel-">setTableModel(TableModel)</a></span> - Method in class gr.zeus.ui.table.<a href="gr/zeus/ui/table/TableSorter.html" title="class in gr.zeus.ui.table">TableSorter</a></dt>
+<dd> </dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/JConsolePane.html#setTextFont-java.awt.Font-">setTextFont(Font)</a></span> - Method in class gr.zeus.ui.<a href="gr/zeus/ui/JConsolePane.html" title="class in gr.zeus.ui">JConsolePane</a></dt>
+<dd>
+<div class="block">Sets the font of the textarea.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/JConsolePane.html#setTraceFilename-java.lang.String-">setTraceFilename(String)</a></span> - Method in class gr.zeus.ui.<a href="gr/zeus/ui/JConsolePane.html" title="class in gr.zeus.ui">JConsolePane</a></dt>
+<dd>
+<div class="block">Sets the file used by <code>dumpConsole()</code> and
+ all auto save methods.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/typesafe/TypeSafeVerifier.html#setTrimSpaces-boolean-">setTrimSpaces(boolean)</a></span> - Method in class gr.zeus.ui.typesafe.<a href="gr/zeus/ui/typesafe/TypeSafeVerifier.html" title="class in gr.zeus.ui.typesafe">TypeSafeVerifier</a></dt>
+<dd>
+<div class="block">Sets trimspaces status.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/typesafe/TypeSafeTextDocumentFilter.html#setUpperCase-boolean-">setUpperCase(boolean)</a></span> - Method in class gr.zeus.ui.typesafe.<a href="gr/zeus/ui/typesafe/TypeSafeTextDocumentFilter.html" title="class in gr.zeus.ui.typesafe">TypeSafeTextDocumentFilter</a></dt>
+<dd>
+<div class="block">Sets uppercase flag.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/typesafe/TypeSafeTextDocumentFilter.html#setValidChars-java.lang.String-">setValidChars(String)</a></span> - Method in class gr.zeus.ui.typesafe.<a href="gr/zeus/ui/typesafe/TypeSafeTextDocumentFilter.html" title="class in gr.zeus.ui.typesafe">TypeSafeTextDocumentFilter</a></dt>
+<dd>
+<div class="block">Sets valid characters.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/table/TableSorter.html#setValueAt-java.lang.Object-int-int-">setValueAt(Object, int, int)</a></span> - Method in class gr.zeus.ui.table.<a href="gr/zeus/ui/table/TableSorter.html" title="class in gr.zeus.ui.table">TableSorter</a></dt>
+<dd> </dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/JConsolePane.html#showConsole--">showConsole()</a></span> - Method in class gr.zeus.ui.<a href="gr/zeus/ui/JConsolePane.html" title="class in gr.zeus.ui">JConsolePane</a></dt>
+<dd>
+<div class="block">Shows the console.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/JConsolePane.html#showControlButtons--">showControlButtons()</a></span> - Method in class gr.zeus.ui.<a href="gr/zeus/ui/JConsolePane.html" title="class in gr.zeus.ui">JConsolePane</a></dt>
+<dd>
+<div class="block">Shows the control buttons.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/JMessage.html#showErrorMessage-java.awt.Frame-java.lang.String-">showErrorMessage(Frame, String)</a></span> - Static method in class gr.zeus.ui.<a href="gr/zeus/ui/JMessage.html" title="class in gr.zeus.ui">JMessage</a></dt>
+<dd>
+<div class="block">Wrapper method for showMessageDialog().</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/JMessage.html#showErrorMessage-java.awt.Frame-java.lang.String-java.lang.Throwable-">showErrorMessage(Frame, String, Throwable)</a></span> - Static method in class gr.zeus.ui.<a href="gr/zeus/ui/JMessage.html" title="class in gr.zeus.ui">JMessage</a></dt>
+<dd>
+<div class="block">Wrapper method for showMessageDialog().</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/JMessage.html#showErrorQuestionMessageY-java.awt.Frame-java.lang.String-java.lang.Throwable-">showErrorQuestionMessageY(Frame, String, Throwable)</a></span> - Static method in class gr.zeus.ui.<a href="gr/zeus/ui/JMessage.html" title="class in gr.zeus.ui">JMessage</a></dt>
+<dd>
+<div class="block">Shows a question window with YES/NO button options.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/JMessage.html#showInfoMessage-java.awt.Frame-java.lang.String-">showInfoMessage(Frame, String)</a></span> - Static method in class gr.zeus.ui.<a href="gr/zeus/ui/JMessage.html" title="class in gr.zeus.ui">JMessage</a></dt>
+<dd>
+<div class="block">Wrapper method for showMessageDialog().</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/JMessage.html#showInfoMessage-java.awt.Frame-java.lang.String-java.lang.Throwable-">showInfoMessage(Frame, String, Throwable)</a></span> - Static method in class gr.zeus.ui.<a href="gr/zeus/ui/JMessage.html" title="class in gr.zeus.ui">JMessage</a></dt>
+<dd>
+<div class="block">Wrapper method for showMessageDialog().</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/JMessage.html#showMessageDialog-java.awt.Frame-java.lang.String-int-int-">showMessageDialog(Frame, String, int, int)</a></span> - Static method in class gr.zeus.ui.<a href="gr/zeus/ui/JMessage.html" title="class in gr.zeus.ui">JMessage</a></dt>
+<dd>
+<div class="block">Factory method, create-show-return.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/JMessage.html#showMessageDialog-java.awt.Frame-java.lang.String-int-int-gr.zeus.ui.JMessage.JMessageButtonEnum-">showMessageDialog(Frame, String, int, int, JMessage.JMessageButtonEnum)</a></span> - Static method in class gr.zeus.ui.<a href="gr/zeus/ui/JMessage.html" title="class in gr.zeus.ui">JMessage</a></dt>
+<dd>
+<div class="block">Factory method, create-show-return.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/JMessage.html#showMessageDialog-java.awt.Frame-java.lang.String-int-int-java.lang.Throwable-">showMessageDialog(Frame, String, int, int, Throwable)</a></span> - Static method in class gr.zeus.ui.<a href="gr/zeus/ui/JMessage.html" title="class in gr.zeus.ui">JMessage</a></dt>
+<dd>
+<div class="block">Factory method, create-show-return.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/JMessage.html#showMessageDialog-java.awt.Frame-java.lang.String-java.lang.String-int-int-gr.zeus.ui.JMessage.JMessageButtonEnum-javax.swing.Icon-java.lang.Throwable-java.lang.String-java.lang.String-java.lang.String-java.lang.String-">showMessageDialog(Frame, String, String, int, int, JMessage.JMessageButtonEnum, Icon, Throwable, String, String, String, String)</a></span> - Static method in class gr.zeus.ui.<a href="gr/zeus/ui/JMessage [...]
+<dd>
+<div class="block">Factory method, create-show-return.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/JMessage.html#showQuestionMessageN-java.awt.Frame-java.lang.String-">showQuestionMessageN(Frame, String)</a></span> - Static method in class gr.zeus.ui.<a href="gr/zeus/ui/JMessage.html" title="class in gr.zeus.ui">JMessage</a></dt>
+<dd>
+<div class="block">Wrapper method for showMessageDialog().</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/JMessage.html#showQuestionMessageY-java.awt.Frame-java.lang.String-">showQuestionMessageY(Frame, String)</a></span> - Static method in class gr.zeus.ui.<a href="gr/zeus/ui/JMessage.html" title="class in gr.zeus.ui">JMessage</a></dt>
+<dd>
+<div class="block">Wrapper method for showMessageDialog().</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/JMessage.html#showWarningMessage-java.awt.Frame-java.lang.String-">showWarningMessage(Frame, String)</a></span> - Static method in class gr.zeus.ui.<a href="gr/zeus/ui/JMessage.html" title="class in gr.zeus.ui">JMessage</a></dt>
+<dd>
+<div class="block">Wrapper method for showMessageDialog().</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/JMessage.html#showWarningMessage-java.awt.Frame-java.lang.String-java.lang.Throwable-">showWarningMessage(Frame, String, Throwable)</a></span> - Static method in class gr.zeus.ui.<a href="gr/zeus/ui/JMessage.html" title="class in gr.zeus.ui">JMessage</a></dt>
+<dd>
+<div class="block">Wrapper method for showMessageDialog().</div>
+</dd>
+<dt><a href="gr/zeus/ui/typesafe/SimpleEditorPaneTraversal.html" title="class in gr.zeus.ui.typesafe"><span class="typeNameLink">SimpleEditorPaneTraversal</span></a> - Class in <a href="gr/zeus/ui/typesafe/package-summary.html">gr.zeus.ui.typesafe</a></dt>
+<dd>
+<div class="block">This class can be used to replace the default traversal keys for any
+ JEditorPane object.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/typesafe/SimpleEditorPaneTraversal.html#SimpleEditorPaneTraversal-javax.swing.JEditorPane-">SimpleEditorPaneTraversal(JEditorPane)</a></span> - Constructor for class gr.zeus.ui.typesafe.<a href="gr/zeus/ui/typesafe/SimpleEditorPaneTraversal.html" title="class in gr.zeus.ui.typesafe">SimpleEditorPaneTraversal</a></dt>
+<dd>
+<div class="block">Constructor, Stores a backup copy of the original traversal keys
+ of this editor panel.</div>
+</dd>
+<dt><a href="gr/zeus/ui/typesafe/SimpleTextAreaTraversal.html" title="class in gr.zeus.ui.typesafe"><span class="typeNameLink">SimpleTextAreaTraversal</span></a> - Class in <a href="gr/zeus/ui/typesafe/package-summary.html">gr.zeus.ui.typesafe</a></dt>
+<dd>
+<div class="block">This class can be used to replace the default traversal keys for any
+ JTextArea object.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/typesafe/SimpleTextAreaTraversal.html#SimpleTextAreaTraversal-javax.swing.JTextArea-">SimpleTextAreaTraversal(JTextArea)</a></span> - Constructor for class gr.zeus.ui.typesafe.<a href="gr/zeus/ui/typesafe/SimpleTextAreaTraversal.html" title="class in gr.zeus.ui.typesafe">SimpleTextAreaTraversal</a></dt>
+<dd>
+<div class="block">Constructor, Stores a backup copy of the original traversal keys
+ of this text area.</div>
+</dd>
+<dt><a href="gr/zeus/ui/typesafe/SimpleTextPaneTraversal.html" title="class in gr.zeus.ui.typesafe"><span class="typeNameLink">SimpleTextPaneTraversal</span></a> - Class in <a href="gr/zeus/ui/typesafe/package-summary.html">gr.zeus.ui.typesafe</a></dt>
+<dd>
+<div class="block">This class can be used to replace the default traversal keys for any
+ JTextPane object.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/typesafe/SimpleTextPaneTraversal.html#SimpleTextPaneTraversal-javax.swing.JTextPane-">SimpleTextPaneTraversal(JTextPane)</a></span> - Constructor for class gr.zeus.ui.typesafe.<a href="gr/zeus/ui/typesafe/SimpleTextPaneTraversal.html" title="class in gr.zeus.ui.typesafe">SimpleTextPaneTraversal</a></dt>
+<dd>
+<div class="block">Constructor, Stores a backup copy of the original traversal keys
+ of this text panel.</div>
+</dd>
+<dt><a href="gr/zeus/util/SimpleTimerMillis.html" title="class in gr.zeus.util"><span class="typeNameLink">SimpleTimerMillis</span></a> - Class in <a href="gr/zeus/util/package-summary.html">gr.zeus.util</a></dt>
+<dd>
+<div class="block">A very simple timer for timing java method calls and other processes.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/util/SimpleTimerMillis.html#SimpleTimerMillis--">SimpleTimerMillis()</a></span> - Constructor for class gr.zeus.util.<a href="gr/zeus/util/SimpleTimerMillis.html" title="class in gr.zeus.util">SimpleTimerMillis</a></dt>
+<dd>
+<div class="block">Constructor.</div>
+</dd>
+<dt><a href="gr/zeus/util/SimpleTimerNanos.html" title="class in gr.zeus.util"><span class="typeNameLink">SimpleTimerNanos</span></a> - Class in <a href="gr/zeus/util/package-summary.html">gr.zeus.util</a></dt>
+<dd>
+<div class="block">A very simple timer for timing java method calls and other processes
+ (JDK 5, nanos implementation).</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/util/SimpleTimerNanos.html#SimpleTimerNanos--">SimpleTimerNanos()</a></span> - Constructor for class gr.zeus.util.<a href="gr/zeus/util/SimpleTimerNanos.html" title="class in gr.zeus.util">SimpleTimerNanos</a></dt>
+<dd>
+<div class="block">Constructor.</div>
+</dd>
+<dt><a href="gr/zeus/util/SimpleUIDGenerator.html" title="class in gr.zeus.util"><span class="typeNameLink">SimpleUIDGenerator</span></a> - Class in <a href="gr/zeus/util/package-summary.html">gr.zeus.util</a></dt>
+<dd>
+<div class="block">Generates unique ID's within this JVM.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/util/SimpleUIDGenerator.html#SimpleUIDGenerator--">SimpleUIDGenerator()</a></span> - Constructor for class gr.zeus.util.<a href="gr/zeus/util/SimpleUIDGenerator.html" title="class in gr.zeus.util">SimpleUIDGenerator</a></dt>
+<dd> </dd>
+<dt><a href="gr/zeus/ui/SingleAppInstance.html" title="class in gr.zeus.ui"><span class="typeNameLink">SingleAppInstance</span></a> - Class in <a href="gr/zeus/ui/package-summary.html">gr.zeus.ui</a></dt>
+<dd>
+<div class="block">This helper component provides a simple solution to the multiple applications
+ instances problem.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/JSplash.html#splashOff--">splashOff()</a></span> - Method in class gr.zeus.ui.<a href="gr/zeus/ui/JSplash.html" title="class in gr.zeus.ui">JSplash</a></dt>
+<dd>
+<div class="block">Hides and disposes the splash screen</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/JSplash.html#splashOn--">splashOn()</a></span> - Method in class gr.zeus.ui.<a href="gr/zeus/ui/JSplash.html" title="class in gr.zeus.ui">JSplash</a></dt>
+<dd>
+<div class="block">Displays the splash screen</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/util/SimpleTimerMillis.html#start--">start()</a></span> - Method in class gr.zeus.util.<a href="gr/zeus/util/SimpleTimerMillis.html" title="class in gr.zeus.util">SimpleTimerMillis</a></dt>
+<dd>
+<div class="block">Starts timing a job.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/util/SimpleTimerNanos.html#start--">start()</a></span> - Method in class gr.zeus.util.<a href="gr/zeus/util/SimpleTimerNanos.html" title="class in gr.zeus.util">SimpleTimerNanos</a></dt>
+<dd>
+<div class="block">Starts timing a job.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/JConsolePane.html#startConsole--">startConsole()</a></span> - Method in class gr.zeus.ui.<a href="gr/zeus/ui/JConsolePane.html" title="class in gr.zeus.ui">JConsolePane</a></dt>
+<dd>
+<div class="block">Attachs the new streams to stdout and stderr.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/JConsolePane.html#stopConsole--">stopConsole()</a></span> - Method in class gr.zeus.ui.<a href="gr/zeus/ui/JConsolePane.html" title="class in gr.zeus.ui">JConsolePane</a></dt>
+<dd>
+<div class="block">Attachs the original streams to stdout and stderr.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/util/DateHelper.html#subDaysFromDate-java.util.Calendar-int-">subDaysFromDate(Calendar, int)</a></span> - Static method in class gr.zeus.util.<a href="gr/zeus/util/DateHelper.html" title="class in gr.zeus.util">DateHelper</a></dt>
+<dd>
+<div class="block">Subtracts 'days' from a calendar taking into consideration
+ the month, year and leap years change as well.</div>
+</dd>
+<dt><a href="gr/zeus/ui/typesafe/SwingConfigurationManager.html" title="class in gr.zeus.ui.typesafe"><span class="typeNameLink">SwingConfigurationManager</span></a> - Class in <a href="gr/zeus/ui/typesafe/package-summary.html">gr.zeus.ui.typesafe</a></dt>
+<dd>
+<div class="block">This class is the central point of execution for all the classes inside
+ <code>gr.zeus.ui.typesafe</code> package.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/typesafe/SwingConfigurationManager.html#SwingConfigurationManager-java.lang.String-">SwingConfigurationManager(String)</a></span> - Constructor for class gr.zeus.ui.typesafe.<a href="gr/zeus/ui/typesafe/SwingConfigurationManager.html" title="class in gr.zeus.ui.typesafe">SwingConfigurationManager</a></dt>
+<dd>
+<div class="block">Constructor, loads the property file from the specified pathname.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/typesafe/SwingConfigurationManager.html#SwingConfigurationManager-java.util.ResourceBundle-">SwingConfigurationManager(ResourceBundle)</a></span> - Constructor for class gr.zeus.ui.typesafe.<a href="gr/zeus/ui/typesafe/SwingConfigurationManager.html" title="class in gr.zeus.ui.typesafe">SwingConfigurationManager</a></dt>
+<dd>
+<div class="block">Constructor, creates the properties from the specified ResourceBundle.</div>
+</dd>
+</dl>
+<a name="I:T">
+<!--   -->
+</a>
+<h2 class="title">T</h2>
+<dl>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/table/AutoResizeTableColumns.html#tableChanged-javax.swing.event.TableModelEvent-">tableChanged(TableModelEvent)</a></span> - Method in class gr.zeus.ui.table.<a href="gr/zeus/ui/table/AutoResizeTableColumns.html" title="class in gr.zeus.ui.table">AutoResizeTableColumns</a></dt>
+<dd>
+<div class="block">Implementation of TableModelListener.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/table/TableSorter.html#tableModel">tableModel</a></span> - Variable in class gr.zeus.ui.table.<a href="gr/zeus/ui/table/TableSorter.html" title="class in gr.zeus.ui.table">TableSorter</a></dt>
+<dd> </dd>
+<dt><a href="gr/zeus/ui/table/TableSorter.html" title="class in gr.zeus.ui.table"><span class="typeNameLink">TableSorter</span></a> - Class in <a href="gr/zeus/ui/table/package-summary.html">gr.zeus.ui.table</a></dt>
+<dd>
+<div class="block">TableSorter is a decorator for TableModels; adding sorting
+ functionality to a supplied TableModel.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/table/TableSorter.html#TableSorter--">TableSorter()</a></span> - Constructor for class gr.zeus.ui.table.<a href="gr/zeus/ui/table/TableSorter.html" title="class in gr.zeus.ui.table">TableSorter</a></dt>
+<dd> </dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/table/TableSorter.html#TableSorter-javax.swing.table.TableModel-">TableSorter(TableModel)</a></span> - Constructor for class gr.zeus.ui.table.<a href="gr/zeus/ui/table/TableSorter.html" title="class in gr.zeus.ui.table">TableSorter</a></dt>
+<dd> </dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/table/TableSorter.html#TableSorter-javax.swing.table.TableModel-javax.swing.table.JTableHeader-">TableSorter(TableModel, JTableHeader)</a></span> - Constructor for class gr.zeus.ui.table.<a href="gr/zeus/ui/table/TableSorter.html" title="class in gr.zeus.ui.table">TableSorter</a></dt>
+<dd> </dd>
+<dt><a href="gr/zeus/ui/table/TableSorterIcons.html" title="class in gr.zeus.ui.table"><span class="typeNameLink">TableSorterIcons</span></a> - Class in <a href="gr/zeus/ui/table/package-summary.html">gr.zeus.ui.table</a></dt>
+<dd>
+<div class="block">Icon constants.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/table/TableSorterIcons.html#TableSorterIcons--">TableSorterIcons()</a></span> - Constructor for class gr.zeus.ui.table.<a href="gr/zeus/ui/table/TableSorterIcons.html" title="class in gr.zeus.ui.table">TableSorterIcons</a></dt>
+<dd> </dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/mdi/WindowManager.html#tile--">tile()</a></span> - Method in class gr.zeus.ui.mdi.<a href="gr/zeus/ui/mdi/WindowManager.html" title="class in gr.zeus.ui.mdi">WindowManager</a></dt>
+<dd>
+<div class="block">Tiles all windows equally.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/mdi/WindowManager.html#tileHorizontally--">tileHorizontally()</a></span> - Method in class gr.zeus.ui.mdi.<a href="gr/zeus/ui/mdi/WindowManager.html" title="class in gr.zeus.ui.mdi">WindowManager</a></dt>
+<dd>
+<div class="block">Tiles all windows horizontally.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/mdi/WindowManager.html#tileVertically--">tileVertically()</a></span> - Method in class gr.zeus.ui.mdi.<a href="gr/zeus/ui/mdi/WindowManager.html" title="class in gr.zeus.ui.mdi">WindowManager</a></dt>
+<dd>
+<div class="block">Tiles all windows vertically.</div>
+</dd>
+<dt><a href="gr/zeus/ui/typesafe/TypeSafeTextDocumentFilter.html" title="class in gr.zeus.ui.typesafe"><span class="typeNameLink">TypeSafeTextDocumentFilter</span></a> - Class in <a href="gr/zeus/ui/typesafe/package-summary.html">gr.zeus.ui.typesafe</a></dt>
+<dd>
+<div class="block">This class creates a custom filter for JTextComponents by extending the
+ DocumentFilter.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/typesafe/TypeSafeTextDocumentFilter.html#TypeSafeTextDocumentFilter--">TypeSafeTextDocumentFilter()</a></span> - Constructor for class gr.zeus.ui.typesafe.<a href="gr/zeus/ui/typesafe/TypeSafeTextDocumentFilter.html" title="class in gr.zeus.ui.typesafe">TypeSafeTextDocumentFilter</a></dt>
+<dd>
+<div class="block">Constructor.</div>
+</dd>
+<dt><a href="gr/zeus/ui/typesafe/TypeSafeVerifier.html" title="class in gr.zeus.ui.typesafe"><span class="typeNameLink">TypeSafeVerifier</span></a> - Class in <a href="gr/zeus/ui/typesafe/package-summary.html">gr.zeus.ui.typesafe</a></dt>
+<dd>
+<div class="block">This class creates a custom verifier for JTextComponents by extending the
+ InputVerifier.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/typesafe/TypeSafeVerifier.html#TypeSafeVerifier-java.lang.Class-">TypeSafeVerifier(Class)</a></span> - Constructor for class gr.zeus.ui.typesafe.<a href="gr/zeus/ui/typesafe/TypeSafeVerifier.html" title="class in gr.zeus.ui.typesafe">TypeSafeVerifier</a></dt>
+<dd>
+<div class="block">Constructor, define the class type of the field.</div>
+</dd>
+</dl>
+<a name="I:U">
+<!--   -->
+</a>
+<h2 class="title">U</h2>
+<dl>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/table/TableSorterIcons.html#UP1_ICON">UP1_ICON</a></span> - Static variable in class gr.zeus.ui.table.<a href="gr/zeus/ui/table/TableSorterIcons.html" title="class in gr.zeus.ui.table">TableSorterIcons</a></dt>
+<dd>
+<div class="block">Up image icon 1.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/table/TableSorterIcons.html#UP2_ICON">UP2_ICON</a></span> - Static variable in class gr.zeus.ui.table.<a href="gr/zeus/ui/table/TableSorterIcons.html" title="class in gr.zeus.ui.table">TableSorterIcons</a></dt>
+<dd>
+<div class="block">Up image icon 2.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/table/TableSorterIcons.html#UP3_ICON">UP3_ICON</a></span> - Static variable in class gr.zeus.ui.table.<a href="gr/zeus/ui/table/TableSorterIcons.html" title="class in gr.zeus.ui.table">TableSorterIcons</a></dt>
+<dd>
+<div class="block">Up image icon 3.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/table/TableSorterIcons.html#UP4_ICON">UP4_ICON</a></span> - Static variable in class gr.zeus.ui.table.<a href="gr/zeus/ui/table/TableSorterIcons.html" title="class in gr.zeus.ui.table">TableSorterIcons</a></dt>
+<dd>
+<div class="block">Up image icon 4.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/table/TableSorterIcons.html#UP5_ICON">UP5_ICON</a></span> - Static variable in class gr.zeus.ui.table.<a href="gr/zeus/ui/table/TableSorterIcons.html" title="class in gr.zeus.ui.table">TableSorterIcons</a></dt>
+<dd>
+<div class="block">Up image icon 5.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/table/TableSorterIcons.html#UP6_ICON">UP6_ICON</a></span> - Static variable in class gr.zeus.ui.table.<a href="gr/zeus/ui/table/TableSorterIcons.html" title="class in gr.zeus.ui.table">TableSorterIcons</a></dt>
+<dd>
+<div class="block">Up image icon 6.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/table/TableSorterIcons.html#UP7_ICON">UP7_ICON</a></span> - Static variable in class gr.zeus.ui.table.<a href="gr/zeus/ui/table/TableSorterIcons.html" title="class in gr.zeus.ui.table">TableSorterIcons</a></dt>
+<dd>
+<div class="block">Up image icon 7.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/JConsolePane.html#updateLNF--">updateLNF()</a></span> - Method in class gr.zeus.ui.<a href="gr/zeus/ui/JConsolePane.html" title="class in gr.zeus.ui">JConsolePane</a></dt>
+<dd>
+<div class="block">Updates the look and feel of the <code>JConsolePane</code> and it's
+ components.</div>
+</dd>
+</dl>
+<a name="I:V">
+<!--   -->
+</a>
+<h2 class="title">V</h2>
+<dl>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/JMessage.JMessageButtonEnum.html#valueOf-java.lang.String-">valueOf(String)</a></span> - Static method in enum gr.zeus.ui.<a href="gr/zeus/ui/JMessage.JMessageButtonEnum.html" title="enum in gr.zeus.ui">JMessage.JMessageButtonEnum</a></dt>
+<dd>
+<div class="block">Returns the enum constant of this type with the specified name.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/JMessage.JMessageButtonEnum.html#values--">values()</a></span> - Static method in enum gr.zeus.ui.<a href="gr/zeus/ui/JMessage.JMessageButtonEnum.html" title="enum in gr.zeus.ui">JMessage.JMessageButtonEnum</a></dt>
+<dd>
+<div class="block">Returns an array containing the constants of this enum type, in
+the order they are declared.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/typesafe/TypeSafeVerifier.html#verify-javax.swing.JComponent-">verify(JComponent)</a></span> - Method in class gr.zeus.ui.typesafe.<a href="gr/zeus/ui/typesafe/TypeSafeVerifier.html" title="class in gr.zeus.ui.typesafe">TypeSafeVerifier</a></dt>
+<dd>
+<div class="block">Verify the component and return true in order to allow focus to progress
+ to the next component or false to block the user inside this component
+ until a valid input is entered.</div>
+</dd>
+</dl>
+<a name="I:W">
+<!--   -->
+</a>
+<h2 class="title">W</h2>
+<dl>
+<dt><a href="gr/zeus/ui/mdi/WindowManager.html" title="class in gr.zeus.ui.mdi"><span class="typeNameLink">WindowManager</span></a> - Class in <a href="gr/zeus/ui/mdi/package-summary.html">gr.zeus.ui.mdi</a></dt>
+<dd>
+<div class="block">A JDesktop window manager.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="gr/zeus/ui/mdi/WindowManager.html#WindowManager-javax.swing.JDesktopPane-javax.swing.JMenu-">WindowManager(JDesktopPane, JMenu)</a></span> - Constructor for class gr.zeus.ui.mdi.<a href="gr/zeus/ui/mdi/WindowManager.html" title="class in gr.zeus.ui.mdi">WindowManager</a></dt>
+<dd>
+<div class="block">Constructor.</div>
+</dd>
+</dl>
+<a href="#I:A">A</a> <a href="#I:C">C</a> <a href="#I:D">D</a> <a href="#I:E">E</a> <a href="#I:F">F</a> <a href="#I:G">G</a> <a href="#I:H">H</a> <a href="#I:I">I</a> <a href="#I:J">J</a> <a href="#I:L">L</a> <a href="#I:M">M</a> <a href="#I:N">N</a> <a href="#I:O">O</a> <a href="#I:P">P</a> <a href="#I:R">R</a> <a href="#I:S">S</a> <a href="#I:T">T</a> <a href="#I:U">U</a> <a href="#I:V">V</a>&nbs [...]
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="overview-summary.html">Overview</a></li>
+<li>Package</li>
+<li>Class</li>
+<li><a href="overview-tree.html">Tree</a></li>
+<li><a href="deprecated-list.html">Deprecated</a></li>
+<li class="navBarCell1Rev">Index</li>
+<li><a href="help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev</li>
+<li>Next</li>
+</ul>
+<ul class="navList">
+<li><a href="index.html?index-all.html" target="_top">Frames</a></li>
+<li><a href="index-all.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+</body>
+</html>
diff --git a/doc/api/index.html b/doc/api/index.html
new file mode 100644
index 0000000..6be6aaa
--- /dev/null
+++ b/doc/api/index.html
@@ -0,0 +1,74 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc (1.8.0_05) on Sat Jun 07 12:11:35 EEST 2014 -->
+<title>Generated Documentation (Untitled)</title>
+<script type="text/javascript">
+    targetPage = "" + window.location.search;
+    if (targetPage != "" && targetPage != "undefined")
+        targetPage = targetPage.substring(1);
+    if (targetPage.indexOf(":") != -1 || (targetPage != "" && !validURL(targetPage)))
+        targetPage = "undefined";
+    function validURL(url) {
+        try {
+            url = decodeURIComponent(url);
+        }
+        catch (error) {
+            return false;
+        }
+        var pos = url.indexOf(".html");
+        if (pos == -1 || pos != url.length - 5)
+            return false;
+        var allowNumber = false;
+        var allowSep = false;
+        var seenDot = false;
+        for (var i = 0; i < url.length - 5; i++) {
+            var ch = url.charAt(i);
+            if ('a' <= ch && ch <= 'z' ||
+                    'A' <= ch && ch <= 'Z' ||
+                    ch == '$' ||
+                    ch == '_' ||
+                    ch.charCodeAt(0) > 127) {
+                allowNumber = true;
+                allowSep = true;
+            } else if ('0' <= ch && ch <= '9'
+                    || ch == '-') {
+                if (!allowNumber)
+                     return false;
+            } else if (ch == '/' || ch == '.') {
+                if (!allowSep)
+                    return false;
+                allowNumber = false;
+                allowSep = false;
+                if (ch == '.')
+                     seenDot = true;
+                if (ch == '/' && seenDot)
+                     return false;
+            } else {
+                return false;
+            }
+        }
+        return true;
+    }
+    function loadFrames() {
+        if (targetPage != "" && targetPage != "undefined")
+             top.classFrame.location = top.targetPage;
+    }
+</script>
+</head>
+<frameset cols="20%,80%" title="Documentation frame" onload="top.loadFrames()">
+<frameset rows="30%,70%" title="Left frames" onload="top.loadFrames()">
+<frame src="overview-frame.html" name="packageListFrame" title="All Packages">
+<frame src="allclasses-frame.html" name="packageFrame" title="All classes and interfaces (except non-static nested types)">
+</frameset>
+<frame src="overview-summary.html" name="classFrame" title="Package, class and interface descriptions" scrolling="yes">
+<noframes>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<h2>Frame Alert</h2>
+<p>This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client. Link to <a href="overview-summary.html">Non-frame version</a>.</p>
+</noframes>
+</frameset>
+</html>
diff --git a/doc/api/overview-frame.html b/doc/api/overview-frame.html
new file mode 100644
index 0000000..2dcb027
--- /dev/null
+++ b/doc/api/overview-frame.html
@@ -0,0 +1,25 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc (1.8.0_05) on Sat Jun 07 12:11:35 EEST 2014 -->
+<title>Overview List</title>
+<meta name="date" content="2014-06-07">
+<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
+<script type="text/javascript" src="script.js"></script>
+</head>
+<body>
+<div class="indexHeader"><span><a href="allclasses-frame.html" target="packageFrame">All Classes</a></span></div>
+<div class="indexContainer">
+<h2 title="Packages">Packages</h2>
+<ul title="Packages">
+<li><a href="gr/zeus/ui/package-frame.html" target="packageFrame">gr.zeus.ui</a></li>
+<li><a href="gr/zeus/ui/mdi/package-frame.html" target="packageFrame">gr.zeus.ui.mdi</a></li>
+<li><a href="gr/zeus/ui/table/package-frame.html" target="packageFrame">gr.zeus.ui.table</a></li>
+<li><a href="gr/zeus/ui/typesafe/package-frame.html" target="packageFrame">gr.zeus.ui.typesafe</a></li>
+<li><a href="gr/zeus/util/package-frame.html" target="packageFrame">gr.zeus.util</a></li>
+</ul>
+</div>
+<p> </p>
+</body>
+</html>
diff --git a/doc/api/overview-summary.html b/doc/api/overview-summary.html
new file mode 100644
index 0000000..3178dc1
--- /dev/null
+++ b/doc/api/overview-summary.html
@@ -0,0 +1,149 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc (1.8.0_05) on Sat Jun 07 12:11:35 EEST 2014 -->
+<title>Overview</title>
+<meta name="date" content="2014-06-07">
+<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
+<script type="text/javascript" src="script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="Overview";
+        }
+    }
+    catch(err) {
+    }
+//-->
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li class="navBarCell1Rev">Overview</li>
+<li>Package</li>
+<li>Class</li>
+<li><a href="overview-tree.html">Tree</a></li>
+<li><a href="deprecated-list.html">Deprecated</a></li>
+<li><a href="index-all.html">Index</a></li>
+<li><a href="help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev</li>
+<li>Next</li>
+</ul>
+<ul class="navList">
+<li><a href="index.html?overview-summary.html" target="_top">Frames</a></li>
+<li><a href="overview-summary.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<div class="contentContainer">
+<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Packages table, listing packages, and an explanation">
+<caption><span>Packages</span><span class="tabEnd"> </span></caption>
+<tr>
+<th class="colFirst" scope="col">Package</th>
+<th class="colLast" scope="col">Description</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colFirst"><a href="gr/zeus/ui/package-summary.html">gr.zeus.ui</a></td>
+<td class="colLast"> </td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><a href="gr/zeus/ui/mdi/package-summary.html">gr.zeus.ui.mdi</a></td>
+<td class="colLast"> </td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><a href="gr/zeus/ui/table/package-summary.html">gr.zeus.ui.table</a></td>
+<td class="colLast"> </td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><a href="gr/zeus/ui/typesafe/package-summary.html">gr.zeus.ui.typesafe</a></td>
+<td class="colLast"> </td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><a href="gr/zeus/util/package-summary.html">gr.zeus.util</a></td>
+<td class="colLast"> </td>
+</tr>
+</tbody>
+</table>
+</div>
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li class="navBarCell1Rev">Overview</li>
+<li>Package</li>
+<li>Class</li>
+<li><a href="overview-tree.html">Tree</a></li>
+<li><a href="deprecated-list.html">Deprecated</a></li>
+<li><a href="index-all.html">Index</a></li>
+<li><a href="help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev</li>
+<li>Next</li>
+</ul>
+<ul class="navList">
+<li><a href="index.html?overview-summary.html" target="_top">Frames</a></li>
+<li><a href="overview-summary.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+</body>
+</html>
diff --git a/doc/api/overview-tree.html b/doc/api/overview-tree.html
new file mode 100644
index 0000000..ab3fe54
--- /dev/null
+++ b/doc/api/overview-tree.html
@@ -0,0 +1,259 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc (1.8.0_05) on Sat Jun 07 12:11:35 EEST 2014 -->
+<title>Class Hierarchy</title>
+<meta name="date" content="2014-06-07">
+<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
+<script type="text/javascript" src="script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="Class Hierarchy";
+        }
+    }
+    catch(err) {
+    }
+//-->
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="overview-summary.html">Overview</a></li>
+<li>Package</li>
+<li>Class</li>
+<li class="navBarCell1Rev">Tree</li>
+<li><a href="deprecated-list.html">Deprecated</a></li>
+<li><a href="index-all.html">Index</a></li>
+<li><a href="help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev</li>
+<li>Next</li>
+</ul>
+<ul class="navList">
+<li><a href="index.html?overview-tree.html" target="_top">Frames</a></li>
+<li><a href="overview-tree.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<div class="header">
+<h1 class="title">Hierarchy For All Packages</h1>
+<span class="packageHierarchyLabel">Package Hierarchies:</span>
+<ul class="horizontal">
+<li><a href="gr/zeus/ui/package-tree.html">gr.zeus.ui</a>, </li>
+<li><a href="gr/zeus/ui/mdi/package-tree.html">gr.zeus.ui.mdi</a>, </li>
+<li><a href="gr/zeus/ui/table/package-tree.html">gr.zeus.ui.table</a>, </li>
+<li><a href="gr/zeus/ui/typesafe/package-tree.html">gr.zeus.ui.typesafe</a>, </li>
+<li><a href="gr/zeus/util/package-tree.html">gr.zeus.util</a></li>
+</ul>
+</div>
+<div class="contentContainer">
+<h2 title="Class Hierarchy">Class Hierarchy</h2>
+<ul>
+<li type="circle">java.lang.Object
+<ul>
+<li type="circle">javax.swing.table.AbstractTableModel (implements java.io.Serializable, javax.swing.table.TableModel)
+<ul>
+<li type="circle">gr.zeus.ui.table.<a href="gr/zeus/ui/table/TableSorter.html" title="class in gr.zeus.ui.table"><span class="typeNameLink">TableSorter</span></a></li>
+</ul>
+</li>
+<li type="circle">gr.zeus.ui.table.<a href="gr/zeus/ui/table/AutoResizeTableColumns.html" title="class in gr.zeus.ui.table"><span class="typeNameLink">AutoResizeTableColumns</span></a> (implements javax.swing.event.TableModelListener)</li>
+<li type="circle">java.awt.Component (implements java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable)
+<ul>
+<li type="circle">java.awt.Container
+<ul>
+<li type="circle">javax.swing.JComponent (implements java.io.Serializable)
+<ul>
+<li type="circle">javax.swing.JInternalFrame (implements javax.accessibility.Accessible, javax.swing.RootPaneContainer, javax.swing.WindowConstants)
+<ul>
+<li type="circle">gr.zeus.ui.<a href="gr/zeus/ui/JIConsole.html" title="class in gr.zeus.ui"><span class="typeNameLink">JIConsole</span></a></li>
+</ul>
+</li>
+<li type="circle">javax.swing.JLabel (implements javax.accessibility.Accessible, javax.swing.SwingConstants)
+<ul>
+<li type="circle">gr.zeus.ui.<a href="gr/zeus/ui/JSplashLabel.html" title="class in gr.zeus.ui"><span class="typeNameLink">JSplashLabel</span></a></li>
+</ul>
+</li>
+<li type="circle">javax.swing.JPanel (implements javax.accessibility.Accessible)
+<ul>
+<li type="circle">gr.zeus.ui.<a href="gr/zeus/ui/JConsolePane.html" title="class in gr.zeus.ui"><span class="typeNameLink">JConsolePane</span></a></li>
+</ul>
+</li>
+<li type="circle">javax.swing.JProgressBar (implements javax.accessibility.Accessible, javax.swing.SwingConstants)
+<ul>
+<li type="circle">gr.zeus.ui.table.<a href="gr/zeus/ui/table/ProgressBarCellRenderer.html" title="class in gr.zeus.ui.table"><span class="typeNameLink">ProgressBarCellRenderer</span></a> (implements javax.swing.table.TableCellRenderer)</li>
+</ul>
+</li>
+</ul>
+</li>
+<li type="circle">java.awt.Window (implements javax.accessibility.Accessible)
+<ul>
+<li type="circle">java.awt.Dialog
+<ul>
+<li type="circle">javax.swing.JDialog (implements javax.accessibility.Accessible, javax.swing.RootPaneContainer, javax.swing.WindowConstants)
+<ul>
+<li type="circle">gr.zeus.ui.<a href="gr/zeus/ui/JMessage.html" title="class in gr.zeus.ui"><span class="typeNameLink">JMessage</span></a></li>
+</ul>
+</li>
+</ul>
+</li>
+<li type="circle">java.awt.Frame (implements java.awt.MenuContainer)
+<ul>
+<li type="circle">javax.swing.JFrame (implements javax.accessibility.Accessible, javax.swing.RootPaneContainer, javax.swing.WindowConstants)
+<ul>
+<li type="circle">gr.zeus.ui.<a href="gr/zeus/ui/JConsole.html" title="class in gr.zeus.ui"><span class="typeNameLink">JConsole</span></a></li>
+</ul>
+</li>
+</ul>
+</li>
+<li type="circle">javax.swing.JWindow (implements javax.accessibility.Accessible, javax.swing.RootPaneContainer)
+<ul>
+<li type="circle">gr.zeus.ui.<a href="gr/zeus/ui/JSplash.html" title="class in gr.zeus.ui"><span class="typeNameLink">JSplash</span></a></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+<li type="circle">gr.zeus.util.<a href="gr/zeus/util/CurrentDateHelper.html" title="class in gr.zeus.util"><span class="typeNameLink">CurrentDateHelper</span></a></li>
+<li type="circle">gr.zeus.util.<a href="gr/zeus/util/DateHelper.html" title="class in gr.zeus.util"><span class="typeNameLink">DateHelper</span></a></li>
+<li type="circle">javax.swing.text.DocumentFilter
+<ul>
+<li type="circle">gr.zeus.ui.typesafe.<a href="gr/zeus/ui/typesafe/TypeSafeTextDocumentFilter.html" title="class in gr.zeus.ui.typesafe"><span class="typeNameLink">TypeSafeTextDocumentFilter</span></a></li>
+</ul>
+</li>
+<li type="circle">java.awt.FocusTraversalPolicy
+<ul>
+<li type="circle">javax.swing.InternalFrameFocusTraversalPolicy
+<ul>
+<li type="circle">javax.swing.SortingFocusTraversalPolicy
+<ul>
+<li type="circle">javax.swing.LayoutFocusTraversalPolicy (implements java.io.Serializable)
+<ul>
+<li type="circle">gr.zeus.ui.typesafe.<a href="gr/zeus/ui/typesafe/CustomFocusTraversalPolicy.html" title="class in gr.zeus.ui.typesafe"><span class="typeNameLink">CustomFocusTraversalPolicy</span></a></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+<li type="circle">gr.zeus.util.<a href="gr/zeus/util/GUIUtils.html" title="class in gr.zeus.util"><span class="typeNameLink">GUIUtils</span></a></li>
+<li type="circle">javax.swing.InputVerifier
+<ul>
+<li type="circle">gr.zeus.ui.typesafe.<a href="gr/zeus/ui/typesafe/TypeSafeVerifier.html" title="class in gr.zeus.ui.typesafe"><span class="typeNameLink">TypeSafeVerifier</span></a></li>
+</ul>
+</li>
+<li type="circle">gr.zeus.util.<a href="gr/zeus/util/IOHelper.html" title="class in gr.zeus.util"><span class="typeNameLink">IOHelper</span></a></li>
+<li type="circle">gr.zeus.ui.mdi.<a href="gr/zeus/ui/mdi/JInternalFrameComparator.html" title="class in gr.zeus.ui.mdi"><span class="typeNameLink">JInternalFrameComparator</span></a> (implements java.util.Comparator<T>)</li>
+<li type="circle">gr.zeus.ui.<a href="gr/zeus/ui/OutLookToolBar.html" title="class in gr.zeus.ui"><span class="typeNameLink">OutLookToolBar</span></a></li>
+<li type="circle">gr.zeus.ui.typesafe.<a href="gr/zeus/ui/typesafe/SelectAllTextOnFocus.html" title="class in gr.zeus.ui.typesafe"><span class="typeNameLink">SelectAllTextOnFocus</span></a> (implements java.awt.event.FocusListener)</li>
+<li type="circle">gr.zeus.ui.typesafe.<a href="gr/zeus/ui/typesafe/SimpleEditorPaneTraversal.html" title="class in gr.zeus.ui.typesafe"><span class="typeNameLink">SimpleEditorPaneTraversal</span></a></li>
+<li type="circle">gr.zeus.ui.typesafe.<a href="gr/zeus/ui/typesafe/SimpleTextAreaTraversal.html" title="class in gr.zeus.ui.typesafe"><span class="typeNameLink">SimpleTextAreaTraversal</span></a></li>
+<li type="circle">gr.zeus.ui.typesafe.<a href="gr/zeus/ui/typesafe/SimpleTextPaneTraversal.html" title="class in gr.zeus.ui.typesafe"><span class="typeNameLink">SimpleTextPaneTraversal</span></a></li>
+<li type="circle">gr.zeus.util.<a href="gr/zeus/util/SimpleTimerMillis.html" title="class in gr.zeus.util"><span class="typeNameLink">SimpleTimerMillis</span></a></li>
+<li type="circle">gr.zeus.util.<a href="gr/zeus/util/SimpleTimerNanos.html" title="class in gr.zeus.util"><span class="typeNameLink">SimpleTimerNanos</span></a></li>
+<li type="circle">gr.zeus.util.<a href="gr/zeus/util/SimpleUIDGenerator.html" title="class in gr.zeus.util"><span class="typeNameLink">SimpleUIDGenerator</span></a></li>
+<li type="circle">gr.zeus.ui.<a href="gr/zeus/ui/SingleAppInstance.html" title="class in gr.zeus.ui"><span class="typeNameLink">SingleAppInstance</span></a></li>
+<li type="circle">gr.zeus.ui.typesafe.<a href="gr/zeus/ui/typesafe/SwingConfigurationManager.html" title="class in gr.zeus.ui.typesafe"><span class="typeNameLink">SwingConfigurationManager</span></a></li>
+<li type="circle">gr.zeus.ui.table.<a href="gr/zeus/ui/table/TableSorterIcons.html" title="class in gr.zeus.ui.table"><span class="typeNameLink">TableSorterIcons</span></a></li>
+<li type="circle">gr.zeus.ui.mdi.<a href="gr/zeus/ui/mdi/WindowManager.html" title="class in gr.zeus.ui.mdi"><span class="typeNameLink">WindowManager</span></a></li>
+</ul>
+</li>
+</ul>
+<h2 title="Enum Hierarchy">Enum Hierarchy</h2>
+<ul>
+<li type="circle">java.lang.Object
+<ul>
+<li type="circle">java.lang.Enum<E> (implements java.lang.Comparable<T>, java.io.Serializable)
+<ul>
+<li type="circle">gr.zeus.ui.<a href="gr/zeus/ui/JMessage.JMessageButtonEnum.html" title="enum in gr.zeus.ui"><span class="typeNameLink">JMessage.JMessageButtonEnum</span></a></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="overview-summary.html">Overview</a></li>
+<li>Package</li>
+<li>Class</li>
+<li class="navBarCell1Rev">Tree</li>
+<li><a href="deprecated-list.html">Deprecated</a></li>
+<li><a href="index-all.html">Index</a></li>
+<li><a href="help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev</li>
+<li>Next</li>
+</ul>
+<ul class="navList">
+<li><a href="index.html?overview-tree.html" target="_top">Frames</a></li>
+<li><a href="overview-tree.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+</body>
+</html>
diff --git a/doc/api/package-list b/doc/api/package-list
new file mode 100644
index 0000000..78f970d
--- /dev/null
+++ b/doc/api/package-list
@@ -0,0 +1,5 @@
+gr.zeus.ui
+gr.zeus.ui.mdi
+gr.zeus.ui.table
+gr.zeus.ui.typesafe
+gr.zeus.util
diff --git a/doc/api/script.js b/doc/api/script.js
new file mode 100644
index 0000000..c3a1cae
--- /dev/null
+++ b/doc/api/script.js
@@ -0,0 +1,30 @@
+function show(type)
+{
+    count = 0;
+    for (var key in methods) {
+        var row = document.getElementById(key);
+        if ((methods[key] &  type) != 0) {
+            row.style.display = '';
+            row.className = (count++ % 2) ? rowColor : altColor;
+        }
+        else
+            row.style.display = 'none';
+    }
+    updateTabs(type);
+}
+
+function updateTabs(type)
+{
+    for (var value in tabs) {
+        var sNode = document.getElementById(tabs[value][0]);
+        var spanNode = sNode.firstChild;
+        if (value == type) {
+            sNode.className = activeTableTab;
+            spanNode.innerHTML = tabs[value][1];
+        }
+        else {
+            sNode.className = tableTab;
+            spanNode.innerHTML = "<a href=\"javascript:show("+ value + ");\">" + tabs[value][1] + "</a>";
+        }
+    }
+}
diff --git a/doc/api/serialized-form.html b/doc/api/serialized-form.html
new file mode 100644
index 0000000..9016208
--- /dev/null
+++ b/doc/api/serialized-form.html
@@ -0,0 +1,482 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc (1.8.0_05) on Sat Jun 07 12:11:35 EEST 2014 -->
+<title>Serialized Form</title>
+<meta name="date" content="2014-06-07">
+<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
+<script type="text/javascript" src="script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="Serialized Form";
+        }
+    }
+    catch(err) {
+    }
+//-->
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="overview-summary.html">Overview</a></li>
+<li>Package</li>
+<li>Class</li>
+<li><a href="overview-tree.html">Tree</a></li>
+<li><a href="deprecated-list.html">Deprecated</a></li>
+<li><a href="index-all.html">Index</a></li>
+<li><a href="help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev</li>
+<li>Next</li>
+</ul>
+<ul class="navList">
+<li><a href="index.html?serialized-form.html" target="_top">Frames</a></li>
+<li><a href="serialized-form.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<div class="header">
+<h1 title="Serialized Form" class="title">Serialized Form</h1>
+</div>
+<div class="serializedFormContainer">
+<ul class="blockList">
+<li class="blockList">
+<h2 title="Package">Package gr.zeus.ui</h2>
+<ul class="blockList">
+<li class="blockList"><a name="gr.zeus.ui.JConsole">
+<!--   -->
+</a>
+<h3>Class <a href="gr/zeus/ui/JConsole.html" title="class in gr.zeus.ui">gr.zeus.ui.JConsole</a> extends javax.swing.JFrame implements Serializable</h3>
+</li>
+<li class="blockList"><a name="gr.zeus.ui.JConsolePane">
+<!--   -->
+</a>
+<h3>Class <a href="gr/zeus/ui/JConsolePane.html" title="class in gr.zeus.ui">gr.zeus.ui.JConsolePane</a> extends javax.swing.JPanel implements Serializable</h3>
+<ul class="blockList">
+<li class="blockList">
+<h3>Serialized Fields</h3>
+<ul class="blockList">
+<li class="blockList">
+<h4>m_stdoutPS</h4>
+<pre>java.io.PrintStream m_stdoutPS</pre>
+<div class="block">Out print stream.</div>
+</li>
+<li class="blockList">
+<h4>m_stderrPS</h4>
+<pre>java.io.PrintStream m_stderrPS</pre>
+<div class="block">Error print stream.</div>
+</li>
+<li class="blockList">
+<h4>m_fileChooser</h4>
+<pre>javax.swing.JFileChooser m_fileChooser</pre>
+<div class="block">File chooser for saving messages.</div>
+</li>
+<li class="blockList">
+<h4>m_confimTitle</h4>
+<pre>java.lang.String m_confimTitle</pre>
+<div class="block">Confirm title.</div>
+</li>
+<li class="blockList">
+<h4>m_confimMessage</h4>
+<pre>java.lang.String m_confimMessage</pre>
+<div class="block">File exists warning message.</div>
+</li>
+<li class="blockList">
+<h4>m_messagesFilename</h4>
+<pre>java.lang.String m_messagesFilename</pre>
+<div class="block">Default file name, used by the filechooser.</div>
+</li>
+<li class="blockList">
+<h4>m_traceFilename</h4>
+<pre>java.lang.String m_traceFilename</pre>
+<div class="block">Default file name, used by the auto dump functions.</div>
+</li>
+<li class="blockList">
+<h4>m_appendFirstTime</h4>
+<pre>boolean m_appendFirstTime</pre>
+<div class="block">Append or overwrite the trace file
+ the first time JConsolePane tries to write to it?</div>
+</li>
+<li class="blockList">
+<h4>m_autoSave</h4>
+<pre>boolean m_autoSave</pre>
+<div class="block">Auto save the trace file?</div>
+</li>
+<li class="blockList">
+<h4>m_maxChars</h4>
+<pre>int m_maxChars</pre>
+<div class="block">Display infinite characters in the textarea, no limit.
+ <p>
+ <b>NOTE:</b> Will slow down your application if a lot of messages
+ are to be displayed to the textarea (more than a couple of Kbytes).</div>
+</li>
+<li class="blockList">
+<h4>m_numFlushes</h4>
+<pre>int m_numFlushes</pre>
+<div class="block">Number of times messages have been flushed to the trace file.</div>
+</li>
+<li class="blockList">
+<h4>m_consoleText</h4>
+<pre>java.lang.StringBuilder m_consoleText</pre>
+<div class="block">Store here all the text for <code>dumpConsole()</code> usage.</div>
+</li>
+<li class="blockList">
+<h4>btn_clear</h4>
+<pre>javax.swing.JButton btn_clear</pre>
+</li>
+<li class="blockList">
+<h4>btn_close</h4>
+<pre>javax.swing.JButton btn_close</pre>
+</li>
+<li class="blockList">
+<h4>btn_save</h4>
+<pre>javax.swing.JButton btn_save</pre>
+</li>
+<li class="blockList">
+<h4>button_panel</h4>
+<pre>javax.swing.JPanel button_panel</pre>
+</li>
+<li class="blockListLast">
+<h4>ta_messages</h4>
+<pre>javax.swing.JTextArea ta_messages</pre>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+<li class="blockList"><a name="gr.zeus.ui.JIConsole">
+<!--   -->
+</a>
+<h3>Class <a href="gr/zeus/ui/JIConsole.html" title="class in gr.zeus.ui">gr.zeus.ui.JIConsole</a> extends javax.swing.JInternalFrame implements Serializable</h3>
+</li>
+<li class="blockList"><a name="gr.zeus.ui.JMessage">
+<!--   -->
+</a>
+<h3>Class <a href="gr/zeus/ui/JMessage.html" title="class in gr.zeus.ui">gr.zeus.ui.JMessage</a> extends javax.swing.JDialog implements Serializable</h3>
+<ul class="blockList">
+<li class="blockList">
+<h3>Serialized Fields</h3>
+<ul class="blockList">
+<li class="blockList">
+<h4>m_defaultButton</h4>
+<pre><a href="gr/zeus/ui/JMessage.JMessageButtonEnum.html" title="enum in gr.zeus.ui">JMessage.JMessageButtonEnum</a> m_defaultButton</pre>
+<div class="block">Which is the default button for this dialog.</div>
+</li>
+<li class="blockList">
+<h4>m_returnStatus</h4>
+<pre>int m_returnStatus</pre>
+<div class="block">The return status of this dialog.</div>
+</li>
+<li class="blockList">
+<h4>m_buttonsPane</h4>
+<pre>javax.swing.JPanel m_buttonsPane</pre>
+</li>
+<li class="blockList">
+<h4>m_cancelButton</h4>
+<pre>javax.swing.JButton m_cancelButton</pre>
+</li>
+<li class="blockList">
+<h4>m_centerPane</h4>
+<pre>javax.swing.JPanel m_centerPane</pre>
+</li>
+<li class="blockList">
+<h4>m_detailsButton</h4>
+<pre>javax.swing.JToggleButton m_detailsButton</pre>
+</li>
+<li class="blockList">
+<h4>m_eastPane</h4>
+<pre>javax.swing.JPanel m_eastPane</pre>
+</li>
+<li class="blockList">
+<h4>m_emptySpace</h4>
+<pre>javax.swing.JLabel m_emptySpace</pre>
+</li>
+<li class="blockList">
+<h4>m_icon</h4>
+<pre>javax.swing.JLabel m_icon</pre>
+</li>
+<li class="blockList">
+<h4>m_messageException</h4>
+<pre>javax.swing.JTextArea m_messageException</pre>
+</li>
+<li class="blockList">
+<h4>m_messagePane</h4>
+<pre>javax.swing.JPanel m_messagePane</pre>
+</li>
+<li class="blockList">
+<h4>m_messageText</h4>
+<pre>javax.swing.JLabel m_messageText</pre>
+</li>
+<li class="blockList">
+<h4>m_noButton</h4>
+<pre>javax.swing.JButton m_noButton</pre>
+</li>
+<li class="blockList">
+<h4>m_okButton</h4>
+<pre>javax.swing.JButton m_okButton</pre>
+</li>
+<li class="blockList">
+<h4>m_scrollPane</h4>
+<pre>javax.swing.JScrollPane m_scrollPane</pre>
+</li>
+<li class="blockList">
+<h4>m_westPane</h4>
+<pre>javax.swing.JPanel m_westPane</pre>
+</li>
+<li class="blockListLast">
+<h4>m_yesButton</h4>
+<pre>javax.swing.JButton m_yesButton</pre>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+<li class="blockList"><a name="gr.zeus.ui.JSplash">
+<!--   -->
+</a>
+<h3>Class <a href="gr/zeus/ui/JSplash.html" title="class in gr.zeus.ui">gr.zeus.ui.JSplash</a> extends javax.swing.JWindow implements Serializable</h3>
+<ul class="blockList">
+<li class="blockList">
+<h3>Serialized Fields</h3>
+<ul class="blockList">
+<li class="blockList">
+<h4>m_progress</h4>
+<pre>javax.swing.JProgressBar m_progress</pre>
+<div class="block">Progress bar to use in the splash screen.</div>
+</li>
+<li class="blockList">
+<h4>m_progressBar</h4>
+<pre>boolean m_progressBar</pre>
+<div class="block">Check for whether to use the progress bar or not.</div>
+</li>
+<li class="blockList">
+<h4>m_progressBarMessages</h4>
+<pre>boolean m_progressBarMessages</pre>
+<div class="block">Check for whether to use progress bar messages or not.</div>
+</li>
+<li class="blockListLast">
+<h4>m_progressBarPercent</h4>
+<pre>boolean m_progressBarPercent</pre>
+<div class="block">Check for whether to use precentage values or not.</div>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+<li class="blockList"><a name="gr.zeus.ui.JSplashLabel">
+<!--   -->
+</a>
+<h3>Class <a href="gr/zeus/ui/JSplashLabel.html" title="class in gr.zeus.ui">gr.zeus.ui.JSplashLabel</a> extends javax.swing.JLabel implements Serializable</h3>
+<ul class="blockList">
+<li class="blockList">
+<h3>Serialized Fields</h3>
+<ul class="blockList">
+<li class="blockList">
+<h4>m_text</h4>
+<pre>java.lang.String m_text</pre>
+<div class="block">Used to draw the text string.</div>
+</li>
+<li class="blockList">
+<h4>m_font</h4>
+<pre>java.awt.Font m_font</pre>
+<div class="block">Font to use when drawing the text.</div>
+</li>
+<li class="blockListLast">
+<h4>m_color</h4>
+<pre>java.awt.Color m_color</pre>
+<div class="block">Colour to use when drawing the text.</div>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+<li class="blockList">
+<h2 title="Package">Package gr.zeus.ui.table</h2>
+<ul class="blockList">
+<li class="blockList"><a name="gr.zeus.ui.table.ProgressBarCellRenderer">
+<!--   -->
+</a>
+<h3>Class <a href="gr/zeus/ui/table/ProgressBarCellRenderer.html" title="class in gr.zeus.ui.table">gr.zeus.ui.table.ProgressBarCellRenderer</a> extends javax.swing.JProgressBar implements Serializable</h3>
+<ul class="blockList">
+<li class="blockList">
+<h3>Serialized Fields</h3>
+<ul class="blockList">
+<li class="blockList">
+<h4>m_limitColors</h4>
+<pre>java.util.Hashtable<K,V> m_limitColors</pre>
+<div class="block">Used to get colours.</div>
+</li>
+<li class="blockListLast">
+<h4>m_limitValues</h4>
+<pre>int[] m_limitValues</pre>
+<div class="block">Used to get values.</div>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+<li class="blockList"><a name="gr.zeus.ui.table.TableSorter">
+<!--   -->
+</a>
+<h3>Class <a href="gr/zeus/ui/table/TableSorter.html" title="class in gr.zeus.ui.table">gr.zeus.ui.table.TableSorter</a> extends javax.swing.table.AbstractTableModel implements Serializable</h3>
+<ul class="blockList">
+<li class="blockList">
+<h3>Serialized Fields</h3>
+<ul class="blockList">
+<li class="blockList">
+<h4>m_useCustomIcons</h4>
+<pre>boolean m_useCustomIcons</pre>
+</li>
+<li class="blockList">
+<h4>m_customUpIcons</h4>
+<pre>javax.swing.Icon[] m_customUpIcons</pre>
+</li>
+<li class="blockList">
+<h4>m_customDownIcons</h4>
+<pre>javax.swing.Icon[] m_customDownIcons</pre>
+</li>
+<li class="blockList">
+<h4>tableModel</h4>
+<pre>javax.swing.table.TableModel tableModel</pre>
+</li>
+<li class="blockList">
+<h4>viewToModel</h4>
+<pre>gr.zeus.ui.table.TableSorter.Row[] viewToModel</pre>
+</li>
+<li class="blockList">
+<h4>modelToView</h4>
+<pre>int[] modelToView</pre>
+</li>
+<li class="blockList">
+<h4>tableHeader</h4>
+<pre>javax.swing.table.JTableHeader tableHeader</pre>
+</li>
+<li class="blockList">
+<h4>mouseListener</h4>
+<pre>java.awt.event.MouseListener mouseListener</pre>
+</li>
+<li class="blockList">
+<h4>tableModelListener</h4>
+<pre>javax.swing.event.TableModelListener tableModelListener</pre>
+</li>
+<li class="blockList">
+<h4>columnComparators</h4>
+<pre>java.util.Map<K,V> columnComparators</pre>
+</li>
+<li class="blockListLast">
+<h4>sortingColumns</h4>
+<pre>java.util.List<E> sortingColumns</pre>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+<li class="blockList">
+<h2 title="Package">Package gr.zeus.ui.typesafe</h2>
+<ul class="blockList">
+<li class="blockList"><a name="gr.zeus.ui.typesafe.CustomFocusTraversalPolicy">
+<!--   -->
+</a>
+<h3>Class <a href="gr/zeus/ui/typesafe/CustomFocusTraversalPolicy.html" title="class in gr.zeus.ui.typesafe">gr.zeus.ui.typesafe.CustomFocusTraversalPolicy</a> extends javax.swing.LayoutFocusTraversalPolicy implements Serializable</h3>
+<ul class="blockList">
+<li class="blockList">
+<h3>Serialized Fields</h3>
+<ul class="blockList">
+<li class="blockListLast">
+<h4>m_allComponents</h4>
+<pre>java.awt.Component[] m_allComponents</pre>
+<div class="block">The components array.</div>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="overview-summary.html">Overview</a></li>
+<li>Package</li>
+<li>Class</li>
+<li><a href="overview-tree.html">Tree</a></li>
+<li><a href="deprecated-list.html">Deprecated</a></li>
+<li><a href="index-all.html">Index</a></li>
+<li><a href="help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev</li>
+<li>Next</li>
+</ul>
+<ul class="navList">
+<li><a href="index.html?serialized-form.html" target="_top">Frames</a></li>
+<li><a href="serialized-form.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+</body>
+</html>
diff --git a/doc/api/stylesheet.css b/doc/api/stylesheet.css
new file mode 100644
index 0000000..1e392db
--- /dev/null
+++ b/doc/api/stylesheet.css
@@ -0,0 +1,574 @@
+/* Javadoc style sheet */
+/*
+Overall document style
+*/
+
+ at import url('resources/fonts/dejavu.css');
+
+body {
+    background-color:#ffffff;
+    color:#353833;
+    font-family:'DejaVu Sans', Arial, Helvetica, sans-serif;
+    font-size:14px;
+    margin:0;
+}
+a:link, a:visited {
+    text-decoration:none;
+    color:#4A6782;
+}
+a:hover, a:focus {
+    text-decoration:none;
+    color:#bb7a2a;
+}
+a:active {
+    text-decoration:none;
+    color:#4A6782;
+}
+a[name] {
+    color:#353833;
+}
+a[name]:hover {
+    text-decoration:none;
+    color:#353833;
+}
+pre {
+    font-family:'DejaVu Sans Mono', monospace;
+    font-size:14px;
+}
+h1 {
+    font-size:20px;
+}
+h2 {
+    font-size:18px;
+}
+h3 {
+    font-size:16px;
+    font-style:italic;
+}
+h4 {
+    font-size:13px;
+}
+h5 {
+    font-size:12px;
+}
+h6 {
+    font-size:11px;
+}
+ul {
+    list-style-type:disc;
+}
+code, tt {
+    font-family:'DejaVu Sans Mono', monospace;
+    font-size:14px;
+    padding-top:4px;
+    margin-top:8px;
+    line-height:1.4em;
+}
+dt code {
+    font-family:'DejaVu Sans Mono', monospace;
+    font-size:14px;
+    padding-top:4px;
+}
+table tr td dt code {
+    font-family:'DejaVu Sans Mono', monospace;
+    font-size:14px;
+    vertical-align:top;
+    padding-top:4px;
+}
+sup {
+    font-size:8px;
+}
+/*
+Document title and Copyright styles
+*/
+.clear {
+    clear:both;
+    height:0px;
+    overflow:hidden;
+}
+.aboutLanguage {
+    float:right;
+    padding:0px 21px;
+    font-size:11px;
+    z-index:200;
+    margin-top:-9px;
+}
+.legalCopy {
+    margin-left:.5em;
+}
+.bar a, .bar a:link, .bar a:visited, .bar a:active {
+    color:#FFFFFF;
+    text-decoration:none;
+}
+.bar a:hover, .bar a:focus {
+    color:#bb7a2a;
+}
+.tab {
+    background-color:#0066FF;
+    color:#ffffff;
+    padding:8px;
+    width:5em;
+    font-weight:bold;
+}
+/*
+Navigation bar styles
+*/
+.bar {
+    background-color:#4D7A97;
+    color:#FFFFFF;
+    padding:.8em .5em .4em .8em;
+    height:auto;/*height:1.8em;*/
+    font-size:11px;
+    margin:0;
+}
+.topNav {
+    background-color:#4D7A97;
+    color:#FFFFFF;
+    float:left;
+    padding:0;
+    width:100%;
+    clear:right;
+    height:2.8em;
+    padding-top:10px;
+    overflow:hidden;
+    font-size:12px; 
+}
+.bottomNav {
+    margin-top:10px;
+    background-color:#4D7A97;
+    color:#FFFFFF;
+    float:left;
+    padding:0;
+    width:100%;
+    clear:right;
+    height:2.8em;
+    padding-top:10px;
+    overflow:hidden;
+    font-size:12px;
+}
+.subNav {
+    background-color:#dee3e9;
+    float:left;
+    width:100%;
+    overflow:hidden;
+    font-size:12px;
+}
+.subNav div {
+    clear:left;
+    float:left;
+    padding:0 0 5px 6px;
+    text-transform:uppercase;
+}
+ul.navList, ul.subNavList {
+    float:left;
+    margin:0 25px 0 0;
+    padding:0;
+}
+ul.navList li{
+    list-style:none;
+    float:left;
+    padding: 5px 6px;
+    text-transform:uppercase;
+}
+ul.subNavList li{
+    list-style:none;
+    float:left;
+}
+.topNav a:link, .topNav a:active, .topNav a:visited, .bottomNav a:link, .bottomNav a:active, .bottomNav a:visited {
+    color:#FFFFFF;
+    text-decoration:none;
+    text-transform:uppercase;
+}
+.topNav a:hover, .bottomNav a:hover {
+    text-decoration:none;
+    color:#bb7a2a;
+    text-transform:uppercase;
+}
+.navBarCell1Rev {
+    background-color:#F8981D;
+    color:#253441;
+    margin: auto 5px;
+}
+.skipNav {
+    position:absolute;
+    top:auto;
+    left:-9999px;
+    overflow:hidden;
+}
+/*
+Page header and footer styles
+*/
+.header, .footer {
+    clear:both;
+    margin:0 20px;
+    padding:5px 0 0 0;
+}
+.indexHeader {
+    margin:10px;
+    position:relative;
+}
+.indexHeader span{
+    margin-right:15px;
+}
+.indexHeader h1 {
+    font-size:13px;
+}
+.title {
+    color:#2c4557;
+    margin:10px 0;
+}
+.subTitle {
+    margin:5px 0 0 0;
+}
+.header ul {
+    margin:0 0 15px 0;
+    padding:0;
+}
+.footer ul {
+    margin:20px 0 5px 0;
+}
+.header ul li, .footer ul li {
+    list-style:none;
+    font-size:13px;
+}
+/*
+Heading styles
+*/
+div.details ul.blockList ul.blockList ul.blockList li.blockList h4, div.details ul.blockList ul.blockList ul.blockListLast li.blockList h4 {
+    background-color:#dee3e9;
+    border:1px solid #d0d9e0;
+    margin:0 0 6px -8px;
+    padding:7px 5px;
+}
+ul.blockList ul.blockList ul.blockList li.blockList h3 {
+    background-color:#dee3e9;
+    border:1px solid #d0d9e0;
+    margin:0 0 6px -8px;
+    padding:7px 5px;
+}
+ul.blockList ul.blockList li.blockList h3 {
+    padding:0;
+    margin:15px 0;
+}
+ul.blockList li.blockList h2 {
+    padding:0px 0 20px 0;
+}
+/*
+Page layout container styles
+*/
+.contentContainer, .sourceContainer, .classUseContainer, .serializedFormContainer, .constantValuesContainer {
+    clear:both;
+    padding:10px 20px;
+    position:relative;
+}
+.indexContainer {
+    margin:10px;
+    position:relative;
+    font-size:12px;
+}
+.indexContainer h2 {
+    font-size:13px;
+    padding:0 0 3px 0;
+}
+.indexContainer ul {
+    margin:0;
+    padding:0;
+}
+.indexContainer ul li {
+    list-style:none;
+    padding-top:2px;
+}
+.contentContainer .description dl dt, .contentContainer .details dl dt, .serializedFormContainer dl dt {
+    font-size:12px;
+    font-weight:bold;
+    margin:10px 0 0 0;
+    color:#4E4E4E;
+}
+.contentContainer .description dl dd, .contentContainer .details dl dd, .serializedFormContainer dl dd {
+    margin:5px 0 10px 0px;
+    font-size:14px;
+    font-family:'DejaVu Sans Mono',monospace;
+}
+.serializedFormContainer dl.nameValue dt {
+    margin-left:1px;
+    font-size:1.1em;
+    display:inline;
+    font-weight:bold;
+}
+.serializedFormContainer dl.nameValue dd {
+    margin:0 0 0 1px;
+    font-size:1.1em;
+    display:inline;
+}
+/*
+List styles
+*/
+ul.horizontal li {
+    display:inline;
+    font-size:0.9em;
+}
+ul.inheritance {
+    margin:0;
+    padding:0;
+}
+ul.inheritance li {
+    display:inline;
+    list-style:none;
+}
+ul.inheritance li ul.inheritance {
+    margin-left:15px;
+    padding-left:15px;
+    padding-top:1px;
+}
+ul.blockList, ul.blockListLast {
+    margin:10px 0 10px 0;
+    padding:0;
+}
+ul.blockList li.blockList, ul.blockListLast li.blockList {
+    list-style:none;
+    margin-bottom:15px;
+    line-height:1.4;
+}
+ul.blockList ul.blockList li.blockList, ul.blockList ul.blockListLast li.blockList {
+    padding:0px 20px 5px 10px;
+    border:1px solid #ededed; 
+    background-color:#f8f8f8;
+}
+ul.blockList ul.blockList ul.blockList li.blockList, ul.blockList ul.blockList ul.blockListLast li.blockList {
+    padding:0 0 5px 8px;
+    background-color:#ffffff;
+    border:none;
+}
+ul.blockList ul.blockList ul.blockList ul.blockList li.blockList {
+    margin-left:0;
+    padding-left:0;
+    padding-bottom:15px;
+    border:none;
+}
+ul.blockList ul.blockList ul.blockList ul.blockList li.blockListLast {
+    list-style:none;
+    border-bottom:none;
+    padding-bottom:0;
+}
+table tr td dl, table tr td dl dt, table tr td dl dd {
+    margin-top:0;
+    margin-bottom:1px;
+}
+/*
+Table styles
+*/
+.overviewSummary, .memberSummary, .typeSummary, .useSummary, .constantsSummary, .deprecatedSummary {
+    width:100%;
+    border-left:1px solid #EEE; 
+    border-right:1px solid #EEE; 
+    border-bottom:1px solid #EEE; 
+}
+.overviewSummary, .memberSummary  {
+    padding:0px;
+}
+.overviewSummary caption, .memberSummary caption, .typeSummary caption,
+.useSummary caption, .constantsSummary caption, .deprecatedSummary caption {
+    position:relative;
+    text-align:left;
+    background-repeat:no-repeat;
+    color:#253441;
+    font-weight:bold;
+    clear:none;
+    overflow:hidden;
+    padding:0px;
+    padding-top:10px;
+    padding-left:1px;
+    margin:0px;
+    white-space:pre;
+}
+.overviewSummary caption a:link, .memberSummary caption a:link, .typeSummary caption a:link,
+.useSummary caption a:link, .constantsSummary caption a:link, .deprecatedSummary caption a:link,
+.overviewSummary caption a:hover, .memberSummary caption a:hover, .typeSummary caption a:hover,
+.useSummary caption a:hover, .constantsSummary caption a:hover, .deprecatedSummary caption a:hover,
+.overviewSummary caption a:active, .memberSummary caption a:active, .typeSummary caption a:active,
+.useSummary caption a:active, .constantsSummary caption a:active, .deprecatedSummary caption a:active,
+.overviewSummary caption a:visited, .memberSummary caption a:visited, .typeSummary caption a:visited,
+.useSummary caption a:visited, .constantsSummary caption a:visited, .deprecatedSummary caption a:visited {
+    color:#FFFFFF;
+}
+.overviewSummary caption span, .memberSummary caption span, .typeSummary caption span,
+.useSummary caption span, .constantsSummary caption span, .deprecatedSummary caption span {
+    white-space:nowrap;
+    padding-top:5px;
+    padding-left:12px;
+    padding-right:12px;
+    padding-bottom:7px;
+    display:inline-block;
+    float:left;
+    background-color:#F8981D;
+    border: none;
+    height:16px;
+}
+.memberSummary caption span.activeTableTab span {
+    white-space:nowrap;
+    padding-top:5px;
+    padding-left:12px;
+    padding-right:12px;
+    margin-right:3px;
+    display:inline-block;
+    float:left;
+    background-color:#F8981D;
+    height:16px;
+}
+.memberSummary caption span.tableTab span {
+    white-space:nowrap;
+    padding-top:5px;
+    padding-left:12px;
+    padding-right:12px;
+    margin-right:3px;
+    display:inline-block;
+    float:left;
+    background-color:#4D7A97;
+    height:16px;
+}
+.memberSummary caption span.tableTab, .memberSummary caption span.activeTableTab {
+    padding-top:0px;
+    padding-left:0px;
+    padding-right:0px;
+    background-image:none;
+    float:none;
+    display:inline;
+}
+.overviewSummary .tabEnd, .memberSummary .tabEnd, .typeSummary .tabEnd,
+.useSummary .tabEnd, .constantsSummary .tabEnd, .deprecatedSummary .tabEnd {
+    display:none;
+    width:5px;
+    position:relative;
+    float:left;
+    background-color:#F8981D;
+}
+.memberSummary .activeTableTab .tabEnd {
+    display:none;
+    width:5px;
+    margin-right:3px;
+    position:relative; 
+    float:left;
+    background-color:#F8981D;
+}
+.memberSummary .tableTab .tabEnd {
+    display:none;
+    width:5px;
+    margin-right:3px;
+    position:relative;
+    background-color:#4D7A97;
+    float:left;
+
+}
+.overviewSummary td, .memberSummary td, .typeSummary td,
+.useSummary td, .constantsSummary td, .deprecatedSummary td {
+    text-align:left;
+    padding:0px 0px 12px 10px;
+    width:100%;
+}
+th.colOne, th.colFirst, th.colLast, .useSummary th, .constantsSummary th,
+td.colOne, td.colFirst, td.colLast, .useSummary td, .constantsSummary td{
+    vertical-align:top;
+    padding-right:0px;
+    padding-top:8px;
+    padding-bottom:3px;
+}
+th.colFirst, th.colLast, th.colOne, .constantsSummary th {
+    background:#dee3e9;
+    text-align:left;
+    padding:8px 3px 3px 7px;
+}
+td.colFirst, th.colFirst {
+    white-space:nowrap;
+    font-size:13px;
+}
+td.colLast, th.colLast {
+    font-size:13px;
+}
+td.colOne, th.colOne {
+    font-size:13px;
+}
+.overviewSummary td.colFirst, .overviewSummary th.colFirst,
+.overviewSummary td.colOne, .overviewSummary th.colOne,
+.memberSummary td.colFirst, .memberSummary th.colFirst,
+.memberSummary td.colOne, .memberSummary th.colOne,
+.typeSummary td.colFirst{
+    width:25%;
+    vertical-align:top;
+}
+td.colOne a:link, td.colOne a:active, td.colOne a:visited, td.colOne a:hover, td.colFirst a:link, td.colFirst a:active, td.colFirst a:visited, td.colFirst a:hover, td.colLast a:link, td.colLast a:active, td.colLast a:visited, td.colLast a:hover, .constantValuesContainer td a:link, .constantValuesContainer td a:active, .constantValuesContainer td a:visited, .constantValuesContainer td a:hover {
+    font-weight:bold;
+}
+.tableSubHeadingColor {
+    background-color:#EEEEFF;
+}
+.altColor {
+    background-color:#FFFFFF;
+}
+.rowColor {
+    background-color:#EEEEEF;
+}
+/*
+Content styles
+*/
+.description pre {
+    margin-top:0;
+}
+.deprecatedContent {
+    margin:0;
+    padding:10px 0;
+}
+.docSummary {
+    padding:0;
+}
+
+ul.blockList ul.blockList ul.blockList li.blockList h3 {
+    font-style:normal;
+}
+
+div.block {
+    font-size:14px;
+    font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif;
+}
+
+td.colLast div {
+    padding-top:0px;
+}
+
+
+td.colLast a {
+    padding-bottom:3px;
+}
+/*
+Formatting effect styles
+*/
+.sourceLineNo {
+    color:green;
+    padding:0 30px 0 0;
+}
+h1.hidden {
+    visibility:hidden;
+    overflow:hidden;
+    font-size:10px;
+}
+.block {
+    display:block;
+    margin:3px 10px 2px 0px;
+    color:#474747;
+}
+.deprecatedLabel, .descfrmTypeLabel, .memberNameLabel, .memberNameLink,
+.overrideSpecifyLabel, .packageHierarchyLabel, .paramLabel, .returnLabel,
+.seeLabel, .simpleTagLabel, .throwsLabel, .typeNameLabel, .typeNameLink {
+    font-weight:bold;
+}
+.deprecationComment, .emphasizedPhrase, .interfaceName {
+    font-style:italic;
+}
+
+div.block div.block span.deprecationComment, div.block div.block span.emphasizedPhrase,
+div.block div.block span.interfaceName {
+    font-style:normal;
+}
+
+div.contentContainer ul.blockList li.blockList h2{
+    padding-bottom:0px;
+}
diff --git a/lib/zeus-jscl-1.72.jar b/lib/zeus-jscl-1.72.jar
new file mode 100644
index 0000000..b8aa738
Binary files /dev/null and b/lib/zeus-jscl-1.72.jar differ
diff --git a/license.txt b/license.txt
new file mode 100644
index 0000000..43421aa
--- /dev/null
+++ b/license.txt
@@ -0,0 +1,420 @@
+GNU Lesser General Public License
+Version 2.1, February 1999
+
+Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+Everyone is permitted to copy and distribute verbatim copies
+of this license document, but changing it is not allowed.
+
+[This is the first released version of the Lesser GPL. It also counts
+as the successor of the GNU Library Public License, version 2, hence
+the version number 2.1.]
+
+Preamble
+The licenses for most software are designed to take away your freedom to share
+and change it. By contrast, the GNU General Public Licenses are intended to
+guarantee your freedom to share and change free software--to make sure the
+software is free for all its users.
+
+This license, the Lesser General Public License, applies to some specially
+designated software packages--typically libraries--of the Free Software
+Foundation and other authors who decide to use it. You can use it too, but we
+suggest you first think carefully about whether this license or the ordinary
+General Public License is the better strategy to use in any particular case,
+based on the explanations below.
+
+When we speak of free software, we are referring to freedom of use, not price.
+Our General Public Licenses are designed to make sure that you have the
+freedom to distribute copies of free software (and charge for this service if
+you wish); that you receive source code or can get it if you want it; that you
+can change the software and use pieces of it in new free programs; and that
+you are informed that you can do these things.
+
+To protect your rights, we need to make restrictions that forbid distributors
+to deny you these rights or to ask you to surrender these rights. These
+restrictions translate to certain responsibilities for you if you distribute
+copies of the library or if you modify it.
+
+For example, if you distribute copies of the library, whether gratis or for a
+fee, you must give the recipients all the rights that we gave you. You must
+make sure that they, too, receive or can get the source code. If you link
+other code with the library, you must provide complete object files to the
+recipients, so that they can relink them with the library after making changes
+to the library and recompiling it. And you must show them these terms so they
+know their rights.
+
+We protect your rights with a two-step method: (1) we copyright the library,
+and (2) we offer you this license, which gives you legal permission to copy,
+distribute and/or modify the library.
+
+To protect each distributor, we want to make it very clear that there is no
+warranty for the free library. Also, if the library is modified by someone
+else and passed on, the recipients should know that what they have is not the
+original version, so that the original author's reputation will not be
+affected by problems that might be introduced by others.
+
+Finally, software patents pose a constant threat to the existence of any free
+program. We wish to make sure that a company cannot effectively restrict the
+users of a free program by obtaining a restrictive license from a patent
+holder. Therefore, we insist that any patent license obtained for a version of
+the library must be consistent with the full freedom of use specified in this
+license.
+
+Most GNU software, including some libraries, is covered by the ordinary GNU
+General Public License. This license, the GNU Lesser General Public License,
+applies to certain designated libraries, and is quite different from the
+ordinary General Public License. We use this license for certain libraries in
+order to permit linking those libraries into non-free programs.
+
+When a program is linked with a library, whether statically or using a shared
+library, the combination of the two is legally speaking a combined work, a
+derivative of the original library. The ordinary General Public License
+therefore permits such linking only if the entire combination fits its
+criteria of freedom. The Lesser General Public License permits more lax
+criteria for linking other code with the library.
+
+We call this license the "Lesser" General Public License because it does Less
+to protect the user's freedom than the ordinary General Public License. It
+also provides other free software developers Less of an advantage over
+competing non-free programs. These disadvantages are the reason we use the
+ordinary General Public License for many libraries. However, the Lesser
+license provides advantages in certain special circumstances.
+
+For example, on rare occasions, there may be a special need to encourage the
+widest possible use of a certain library, so that it becomes a de-facto
+standard. To achieve this, non-free programs must be allowed to use the
+library. A more frequent case is that a free library does the same job as
+widely used non-free libraries. In this case, there is little to gain by
+limiting the free library to free software only, so we use the Lesser General
+Public License.
+
+In other cases, permission to use a particular library in non-free programs
+enables a greater number of people to use a large body of free software. For
+example, permission to use the GNU C Library in non-free programs enables many
+more people to use the whole GNU operating system, as well as its variant, the
+GNU/Linux operating system.
+
+Although the Lesser General Public License is Less protective of the users'
+freedom, it does ensure that the user of a program that is linked with the
+Library has the freedom and the wherewithal to run that program using a
+modified version of the Library.
+
+The precise terms and conditions for copying, distribution and modification
+follow. Pay close attention to the difference between a "work based on the
+library" and a "work that uses the library". The former contains code derived
+from the library, whereas the latter must be combined with the library in
+order to run.
+
+TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+0. This License Agreement applies to any software library or other program
+which contains a notice placed by the copyright holder or other authorized
+party saying it may be distributed under the terms of this Lesser General
+Public License (also called "this License"). Each licensee is addressed as
+"you".
+
+A "library" means a collection of software functions and/or data prepared so
+as to be conveniently linked with application programs (which use some of
+those functions and data) to form executables.
+
+The "Library", below, refers to any such software library or work which has
+been distributed under these terms. A "work based on the Library" means either
+the Library or any derivative work under copyright law: that is to say, a work
+containing the Library or a portion of it, either verbatim or with
+modifications and/or translated straightforwardly into another language.
+(Hereinafter, translation is included without limitation in the term
+"modification".)
+
+"Source code" for a work means the preferred form of the work for making
+modifications to it. For a library, complete source code means all the source
+code for all modules it contains, plus any associated interface definition
+files, plus the scripts used to control compilation and installation of the
+library.
+
+Activities other than copying, distribution and modification are not covered
+by this License; they are outside its scope. The act of running a program
+using the Library is not restricted, and output from such a program is covered
+only if its contents constitute a work based on the Library (independent of
+the use of the Library in a tool for writing it). Whether that is true depends
+on what the Library does and what the program that uses the Library does.
+
+1. You may copy and distribute verbatim copies of the Library's complete
+source code as you receive it, in any medium, provided that you conspicuously
+and appropriately publish on each copy an appropriate copyright notice and
+disclaimer of warranty; keep intact all the notices that refer to this License
+and to the absence of any warranty; and distribute a copy of this License
+along with the Library.
+
+You may charge a fee for the physical act of transferring a copy, and you may
+at your option offer warranty protection in exchange for a fee.
+
+2. You may modify your copy or copies of the Library or any portion of it,
+thus forming a work based on the Library, and copy and distribute such
+modifications or work under the terms of Section 1 above, provided that you
+also meet all of these conditions:
+
+a) The modified work must itself be a software library.
+
+b) You must cause the files modified to carry prominent notices stating that
+you changed the files and the date of any change.
+
+c) You must cause the whole of the work to be licensed at no charge to all
+third parties under the terms of this License.
+
+d) If a facility in the modified Library refers to a function or a table of
+data to be supplied by an application program that uses the facility, other
+than as an argument passed when the facility is invoked, then you must make a
+good faith effort to ensure that, in the event an application does not supply
+such function or table, the facility still operates, and performs whatever
+part of its purpose remains meaningful.
+
+(For example, a function in a library to compute square roots has a purpose
+that is entirely well-defined independent of the application. Therefore,
+Subsection 2d requires that any application-supplied function or table used by
+this function must be optional: if the application does not supply it, the
+square root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole. If identifiable
+sections of that work are not derived from the Library, and can be reasonably
+considered independent and separate works in themselves, then this License,
+and its terms, do not apply to those sections when you distribute them as
+separate works. But when you distribute the same sections as part of a whole
+which is a work based on the Library, the distribution of the whole must be on
+the terms of this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest your
+rights to work written entirely by you; rather, the intent is to exercise the
+right to control the distribution of derivative or collective works based on
+the Library.
+
+In addition, mere aggregation of another work not based on the Library with
+the Library (or with a work based on the Library) on a volume of a storage or
+distribution medium does not bring the other work under the scope of this
+License.
+
+3. You may opt to apply the terms of the ordinary GNU General Public License
+instead of this License to a given copy of the Library. To do this, you must
+alter all the notices that refer to this License, so that they refer to the
+ordinary GNU General Public License, version 2, instead of to this License.
+(If a newer version than version 2 of the ordinary GNU General Public License
+has appeared, then you can specify that version instead if you wish.) Do not
+make any other change in these notices.
+
+Once this change is made in a given copy, it is irreversible for that copy, so
+the ordinary GNU General Public License applies to all subsequent copies and
+derivative works made from that copy.
+
+This option is useful when you wish to copy part of the code of the Library
+into a program that is not a library.
+
+4. You may copy and distribute the Library (or a portion or derivative of it,
+under Section 2) in object code or executable form under the terms of Sections
+1 and 2 above provided that you accompany it with the complete corresponding
+machine-readable source code, which must be distributed under the terms of
+Sections 1 and 2 above on a medium customarily used for software interchange.
+
+If distribution of object code is made by offering access to copy from a
+designated place, then offering equivalent access to copy the source code from
+the same place satisfies the requirement to distribute the source code, even
+though third parties are not compelled to copy the source along with the
+object code.
+
+5. A program that contains no derivative of any portion of the Library, but is
+designed to work with the Library by being compiled or linked with it, is
+called a "work that uses the Library". Such a work, in isolation, is not a
+derivative work of the Library, and therefore falls outside the scope of this
+License.
+
+However, linking a "work that uses the Library" with the Library creates an
+executable that is a derivative of the Library (because it contains portions
+of the Library), rather than a "work that uses the library". The executable is
+therefore covered by this License. Section 6 states terms for distribution of
+such executables.
+
+When a "work that uses the Library" uses material from a header file that is
+part of the Library, the object code for the work may be a derivative work of
+the Library even though the source code is not. Whether this is true is
+especially significant if the work can be linked without the Library, or if
+the work is itself a library. The threshold for this to be true is not
+precisely defined by law.
+
+If such an object file uses only numerical parameters, data structure layouts
+and accessors, and small macros and small inline functions (ten lines or less
+in length), then the use of the object file is unrestricted, regardless of
+whether it is legally a derivative work. (Executables containing this object
+code plus portions of the Library will still fall under Section 6.)
+
+Otherwise, if the work is a derivative of the Library, you may distribute the
+object code for the work under the terms of Section 6. Any executables
+containing that work also fall under Section 6, whether or not they are linked
+directly with the Library itself.
+
+6. As an exception to the Sections above, you may also combine or link a "work
+that uses the Library" with the Library to produce a work containing portions
+of the Library, and distribute that work under terms of your choice, provided
+that the terms permit modification of the work for the customer's own use and
+reverse engineering for debugging such modifications.
+
+You must give prominent notice with each copy of the work that the Library is
+used in it and that the Library and its use are covered by this License. You
+must supply a copy of this License. If the work during execution displays
+copyright notices, you must include the copyright notice for the Library among
+them, as well as a reference directing the user to the copy of this License.
+Also, you must do one of these things:
+
+a) Accompany the work with the complete corresponding machine-readable source
+code for the Library including whatever changes were used in the work (which
+must be distributed under Sections 1 and 2 above); and, if the work is an
+executable linked with the Library, with the complete machine-readable "work
+that uses the Library", as object code and/or source code, so that the user
+can modify the Library and then relink to produce a modified executable
+containing the modified Library. (It is understood that the user who changes
+the contents of definitions files in the Library will not necessarily be able
+to recompile the application to use the modified definitions.)
+
+b) Use a suitable shared library mechanism for linking with the Library. A
+suitable mechanism is one that (1) uses at run time a copy of the library
+already present on the user's computer system, rather than copying library
+functions into the executable, and (2) will operate properly with a modified
+version of the library, if the user installs one, as long as the modified
+version is interface-compatible with the version that the work was made with.
+
+c) Accompany the work with a written offer, valid for at least three years, to
+give the same user the materials specified in Subsection 6a, above, for a
+charge no more than the cost of performing this distribution.
+
+d) If distribution of the work is made by offering access to copy from a
+designated place, offer equivalent access to copy the above specified
+materials from the same place.
+
+e) Verify that the user has already received a copy of these materials or that
+you have already sent this user a copy.
+
+For an executable, the required form of the "work that uses the Library" must
+include any data and utility programs needed for reproducing the executable
+from it. However, as a special exception, the materials to be distributed need
+not include anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the operating
+system on which the executable runs, unless that component itself accompanies
+the executable.
+
+It may happen that this requirement contradicts the license restrictions of
+other proprietary libraries that do not normally accompany the operating
+system. Such a contradiction means you cannot use both them and the Library
+together in an executable that you distribute.
+
+7. You may place library facilities that are a work based on the Library
+side-by-side in a single library together with other library facilities not
+covered by this License, and distribute such a combined library, provided that
+the separate distribution of the work based on the Library and of the other
+library facilities is otherwise permitted, and provided that you do these two
+things:
+
+a) Accompany the combined library with a copy of the same work based on the
+Library, uncombined with any other library facilities. This must be
+distributed under the terms of the Sections above.
+
+b) Give prominent notice with the combined library of the fact that part of it
+is a work based on the Library, and explaining where to find the accompanying
+uncombined form of the same work.
+
+8. You may not copy, modify, sublicense, link with, or distribute the Library
+except as expressly provided under this License. Any attempt otherwise to
+copy, modify, sublicense, link with, or distribute the Library is void, and
+will automatically terminate your rights under this License. However, parties
+who have received copies, or rights, from you under this License will not have
+their licenses terminated so long as such parties remain in full compliance.
+
+9. You are not required to accept this License, since you have not signed it.
+However, nothing else grants you permission to modify or distribute the
+Library or its derivative works. These actions are prohibited by law if you do
+not accept this License. Therefore, by modifying or distributing the Library
+(or any work based on the Library), you indicate your acceptance of this
+License to do so, and all its terms and conditions for copying, distributing
+or modifying the Library or works based on it.
+
+10. Each time you redistribute the Library (or any work based on the Library),
+the recipient automatically receives a license from the original licensor to
+copy, distribute, link with or modify the Library subject to these terms and
+conditions. You may not impose any further restrictions on the recipients'
+exercise of the rights granted herein. You are not responsible for enforcing
+compliance by third parties with this License.
+
+11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or otherwise)
+that contradict the conditions of this License, they do not excuse you from
+the conditions of this License. If you cannot distribute so as to satisfy
+simultaneously your obligations under this License and any other pertinent
+obligations, then as a consequence you may not distribute the Library at all.
+For example, if a patent license would not permit royalty-free redistribution
+of the Library by all those who receive copies directly or indirectly through
+you, then the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply, and
+the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any patents or
+other property right claims or to contest validity of any such claims; this
+section has the sole purpose of protecting the integrity of the free software
+distribution system which is implemented by public license practices. Many
+people have made generous contributions to the wide range of software
+distributed through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing to
+distribute software through any other system and a licensee cannot impose that
+choice.
+
+This section is intended to make thoroughly clear what is believed to be a
+consequence of the rest of this License.
+
+12. If the distribution and/or use of the Library is restricted in certain
+countries either by patents or by copyrighted interfaces, the original
+copyright holder who places the Library under this License may add an explicit
+geographical distribution limitation excluding those countries, so that
+distribution is permitted only in or among countries not thus excluded. In
+such case, this License incorporates the limitation as if written in the body
+of this License.
+
+13. The Free Software Foundation may publish revised and/or new versions of
+the Lesser General Public License from time to time. Such new versions will be
+similar in spirit to the present version, but may differ in detail to address
+new problems or concerns.
+
+Each version is given a distinguishing version number. If the Library
+specifies a version number of this License which applies to it and "any later
+version", you have the option of following the terms and conditions either of
+that version or of any later version published by the Free Software
+Foundation. If the Library does not specify a license version number, you may
+choose any version ever published by the Free Software Foundation.
+
+14. If you wish to incorporate parts of the Library into other free programs
+whose distribution conditions are incompatible with these, write to the author
+to ask for permission. For software which is copyrighted by the Free Software
+Foundation, write to the Free Software Foundation; we sometimes make
+exceptions for this. Our decision will be guided by the two goals of
+preserving the free status of all derivatives of our free software and of
+promoting the sharing and reuse of software generally.
+
+NO WARRANTY
+
+15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR
+THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE
+STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE
+LIBRARY "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED,
+INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND
+PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE,
+YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL
+ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE
+THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE
+OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR
+DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR
+A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH
+HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+END OF TERMS AND CONDITIONS
diff --git a/readme.txt b/readme.txt
new file mode 100644
index 0000000..e3ad5f9
--- /dev/null
+++ b/readme.txt
@@ -0,0 +1,215 @@
+================================================================================
+
+  Zeus (zeus-jscl), a free Java Swing Components Library
+
+  Version 1.70
+
+  by Gregory Kotsaftis
+  gregkotsaftis at yahoo.com
+  (c) 2004-2011 Athens, Greece
+
+================================================================================
+
+
+INTRODUCTION
+------------
+
+  Zeus is a swing based components (widgets) library.
+  The purpose of this library is to provide solid and useful swing components,
+  to all of you, java GUI developers out there.
+  After so many years using the opensource community projects, I think it's
+  time for me to give something back...
+
+        ANOTHER GUI LIBRARY, WHY? ... should you ask...
+        Well this is why:
+        During the last few years that I have worked especially with Java GUIs,
+        I really had the need to find and use some nice widgets (e.g. like in
+        win32 RAD tools, Delphi, VB, ...) If you use opensource tools like the
+        Netbeans IDE or the Eclipse IDE, believe me you will have a really hard
+        time creating java GUIs, since only the standard components are
+        supported and most of the time you have to code the GUI by hand! Yes,
+        back to the middle ages, RAD is science fiction for Java! At least up
+        to now... :(
+        Anyway, after endless hours browsing the net I came to realise that good
+        and free GUI components were really hard to find. Moreover, many guys
+        used the obsolete AWT or they extended the original Java Swing
+        components to achieve their goals. The latter I think is much worse.
+        Let me explain why. If you consider the actually infinite bugs that have
+        been reported to Sun about Swings over the last years and the code
+        changes their developers have made in order to solve some major design
+        flaws, you will come to realize that most of the components out there
+        that have been extending the swings are having major difficulties
+        upgrading to newer Java versions.
+        
+        So, my main goal is to create GUI components that will only use the
+        standard swings so as to be easy to upgrade and reuse, as Java evolves.
+        I will try to minimize the need for 'extends' in any swing components
+        and also try to avoid to create my own GUI components from scratch like
+        for example IBM did with the SWT package, so as to be at all times
+        compatible with Sun; yes we love you guys :)
+        Other development goals for this library are:
+        - Use of Java Patterns whenever possible.
+        - Implement code from good examples found on articles/forums/books and 
+          reference back to them when able.
+        - Give more attention to code quality than to create more swing
+          components (better to have less widgets but well written and really
+          usefull ... that's my motivation!)
+        - Simple is better! Do not implement complicated solutions for simple
+          problems when a decent and easy solution will do instead.
+          (We are not trying to get a PhD here...)
+
+
+LICENSE
+-------
+  
+  This library is distributed under LGPL license, please read the 'license.txt'
+  before using this software. In short LGPL allows you to use this library in 
+  opensource or commercial applications as-is. If you need to modify it or 
+  add new code, you have to distribute the modified or new code with your
+  application under LGPL.
+
+
+SUPPORT / FEATURE REQUESTS / CODE CONTRIBUTION
+----------------------------------------------
+
+  Please e-mail me at: gregkotsaftis at yahoo.com
+  and I promise I'll do my best.
+  
+  'Thank you' and 'Well done' emails REALLY appreciated,
+  keeps up the spirit for me to go-on :)
+  
+  
+QUICK START GUIDE
+-----------------
+
+  Check out the 'test' folder for test batch file(s). Execute them in order to
+  get a good idea about the components already implemented.
+  
+  The actual library exists in 'lib' folder.
+  
+  I assume you have Java 1.6 runtime installed, if not edit the batch file(s)
+  and add these lines:
+  
+  (example)
+  
+      set JAVA_HOME=C:\jdk1.6
+      set PATH=%PATH%;%JAVA_HOME%\bin
+  
+  You should be OK now!
+  
+  Also feel free to read the javadocs for the library: doc/api/index.html
+
+
+SWING COMPONENTS OVERVIEW
+-------------------------
+
+  Here you can read in detail about the major components implemented up to now.
+  
+  1 ) JConsole
+      A java console to replace the command line window
+      Redirects the stdout and stderr, customizable,
+      can save the messages it a text file. In addition it can
+      auto dump to a log file and clear the textarea.
+      Can be used with JFrame, JInternalFrame or as a JPanel.
+      If used in conjunction with any exe creator for java,
+      e.g: the really great launch4j - http://launch4j.sourceforge.net/
+      or JSmooth - http://jsmooth.sourceforge.net/
+      you can eliminate the dos application windows and your application
+      looks more professional.
+  
+  2 ) JMessage
+      This component is similar to javax.swing.JOptionPane component.
+      It can be used to display message and error dialogs. The main features of
+      JMessage are:
+      - Displays simple messages and the stacktrace of an exception
+      - Supports html text for messages with build-in plain text conversion
+      - The dialogs are modal. In addition they stay on top of other windows at
+        all times
+      - Supports for JOptionPane OK,CANCEL,YES,NO buttons
+      - Selects a default button in the dialog
+      - Supports all JOptionPane messageType(s) & optionType(s)
+      - Uses UI default icons or user supplied icons
+      - Uses localized dialog titles and button text, or user supplied text
+      - Returns dialog status depending on which button was pressed
+  
+  3 ) JSplash
+      A simple, yet nice splash screen implementation for java
+      Follows Sun recommendations for splash screen and logos:
+      see "Designing Graphics for Corporate and Product Identity"
+      http://java.sun.com/products/jlf/ed2/book/HIG.Graphics7.html
+      Draws a black border of one pixel wide around the splash
+      image. Also uses a simple progress bar that the user must
+      "progress" manually in his code in order for it to work.
+      Also, it has options for percent display, custom loading
+      messages display and application version string display at
+      the bottom-right corner of the image.
+  
+  4 ) OutLookToolBar
+      Provides the mouse over looks of microsoft outlook toolbar buttons
+      on a simple JToolBar.
+  
+  5 ) SingleAppInstance
+      This is actually a helper class rather than a swing component.
+      Provides a simple solution to the multiple application instances problem.
+      Just invoke onInit() at your application startup and onExit() at your 
+      application shutdown and that's all there is to it. 
+      SingleAppInstance creates and locks a file within the startup directory 
+      so if anyone is to execute your application again the second onInit() call 
+      fails with a message. The onExit() method unlocks and deletes the file.
+      You can also customize the way SingleAppInstance informs the user, 
+      e.g via JOptionPane popup window or stderr. Finally, you can easily
+      translate the popup messages without modifing any code.
+  
+  6 ) WindowManager
+      Provides almost any functionality you need to manage all JInternalFrames
+      within a JDesktop.
+  
+  7 ) AutoResizeTableColumns
+      This class can be used to dynamically resize a JTable, every time it's 
+      data changes, based on header size and row data. It can also lock any or 
+      all of the table's columns (no manual resize possible).
+  
+  8 ) ProgressBarCellRenderer
+      Provide progress bar cell rendering inside a JTable's cell.
+  
+  9 ) TableSorter
+      This is actually Sun's latest TableSorter version taken from the 
+      Swing Tutorial with only a couple of modification in order to accept 
+      custom icon images.
+  
+  10) TypeSafe API & SwingConfigurationManager
+      SwingConfigurationManager is actually a convenient method to use the 
+      "gr.zeus.ui.typesafe" package. It automatically configures your gui for 
+      data validation using a property file. This is a component that was 
+      missing from Swing and is usually found only in commercial libraries. 
+      With this component you can automatically:
+      - perform max and min character checks in fields
+      - trim spaces
+      - convert to uppercase/lowercase
+      - accept only a set of characters inside a field (valid chars)
+      - reject a set of characters inside a field (invalid chars)
+      - replace a set of characters with another (replaceable/replaced character
+        pairs)
+      - convert, validate and limit check integer numbers: byte,short,int,long
+      - convert, validate and limit check real numbers: float,double
+      - convert and validate dates using a specified date pattern
+      Also you can enable/disable a selectAll functionality upon focus for any
+      field. Finally you can attach a custom Focus Traversal Policy that enables
+      you to create a custom focus route for your fields, even if they exist in
+      different containers. Special care is also taken for JTextArea, JTextPane
+      and JEditorPane CTRL+TAB which is replaced with single TAB, making focus
+      traversal much easier. And all these with minimal code inside your form
+      and an external property file!
+  
+  
+  Furthermore, you might want to check out package "gr.zeus.util", there are
+  quite a few useful general library classes in there.
+  
+  
+FOR DEVELOPERS
+--------------
+
+  I use Netbeans IDE to develop this project (hence the .form files)
+  A small ANT script is also available to you. Execute it from the command
+  line (need ant installation): 'build.bat', 'clean.bat'
+  You should modify the: 'cp.bat', to match your installation.
diff --git a/src/gr/zeus/res/1downarrow.png b/src/gr/zeus/res/1downarrow.png
new file mode 100644
index 0000000..a4f8e50
Binary files /dev/null and b/src/gr/zeus/res/1downarrow.png differ
diff --git a/src/gr/zeus/res/1uparrow.png b/src/gr/zeus/res/1uparrow.png
new file mode 100644
index 0000000..dfad497
Binary files /dev/null and b/src/gr/zeus/res/1uparrow.png differ
diff --git a/src/gr/zeus/res/2downarrow.png b/src/gr/zeus/res/2downarrow.png
new file mode 100644
index 0000000..67913ce
Binary files /dev/null and b/src/gr/zeus/res/2downarrow.png differ
diff --git a/src/gr/zeus/res/2uparrow.png b/src/gr/zeus/res/2uparrow.png
new file mode 100644
index 0000000..57fe9d4
Binary files /dev/null and b/src/gr/zeus/res/2uparrow.png differ
diff --git a/src/gr/zeus/res/blank.gif b/src/gr/zeus/res/blank.gif
new file mode 100644
index 0000000..12eaf3a
Binary files /dev/null and b/src/gr/zeus/res/blank.gif differ
diff --git a/src/gr/zeus/res/bottom.png b/src/gr/zeus/res/bottom.png
new file mode 100644
index 0000000..a762db3
Binary files /dev/null and b/src/gr/zeus/res/bottom.png differ
diff --git a/src/gr/zeus/res/collapse.gif b/src/gr/zeus/res/collapse.gif
new file mode 100644
index 0000000..44f23c9
Binary files /dev/null and b/src/gr/zeus/res/collapse.gif differ
diff --git a/src/gr/zeus/res/console.gif b/src/gr/zeus/res/console.gif
new file mode 100644
index 0000000..d61163f
Binary files /dev/null and b/src/gr/zeus/res/console.gif differ
diff --git a/src/gr/zeus/res/down.png b/src/gr/zeus/res/down.png
new file mode 100644
index 0000000..f3bc4cd
Binary files /dev/null and b/src/gr/zeus/res/down.png differ
diff --git a/src/gr/zeus/res/down1.gif b/src/gr/zeus/res/down1.gif
new file mode 100644
index 0000000..072b184
Binary files /dev/null and b/src/gr/zeus/res/down1.gif differ
diff --git a/src/gr/zeus/res/down2.gif b/src/gr/zeus/res/down2.gif
new file mode 100644
index 0000000..04f39b4
Binary files /dev/null and b/src/gr/zeus/res/down2.gif differ
diff --git a/src/gr/zeus/res/down3.gif b/src/gr/zeus/res/down3.gif
new file mode 100644
index 0000000..07c2f08
Binary files /dev/null and b/src/gr/zeus/res/down3.gif differ
diff --git a/src/gr/zeus/res/eclipse-icons-license.txt b/src/gr/zeus/res/eclipse-icons-license.txt
new file mode 100644
index 0000000..83b6eb1
--- /dev/null
+++ b/src/gr/zeus/res/eclipse-icons-license.txt
@@ -0,0 +1,233 @@
+  Icons:
+
+  blank.gif
+  collapse.gif
+  console.gif
+  down1.gif
+  down2.gif
+  down3.gif
+  expand.gif
+  up1.gif
+  up2.gif
+  up3.gif
+
+  in this folder were taken from the Eclipse project: 'http://www.eclipse.org'
+
+  ****************************************************************************
+
+  Common Public License - v 1.0 
+
+
+  THE ACCOMPANYING PROGRAM IS PROVIDED  UNDER THE TERMS OF THIS  COMMON PUBLIC
+  LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE  PROGRAM
+  CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. 
+
+
+  1. DEFINITIONS 
+
+  "Contribution" means: 
+
+  a)  in  the  case  of   the  initial  Contributor,  the  initial   code  and
+  documentation distributed under this Agreement,  and b) in the case  of each
+  subsequent Contributor: i) changes to the Program, and ii) additions to  the
+  Program; where such changes and/or  additions to the Program originate  from
+  and  are  distributed  by   that  particular  Contributor.  A   Contribution
+  'originates' from  a Contributor  if it  was added  to the  Program by  such
+  Contributor  itself   or  anyone   acting  on   such  Contributor's  behalf.
+  Contributions  do  not  include  additions to  the  Program  which:  (i) are
+  separate modules  of software  distributed in  conjunction with  the Program
+  under their own license agreement, and (ii) are not derivative works of  the
+  Program. 
+
+  "Contributor" means any person or entity that distributes the Program. 
+
+
+  "Licensed Patents " mean patent claims licensable by a Contributor which are
+  necessarily infringed by the use or  sale of its Contribution alone or  when
+  combined with the Program. 
+
+
+  "Program"  means  the  Contributions  distributed  in  accordance  with this
+  Agreement. 
+
+
+  "Recipient"  means anyone  who receives  the Program  under this  Agreement,
+  including all Contributors. 
+
+
+  2. GRANT OF RIGHTS 
+
+  a) Subject to  the terms of  this Agreement, each  Contributor hereby grants
+  Recipient  a  non-exclusive, worldwide,  royalty-free  copyright license  to
+  reproduce, prepare derivative works of, publicly display, publicly  perform,
+  distribute and sublicense the Contribution of such Contributor, if any,  and
+  such derivative works, in  source code and object  code form. b) Subject  to
+  the terms of this Agreement, each Contributor hereby grants Recipient a  non
+  -exclusive, worldwide, royalty-free patent license under Licensed Patents to
+  make,  use,  sell,  offer  to  sell,  import  and  otherwise  transfer   the
+  Contribution of  such Contributor,  if any,  in source  code and object code
+  form. This patent license shall apply to the combination of the Contribution
+  and  the  Program  if,  at  the  time  the  Contribution  is  added  by  the
+  Contributor, such addition of the Contribution causes such combination to be
+  covered by the Licensed Patents. The  patent license shall not apply to  any
+  other combinations  which include  the Contribution.  No hardware  per se is
+  licensed hereunder. c) Recipient understands that although each  Contributor
+  grants the licenses to its Contributions set forth herein, no assurances are
+  provided by any Contributor that the Program does not infringe the patent or
+  other intellectual  property rights  of any  other entity.  Each Contributor
+  disclaims any liability to Recipient for claims brought by any other  entity
+  based on  infringement of  intellectual property  rights or  otherwise. As a
+  condition  to exercising  the rights  and licenses  granted hereunder,  each
+  Recipient  hereby   assumes  sole   responsibility  to   secure  any   other
+  intellectual property rights needed, if  any. For example, if a  third party
+  patent license is required to allow Recipient to distribute the Program,  it
+  is Recipient's  responsibility to  acquire that  license before distributing
+  the Program.  d) Each  Contributor represents  that to  its knowledge it has
+  sufficient  copyright  rights in  its  Contribution, if  any,  to grant  the
+  copyright license set forth in this Agreement. 3. REQUIREMENTS 
+
+  A Contributor may choose to distribute the Program in object code form under
+  its own license agreement, provided that: 
+
+  a) it complies with the terms  and conditions of this Agreement; and  b) its
+  license agreement: i)  effectively disclaims on  behalf of all  Contributors
+  all warranties and conditions, express and implied, including warranties  or
+  conditions  of  title  and  non-infringement,  and  implied  warranties   or
+  conditions  of merchantability  and fitness  for a  particular purpose;  ii)
+  effectively  excludes  on  behalf  of  all  Contributors  all  liability for
+  damages, including direct,  indirect, special, incidental  and consequential
+  damages, such as lost profits; iii) states that any provisions which  differ
+  from this Agreement  are offered by  that Contributor alone  and not by  any
+  other party; and iv)  states that source code  for the Program is  available
+  from  such  Contributor,  and  informs  licensees  how  to  obtain  it  in a
+  reasonable  manner on  or through  a medium  customarily used  for software
+  exchange. When the Program is made available in source code form: 
+
+  a) it must  be made available  under this Agreement;  and b) a  copy of this
+  Agreement must be included with each copy of the Program. 
+
+  Contributors may not remove or alter any copyright notices contained  within
+  the Program. 
+
+
+  Each Contributor must identify itself as the originator of its Contribution,
+  if any, in a manner that reasonably allows subsequent Recipients to identify
+  the originator of the Contribution. 
+
+
+  4. COMMERCIAL DISTRIBUTION 
+
+  Commercial distributors of software may accept certain responsibilities with
+  respect to end users, business partners and the like. While this license  is
+  intended to facilitate  the commercial use  of the Program,  the Contributor
+  who includes the Program in a commercial product offering should do so in  a
+  manner which  does not  create potential  liability for  other Contributors.
+  Therefore, if  a Contributor  includes the  Program in  a commercial product
+  offering,  such  Contributor  ("Commercial  Contributor")  hereby  agrees to
+  defend  and indemnify  every other  Contributor ("Indemnified  Contributor")
+  against any losses, damages  and costs (collectively "Losses")  arising from
+  claims, lawsuits and  other legal actions  brought by a  third party against
+  the Indemnified Contributor to the extent caused by the acts or omissions of
+  such  Commercial  Contributor in  connection  with its  distribution  of the
+  Program in a commercial product offering. The obligations in this section do
+  not  apply  to  any claims  or  Losses  relating to  any  actual  or alleged
+  intellectual  property infringement.  In order  to qualify,  an Indemnified
+  Contributor must: a) promptly  notify the Commercial Contributor  in writing
+  of  such claim,  and b)  allow the  Commercial Contributor  to control,  and
+  cooperate with the  Commercial Contributor in,  the defense and  any related
+  settlement negotiations. The Indemnified Contributor may participate in  any
+  such claim at its own expense. 
+
+
+  For example, a Contributor might include the Program in a commercial product
+  offering, Product X. That Contributor  is then a Commercial Contributor.  If
+  that  Commercial  Contributor  then  makes  performance  claims,  or  offers
+  warranties related to Product X, those performance claims and warranties are
+  such Commercial Contributor's responsibility alone. Under this section,  the
+  Commercial  Contributor  would  have  to  defend  claims  against  the other
+  Contributors related to  those performance claims  and warranties, and  if a
+  court requires any  other Contributor to  pay any damages  as a result,  the
+  Commercial Contributor must pay those damages. 
+
+
+  5. NO WARRANTY 
+
+  EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED  ON
+  AN  "AS IS"  BASIS, WITHOUT  WARRANTIES OR  CONDITIONS OF  ANY KIND,  EITHER
+  EXPRESS  OR  IMPLIED  INCLUDING,  WITHOUT  LIMITATION,  ANY  WARRANTIES   OR
+  CONDITIONS  OF TITLE,  NON-INFRINGEMENT, MERCHANTABILITY  OR FITNESS  FOR A
+  PARTICULAR PURPOSE. Each Recipient is solely responsible for determining the
+  appropriateness of using and distributing the Program and assumes all  risks
+  associated with its exercise of  rights under this Agreement, including  but
+  not  limited to  the risks  and costs  of program  errors, compliance  with
+  applicable  laws, damage  to or  loss of  data, programs  or equipment,  and
+  unavailability or interruption of operations. 
+
+
+  6. DISCLAIMER OF LIABILITY 
+
+  EXCEPT AS EXPRESSLY SET FORTH  IN THIS AGREEMENT, NEITHER RECIPIENT  NOR ANY
+  CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,  INCIDENTAL,
+  SPECIAL, EXEMPLARY, OR  CONSEQUENTIAL DAMAGES (INCLUDING  WITHOUT LIMITATION
+  LOST PROFITS),  HOWEVER CAUSED  AND ON  ANY THEORY  OF LIABILITY, WHETHER IN
+  CONTRACT,  STRICT LIABILITY,  OR TORT  (INCLUDING NEGLIGENCE  OR OTHERWISE)
+  ARISING IN  ANY WAY  OUT OF  THE USE  OR DISTRIBUTION  OF THE PROGRAM OR THE
+  EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY
+  OF SUCH DAMAGES. 
+
+
+  7. GENERAL 
+
+  If  any  provision  of  this Agreement  is  invalid  or  unenforceable under
+  applicable law, it  shall not affect  the validity or  enforceability of the
+  remainder of the terms of this Agreement, and without further action by  the
+  parties  hereto, such  provision shall  be reformed  to the  minimum extent
+  necessary to make such provision valid and enforceable. 
+
+
+  If Recipient institutes patent litigation against a Contributor with respect
+  to a patent applicable to software (including a cross-claim or  counterclaim
+  in a lawsuit), then any patent licenses granted by that Contributor to  such
+  Recipient  under  this  Agreement  shall  terminate  as  of  the  date  such
+  litigation is filed. In addition, if Recipient institutes patent  litigation
+  against any entity  (including a cross-claim  or counterclaim in  a lawsuit)
+  alleging that the Program itself (excluding combinations of the Program with
+  other software or hardware) infringes such Recipient's patent(s), then  such
+  Recipient's rights granted under Section 2(b) shall terminate as of the date
+  such litigation is filed. 
+
+
+  All Recipient's rights under this  Agreement shall terminate if it  fails to
+  comply with any of  the material terms or  conditions of this Agreement  and
+  does not cure  such failure in  a reasonable period  of time after  becoming
+  aware of such noncompliance. If all Recipient's rights under this  Agreement
+  terminate, Recipient agrees to cease use and distribution of the Program  as
+  soon as reasonably practicable. However, Recipient's obligations under  this
+  Agreement and  any licenses  granted by  Recipient relating  to the  Program
+  shall continue and survive. 
+
+
+  Everyone is permitted to copy  and distribute copies of this  Agreement, but
+  in order to avoid inconsistency the Agreement is copyrighted and may only be
+  modified in the following manner.  The Agreement Steward reserves the  right
+  to publish new versions (including revisions) of this Agreement from time to
+  time. No one other than the  Agreement Steward has the right to  modify this
+  Agreement.  IBM  is  the  initial  Agreement  Steward.  IBM  may  assign the
+  responsibility to  serve as  the Agreement  Steward to  a suitable  separate
+  entity. Each  new version  of the  Agreement will  be given a distinguishing
+  version  number.  The  Program  (including  Contributions)  may  always   be
+  distributed  subject to  the version  of the  Agreement under  which it  was
+  received. In addition,  after a new  version of the  Agreement is published,
+  Contributor   may   elect   to  distribute   the   Program   (including  its
+  Contributions) under the new version. Except as expressly stated in Sections
+  2(a)  and  2(b) above,  Recipient  receives no  rights  or licenses  to  the
+  intellectual  property  of  any Contributor  under  this  Agreement, whether
+  expressly, by implication, estoppel or otherwise. All rights in the  Program
+  not expressly granted under this Agreement are reserved. 
+
+
+  This Agreement  is governed  by the  laws of  the State  of New York and the
+  intellectual property laws of the United States of America. No party to this
+  Agreement will bring a legal action under this Agreement more than one  year
+  after the  cause of  action arose.  Each party  waives its  rights to a jury
+  trial in any resulting litigation. 
diff --git a/src/gr/zeus/res/expand.gif b/src/gr/zeus/res/expand.gif
new file mode 100644
index 0000000..acebe94
Binary files /dev/null and b/src/gr/zeus/res/expand.gif differ
diff --git a/src/gr/zeus/res/jconsole.properties b/src/gr/zeus/res/jconsole.properties
new file mode 100644
index 0000000..fcf1e30
--- /dev/null
+++ b/src/gr/zeus/res/jconsole.properties
@@ -0,0 +1,14 @@
+#----------------------------------------
+# create a new file for your locale and
+# translate the messages into your 
+# language. Greg :)
+#----------------------------------------
+
+confimTitle=Question
+confimMessage=The file already exists, overwrite?
+timestampMessage=Dumping console messages (dd/MM/yyyy HH\:mm\:ss) @
+titleMsg=JConsole
+clearMsg=Clear
+saveMsg=Save
+closeMsg=Close
+saveErrorMsg=Unable to save console text to file, error\:
diff --git a/src/gr/zeus/res/jconsole_el_GR.properties b/src/gr/zeus/res/jconsole_el_GR.properties
new file mode 100644
index 0000000..663a5fa
--- /dev/null
+++ b/src/gr/zeus/res/jconsole_el_GR.properties
@@ -0,0 +1,8 @@
+confimTitle=\u0395\u03C1\u03CE\u03C4\u03B7\u03C3\u03B7
+confimMessage=\u03A4\u03BF \u03B1\u03C1\u03C7\u03B5\u03AF\u03BF \u03C5\u03C0\u03AC\u03C1\u03C7\u03B5\u03B9, \u03BD\u03B1 \u03C4\u03BF \u03BE\u03B1\u03BD\u03B1\u03B3\u03C1\u03AC\u03C8\u03C9?
+timestampMessage=\u0391\u03C0\u03BF\u03B8\u03AE\u03BA\u03B5\u03C5\u03C3\u03B7 \u03C4\u03C9\u03BD \u03BC\u03C5\u03BD\u03B7\u03BC\u03AC\u03C4\u03C9\u03BD \u03C4\u03B7\u03C2 \u03BA\u03BF\u03BD\u03C3\u03CC\u03BB\u03B1\u03C2 (dd/MM/yyyy HH\:mm\:ss) @
+titleMsg=JConsole
+clearMsg=\u039A\u03B1\u03B8\u03B1\u03C1\u03B9\u03C3\u03BC\u03CC\u03C2
+saveMsg=\u0391\u03C0\u03BF\u03B8\u03AE\u03BA\u03B5\u03C5\u03C3\u03B7
+closeMsg=\u039A\u03BB\u03B5\u03AF\u03C3\u03B9\u03BC\u03BF
+saveErrorMsg=\u0394\u03B5\u03BD \u03B5\u03AF\u03BD\u03B1\u03B9 \u03B4\u03C5\u03BD\u03B1\u03C4\u03AE \u03B7 \u03B1\u03C0\u03BF\u03B8\u03AE\u03BA\u03B5\u03C5\u03C3\u03B7 \u03C4\u03C9\u03BD \u03BC\u03C5\u03BD\u03B7\u03BC\u03AC\u03C4\u03C9\u03BD \u03C4\u03B7\u03C2 \u03BA\u03BF\u03BD\u03C3\u03CC\u03BB\u03B1\u03C2 \u03C3\u03C4\u03BF \u03B1\u03C1\u03C7\u03B5\u03AF\u03BF, \u03C3\u03C6\u03AC\u03BB\u03BC\u03B1\:
diff --git a/src/gr/zeus/res/jmessage.properties b/src/gr/zeus/res/jmessage.properties
new file mode 100644
index 0000000..35aef1a
--- /dev/null
+++ b/src/gr/zeus/res/jmessage.properties
@@ -0,0 +1,16 @@
+#----------------------------------------
+# create a new file for your locale and
+# translate the messages into your 
+# language. Greg :)
+#----------------------------------------
+
+errorTitle=Error Message
+infoTitle=Information Message
+warningTitle=Warning Message
+questionTitle=Question Message
+plainTitle=Plain Message
+
+okButtonText=OK
+cancelButtonText=Cancel
+yesButtonText=Yes
+noButtonText=No
diff --git a/src/gr/zeus/res/jmessage_el_GR.properties b/src/gr/zeus/res/jmessage_el_GR.properties
new file mode 100644
index 0000000..3be524c
--- /dev/null
+++ b/src/gr/zeus/res/jmessage_el_GR.properties
@@ -0,0 +1,10 @@
+errorTitle=\u03A3\u03C6\u03AC\u03BB\u03BC\u03B1
+infoTitle=\u03A0\u03BB\u03B7\u03C1\u03BF\u03C6\u03BF\u03C1\u03AF\u03B5\u03C2
+warningTitle=\u03A0\u03C1\u03BF\u03C3\u03BF\u03C7\u03AE
+questionTitle=\u0395\u03C1\u03CE\u03C4\u03B7\u03C3\u03B7
+plainTitle=\u0391\u03C0\u03BB\u03CC \u039C\u03CD\u03BD\u03B7\u03BC\u03B1
+
+okButtonText=\u0391\u03C0\u03BF\u03B4\u03BF\u03C7\u03AE
+cancelButtonText=\u0391\u03BA\u03CD\u03C1\u03C9\u03C3\u03B7
+yesButtonText=\u039D\u03B1\u03B9
+noButtonText=\u038C\u03C7\u03B9
diff --git a/src/gr/zeus/res/nuvola-icons-license.txt b/src/gr/zeus/res/nuvola-icons-license.txt
new file mode 100644
index 0000000..dc0dcb1
--- /dev/null
+++ b/src/gr/zeus/res/nuvola-icons-license.txt
@@ -0,0 +1,518 @@
+  Icons:
+  
+  1downarrow.png
+  1uparrow.png
+  2downarrow.png
+  2uparrow.png
+  bottom.png
+  down.png
+  top.png
+  up.png
+  
+  in this folder were taken from the NUVOLA ICON THEME for KDE 3.x
+  'http://www.icon-king.com'
+  
+  ****************************************************************************
+  
+		  GNU LESSER GENERAL PUBLIC LICENSE
+		       Version 2.1, February 1999
+
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+     59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the Lesser GPL.  It also counts
+ as the successor of the GNU Library Public License, version 2, hence
+ the version number 2.1.]
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+  This license, the Lesser General Public License, applies to some
+specially designated software packages--typically libraries--of the
+Free Software Foundation and other authors who decide to use it.  You
+can use it too, but we suggest you first think carefully about whether
+this license or the ordinary General Public License is the better
+strategy to use in any particular case, based on the explanations below.
+
+  When we speak of free software, we are referring to freedom of use,
+not price.  Our General Public Licenses are designed to make sure that
+you have the freedom to distribute copies of free software (and charge
+for this service if you wish); that you receive source code or can get
+it if you want it; that you can change the software and use pieces of
+it in new free programs; and that you are informed that you can do
+these things.
+
+  To protect your rights, we need to make restrictions that forbid
+distributors to deny you these rights or to ask you to surrender these
+rights.  These restrictions translate to certain responsibilities for
+you if you distribute copies of the library or if you modify it.
+
+  For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you.  You must make sure that they, too, receive or can get the source
+code.  If you link other code with the library, you must provide
+complete object files to the recipients, so that they can relink them
+with the library after making changes to the library and recompiling
+it.  And you must show them these terms so they know their rights.
+
+  We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  To protect each distributor, we want to make it very clear that
+there is no warranty for the free library.  Also, if the library is
+modified by someone else and passed on, the recipients should know
+that what they have is not the original version, so that the original
+author's reputation will not be affected by problems that might be
+introduced by others.
+

+  Finally, software patents pose a constant threat to the existence of
+any free program.  We wish to make sure that a company cannot
+effectively restrict the users of a free program by obtaining a
+restrictive license from a patent holder.  Therefore, we insist that
+any patent license obtained for a version of the library must be
+consistent with the full freedom of use specified in this license.
+
+  Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License.  This license, the GNU Lesser
+General Public License, applies to certain designated libraries, and
+is quite different from the ordinary General Public License.  We use
+this license for certain libraries in order to permit linking those
+libraries into non-free programs.
+
+  When a program is linked with a library, whether statically or using
+a shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library.  The ordinary
+General Public License therefore permits such linking only if the
+entire combination fits its criteria of freedom.  The Lesser General
+Public License permits more lax criteria for linking other code with
+the library.
+
+  We call this license the "Lesser" General Public License because it
+does Less to protect the user's freedom than the ordinary General
+Public License.  It also provides other free software developers Less
+of an advantage over competing non-free programs.  These disadvantages
+are the reason we use the ordinary General Public License for many
+libraries.  However, the Lesser license provides advantages in certain
+special circumstances.
+
+  For example, on rare occasions, there may be a special need to
+encourage the widest possible use of a certain library, so that it becomes
+a de-facto standard.  To achieve this, non-free programs must be
+allowed to use the library.  A more frequent case is that a free
+library does the same job as widely used non-free libraries.  In this
+case, there is little to gain by limiting the free library to free
+software only, so we use the Lesser General Public License.
+
+  In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of
+free software.  For example, permission to use the GNU C Library in
+non-free programs enables many more people to use the whole GNU
+operating system, as well as its variant, the GNU/Linux operating
+system.
+
+  Although the Lesser General Public License is Less protective of the
+users' freedom, it does ensure that the user of a program that is
+linked with the Library has the freedom and the wherewithal to run
+that program using a modified version of the Library.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.  Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library".  The
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
+

+		  GNU LESSER GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library or other
+program which contains a notice placed by the copyright holder or
+other authorized party saying it may be distributed under the terms of
+this Lesser General Public License (also called "this License").
+Each licensee is addressed as "you".
+
+  A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+  The "Library", below, refers to any such software library or work
+which has been distributed under these terms.  A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language.  (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+  "Source code" for a work means the preferred form of the work for
+making modifications to it.  For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+  Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it).  Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+  
+  1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+  You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+

+  2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) The modified work must itself be a software library.
+
+    b) You must cause the files modified to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    c) You must cause the whole of the work to be licensed at no
+    charge to all third parties under the terms of this License.
+
+    d) If a facility in the modified Library refers to a function or a
+    table of data to be supplied by an application program that uses
+    the facility, other than as an argument passed when the facility
+    is invoked, then you must make a good faith effort to ensure that,
+    in the event an application does not supply such function or
+    table, the facility still operates, and performs whatever part of
+    its purpose remains meaningful.
+
+    (For example, a function in a library to compute square roots has
+    a purpose that is entirely well-defined independent of the
+    application.  Therefore, Subsection 2d requires that any
+    application-supplied function or table used by this function must
+    be optional: if the application does not supply it, the square
+    root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library.  To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License.  (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.)  Do not make any other change in
+these notices.
+

+  Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+  This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+  4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+  If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library".  Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+  However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library".  The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+  When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library.  The
+threshold for this to be true is not precisely defined by law.
+
+  If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work.  (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+  Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+

+  6. As an exception to the Sections above, you may also combine or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+  You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License.  You must supply a copy of this License.  If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License.  Also, you must do one
+of these things:
+
+    a) Accompany the work with the complete corresponding
+    machine-readable source code for the Library including whatever
+    changes were used in the work (which must be distributed under
+    Sections 1 and 2 above); and, if the work is an executable linked
+    with the Library, with the complete machine-readable "work that
+    uses the Library", as object code and/or source code, so that the
+    user can modify the Library and then relink to produce a modified
+    executable containing the modified Library.  (It is understood
+    that the user who changes the contents of definitions files in the
+    Library will not necessarily be able to recompile the application
+    to use the modified definitions.)
+
+    b) Use a suitable shared library mechanism for linking with the
+    Library.  A suitable mechanism is one that (1) uses at run time a
+    copy of the library already present on the user's computer system,
+    rather than copying library functions into the executable, and (2)
+    will operate properly with a modified version of the library, if
+    the user installs one, as long as the modified version is
+    interface-compatible with the version that the work was made with.
+
+    c) Accompany the work with a written offer, valid for at
+    least three years, to give the same user the materials
+    specified in Subsection 6a, above, for a charge no more
+    than the cost of performing this distribution.
+
+    d) If distribution of the work is made by offering access to copy
+    from a designated place, offer equivalent access to copy the above
+    specified materials from the same place.
+
+    e) Verify that the user has already received a copy of these
+    materials or that you have already sent this user a copy.
+
+  For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it.  However, as a special exception,
+the materials to be distributed need not include anything that is
+normally distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+  It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system.  Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+

+  7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+    a) Accompany the combined library with a copy of the same work
+    based on the Library, uncombined with any other library
+    facilities.  This must be distributed under the terms of the
+    Sections above.
+
+    b) Give prominent notice with the combined library of the fact
+    that part of it is a work based on the Library, and explaining
+    where to find the accompanying uncombined form of the same work.
+
+  8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License.  Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License.  However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+  9. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Library or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+  10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties with
+this License.
+

+  11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded.  In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+  13. The Free Software Foundation may publish revised and/or new
+versions of the Lesser General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation.  If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+

+  14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission.  For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this.  Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+			    NO WARRANTY
+
+  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
+

+           How to Apply These Terms to Your New Libraries
+
+  If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change.  You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms of the
+ordinary General Public License).
+
+  To apply these terms, attach the following notices to the library.  It is
+safest to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least the
+"copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the library's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Lesser General Public
+    License as published by the Free Software Foundation; either
+    version 2.1 of the License, or (at your option) any later version.
+
+    This library is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+    Lesser General Public License for more details.
+
+    You should have received a copy of the GNU Lesser General Public
+    License along with this library; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+Also add information on how to contact you by electronic and paper mail.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the library, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the
+  library `Frob' (a library for tweaking knobs) written by James Random Hacker.
+
+  <signature of Ty Coon>, 1 April 1990
+  Ty Coon, President of Vice
+
+That's all there is to it!
diff --git a/src/gr/zeus/res/singleappinstance.properties b/src/gr/zeus/res/singleappinstance.properties
new file mode 100644
index 0000000..f5894cb
--- /dev/null
+++ b/src/gr/zeus/res/singleappinstance.properties
@@ -0,0 +1,18 @@
+#----------------------------------------
+# create a new file for your locale and
+# translate the messages into your 
+# language. Greg :)
+#----------------------------------------
+
+fileExistsTitle=Attention!
+fileExistsMsg1=An instance of the program seems to be already running in your system or\na previous session of the program did not exit correctly!\n
+fileExistsMsg2=If another session of the program is already running please click CANCEL.\nIf you are sure that no other instance of the program is running click OK to continue.
+fileExistsMsg3=If you are sure that no other instance of the program is running delete\nthe file below and restart the program:\n
+
+fileDeleteErrorTitle=Fatal Error!
+fileDeleteErrorMsg1=Unable to start the program!\nCannot delete the file:\n
+fileDeleteErrorMsg2=\nReason:
+
+fileLockErrorTitle=Fatal Error!
+fileLockErrorMsg1=Unable to start the program!\nCannot create and lock the file:\n
+fileLockErrorMsg2=\nReason:
diff --git a/src/gr/zeus/res/singleappinstance_el_GR.properties b/src/gr/zeus/res/singleappinstance_el_GR.properties
new file mode 100644
index 0000000..ea8b27b
--- /dev/null
+++ b/src/gr/zeus/res/singleappinstance_el_GR.properties
@@ -0,0 +1,12 @@
+fileExistsTitle=\u03A0\u03C1\u03BF\u03C3\u03BF\u03C7\u03AE\!
+fileExistsMsg1=\u0397 \u03B5\u03C6\u03B1\u03C1\u03BC\u03BF\u03B3\u03AE \u03C6\u03B1\u03AF\u03BD\u03B5\u03C4\u03B1\u03B9 \u03CC\u03C4\u03B9 \u03AE\u03B4\u03B7 \u03B5\u03BA\u03C4\u03B5\u03BB\u03B5\u03AF\u03C4\u03B5 \u03C3\u03C4\u03BF \u03C3\u03C5\u03C3\u03C4\u03B7\u03BC\u03AC \u03C3\u03B1\u03C2 \u03AE\n\u03B7 \u03C0\u03C1\u03BF\u03B7\u03B3\u03BF\u03CD\u03BC\u03B5\u03BD\u03B7 \u03B5\u03BA\u03C4\u03AD\u03BB\u03B5\u03C3\u03B7 \u03C4\u03B7\u03C2 \u03B5\u03C6\u03B1\u03C1\u03BC\u03BF\u03B3\u03AE [...]
+fileExistsMsg2=\u0391\u03BD \u03B7 \u03B5\u03C6\u03B1\u03C1\u03BC\u03BF\u03B3\u03AE \u03AE\u03B4\u03B7 \u03B5\u03BA\u03C4\u03B5\u03BB\u03B5\u03AF\u03C4\u03B5 \u03C0\u03B1\u03C4\u03AE\u03C3\u03C4\u03B5 CANCEL.\n\u0391\u03BD \u03B5\u03AF\u03C3\u03C4\u03B5 \u03C3\u03AF\u03B3\u03BF\u03C5\u03C1\u03BF\u03C2 \u03CC\u03C4\u03B9 \u03B7 \u03B5\u03C6\u03B1\u03C1\u03BC\u03BF\u03B3\u03AE \u03B4\u03B5\u03BD \u03B5\u03BA\u03C4\u03B5\u03BB\u03B5\u03AF\u03C4\u03B5 \u03C0\u03B1\u03C4\u03AE\u03C3\u03C4\u03 [...]
+fileExistsMsg3=\u0391\u03BD \u03B5\u03AF\u03C3\u03C4\u03B5 \u03C3\u03AF\u03B3\u03BF\u03C5\u03C1\u03BF\u03C2 \u03CC\u03C4\u03B9 \u03B7 \u03B5\u03C6\u03B1\u03C1\u03BC\u03BF\u03B3\u03AE \u03B4\u03B5\u03BD \u03B5\u03BA\u03C4\u03B5\u03BB\u03B5\u03AF\u03C4\u03B5 \u03B4\u03B9\u03B1\u03B3\u03C1\u03AC\u03C8\u03C4\u03B5\n\u03C4\u03BF \u03C0\u03B1\u03C1\u03B1\u03BA\u03AC\u03C4\u03C9 \u03B1\u03C1\u03C7\u03B5\u03AF\u03BF \u03BA\u03B1\u03B9 \u03B5\u03C0\u03B1\u03BD\u03B5\u03BD\u03B1\u03B5\u03BA\u03BA\ [...]
+
+fileDeleteErrorTitle=\u03A3\u03C6\u03AC\u03BB\u03BC\u03B1\!
+fileDeleteErrorMsg1=\u0391\u03B4\u03CD\u03BD\u03B1\u03C4\u03BF\u03BD \u03BD\u03B1 \u03B5\u03BA\u03C4\u03B5\u03BB\u03B5\u03C3\u03C4\u03B5\u03AF \u03B7 \u03B5\u03C6\u03B1\u03C1\u03BC\u03BF\u03B3\u03AE\!\n\u0394\u03B5\u03BD \u03BC\u03C0\u03BF\u03C1\u03B5\u03AF \u03BD\u03B1 \u03B4\u03B9\u03B1\u03B3\u03C1\u03B1\u03C6\u03B5\u03AF \u03C4\u03BF \u03B1\u03C1\u03C7\u03B5\u03AF\u03BF\:\n
+fileDeleteErrorMsg2=\n\u0391\u03B9\u03C4\u03AF\u03B1\:
+
+fileLockErrorTitle=\u03A3\u03C6\u03AC\u03BB\u03BC\u03B1\!
+fileLockErrorMsg1=\u0391\u03B4\u03CD\u03BD\u03B1\u03C4\u03BF\u03BD \u03BD\u03B1 \u03B5\u03BA\u03C4\u03B5\u03BB\u03B5\u03C3\u03C4\u03B5\u03AF \u03B7 \u03B5\u03C6\u03B1\u03C1\u03BC\u03BF\u03B3\u03AE\!\n\u0394\u03B5\u03BD \u03B5\u03AF\u03BD\u03B1\u03B9 \u03B4\u03C5\u03BD\u03B1\u03C4\u03AE \u03B7 \u03B4\u03B7\u03BC\u03B9\u03BF\u03C5\u03C1\u03B3\u03AF\u03B1 \u03BA\u03B1\u03B9 \u03C4\u03BF \u03BA\u03BB\u03B5\u03AF\u03B4\u03C9\u03BC\u03B1 \u03C4\u03BF\u03C5 \u03B1\u03C1\u03C7\u03B5\u03AF\u03BF\ [...]
+fileLockErrorMsg2=\n\u0391\u03B9\u03C4\u03AF\u03B1\:
diff --git a/src/gr/zeus/res/singleappinstance_it_IT.properties b/src/gr/zeus/res/singleappinstance_it_IT.properties
new file mode 100644
index 0000000..e2f294b
--- /dev/null
+++ b/src/gr/zeus/res/singleappinstance_it_IT.properties
@@ -0,0 +1,17 @@
+#-------------------------------------------
+# Italian version provided by
+# Riccardo Govoni [battlehorse at virgilio.it]
+#-------------------------------------------
+
+fileExistsTitle=Attenzione!
+fileExistsMsg1=Il programma sembra essere gia' in esecuzione su questo sistema or\nla precedente sessione del programma non e' terminata correttamente!\n
+fileExistsMsg2=Se un'altra istanza del programma e' gia' in esecuzione, selezionare CANCEL.\nSe si e' sicuri che non ci sono altre istanze del programma attive, selezionare OK per continuare.
+fileExistsMsg3=Se si e' sicuri che non ci sono altre istanze del programma avviate, cancellare\nil file sottostante e riavviare il programma:\n
+
+fileDeleteErrorTitle=Errore fatale!
+fileDeleteErrorMsg1=Impossibile avviare il programma!\nNon e' stato possibile cancellare il file:\n
+fileDeleteErrorMsg2=\nRagione:
+
+fileLockErrorTitle=Errore fatale!
+fileLockErrorMsg1=Impossibile avviare il programma!\nNon e' stato possibile creare il file di lock:\n
+fileLockErrorMsg2=\nRagione:
diff --git a/src/gr/zeus/res/top.png b/src/gr/zeus/res/top.png
new file mode 100644
index 0000000..3de9a44
Binary files /dev/null and b/src/gr/zeus/res/top.png differ
diff --git a/src/gr/zeus/res/up.png b/src/gr/zeus/res/up.png
new file mode 100644
index 0000000..184c118
Binary files /dev/null and b/src/gr/zeus/res/up.png differ
diff --git a/src/gr/zeus/res/up1.gif b/src/gr/zeus/res/up1.gif
new file mode 100644
index 0000000..091e884
Binary files /dev/null and b/src/gr/zeus/res/up1.gif differ
diff --git a/src/gr/zeus/res/up2.gif b/src/gr/zeus/res/up2.gif
new file mode 100644
index 0000000..17795a8
Binary files /dev/null and b/src/gr/zeus/res/up2.gif differ
diff --git a/src/gr/zeus/res/up3.gif b/src/gr/zeus/res/up3.gif
new file mode 100644
index 0000000..b12c944
Binary files /dev/null and b/src/gr/zeus/res/up3.gif differ
diff --git a/src/gr/zeus/tests/JConsolePaneTester.form b/src/gr/zeus/tests/JConsolePaneTester.form
new file mode 100644
index 0000000..53bebe3
--- /dev/null
+++ b/src/gr/zeus/tests/JConsolePaneTester.form
@@ -0,0 +1,212 @@
+<?xml version="1.1" encoding="UTF-8" ?>
+
+<Form version="1.2" maxVersion="1.2" type="org.netbeans.modules.form.forminfo.JFrameFormInfo">
+  <NonVisualComponents>
+    <Menu class="javax.swing.JMenuBar" name="menuBar">
+      <AuxValues>
+        <AuxValue name="JavaCodeGenerator_VariableLocal" type="java.lang.Boolean" value="true"/>
+        <AuxValue name="JavaCodeGenerator_VariableModifier" type="java.lang.Integer" value="0"/>
+      </AuxValues>
+      <SubComponents>
+        <Menu class="javax.swing.JMenu" name="fileMenu">
+          <Properties>
+            <Property name="text" type="java.lang.String" value="File"/>
+          </Properties>
+          <AuxValues>
+            <AuxValue name="JavaCodeGenerator_VariableLocal" type="java.lang.Boolean" value="true"/>
+            <AuxValue name="JavaCodeGenerator_VariableModifier" type="java.lang.Integer" value="0"/>
+          </AuxValues>
+          <SubComponents>
+            <MenuItem class="javax.swing.JMenuItem" name="consoleMenuItem">
+              <Properties>
+                <Property name="text" type="java.lang.String" value="Show Console"/>
+              </Properties>
+              <Events>
+                <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="consoleMenuItemActionPerformed"/>
+              </Events>
+              <AuxValues>
+                <AuxValue name="JavaCodeGenerator_VariableLocal" type="java.lang.Boolean" value="true"/>
+                <AuxValue name="JavaCodeGenerator_VariableModifier" type="java.lang.Integer" value="0"/>
+              </AuxValues>
+            </MenuItem>
+            <MenuItem class="javax.swing.JMenuItem" name="errorExitMenuItem">
+              <Properties>
+                <Property name="text" type="java.lang.String" value="Exit with error code"/>
+              </Properties>
+              <Events>
+                <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="errorExitMenuItemActionPerformed"/>
+              </Events>
+              <AuxValues>
+                <AuxValue name="JavaCodeGenerator_VariableLocal" type="java.lang.Boolean" value="true"/>
+                <AuxValue name="JavaCodeGenerator_VariableModifier" type="java.lang.Integer" value="0"/>
+              </AuxValues>
+            </MenuItem>
+            <MenuItem class="javax.swing.JMenuItem" name="normalExitMenuItem">
+              <Properties>
+                <Property name="text" type="java.lang.String" value="Normal Exit"/>
+              </Properties>
+              <Events>
+                <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="normalExitMenuItemActionPerformed"/>
+              </Events>
+              <AuxValues>
+                <AuxValue name="JavaCodeGenerator_VariableLocal" type="java.lang.Boolean" value="true"/>
+                <AuxValue name="JavaCodeGenerator_VariableModifier" type="java.lang.Integer" value="0"/>
+              </AuxValues>
+            </MenuItem>
+          </SubComponents>
+        </Menu>
+      </SubComponents>
+    </Menu>
+  </NonVisualComponents>
+  <Properties>
+    <Property name="defaultCloseOperation" type="int" value="0"/>
+    <Property name="title" type="java.lang.String" value="JConsolePaneTester"/>
+  </Properties>
+  <SyntheticProperties>
+    <SyntheticProperty name="menuBar" type="java.lang.String" value="menuBar"/>
+    <SyntheticProperty name="formSize" type="java.awt.Dimension" value="-84,-19,0,5,115,114,0,18,106,97,118,97,46,97,119,116,46,68,105,109,101,110,115,105,111,110,65,-114,-39,-41,-84,95,68,20,2,0,2,73,0,6,104,101,105,103,104,116,73,0,5,119,105,100,116,104,120,112,0,0,1,-32,0,0,2,-128"/>
+    <SyntheticProperty name="formPosition" type="java.awt.Point" value="-84,-19,0,5,115,114,0,14,106,97,118,97,46,97,119,116,46,80,111,105,110,116,-74,-60,-118,114,52,126,-56,38,2,0,2,73,0,1,120,73,0,1,121,120,112,0,0,0,0,0,0,0,0"/>
+    <SyntheticProperty name="formSizePolicy" type="int" value="0"/>
+    <SyntheticProperty name="generatePosition" type="boolean" value="true"/>
+    <SyntheticProperty name="generateSize" type="boolean" value="true"/>
+    <SyntheticProperty name="generateCenter" type="boolean" value="false"/>
+  </SyntheticProperties>
+  <AuxValues>
+    <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/>
+    <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
+    <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
+    <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
+  </AuxValues>
+
+  <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/>
+  <SubComponents>
+    <Container class="javax.swing.JPanel" name="northPanel">
+      <Constraints>
+        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription">
+          <BorderConstraints direction="North"/>
+        </Constraint>
+      </Constraints>
+
+      <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/>
+      <SubComponents>
+        <Container class="javax.swing.JPanel" name="jPanel1">
+          <Constraints>
+            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription">
+              <BorderConstraints direction="Center"/>
+            </Constraint>
+          </Constraints>
+
+          <Layout class="org.netbeans.modules.form.compat2.layouts.DesignFlowLayout"/>
+          <SubComponents>
+            <Component class="javax.swing.JTextField" name="textField">
+              <Properties>
+                <Property name="text" type="java.lang.String" value="Type something"/>
+              </Properties>
+            </Component>
+            <Component class="javax.swing.JComboBox" name="comboBox">
+              <Properties>
+                <Property name="model" type="javax.swing.ComboBoxModel" editor="org.netbeans.modules.form.editors2.ComboBoxModelEditor">
+                  <StringArray count="3">
+                    <StringItem index="0" value="One"/>
+                    <StringItem index="1" value="Two"/>
+                    <StringItem index="2" value="Three"/>
+                  </StringArray>
+                </Property>
+              </Properties>
+            </Component>
+            <Component class="javax.swing.JButton" name="submitButton">
+              <Properties>
+                <Property name="text" type="java.lang.String" value="Submit"/>
+              </Properties>
+              <Events>
+                <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="submitButtonActionPerformed"/>
+              </Events>
+            </Component>
+          </SubComponents>
+        </Container>
+        <Component class="javax.swing.JLabel" name="jLabel1">
+          <Properties>
+            <Property name="horizontalAlignment" type="int" value="0"/>
+            <Property name="text" type="java.lang.String" value="This is a JConsole inside another JFrame!"/>
+          </Properties>
+          <Constraints>
+            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription">
+              <BorderConstraints direction="South"/>
+            </Constraint>
+          </Constraints>
+        </Component>
+      </SubComponents>
+    </Container>
+    <Container class="javax.swing.JPanel" name="centerPanel">
+      <Properties>
+        <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
+          <Border info="org.netbeans.modules.form.compat2.border.TitledBorderInfo">
+            <TitledBorder title="JConsole"/>
+          </Border>
+        </Property>
+      </Properties>
+      <Constraints>
+        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription">
+          <BorderConstraints direction="Center"/>
+        </Constraint>
+      </Constraints>
+
+      <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/>
+    </Container>
+    <Container class="javax.swing.JPanel" name="southPanel">
+      <Constraints>
+        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription">
+          <BorderConstraints direction="South"/>
+        </Constraint>
+      </Constraints>
+
+      <Layout class="org.netbeans.modules.form.compat2.layouts.DesignFlowLayout"/>
+      <SubComponents>
+        <Component class="javax.swing.JButton" name="helloButton">
+          <Properties>
+            <Property name="text" type="java.lang.String" value="Hello"/>
+          </Properties>
+          <Events>
+            <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="helloButtonActionPerformed"/>
+          </Events>
+        </Component>
+        <Component class="javax.swing.JButton" name="errorButton">
+          <Properties>
+            <Property name="text" type="java.lang.String" value="Error"/>
+          </Properties>
+          <Events>
+            <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="errorButtonActionPerformed"/>
+          </Events>
+        </Component>
+        <Component class="javax.swing.JButton" name="exceptionButton">
+          <Properties>
+            <Property name="text" type="java.lang.String" value="Exception"/>
+          </Properties>
+          <Events>
+            <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="exceptionButtonActionPerformed"/>
+          </Events>
+        </Component>
+        <Component class="javax.swing.JToggleButton" name="toggleButton">
+          <Properties>
+            <Property name="text" type="java.lang.String" value="Show/Hide Control Buttons"/>
+          </Properties>
+          <Events>
+            <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="toggleButtonActionPerformed"/>
+          </Events>
+        </Component>
+        <Component class="javax.swing.JButton" name="showConsole">
+          <Properties>
+            <Property name="text" type="java.lang.String" value="Show Console"/>
+          </Properties>
+          <Events>
+            <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="showConsoleActionPerformed"/>
+          </Events>
+        </Component>
+      </SubComponents>
+    </Container>
+  </SubComponents>
+</Form>
diff --git a/src/gr/zeus/tests/JConsolePaneTester.java b/src/gr/zeus/tests/JConsolePaneTester.java
new file mode 100644
index 0000000..c87098e
--- /dev/null
+++ b/src/gr/zeus/tests/JConsolePaneTester.java
@@ -0,0 +1,419 @@
+/*
+ * JConsolePaneTester.java - Test application for JConsole
+ *
+ * Copyright (c) 2004-2011 Gregory Kotsaftis
+ * gregkotsaftis at yahoo.com
+ * http://zeus-jscl.sourceforge.net/
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+package gr.zeus.tests;
+
+import gr.zeus.ui.JConsolePane;
+import gr.zeus.ui.JMessage;
+import gr.zeus.util.GUIUtils;
+import java.awt.Color;
+import java.io.IOException;
+import javax.swing.JFrame;
+import javax.swing.UIManager;
+
+public class JConsolePaneTester extends JFrame {
+
+    // this is the actual JConsole component.
+    // Create a panel containing the console.
+    private static JConsolePane s_consolePane = JConsolePane.getConsolePane();
+
+    private boolean m_realExit = true;
+
+
+    public JConsolePaneTester()
+    {
+        initComponents();
+
+        // add the console panel to the center panel of this test frame
+        centerPanel.add( s_consolePane );
+
+        GUIUtils.centerOnScreen( this );
+    }
+
+
+    /**
+     * Just to be able to use the JTester which is a wrapper for all
+     * the demos. If we use the JTester we also setExitMode( false ),
+     * else the default is for each individual test to System.exit()
+     * by it's own...
+     */
+    public void setExitMode(boolean exit)
+    {
+        m_realExit = exit;
+    }
+
+
+    /**
+     * provide our own exit() method in order to be able to
+     * save the trace file when our application aborts it's normal
+     * execution and we don't have the time to see the JConsole for
+     * error details...
+     */
+    private void myExit(int code)
+    {
+        if( code!=0 )
+        {
+            // dump all messages printed to a new logfile if you wish!
+            try
+            {
+                s_consolePane.dumpConsole("dump.log", false);
+            }
+            catch(IOException ex)
+            {
+                JMessage.showErrorMessage(this, "Error saving logfile!", ex);
+            }
+
+            JMessage.showErrorMessage(this, "Application Error!\nCheck dump.log for details!");
+        }
+
+        // actually not really needed if we are to invoke exit() next...
+        s_consolePane.destroyConsole();
+
+        // ...just to demonstrate the actual restore of stdout, stderr
+        System.out.println("Hello again from stdout");
+        System.err.println("Hello again from stderr");
+
+        if( m_realExit )
+        {
+            System.exit( code );
+        }
+        else
+        {
+            setVisible( false );
+            dispose();
+        }
+    }
+
+
+    /** This method is called from within the constructor to
+     * initialize the form.
+     * WARNING: Do NOT modify this code. The content of this method is
+     * always regenerated by the Form Editor.
+     */
+    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
+    private void initComponents() {
+
+        northPanel = new javax.swing.JPanel();
+        jPanel1 = new javax.swing.JPanel();
+        textField = new javax.swing.JTextField();
+        comboBox = new javax.swing.JComboBox();
+        submitButton = new javax.swing.JButton();
+        jLabel1 = new javax.swing.JLabel();
+        centerPanel = new javax.swing.JPanel();
+        southPanel = new javax.swing.JPanel();
+        helloButton = new javax.swing.JButton();
+        errorButton = new javax.swing.JButton();
+        exceptionButton = new javax.swing.JButton();
+        toggleButton = new javax.swing.JToggleButton();
+        showConsole = new javax.swing.JButton();
+        javax.swing.JMenuBar menuBar = new javax.swing.JMenuBar();
+        javax.swing.JMenu fileMenu = new javax.swing.JMenu();
+        javax.swing.JMenuItem consoleMenuItem = new javax.swing.JMenuItem();
+        javax.swing.JMenuItem errorExitMenuItem = new javax.swing.JMenuItem();
+        javax.swing.JMenuItem normalExitMenuItem = new javax.swing.JMenuItem();
+
+        setDefaultCloseOperation(javax.swing.WindowConstants.DO_NOTHING_ON_CLOSE);
+        setTitle("JConsolePaneTester");
+
+        northPanel.setLayout(new java.awt.BorderLayout());
+
+        textField.setText("Type something");
+        jPanel1.add(textField);
+
+        comboBox.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "One", "Two", "Three" }));
+        jPanel1.add(comboBox);
+
+        submitButton.setText("Submit");
+        submitButton.addActionListener(new java.awt.event.ActionListener() {
+            public void actionPerformed(java.awt.event.ActionEvent evt) {
+                submitButtonActionPerformed(evt);
+            }
+        });
+        jPanel1.add(submitButton);
+
+        northPanel.add(jPanel1, java.awt.BorderLayout.CENTER);
+
+        jLabel1.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
+        jLabel1.setText("This is a JConsole inside another JFrame!");
+        northPanel.add(jLabel1, java.awt.BorderLayout.SOUTH);
+
+        getContentPane().add(northPanel, java.awt.BorderLayout.NORTH);
+
+        centerPanel.setBorder(javax.swing.BorderFactory.createTitledBorder("JConsole"));
+        centerPanel.setLayout(new java.awt.BorderLayout());
+        getContentPane().add(centerPanel, java.awt.BorderLayout.CENTER);
+
+        helloButton.setText("Hello");
+        helloButton.addActionListener(new java.awt.event.ActionListener() {
+            public void actionPerformed(java.awt.event.ActionEvent evt) {
+                helloButtonActionPerformed(evt);
+            }
+        });
+        southPanel.add(helloButton);
+
+        errorButton.setText("Error");
+        errorButton.addActionListener(new java.awt.event.ActionListener() {
+            public void actionPerformed(java.awt.event.ActionEvent evt) {
+                errorButtonActionPerformed(evt);
+            }
+        });
+        southPanel.add(errorButton);
+
+        exceptionButton.setText("Exception");
+        exceptionButton.addActionListener(new java.awt.event.ActionListener() {
+            public void actionPerformed(java.awt.event.ActionEvent evt) {
+                exceptionButtonActionPerformed(evt);
+            }
+        });
+        southPanel.add(exceptionButton);
+
+        toggleButton.setText("Show/Hide Control Buttons");
+        toggleButton.addActionListener(new java.awt.event.ActionListener() {
+            public void actionPerformed(java.awt.event.ActionEvent evt) {
+                toggleButtonActionPerformed(evt);
+            }
+        });
+        southPanel.add(toggleButton);
+
+        showConsole.setText("Show Console");
+        showConsole.addActionListener(new java.awt.event.ActionListener() {
+            public void actionPerformed(java.awt.event.ActionEvent evt) {
+                showConsoleActionPerformed(evt);
+            }
+        });
+        southPanel.add(showConsole);
+
+        getContentPane().add(southPanel, java.awt.BorderLayout.SOUTH);
+
+        fileMenu.setText("File");
+
+        consoleMenuItem.setText("Show Console");
+        consoleMenuItem.addActionListener(new java.awt.event.ActionListener() {
+            public void actionPerformed(java.awt.event.ActionEvent evt) {
+                consoleMenuItemActionPerformed(evt);
+            }
+        });
+        fileMenu.add(consoleMenuItem);
+
+        errorExitMenuItem.setText("Exit with error code");
+        errorExitMenuItem.addActionListener(new java.awt.event.ActionListener() {
+            public void actionPerformed(java.awt.event.ActionEvent evt) {
+                errorExitMenuItemActionPerformed(evt);
+            }
+        });
+        fileMenu.add(errorExitMenuItem);
+
+        normalExitMenuItem.setText("Normal Exit");
+        normalExitMenuItem.addActionListener(new java.awt.event.ActionListener() {
+            public void actionPerformed(java.awt.event.ActionEvent evt) {
+                normalExitMenuItemActionPerformed(evt);
+            }
+        });
+        fileMenu.add(normalExitMenuItem);
+
+        menuBar.add(fileMenu);
+
+        setJMenuBar(menuBar);
+
+        setBounds(0, 0, 640, 480);
+    }// </editor-fold>//GEN-END:initComponents
+
+    private void normalExitMenuItemActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_normalExitMenuItemActionPerformed
+    {//GEN-HEADEREND:event_normalExitMenuItemActionPerformed
+
+        myExit( 0 );
+
+    }//GEN-LAST:event_normalExitMenuItemActionPerformed
+
+    private void errorExitMenuItemActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_errorExitMenuItemActionPerformed
+    {//GEN-HEADEREND:event_errorExitMenuItemActionPerformed
+
+        myExit( 1 );
+
+    }//GEN-LAST:event_errorExitMenuItemActionPerformed
+
+    private void consoleMenuItemActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_consoleMenuItemActionPerformed
+    {//GEN-HEADEREND:event_consoleMenuItemActionPerformed
+
+        // just like any other frame
+        s_consolePane.setVisible( true );
+
+    }//GEN-LAST:event_consoleMenuItemActionPerformed
+
+    private void showConsoleActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_showConsoleActionPerformed
+    {//GEN-HEADEREND:event_showConsoleActionPerformed
+
+        s_consolePane.showConsole();
+
+    }//GEN-LAST:event_showConsoleActionPerformed
+
+    private void toggleButtonActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_toggleButtonActionPerformed
+    {//GEN-HEADEREND:event_toggleButtonActionPerformed
+
+         if( toggleButton.isSelected() )
+         {
+             s_consolePane.showControlButtons();
+         }
+         else
+         {
+             s_consolePane.hideControlButtons();
+         }
+
+    }//GEN-LAST:event_toggleButtonActionPerformed
+
+    private void submitButtonActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_submitButtonActionPerformed
+    {//GEN-HEADEREND:event_submitButtonActionPerformed
+
+        System.out.println("comboBox=" + comboBox.getSelectedItem());
+        System.out.println("textField=" + textField.getText() );
+
+    }//GEN-LAST:event_submitButtonActionPerformed
+
+    private void exceptionButtonActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_exceptionButtonActionPerformed
+    {//GEN-HEADEREND:event_exceptionButtonActionPerformed
+
+        // fake an exception
+        String numS = "this is not a number!";
+
+        // this will raise an runtime exception
+        int num = Integer.parseInt( numS );
+
+        // actually never executed...
+        System.out.println("num=" + num);
+
+    }//GEN-LAST:event_exceptionButtonActionPerformed
+
+    private void errorButtonActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_errorButtonActionPerformed
+    {//GEN-HEADEREND:event_errorButtonActionPerformed
+
+        System.err.println("Hello new stderr!");
+
+    }//GEN-LAST:event_errorButtonActionPerformed
+
+    private void helloButtonActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_helloButtonActionPerformed
+    {//GEN-HEADEREND:event_helloButtonActionPerformed
+
+        System.out.println("Hello new stdout!");
+
+    }//GEN-LAST:event_helloButtonActionPerformed
+
+
+    /**
+     * setup our look and feel
+     */
+    private static void init_lnf()
+    {
+        try
+        {
+            UIManager.setLookAndFeel(
+                    UIManager.getSystemLookAndFeelClassName() );
+
+            // NOTE: since the JConsolePane is actually a singleton, if we use
+            // any LOOK & FEEL other than the default, we also need to invoke
+            // this method to update the console's lnf...
+            s_consolePane.updateLNF();
+        }
+        catch( Exception e )
+        {
+            System.err.println("Cannot initialize the look & feel");
+
+            e.printStackTrace();
+        }
+    }
+
+
+    /**
+     * configure and start the JConsole
+     */
+    private static void init_console()
+    {
+        // just to demonstrate we are about to redirect the streams...
+        System.out.println("Hello and goodbye from stdout");
+        System.err.println("Hello and goodbye from stderr");
+
+        s_consolePane.setBackgroundColor( Color.WHITE );
+        s_consolePane.setForegroundColor( Color.BLACK );
+        s_consolePane.setSelectedTextColor( Color.WHITE );
+        s_consolePane.setSelectionColor( Color.DARK_GRAY );
+
+        // if you want to modify the text/buttons/title/etc of JConsole,
+        // or force it to autosave and clear the console's messages
+        // you can do it here ... before starting the console!
+        s_consolePane.setAppendFirstTime( false );
+        s_consolePane.setAutoSave( true );
+
+        // clear the console messages (only the textarea) when maxchars are
+        // reached, because a lot of messages can slow down the textarea panel.
+        //s_consolePane.setMaxChars( 10 * 1024 );
+
+        // hide the control buttons, since we will display the console inside
+        // our frame
+        s_consolePane.hideControlButtons();
+
+        // finally start the console
+        s_consolePane.startConsole();
+
+        // demonstrate that our console is up and running...
+        System.out.println(
+                "This is the very first message logged to JConsole (stdout)");
+        System.err.println(
+                "This is the very first message logged to JConsole (stderr)");
+    }
+
+
+    /**
+     * @param args the command line arguments
+     */
+    public static void main(String args[])
+    {
+        init_lnf();
+
+        // since the actual console is only one (singleton), we might as well
+        // configure it here...
+        init_console();
+
+        java.awt.EventQueue.invokeLater(new Runnable()
+        {
+            public void run()
+            {
+                new JConsolePaneTester().setVisible(true);
+            }
+        });
+    }
+
+
+    // Variables declaration - do not modify//GEN-BEGIN:variables
+    private javax.swing.JPanel centerPanel;
+    private javax.swing.JComboBox comboBox;
+    private javax.swing.JButton errorButton;
+    private javax.swing.JButton exceptionButton;
+    private javax.swing.JButton helloButton;
+    private javax.swing.JLabel jLabel1;
+    private javax.swing.JPanel jPanel1;
+    private javax.swing.JPanel northPanel;
+    private javax.swing.JButton showConsole;
+    private javax.swing.JPanel southPanel;
+    private javax.swing.JButton submitButton;
+    private javax.swing.JTextField textField;
+    private javax.swing.JToggleButton toggleButton;
+    // End of variables declaration//GEN-END:variables
+
+}
diff --git a/src/gr/zeus/tests/JConsoleTester.form b/src/gr/zeus/tests/JConsoleTester.form
new file mode 100644
index 0000000..0e5190b
--- /dev/null
+++ b/src/gr/zeus/tests/JConsoleTester.form
@@ -0,0 +1,135 @@
+<?xml version="1.1" encoding="UTF-8" ?>
+
+<Form version="1.2" maxVersion="1.2" type="org.netbeans.modules.form.forminfo.JFrameFormInfo">
+  <NonVisualComponents>
+    <Menu class="javax.swing.JMenuBar" name="menuBar">
+      <AuxValues>
+        <AuxValue name="JavaCodeGenerator_VariableLocal" type="java.lang.Boolean" value="true"/>
+        <AuxValue name="JavaCodeGenerator_VariableModifier" type="java.lang.Integer" value="0"/>
+      </AuxValues>
+      <SubComponents>
+        <Menu class="javax.swing.JMenu" name="fileMenu">
+          <Properties>
+            <Property name="text" type="java.lang.String" value="File"/>
+          </Properties>
+          <AuxValues>
+            <AuxValue name="JavaCodeGenerator_VariableLocal" type="java.lang.Boolean" value="true"/>
+            <AuxValue name="JavaCodeGenerator_VariableModifier" type="java.lang.Integer" value="0"/>
+          </AuxValues>
+          <SubComponents>
+            <MenuItem class="javax.swing.JMenuItem" name="consoleMenuItem">
+              <Properties>
+                <Property name="text" type="java.lang.String" value="Show Console"/>
+              </Properties>
+              <Events>
+                <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="consoleMenuItemActionPerformed"/>
+              </Events>
+              <AuxValues>
+                <AuxValue name="JavaCodeGenerator_VariableLocal" type="java.lang.Boolean" value="true"/>
+                <AuxValue name="JavaCodeGenerator_VariableModifier" type="java.lang.Integer" value="0"/>
+              </AuxValues>
+            </MenuItem>
+            <MenuItem class="javax.swing.JMenuItem" name="errorExitMenuItem">
+              <Properties>
+                <Property name="text" type="java.lang.String" value="Exit with error code"/>
+              </Properties>
+              <Events>
+                <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="errorExitMenuItemActionPerformed"/>
+              </Events>
+              <AuxValues>
+                <AuxValue name="JavaCodeGenerator_VariableLocal" type="java.lang.Boolean" value="true"/>
+                <AuxValue name="JavaCodeGenerator_VariableModifier" type="java.lang.Integer" value="0"/>
+              </AuxValues>
+            </MenuItem>
+            <MenuItem class="javax.swing.JMenuItem" name="normalExitMenuItem">
+              <Properties>
+                <Property name="text" type="java.lang.String" value="Normal Exit"/>
+              </Properties>
+              <Events>
+                <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="normalExitMenuItemActionPerformed"/>
+              </Events>
+              <AuxValues>
+                <AuxValue name="JavaCodeGenerator_VariableLocal" type="java.lang.Boolean" value="true"/>
+                <AuxValue name="JavaCodeGenerator_VariableModifier" type="java.lang.Integer" value="0"/>
+              </AuxValues>
+            </MenuItem>
+          </SubComponents>
+        </Menu>
+      </SubComponents>
+    </Menu>
+  </NonVisualComponents>
+  <Properties>
+    <Property name="defaultCloseOperation" type="int" value="0"/>
+    <Property name="title" type="java.lang.String" value="Sample Application to demonstrate JConsole"/>
+  </Properties>
+  <SyntheticProperties>
+    <SyntheticProperty name="menuBar" type="java.lang.String" value="menuBar"/>
+    <SyntheticProperty name="formSizePolicy" type="int" value="1"/>
+  </SyntheticProperties>
+  <AuxValues>
+    <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/>
+    <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
+    <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
+    <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
+    <AuxValue name="designerSize" type="java.awt.Dimension" value="-84,-19,0,5,115,114,0,18,106,97,118,97,46,97,119,116,46,68,105,109,101,110,115,105,111,110,65,-114,-39,-41,-84,95,68,20,2,0,2,73,0,6,104,101,105,103,104,116,73,0,5,119,105,100,116,104,120,112,0,0,0,-125,0,0,1,8"/>
+  </AuxValues>
+
+  <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/>
+  <SubComponents>
+    <Container class="javax.swing.JPanel" name="panel1">
+      <AuxValues>
+        <AuxValue name="JavaCodeGenerator_VariableLocal" type="java.lang.Boolean" value="true"/>
+        <AuxValue name="JavaCodeGenerator_VariableModifier" type="java.lang.Integer" value="0"/>
+      </AuxValues>
+      <Constraints>
+        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription">
+          <BorderConstraints direction="South"/>
+        </Constraint>
+      </Constraints>
+
+      <Layout class="org.netbeans.modules.form.compat2.layouts.DesignFlowLayout"/>
+      <SubComponents>
+        <Component class="javax.swing.JButton" name="helloButton">
+          <Properties>
+            <Property name="text" type="java.lang.String" value="hello"/>
+          </Properties>
+          <Events>
+            <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="helloButtonActionPerformed"/>
+          </Events>
+          <AuxValues>
+            <AuxValue name="JavaCodeGenerator_VariableLocal" type="java.lang.Boolean" value="true"/>
+            <AuxValue name="JavaCodeGenerator_VariableModifier" type="java.lang.Integer" value="0"/>
+          </AuxValues>
+        </Component>
+        <Component class="javax.swing.JButton" name="errorButton">
+          <Properties>
+            <Property name="text" type="java.lang.String" value="error"/>
+          </Properties>
+          <Events>
+            <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="errorButtonActionPerformed"/>
+          </Events>
+          <AuxValues>
+            <AuxValue name="JavaCodeGenerator_VariableLocal" type="java.lang.Boolean" value="true"/>
+            <AuxValue name="JavaCodeGenerator_VariableModifier" type="java.lang.Integer" value="0"/>
+          </AuxValues>
+        </Component>
+        <Component class="javax.swing.JButton" name="exceptionButton">
+          <Properties>
+            <Property name="text" type="java.lang.String" value="exception"/>
+          </Properties>
+          <Events>
+            <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="exceptionButtonActionPerformed"/>
+          </Events>
+          <AuxValues>
+            <AuxValue name="JavaCodeGenerator_VariableLocal" type="java.lang.Boolean" value="true"/>
+            <AuxValue name="JavaCodeGenerator_VariableModifier" type="java.lang.Integer" value="0"/>
+          </AuxValues>
+        </Component>
+      </SubComponents>
+    </Container>
+  </SubComponents>
+</Form>
diff --git a/src/gr/zeus/tests/JConsoleTester.java b/src/gr/zeus/tests/JConsoleTester.java
new file mode 100644
index 0000000..b46df09
--- /dev/null
+++ b/src/gr/zeus/tests/JConsoleTester.java
@@ -0,0 +1,315 @@
+/*
+ * JConsoleTester.java - Test application for JConsole
+ *
+ * Copyright (c) 2004-2011 Gregory Kotsaftis
+ * gregkotsaftis at yahoo.com
+ * http://zeus-jscl.sourceforge.net/
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+package gr.zeus.tests;
+
+import gr.zeus.ui.JConsole;
+import gr.zeus.ui.JMessage;
+import gr.zeus.util.GUIUtils;
+import java.io.IOException;
+import javax.swing.JFrame;
+import javax.swing.UIManager;
+
+public class JConsoleTester extends JFrame {
+
+    // an new frame containing the console
+    private JConsole m_consoleFrame = new JConsole();
+
+    private boolean m_realExit = true;
+
+
+    public JConsoleTester()
+    {
+        initComponents();
+
+        GUIUtils.centerOnScreen( this );
+    }
+
+
+    /**
+     * Just to be able to use the JTester which is a wrapper for all
+     * the demos. If we use the JTester we also setExitMode( false ),
+     * else the default is for each individual test to System.exit()
+     * by it's own...
+     */
+    public void setExitMode(boolean exit)
+    {
+        m_realExit = exit;
+    }
+
+
+    /**
+     * provide our own exit() method in order to be able to
+     * save the trace file when our application aborts it's normal
+     * execution and we don't have the time to see the JConsole for
+     * error details...
+     */
+    private void myExit(int code)
+    {
+        if( code!=0 )
+        {
+            // dump all messages printed to a new logfile if you wish!
+            try
+            {
+                JConsole.getConsole().dumpConsole("dump.log", false);
+            }
+            catch(IOException ex)
+            {
+                JMessage.showErrorMessage(this, "Error saving logfile!", ex);
+            }
+
+            JMessage.showErrorMessage(this, "Application Error!\nCheck dump.log for details!");
+
+        }
+
+        // actually not really needed if we are to invoke exit() next...
+        JConsole.getConsole().destroyConsole();
+
+        // ...just to demonstrate the actual restore of stdout, stderr
+        System.out.println("Hello again from stdout");
+        System.err.println("Hello again from stderr");
+
+        if( m_realExit )
+        {
+            System.exit( code );
+        }
+        else
+        {
+            setVisible( false );
+            dispose();
+        }
+    }
+
+
+    /** This method is called from within the constructor to
+     * initialize the form.
+     * WARNING: Do NOT modify this code. The content of this method is
+     * always regenerated by the Form Editor.
+     */
+    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
+    private void initComponents()
+    {
+
+        javax.swing.JPanel panel1 = new javax.swing.JPanel();
+        javax.swing.JButton helloButton = new javax.swing.JButton();
+        javax.swing.JButton errorButton = new javax.swing.JButton();
+        javax.swing.JButton exceptionButton = new javax.swing.JButton();
+        javax.swing.JMenuBar menuBar = new javax.swing.JMenuBar();
+        javax.swing.JMenu fileMenu = new javax.swing.JMenu();
+        javax.swing.JMenuItem consoleMenuItem = new javax.swing.JMenuItem();
+        javax.swing.JMenuItem errorExitMenuItem = new javax.swing.JMenuItem();
+        javax.swing.JMenuItem normalExitMenuItem = new javax.swing.JMenuItem();
+
+        setDefaultCloseOperation(javax.swing.WindowConstants.DO_NOTHING_ON_CLOSE);
+        setTitle("Sample Application to demonstrate JConsole");
+
+        helloButton.setText("hello");
+        helloButton.addActionListener(new java.awt.event.ActionListener()
+        {
+            public void actionPerformed(java.awt.event.ActionEvent evt)
+            {
+                helloButtonActionPerformed(evt);
+            }
+        });
+        panel1.add(helloButton);
+
+        errorButton.setText("error");
+        errorButton.addActionListener(new java.awt.event.ActionListener()
+        {
+            public void actionPerformed(java.awt.event.ActionEvent evt)
+            {
+                errorButtonActionPerformed(evt);
+            }
+        });
+        panel1.add(errorButton);
+
+        exceptionButton.setText("exception");
+        exceptionButton.addActionListener(new java.awt.event.ActionListener()
+        {
+            public void actionPerformed(java.awt.event.ActionEvent evt)
+            {
+                exceptionButtonActionPerformed(evt);
+            }
+        });
+        panel1.add(exceptionButton);
+
+        getContentPane().add(panel1, java.awt.BorderLayout.SOUTH);
+
+        fileMenu.setText("File");
+
+        consoleMenuItem.setText("Show Console");
+        consoleMenuItem.addActionListener(new java.awt.event.ActionListener()
+        {
+            public void actionPerformed(java.awt.event.ActionEvent evt)
+            {
+                consoleMenuItemActionPerformed(evt);
+            }
+        });
+        fileMenu.add(consoleMenuItem);
+
+        errorExitMenuItem.setText("Exit with error code");
+        errorExitMenuItem.addActionListener(new java.awt.event.ActionListener()
+        {
+            public void actionPerformed(java.awt.event.ActionEvent evt)
+            {
+                errorExitMenuItemActionPerformed(evt);
+            }
+        });
+        fileMenu.add(errorExitMenuItem);
+
+        normalExitMenuItem.setText("Normal Exit");
+        normalExitMenuItem.addActionListener(new java.awt.event.ActionListener()
+        {
+            public void actionPerformed(java.awt.event.ActionEvent evt)
+            {
+                normalExitMenuItemActionPerformed(evt);
+            }
+        });
+        fileMenu.add(normalExitMenuItem);
+
+        menuBar.add(fileMenu);
+
+        setJMenuBar(menuBar);
+
+        pack();
+    }// </editor-fold>//GEN-END:initComponents
+
+    private void exceptionButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_exceptionButtonActionPerformed
+
+        // fake an exception
+        String numS = "this is not a number!";
+
+        // this will raise an runtime exception
+        int num = Integer.parseInt( numS );
+
+        // actually never executed...
+        System.out.println("num=" + num);
+
+    }//GEN-LAST:event_exceptionButtonActionPerformed
+
+    private void errorButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_errorButtonActionPerformed
+
+        System.err.println("Hello new stderr!");
+
+    }//GEN-LAST:event_errorButtonActionPerformed
+
+    private void helloButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_helloButtonActionPerformed
+
+        System.out.println("Hello new stdout!");
+
+    }//GEN-LAST:event_helloButtonActionPerformed
+
+    private void normalExitMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_normalExitMenuItemActionPerformed
+
+        myExit( 0 );
+
+    }//GEN-LAST:event_normalExitMenuItemActionPerformed
+
+    private void errorExitMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_errorExitMenuItemActionPerformed
+
+        myExit( 1 );
+
+    }//GEN-LAST:event_errorExitMenuItemActionPerformed
+
+    private void consoleMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_consoleMenuItemActionPerformed
+
+        // just like any other frame
+        m_consoleFrame.setVisible( true );
+
+    }//GEN-LAST:event_consoleMenuItemActionPerformed
+
+
+    /**
+     * configure and start the JConsole
+     */
+    private static void init_console()
+    {
+        // just to demonstrate we are about to redirect the streams...
+        System.out.println("Hello and goodbye from stdout");
+        System.err.println("Hello and goodbye from stderr");
+
+        // if you want to modify the text/buttons/title/etc of JConsole,
+        // or force it to autosave and clear the console's messages
+        // you can do it here ... before starting the console!
+        JConsole.getConsole().setAppendFirstTime( false );
+        JConsole.getConsole().setAutoSave( true );
+
+        // clear the console messages (only the textarea) when maxchars are
+        // reached, because a lot of messages can slow down the textarea panel.
+        //s_console.setMaxChars( 10 * 1024 );
+
+        // finally start the console
+        JConsole.getConsole().startConsole();
+
+        // demonstrate that our console is up and running...
+        System.out.println(
+                "This is the very first message logged to JConsole (stdout)");
+        System.err.println(
+                "This is the very first message logged to JConsole (stderr)");
+    }
+
+
+    /**
+     * setup our look and feel
+     */
+    private static void init_lnf()
+    {
+        try
+        {
+            UIManager.setLookAndFeel(
+                    UIManager.getSystemLookAndFeelClassName() );
+
+            // NOTE: since the JConsole is actually a singleton, if we use
+            // any LOOK & FEEL other than the default, we also need to invoke
+            // this method to update the console's lnf...
+            JConsole.getConsole().updateLNF();
+        }
+        catch( Exception e )
+        {
+            System.err.println("Cannot initialize the look & feel");
+            e.printStackTrace();
+        }
+    }
+
+
+    /**
+     * @param args the command line arguments
+     */
+    public static void main(String args[])
+    {
+        init_lnf();
+
+        // since the actual console is only one (singleton), we might as well
+        // configure it here...
+        init_console();
+
+        java.awt.EventQueue.invokeLater(new Runnable() {
+            public void run() {
+                new JConsoleTester().setVisible(true);
+            }
+        });
+    }
+
+
+    // Variables declaration - do not modify//GEN-BEGIN:variables
+    // End of variables declaration//GEN-END:variables
+
+}
diff --git a/src/gr/zeus/tests/JDesktopTester.form b/src/gr/zeus/tests/JDesktopTester.form
new file mode 100644
index 0000000..ea5ac5c
--- /dev/null
+++ b/src/gr/zeus/tests/JDesktopTester.form
@@ -0,0 +1,376 @@
+<?xml version="1.1" encoding="UTF-8" ?>
+
+<Form version="1.2" maxVersion="1.2" type="org.netbeans.modules.form.forminfo.JFrameFormInfo">
+  <NonVisualComponents>
+    <Menu class="javax.swing.JMenuBar" name="menuBar">
+      <AuxValues>
+        <AuxValue name="JavaCodeGenerator_VariableLocal" type="java.lang.Boolean" value="true"/>
+        <AuxValue name="JavaCodeGenerator_VariableModifier" type="java.lang.Integer" value="0"/>
+      </AuxValues>
+      <SubComponents>
+        <Menu class="javax.swing.JMenu" name="fileMenu">
+          <Properties>
+            <Property name="text" type="java.lang.String" value="File"/>
+          </Properties>
+          <AuxValues>
+            <AuxValue name="JavaCodeGenerator_VariableLocal" type="java.lang.Boolean" value="true"/>
+            <AuxValue name="JavaCodeGenerator_VariableModifier" type="java.lang.Integer" value="0"/>
+          </AuxValues>
+          <SubComponents>
+            <MenuItem class="javax.swing.JMenuItem" name="newJInternalFrameMenuItem">
+              <Properties>
+                <Property name="text" type="java.lang.String" value="Open"/>
+              </Properties>
+              <Events>
+                <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="newJInternalFrameMenuItemActionPerformed"/>
+              </Events>
+              <AuxValues>
+                <AuxValue name="JavaCodeGenerator_VariableLocal" type="java.lang.Boolean" value="true"/>
+                <AuxValue name="JavaCodeGenerator_VariableModifier" type="java.lang.Integer" value="0"/>
+              </AuxValues>
+            </MenuItem>
+            <MenuItem class="javax.swing.JMenuItem" name="countFramesMenuItem">
+              <Properties>
+                <Property name="text" type="java.lang.String" value="Count Frames"/>
+              </Properties>
+              <Events>
+                <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="countFramesMenuItemActionPerformed"/>
+              </Events>
+              <AuxValues>
+                <AuxValue name="JavaCodeGenerator_VariableLocal" type="java.lang.Boolean" value="true"/>
+                <AuxValue name="JavaCodeGenerator_VariableModifier" type="java.lang.Integer" value="0"/>
+              </AuxValues>
+            </MenuItem>
+            <MenuItem class="javax.swing.JMenuItem" name="showConsoleMenuItem">
+              <Properties>
+                <Property name="text" type="java.lang.String" value="Show Console"/>
+              </Properties>
+              <Events>
+                <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="showConsoleMenuItemActionPerformed"/>
+              </Events>
+            </MenuItem>
+            <MenuItem class="javax.swing.JMenuItem" name="exitMenuItem">
+              <Properties>
+                <Property name="text" type="java.lang.String" value="Exit"/>
+              </Properties>
+              <Events>
+                <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="exitMenuItemActionPerformed"/>
+              </Events>
+              <AuxValues>
+                <AuxValue name="JavaCodeGenerator_VariableLocal" type="java.lang.Boolean" value="true"/>
+                <AuxValue name="JavaCodeGenerator_VariableModifier" type="java.lang.Integer" value="0"/>
+              </AuxValues>
+            </MenuItem>
+          </SubComponents>
+        </Menu>
+        <Menu class="javax.swing.JMenu" name="m_windowMenu">
+          <Properties>
+            <Property name="text" type="java.lang.String" value="Window"/>
+          </Properties>
+          <SubComponents>
+            <MenuItem class="javax.swing.JCheckBoxMenuItem" name="m_outlineDragModeMenuItem">
+              <Properties>
+                <Property name="text" type="java.lang.String" value="Outline Drag Mode"/>
+              </Properties>
+              <Events>
+                <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="m_outlineDragModeMenuItemActionPerformed"/>
+              </Events>
+            </MenuItem>
+            <MenuItem class="javax.swing.JCheckBoxMenuItem" name="m_deiconifiablePolicyMenuItem">
+              <Properties>
+                <Property name="text" type="java.lang.String" value="De-iconify during cascade / tile"/>
+              </Properties>
+              <Events>
+                <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="m_deiconifiablePolicyMenuItemActionPerformed"/>
+              </Events>
+            </MenuItem>
+            <MenuItem class="javax.swing.JCheckBoxMenuItem" name="autoPositionMenuItem">
+              <Properties>
+                <Property name="text" type="java.lang.String" value="Auto Position Frames"/>
+              </Properties>
+              <Events>
+                <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="autoPositionMenuItemActionPerformed"/>
+              </Events>
+            </MenuItem>
+            <MenuItem class="javax.swing.JCheckBoxMenuItem" name="m_closePolicyMenuItem">
+              <Properties>
+                <Property name="text" type="java.lang.String" value="Default Close Operation vs Close"/>
+              </Properties>
+              <Events>
+                <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="m_closePolicyMenuItemActionPerformed"/>
+              </Events>
+            </MenuItem>
+            <MenuItem class="javax.swing.JSeparator" name="jSeparator1">
+              <AuxValues>
+                <AuxValue name="JavaCodeGenerator_VariableLocal" type="java.lang.Boolean" value="true"/>
+                <AuxValue name="JavaCodeGenerator_VariableModifier" type="java.lang.Integer" value="0"/>
+              </AuxValues>
+            </MenuItem>
+            <MenuItem class="javax.swing.JMenuItem" name="cascadeMenuItem">
+              <Properties>
+                <Property name="text" type="java.lang.String" value="Cascade"/>
+              </Properties>
+              <Events>
+                <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="cascadeMenuItemActionPerformed"/>
+              </Events>
+              <AuxValues>
+                <AuxValue name="JavaCodeGenerator_VariableLocal" type="java.lang.Boolean" value="true"/>
+                <AuxValue name="JavaCodeGenerator_VariableModifier" type="java.lang.Integer" value="0"/>
+              </AuxValues>
+            </MenuItem>
+            <MenuItem class="javax.swing.JMenuItem" name="tileHMenuItem">
+              <Properties>
+                <Property name="text" type="java.lang.String" value="Tile Horizontal"/>
+              </Properties>
+              <Events>
+                <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="tileHMenuItemActionPerformed"/>
+              </Events>
+              <AuxValues>
+                <AuxValue name="JavaCodeGenerator_VariableLocal" type="java.lang.Boolean" value="true"/>
+                <AuxValue name="JavaCodeGenerator_VariableModifier" type="java.lang.Integer" value="0"/>
+              </AuxValues>
+            </MenuItem>
+            <MenuItem class="javax.swing.JMenuItem" name="tileVMenuItem">
+              <Properties>
+                <Property name="text" type="java.lang.String" value="Tile Vertical"/>
+              </Properties>
+              <Events>
+                <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="tileVMenuItemActionPerformed"/>
+              </Events>
+              <AuxValues>
+                <AuxValue name="JavaCodeGenerator_VariableLocal" type="java.lang.Boolean" value="true"/>
+                <AuxValue name="JavaCodeGenerator_VariableModifier" type="java.lang.Integer" value="0"/>
+              </AuxValues>
+            </MenuItem>
+            <MenuItem class="javax.swing.JMenuItem" name="tileMenuItem">
+              <Properties>
+                <Property name="text" type="java.lang.String" value="Tile"/>
+              </Properties>
+              <Events>
+                <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="tileMenuItemActionPerformed"/>
+              </Events>
+              <AuxValues>
+                <AuxValue name="JavaCodeGenerator_VariableLocal" type="java.lang.Boolean" value="true"/>
+                <AuxValue name="JavaCodeGenerator_VariableModifier" type="java.lang.Integer" value="0"/>
+              </AuxValues>
+            </MenuItem>
+            <MenuItem class="javax.swing.JMenuItem" name="nextMenuItem">
+              <Properties>
+                <Property name="text" type="java.lang.String" value="Next Window"/>
+              </Properties>
+              <Events>
+                <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="nextMenuItemActionPerformed"/>
+              </Events>
+              <AuxValues>
+                <AuxValue name="JavaCodeGenerator_VariableLocal" type="java.lang.Boolean" value="true"/>
+                <AuxValue name="JavaCodeGenerator_VariableModifier" type="java.lang.Integer" value="0"/>
+              </AuxValues>
+            </MenuItem>
+            <MenuItem class="javax.swing.JMenuItem" name="previousMenuItem">
+              <Properties>
+                <Property name="text" type="java.lang.String" value="Previous Window"/>
+              </Properties>
+              <Events>
+                <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="previousMenuItemActionPerformed"/>
+              </Events>
+              <AuxValues>
+                <AuxValue name="JavaCodeGenerator_VariableLocal" type="java.lang.Boolean" value="true"/>
+                <AuxValue name="JavaCodeGenerator_VariableModifier" type="java.lang.Integer" value="0"/>
+              </AuxValues>
+            </MenuItem>
+            <MenuItem class="javax.swing.JSeparator" name="jSeparator2">
+              <AuxValues>
+                <AuxValue name="JavaCodeGenerator_VariableLocal" type="java.lang.Boolean" value="true"/>
+                <AuxValue name="JavaCodeGenerator_VariableModifier" type="java.lang.Integer" value="0"/>
+              </AuxValues>
+            </MenuItem>
+            <MenuItem class="javax.swing.JMenuItem" name="minimizeMenuItem">
+              <Properties>
+                <Property name="text" type="java.lang.String" value="Minimize"/>
+              </Properties>
+              <Events>
+                <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="minimizeMenuItemActionPerformed"/>
+              </Events>
+              <AuxValues>
+                <AuxValue name="JavaCodeGenerator_VariableLocal" type="java.lang.Boolean" value="true"/>
+                <AuxValue name="JavaCodeGenerator_VariableModifier" type="java.lang.Integer" value="0"/>
+              </AuxValues>
+            </MenuItem>
+            <MenuItem class="javax.swing.JMenuItem" name="minimizeAllMenuItem">
+              <Properties>
+                <Property name="text" type="java.lang.String" value="Minimize All"/>
+              </Properties>
+              <Events>
+                <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="minimizeAllMenuItemActionPerformed"/>
+              </Events>
+              <AuxValues>
+                <AuxValue name="JavaCodeGenerator_VariableLocal" type="java.lang.Boolean" value="true"/>
+                <AuxValue name="JavaCodeGenerator_VariableModifier" type="java.lang.Integer" value="0"/>
+              </AuxValues>
+            </MenuItem>
+            <MenuItem class="javax.swing.JMenuItem" name="restoreMenuItem">
+              <Properties>
+                <Property name="text" type="java.lang.String" value="Restore"/>
+              </Properties>
+              <Events>
+                <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="restoreMenuItemActionPerformed"/>
+              </Events>
+              <AuxValues>
+                <AuxValue name="JavaCodeGenerator_VariableLocal" type="java.lang.Boolean" value="true"/>
+                <AuxValue name="JavaCodeGenerator_VariableModifier" type="java.lang.Integer" value="0"/>
+              </AuxValues>
+            </MenuItem>
+            <MenuItem class="javax.swing.JMenuItem" name="restoreAllMenuItem">
+              <Properties>
+                <Property name="text" type="java.lang.String" value="Restore All"/>
+              </Properties>
+              <Events>
+                <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="restoreAllMenuItemActionPerformed"/>
+              </Events>
+              <AuxValues>
+                <AuxValue name="JavaCodeGenerator_VariableLocal" type="java.lang.Boolean" value="true"/>
+                <AuxValue name="JavaCodeGenerator_VariableModifier" type="java.lang.Integer" value="0"/>
+              </AuxValues>
+            </MenuItem>
+            <MenuItem class="javax.swing.JMenuItem" name="maximizeMenuItem">
+              <Properties>
+                <Property name="text" type="java.lang.String" value="Maximize"/>
+              </Properties>
+              <Events>
+                <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="maximizeMenuItemActionPerformed"/>
+              </Events>
+              <AuxValues>
+                <AuxValue name="JavaCodeGenerator_VariableLocal" type="java.lang.Boolean" value="true"/>
+                <AuxValue name="JavaCodeGenerator_VariableModifier" type="java.lang.Integer" value="0"/>
+              </AuxValues>
+            </MenuItem>
+            <MenuItem class="javax.swing.JMenuItem" name="maximizeAllMenuItem">
+              <Properties>
+                <Property name="text" type="java.lang.String" value="Maximize All"/>
+              </Properties>
+              <Events>
+                <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="maximizeAllMenuItemActionPerformed"/>
+              </Events>
+              <AuxValues>
+                <AuxValue name="JavaCodeGenerator_VariableLocal" type="java.lang.Boolean" value="true"/>
+                <AuxValue name="JavaCodeGenerator_VariableModifier" type="java.lang.Integer" value="0"/>
+              </AuxValues>
+            </MenuItem>
+            <MenuItem class="javax.swing.JMenuItem" name="resetMenuItem">
+              <Properties>
+                <Property name="text" type="java.lang.String" value="Reset Window"/>
+              </Properties>
+              <Events>
+                <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="resetMenuItemActionPerformed"/>
+              </Events>
+              <AuxValues>
+                <AuxValue name="JavaCodeGenerator_VariableLocal" type="java.lang.Boolean" value="true"/>
+                <AuxValue name="JavaCodeGenerator_VariableModifier" type="java.lang.Integer" value="0"/>
+              </AuxValues>
+            </MenuItem>
+            <MenuItem class="javax.swing.JMenuItem" name="resetAllMenuItem">
+              <Properties>
+                <Property name="text" type="java.lang.String" value="Reset All Windows"/>
+              </Properties>
+              <Events>
+                <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="resetAllMenuItemActionPerformed"/>
+              </Events>
+              <AuxValues>
+                <AuxValue name="JavaCodeGenerator_VariableLocal" type="java.lang.Boolean" value="true"/>
+                <AuxValue name="JavaCodeGenerator_VariableModifier" type="java.lang.Integer" value="0"/>
+              </AuxValues>
+            </MenuItem>
+            <MenuItem class="javax.swing.JSeparator" name="jSeparator3">
+              <AuxValues>
+                <AuxValue name="JavaCodeGenerator_VariableLocal" type="java.lang.Boolean" value="true"/>
+                <AuxValue name="JavaCodeGenerator_VariableModifier" type="java.lang.Integer" value="0"/>
+              </AuxValues>
+            </MenuItem>
+            <MenuItem class="javax.swing.JMenuItem" name="hideMenuItem">
+              <Properties>
+                <Property name="text" type="java.lang.String" value="Hide"/>
+              </Properties>
+              <Events>
+                <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="hideMenuItemActionPerformed"/>
+              </Events>
+              <AuxValues>
+                <AuxValue name="JavaCodeGenerator_VariableLocal" type="java.lang.Boolean" value="true"/>
+                <AuxValue name="JavaCodeGenerator_VariableModifier" type="java.lang.Integer" value="0"/>
+              </AuxValues>
+            </MenuItem>
+            <MenuItem class="javax.swing.JMenuItem" name="hideAllMenuItem">
+              <Properties>
+                <Property name="text" type="java.lang.String" value="Hide All"/>
+              </Properties>
+              <Events>
+                <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="hideAllMenuItemActionPerformed"/>
+              </Events>
+              <AuxValues>
+                <AuxValue name="JavaCodeGenerator_VariableLocal" type="java.lang.Boolean" value="true"/>
+                <AuxValue name="JavaCodeGenerator_VariableModifier" type="java.lang.Integer" value="0"/>
+              </AuxValues>
+            </MenuItem>
+            <MenuItem class="javax.swing.JMenuItem" name="closeMenuItem">
+              <Properties>
+                <Property name="text" type="java.lang.String" value="Close"/>
+              </Properties>
+              <Events>
+                <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="closeMenuItemActionPerformed"/>
+              </Events>
+              <AuxValues>
+                <AuxValue name="JavaCodeGenerator_VariableLocal" type="java.lang.Boolean" value="true"/>
+                <AuxValue name="JavaCodeGenerator_VariableModifier" type="java.lang.Integer" value="0"/>
+              </AuxValues>
+            </MenuItem>
+            <MenuItem class="javax.swing.JMenuItem" name="closeAllMenuItem">
+              <Properties>
+                <Property name="text" type="java.lang.String" value="Close All"/>
+              </Properties>
+              <Events>
+                <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="closeAllMenuItemActionPerformed"/>
+              </Events>
+              <AuxValues>
+                <AuxValue name="JavaCodeGenerator_VariableLocal" type="java.lang.Boolean" value="true"/>
+                <AuxValue name="JavaCodeGenerator_VariableModifier" type="java.lang.Integer" value="0"/>
+              </AuxValues>
+            </MenuItem>
+          </SubComponents>
+        </Menu>
+      </SubComponents>
+    </Menu>
+  </NonVisualComponents>
+  <Properties>
+    <Property name="defaultCloseOperation" type="int" value="3"/>
+    <Property name="title" type="java.lang.String" value="WindowManager Tester"/>
+  </Properties>
+  <SyntheticProperties>
+    <SyntheticProperty name="menuBar" type="java.lang.String" value="menuBar"/>
+    <SyntheticProperty name="formSize" type="java.awt.Dimension" value="-84,-19,0,5,115,114,0,18,106,97,118,97,46,97,119,116,46,68,105,109,101,110,115,105,111,110,65,-114,-39,-41,-84,95,68,20,2,0,2,73,0,6,104,101,105,103,104,116,73,0,5,119,105,100,116,104,120,112,0,0,2,88,0,0,3,32"/>
+    <SyntheticProperty name="formSizePolicy" type="int" value="0"/>
+    <SyntheticProperty name="generateSize" type="boolean" value="true"/>
+    <SyntheticProperty name="generateCenter" type="boolean" value="true"/>
+  </SyntheticProperties>
+  <AuxValues>
+    <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/>
+    <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
+    <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
+    <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
+  </AuxValues>
+
+  <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/>
+  <SubComponents>
+    <Container class="javax.swing.JDesktopPane" name="m_desktopPane">
+      <Constraints>
+        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription">
+          <BorderConstraints direction="Center"/>
+        </Constraint>
+      </Constraints>
+
+      <Layout class="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout"/>
+    </Container>
+  </SubComponents>
+</Form>
diff --git a/src/gr/zeus/tests/JDesktopTester.java b/src/gr/zeus/tests/JDesktopTester.java
new file mode 100644
index 0000000..00889b9
--- /dev/null
+++ b/src/gr/zeus/tests/JDesktopTester.java
@@ -0,0 +1,693 @@
+/*
+ * JDesktopTester.java - Test application for WindowManager
+ *
+ * Copyright (c) 2004-2011 Gregory Kotsaftis
+ * gregkotsaftis at yahoo.com
+ * http://zeus-jscl.sourceforge.net/
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+package gr.zeus.tests;
+
+import gr.zeus.ui.JIConsole;
+import gr.zeus.ui.mdi.WindowManager;
+import gr.zeus.util.GUIUtils;
+import java.awt.Color;
+import java.awt.Dimension;
+import javax.swing.JFrame;
+import javax.swing.JInternalFrame;
+import javax.swing.JLabel;
+import javax.swing.JLayeredPane;
+import javax.swing.JOptionPane;
+import javax.swing.UIManager;
+
+public class JDesktopTester extends javax.swing.JFrame {
+
+    // an internal frame containing the console
+    private JIConsole m_consoleInternalFrame = new JIConsole();
+
+    private WindowManager m_windowManager = null;
+
+
+    public JDesktopTester()
+    {
+        initComponents();
+
+        // same as any other internal frame, add it to the desktop
+        m_consoleInternalFrame.setPreferredSize( new Dimension(400, 400) );
+        m_consoleInternalFrame.setBounds(50, 50, 450, 450);
+        //m_consoleInternalFrame.setTitle( "Debug Window");
+        m_consoleInternalFrame.setVisible( true );
+        m_desktopPane.add(m_consoleInternalFrame, JLayeredPane.DEFAULT_LAYER);
+
+        init_console();
+
+        // open some frames BEFORE we attach our window manager, to prove
+        // we can handle even those frames...
+        JInternalFrame jif1 = new JInternalFrame();
+        jif1.setTitle( null );
+        jif1.getContentPane().add(new JLabel("null title"));
+        jif1.setResizable( true );
+        jif1.setMaximizable( true );
+        jif1.setClosable( true );
+        jif1.setIconifiable( true );
+        jif1.setDefaultCloseOperation( JInternalFrame.DISPOSE_ON_CLOSE );
+        jif1.setPreferredSize( new Dimension(200, 200) );
+        jif1.setBounds(0, 0, 200, 200);
+        jif1.setVisible( true );
+        m_desktopPane.add(jif1, JLayeredPane.DEFAULT_LAYER);
+
+        JInternalFrame jif2 = new JInternalFrame();
+        jif2.setTitle( "" );
+        jif2.getContentPane().add(new JLabel("empty title"));
+        jif2.setResizable( true );
+        jif2.setMaximizable( true );
+        jif2.setClosable( true );
+        jif2.setIconifiable( true );
+        jif2.setDefaultCloseOperation( JInternalFrame.HIDE_ON_CLOSE );
+        jif2.setPreferredSize( new Dimension(200, 200) );
+        jif2.setBounds(20, 20, 220, 220);
+        jif2.setVisible( true );
+        m_desktopPane.add(jif2, JLayeredPane.DEFAULT_LAYER);
+
+        // attach our window manager
+        m_windowManager = new WindowManager(m_desktopPane, m_windowMenu);
+
+        // display the default properties
+        m_outlineDragModeMenuItem.setSelected(
+                m_windowManager.getOutlineDragMode() );
+        m_deiconifiablePolicyMenuItem.setSelected(
+                m_windowManager.getDeiconifiablePolicy() );
+        m_closePolicyMenuItem.setSelected( m_windowManager.getClosePolicy() );
+        autoPositionMenuItem.setSelected(
+                m_windowManager.getAutoPositionPolicy() );
+
+        GUIUtils.maximizeJFrame( this );
+    }
+
+
+    /**
+     * configure and start the JIConsole
+     */
+    private void init_console()
+    {
+        // just to demonstrate we are about to redirect the streams...
+        System.out.println("Hello and goodbye from stdout");
+        System.err.println("Hello and goodbye from stderr");
+
+        JIConsole.getConsole().setBackgroundColor( Color.DARK_GRAY );
+        JIConsole.getConsole().setForegroundColor( Color.YELLOW );
+        JIConsole.getConsole().setSelectedTextColor( Color.DARK_GRAY );
+        JIConsole.getConsole().setSelectionColor( Color.YELLOW );
+
+        // if you want to modify the text/buttons/title/etc of JConsole,
+        // or force it to autosave and clear the console's messages
+        // you can do it here ... before starting the console!
+        JIConsole.getConsole().setAppendFirstTime( false );
+        JIConsole.getConsole().setAutoSave( true );
+
+        // clear the console messages (only the textarea) when maxchars are
+        // reached, because a lot of messages can slow down the textarea panel.
+        //JIConsole.getConsole().setMaxChars( 10 * 1024 );
+
+        // finally start the console
+        JIConsole.getConsole().startConsole();
+
+        // demonstrate that our console is up and running...
+        System.out.println(
+                "This is the very first message logged to JConsole (stdout)");
+        System.err.println(
+                "This is the very first message logged to JConsole (stderr)");
+    }
+
+
+    /** This method is called from within the constructor to
+     * initialize the form.
+     * WARNING: Do NOT modify this code. The content of this method is
+     * always regenerated by the Form Editor.
+     */
+    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
+    private void initComponents()
+    {
+
+        m_desktopPane = new javax.swing.JDesktopPane();
+        javax.swing.JMenuBar menuBar = new javax.swing.JMenuBar();
+        javax.swing.JMenu fileMenu = new javax.swing.JMenu();
+        javax.swing.JMenuItem newJInternalFrameMenuItem = new javax.swing.JMenuItem();
+        javax.swing.JMenuItem countFramesMenuItem = new javax.swing.JMenuItem();
+        showConsoleMenuItem = new javax.swing.JMenuItem();
+        javax.swing.JMenuItem exitMenuItem = new javax.swing.JMenuItem();
+        m_windowMenu = new javax.swing.JMenu();
+        m_outlineDragModeMenuItem = new javax.swing.JCheckBoxMenuItem();
+        m_deiconifiablePolicyMenuItem = new javax.swing.JCheckBoxMenuItem();
+        autoPositionMenuItem = new javax.swing.JCheckBoxMenuItem();
+        m_closePolicyMenuItem = new javax.swing.JCheckBoxMenuItem();
+        javax.swing.JSeparator jSeparator1 = new javax.swing.JSeparator();
+        javax.swing.JMenuItem cascadeMenuItem = new javax.swing.JMenuItem();
+        javax.swing.JMenuItem tileHMenuItem = new javax.swing.JMenuItem();
+        javax.swing.JMenuItem tileVMenuItem = new javax.swing.JMenuItem();
+        javax.swing.JMenuItem tileMenuItem = new javax.swing.JMenuItem();
+        javax.swing.JMenuItem nextMenuItem = new javax.swing.JMenuItem();
+        javax.swing.JMenuItem previousMenuItem = new javax.swing.JMenuItem();
+        javax.swing.JSeparator jSeparator2 = new javax.swing.JSeparator();
+        javax.swing.JMenuItem minimizeMenuItem = new javax.swing.JMenuItem();
+        javax.swing.JMenuItem minimizeAllMenuItem = new javax.swing.JMenuItem();
+        javax.swing.JMenuItem restoreMenuItem = new javax.swing.JMenuItem();
+        javax.swing.JMenuItem restoreAllMenuItem = new javax.swing.JMenuItem();
+        javax.swing.JMenuItem maximizeMenuItem = new javax.swing.JMenuItem();
+        javax.swing.JMenuItem maximizeAllMenuItem = new javax.swing.JMenuItem();
+        javax.swing.JMenuItem resetMenuItem = new javax.swing.JMenuItem();
+        javax.swing.JMenuItem resetAllMenuItem = new javax.swing.JMenuItem();
+        javax.swing.JSeparator jSeparator3 = new javax.swing.JSeparator();
+        javax.swing.JMenuItem hideMenuItem = new javax.swing.JMenuItem();
+        javax.swing.JMenuItem hideAllMenuItem = new javax.swing.JMenuItem();
+        javax.swing.JMenuItem closeMenuItem = new javax.swing.JMenuItem();
+        javax.swing.JMenuItem closeAllMenuItem = new javax.swing.JMenuItem();
+
+        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
+        setTitle("WindowManager Tester");
+        getContentPane().add(m_desktopPane, java.awt.BorderLayout.CENTER);
+
+        fileMenu.setText("File");
+
+        newJInternalFrameMenuItem.setText("Open");
+        newJInternalFrameMenuItem.addActionListener(new java.awt.event.ActionListener()
+        {
+            public void actionPerformed(java.awt.event.ActionEvent evt)
+            {
+                newJInternalFrameMenuItemActionPerformed(evt);
+            }
+        });
+        fileMenu.add(newJInternalFrameMenuItem);
+
+        countFramesMenuItem.setText("Count Frames");
+        countFramesMenuItem.addActionListener(new java.awt.event.ActionListener()
+        {
+            public void actionPerformed(java.awt.event.ActionEvent evt)
+            {
+                countFramesMenuItemActionPerformed(evt);
+            }
+        });
+        fileMenu.add(countFramesMenuItem);
+
+        showConsoleMenuItem.setText("Show Console");
+        showConsoleMenuItem.addActionListener(new java.awt.event.ActionListener()
+        {
+            public void actionPerformed(java.awt.event.ActionEvent evt)
+            {
+                showConsoleMenuItemActionPerformed(evt);
+            }
+        });
+        fileMenu.add(showConsoleMenuItem);
+
+        exitMenuItem.setText("Exit");
+        exitMenuItem.addActionListener(new java.awt.event.ActionListener()
+        {
+            public void actionPerformed(java.awt.event.ActionEvent evt)
+            {
+                exitMenuItemActionPerformed(evt);
+            }
+        });
+        fileMenu.add(exitMenuItem);
+
+        menuBar.add(fileMenu);
+
+        m_windowMenu.setText("Window");
+
+        m_outlineDragModeMenuItem.setText("Outline Drag Mode");
+        m_outlineDragModeMenuItem.addActionListener(new java.awt.event.ActionListener()
+        {
+            public void actionPerformed(java.awt.event.ActionEvent evt)
+            {
+                m_outlineDragModeMenuItemActionPerformed(evt);
+            }
+        });
+        m_windowMenu.add(m_outlineDragModeMenuItem);
+
+        m_deiconifiablePolicyMenuItem.setText("De-iconify during cascade / tile");
+        m_deiconifiablePolicyMenuItem.addActionListener(new java.awt.event.ActionListener()
+        {
+            public void actionPerformed(java.awt.event.ActionEvent evt)
+            {
+                m_deiconifiablePolicyMenuItemActionPerformed(evt);
+            }
+        });
+        m_windowMenu.add(m_deiconifiablePolicyMenuItem);
+
+        autoPositionMenuItem.setText("Auto Position Frames");
+        autoPositionMenuItem.addActionListener(new java.awt.event.ActionListener()
+        {
+            public void actionPerformed(java.awt.event.ActionEvent evt)
+            {
+                autoPositionMenuItemActionPerformed(evt);
+            }
+        });
+        m_windowMenu.add(autoPositionMenuItem);
+
+        m_closePolicyMenuItem.setText("Default Close Operation vs Close");
+        m_closePolicyMenuItem.addActionListener(new java.awt.event.ActionListener()
+        {
+            public void actionPerformed(java.awt.event.ActionEvent evt)
+            {
+                m_closePolicyMenuItemActionPerformed(evt);
+            }
+        });
+        m_windowMenu.add(m_closePolicyMenuItem);
+        m_windowMenu.add(jSeparator1);
+
+        cascadeMenuItem.setText("Cascade");
+        cascadeMenuItem.addActionListener(new java.awt.event.ActionListener()
+        {
+            public void actionPerformed(java.awt.event.ActionEvent evt)
+            {
+                cascadeMenuItemActionPerformed(evt);
+            }
+        });
+        m_windowMenu.add(cascadeMenuItem);
+
+        tileHMenuItem.setText("Tile Horizontal");
+        tileHMenuItem.addActionListener(new java.awt.event.ActionListener()
+        {
+            public void actionPerformed(java.awt.event.ActionEvent evt)
+            {
+                tileHMenuItemActionPerformed(evt);
+            }
+        });
+        m_windowMenu.add(tileHMenuItem);
+
+        tileVMenuItem.setText("Tile Vertical");
+        tileVMenuItem.addActionListener(new java.awt.event.ActionListener()
+        {
+            public void actionPerformed(java.awt.event.ActionEvent evt)
+            {
+                tileVMenuItemActionPerformed(evt);
+            }
+        });
+        m_windowMenu.add(tileVMenuItem);
+
+        tileMenuItem.setText("Tile");
+        tileMenuItem.addActionListener(new java.awt.event.ActionListener()
+        {
+            public void actionPerformed(java.awt.event.ActionEvent evt)
+            {
+                tileMenuItemActionPerformed(evt);
+            }
+        });
+        m_windowMenu.add(tileMenuItem);
+
+        nextMenuItem.setText("Next Window");
+        nextMenuItem.addActionListener(new java.awt.event.ActionListener()
+        {
+            public void actionPerformed(java.awt.event.ActionEvent evt)
+            {
+                nextMenuItemActionPerformed(evt);
+            }
+        });
+        m_windowMenu.add(nextMenuItem);
+
+        previousMenuItem.setText("Previous Window");
+        previousMenuItem.addActionListener(new java.awt.event.ActionListener()
+        {
+            public void actionPerformed(java.awt.event.ActionEvent evt)
+            {
+                previousMenuItemActionPerformed(evt);
+            }
+        });
+        m_windowMenu.add(previousMenuItem);
+        m_windowMenu.add(jSeparator2);
+
+        minimizeMenuItem.setText("Minimize");
+        minimizeMenuItem.addActionListener(new java.awt.event.ActionListener()
+        {
+            public void actionPerformed(java.awt.event.ActionEvent evt)
+            {
+                minimizeMenuItemActionPerformed(evt);
+            }
+        });
+        m_windowMenu.add(minimizeMenuItem);
+
+        minimizeAllMenuItem.setText("Minimize All");
+        minimizeAllMenuItem.addActionListener(new java.awt.event.ActionListener()
+        {
+            public void actionPerformed(java.awt.event.ActionEvent evt)
+            {
+                minimizeAllMenuItemActionPerformed(evt);
+            }
+        });
+        m_windowMenu.add(minimizeAllMenuItem);
+
+        restoreMenuItem.setText("Restore");
+        restoreMenuItem.addActionListener(new java.awt.event.ActionListener()
+        {
+            public void actionPerformed(java.awt.event.ActionEvent evt)
+            {
+                restoreMenuItemActionPerformed(evt);
+            }
+        });
+        m_windowMenu.add(restoreMenuItem);
+
+        restoreAllMenuItem.setText("Restore All");
+        restoreAllMenuItem.addActionListener(new java.awt.event.ActionListener()
+        {
+            public void actionPerformed(java.awt.event.ActionEvent evt)
+            {
+                restoreAllMenuItemActionPerformed(evt);
+            }
+        });
+        m_windowMenu.add(restoreAllMenuItem);
+
+        maximizeMenuItem.setText("Maximize");
+        maximizeMenuItem.addActionListener(new java.awt.event.ActionListener()
+        {
+            public void actionPerformed(java.awt.event.ActionEvent evt)
+            {
+                maximizeMenuItemActionPerformed(evt);
+            }
+        });
+        m_windowMenu.add(maximizeMenuItem);
+
+        maximizeAllMenuItem.setText("Maximize All");
+        maximizeAllMenuItem.addActionListener(new java.awt.event.ActionListener()
+        {
+            public void actionPerformed(java.awt.event.ActionEvent evt)
+            {
+                maximizeAllMenuItemActionPerformed(evt);
+            }
+        });
+        m_windowMenu.add(maximizeAllMenuItem);
+
+        resetMenuItem.setText("Reset Window");
+        resetMenuItem.addActionListener(new java.awt.event.ActionListener()
+        {
+            public void actionPerformed(java.awt.event.ActionEvent evt)
+            {
+                resetMenuItemActionPerformed(evt);
+            }
+        });
+        m_windowMenu.add(resetMenuItem);
+
+        resetAllMenuItem.setText("Reset All Windows");
+        resetAllMenuItem.addActionListener(new java.awt.event.ActionListener()
+        {
+            public void actionPerformed(java.awt.event.ActionEvent evt)
+            {
+                resetAllMenuItemActionPerformed(evt);
+            }
+        });
+        m_windowMenu.add(resetAllMenuItem);
+        m_windowMenu.add(jSeparator3);
+
+        hideMenuItem.setText("Hide");
+        hideMenuItem.addActionListener(new java.awt.event.ActionListener()
+        {
+            public void actionPerformed(java.awt.event.ActionEvent evt)
+            {
+                hideMenuItemActionPerformed(evt);
+            }
+        });
+        m_windowMenu.add(hideMenuItem);
+
+        hideAllMenuItem.setText("Hide All");
+        hideAllMenuItem.addActionListener(new java.awt.event.ActionListener()
+        {
+            public void actionPerformed(java.awt.event.ActionEvent evt)
+            {
+                hideAllMenuItemActionPerformed(evt);
+            }
+        });
+        m_windowMenu.add(hideAllMenuItem);
+
+        closeMenuItem.setText("Close");
+        closeMenuItem.addActionListener(new java.awt.event.ActionListener()
+        {
+            public void actionPerformed(java.awt.event.ActionEvent evt)
+            {
+                closeMenuItemActionPerformed(evt);
+            }
+        });
+        m_windowMenu.add(closeMenuItem);
+
+        closeAllMenuItem.setText("Close All");
+        closeAllMenuItem.addActionListener(new java.awt.event.ActionListener()
+        {
+            public void actionPerformed(java.awt.event.ActionEvent evt)
+            {
+                closeAllMenuItemActionPerformed(evt);
+            }
+        });
+        m_windowMenu.add(closeAllMenuItem);
+
+        menuBar.add(m_windowMenu);
+
+        setJMenuBar(menuBar);
+
+        java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
+        setBounds((screenSize.width-800)/2, (screenSize.height-600)/2, 800, 600);
+    }// </editor-fold>//GEN-END:initComponents
+
+    private void showConsoleMenuItemActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_showConsoleMenuItemActionPerformed
+    {//GEN-HEADEREND:event_showConsoleMenuItemActionPerformed
+
+        // same as any other internal frame, just make it visible
+        m_consoleInternalFrame.setVisible( true );
+
+    }//GEN-LAST:event_showConsoleMenuItemActionPerformed
+
+    private void autoPositionMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_autoPositionMenuItemActionPerformed
+
+        m_windowManager.setAutoPositionPolicy(
+                autoPositionMenuItem.isSelected() );
+
+    }//GEN-LAST:event_autoPositionMenuItemActionPerformed
+
+    private void m_closePolicyMenuItemActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_m_closePolicyMenuItemActionPerformed
+    {//GEN-HEADEREND:event_m_closePolicyMenuItemActionPerformed
+
+        m_windowManager.setClosePolicy( m_closePolicyMenuItem.isSelected() );
+
+    }//GEN-LAST:event_m_closePolicyMenuItemActionPerformed
+
+    private void hideAllMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_hideAllMenuItemActionPerformed
+
+        m_windowManager.hideAll();
+
+    }//GEN-LAST:event_hideAllMenuItemActionPerformed
+
+    private void m_outlineDragModeMenuItemActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_m_outlineDragModeMenuItemActionPerformed
+    {//GEN-HEADEREND:event_m_outlineDragModeMenuItemActionPerformed
+
+        m_windowManager.setOutlineDragMode(
+                m_outlineDragModeMenuItem.isSelected() );
+
+    }//GEN-LAST:event_m_outlineDragModeMenuItemActionPerformed
+
+    private void resetAllMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_resetAllMenuItemActionPerformed
+
+        m_windowManager.resetAll();
+
+    }//GEN-LAST:event_resetAllMenuItemActionPerformed
+
+    private void resetMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_resetMenuItemActionPerformed
+
+        m_windowManager.reset();
+
+    }//GEN-LAST:event_resetMenuItemActionPerformed
+
+    private void maximizeAllMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_maximizeAllMenuItemActionPerformed
+
+        m_windowManager.maximizeAll();
+
+    }//GEN-LAST:event_maximizeAllMenuItemActionPerformed
+
+    private void restoreAllMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_restoreAllMenuItemActionPerformed
+
+        m_windowManager.restoreAll();
+
+    }//GEN-LAST:event_restoreAllMenuItemActionPerformed
+
+    private void countFramesMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_countFramesMenuItemActionPerformed
+
+        JOptionPane.showMessageDialog(this,
+            "All Frames: " + m_windowManager.countFrames() +
+            " Visible Frames: " + m_windowManager.countVisibleFrames(),
+            "Info", JOptionPane.INFORMATION_MESSAGE);
+
+        System.out.println("All Frames: " + m_windowManager.countFrames() +
+            " Visible Frames: " + m_windowManager.countVisibleFrames());
+
+    }//GEN-LAST:event_countFramesMenuItemActionPerformed
+
+    private void m_deiconifiablePolicyMenuItemActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_m_deiconifiablePolicyMenuItemActionPerformed
+    {//GEN-HEADEREND:event_m_deiconifiablePolicyMenuItemActionPerformed
+
+        m_windowManager.setDeiconifiablePolicy(
+                m_deiconifiablePolicyMenuItem.isSelected() );
+
+    }//GEN-LAST:event_m_deiconifiablePolicyMenuItemActionPerformed
+
+    private void maximizeMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_maximizeMenuItemActionPerformed
+
+        m_windowManager.maximize();
+
+    }//GEN-LAST:event_maximizeMenuItemActionPerformed
+
+    private void restoreMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_restoreMenuItemActionPerformed
+
+        m_windowManager.restore();
+
+    }//GEN-LAST:event_restoreMenuItemActionPerformed
+
+    private void minimizeAllMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_minimizeAllMenuItemActionPerformed
+
+        m_windowManager.minimizeAll();
+
+    }//GEN-LAST:event_minimizeAllMenuItemActionPerformed
+
+    private void minimizeMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_minimizeMenuItemActionPerformed
+
+        m_windowManager.minimize();
+
+    }//GEN-LAST:event_minimizeMenuItemActionPerformed
+
+    private void closeAllMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_closeAllMenuItemActionPerformed
+
+        m_windowManager.closeAll();
+
+    }//GEN-LAST:event_closeAllMenuItemActionPerformed
+
+    private void closeMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_closeMenuItemActionPerformed
+
+        m_windowManager.close();
+
+    }//GEN-LAST:event_closeMenuItemActionPerformed
+
+    private void hideMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_hideMenuItemActionPerformed
+
+        m_windowManager.hide();
+
+    }//GEN-LAST:event_hideMenuItemActionPerformed
+
+    private void previousMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_previousMenuItemActionPerformed
+
+        m_windowManager.selectPrevious();
+
+    }//GEN-LAST:event_previousMenuItemActionPerformed
+
+    private void nextMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_nextMenuItemActionPerformed
+
+        m_windowManager.selectNext();
+
+    }//GEN-LAST:event_nextMenuItemActionPerformed
+
+    private void tileMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_tileMenuItemActionPerformed
+
+        m_windowManager.tile();
+
+    }//GEN-LAST:event_tileMenuItemActionPerformed
+
+    private void tileVMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_tileVMenuItemActionPerformed
+
+        m_windowManager.tileVertically();
+
+    }//GEN-LAST:event_tileVMenuItemActionPerformed
+
+    private void tileHMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_tileHMenuItemActionPerformed
+
+        m_windowManager.tileHorizontally();
+
+    }//GEN-LAST:event_tileHMenuItemActionPerformed
+
+    private void cascadeMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cascadeMenuItemActionPerformed
+
+        m_windowManager.cascade();
+
+    }//GEN-LAST:event_cascadeMenuItemActionPerformed
+
+    private void newJInternalFrameMenuItemActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_newJInternalFrameMenuItemActionPerformed
+    {//GEN-HEADEREND:event_newJInternalFrameMenuItemActionPerformed
+
+        JInternalFrameGenerator gen = new JInternalFrameGenerator(
+                                            new JFrame(), true);
+        gen.setVisible(true);
+
+        int ret = gen.getReturnStatus();
+        if( ret == gen.RET_OK )
+        {
+            JInternalFrame jif = gen.getNewFrame();
+            m_desktopPane.add(jif, JLayeredPane.DEFAULT_LAYER);
+            jif.toFront();
+        }
+
+        System.out.println("Created new JInternalFrame");
+
+    }//GEN-LAST:event_newJInternalFrameMenuItemActionPerformed
+
+    private void exitMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_exitMenuItemActionPerformed
+
+        System.out.println("Exiting...");
+        System.exit(0);
+
+    }//GEN-LAST:event_exitMenuItemActionPerformed
+
+
+    /**
+     * setup our look and feel
+     */
+    private static void init_lnf()
+    {
+        try
+        {
+            UIManager.setLookAndFeel(
+                    UIManager.getSystemLookAndFeelClassName() );
+
+            // NOTE: since the JConsolePane is actually a singleton, if we use
+            // any LOOK & FEEL other than the default, we also need to invoke
+            // this method to update the console's lnf...
+            JIConsole.getConsole().updateLNF();
+        }
+        catch( Exception e )
+        {
+            System.err.println("Cannot initialize the look & feel");
+            e.printStackTrace();
+        }
+    }
+
+
+    /**
+     * @param args the command line arguments
+     */
+    public static void main(String args[])
+    {
+        init_lnf();
+
+        java.awt.EventQueue.invokeLater(new Runnable() {
+            public void run() {
+                new JDesktopTester().setVisible(true);
+            }
+        });
+    }
+
+
+    // Variables declaration - do not modify//GEN-BEGIN:variables
+    private javax.swing.JCheckBoxMenuItem autoPositionMenuItem;
+    private javax.swing.JCheckBoxMenuItem m_closePolicyMenuItem;
+    private javax.swing.JCheckBoxMenuItem m_deiconifiablePolicyMenuItem;
+    private javax.swing.JDesktopPane m_desktopPane;
+    private javax.swing.JCheckBoxMenuItem m_outlineDragModeMenuItem;
+    private javax.swing.JMenu m_windowMenu;
+    private javax.swing.JMenuItem showConsoleMenuItem;
+    // End of variables declaration//GEN-END:variables
+
+}
diff --git a/src/gr/zeus/tests/JInternalFrameGenerator.form b/src/gr/zeus/tests/JInternalFrameGenerator.form
new file mode 100644
index 0000000..ea71761
--- /dev/null
+++ b/src/gr/zeus/tests/JInternalFrameGenerator.form
@@ -0,0 +1,141 @@
+<?xml version="1.1" encoding="UTF-8" ?>
+
+<Form version="1.2" maxVersion="1.2" type="org.netbeans.modules.form.forminfo.JDialogFormInfo">
+  <Properties>
+    <Property name="defaultCloseOperation" type="int" value="2"/>
+    <Property name="resizable" type="boolean" value="false"/>
+  </Properties>
+  <SyntheticProperties>
+    <SyntheticProperty name="formSize" type="java.awt.Dimension" value="-84,-19,0,5,115,114,0,18,106,97,118,97,46,97,119,116,46,68,105,109,101,110,115,105,111,110,65,-114,-39,-41,-84,95,68,20,2,0,2,73,0,6,104,101,105,103,104,116,73,0,5,119,105,100,116,104,120,112,0,0,0,-36,0,0,1,-107"/>
+    <SyntheticProperty name="formSizePolicy" type="int" value="0"/>
+    <SyntheticProperty name="generateSize" type="boolean" value="true"/>
+    <SyntheticProperty name="generateCenter" type="boolean" value="true"/>
+  </SyntheticProperties>
+  <AuxValues>
+    <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/>
+    <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
+    <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
+    <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
+  </AuxValues>
+
+  <Layout class="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout">
+    <Property name="useNullLayout" type="boolean" value="true"/>
+  </Layout>
+  <SubComponents>
+    <Component class="javax.swing.JCheckBox" name="m_resizableCheckBox">
+      <Properties>
+        <Property name="selected" type="boolean" value="true"/>
+        <Property name="text" type="java.lang.String" value="Resizable"/>
+      </Properties>
+      <Constraints>
+        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
+          <AbsoluteConstraints x="10" y="10" width="-1" height="-1"/>
+        </Constraint>
+      </Constraints>
+    </Component>
+    <Component class="javax.swing.JCheckBox" name="m_maximizableCheckBox">
+      <Properties>
+        <Property name="selected" type="boolean" value="true"/>
+        <Property name="text" type="java.lang.String" value="Maximizable"/>
+      </Properties>
+      <Constraints>
+        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
+          <AbsoluteConstraints x="10" y="40" width="-1" height="-1"/>
+        </Constraint>
+      </Constraints>
+    </Component>
+    <Component class="javax.swing.JCheckBox" name="m_closableCheckBox">
+      <Properties>
+        <Property name="selected" type="boolean" value="true"/>
+        <Property name="text" type="java.lang.String" value="Closable"/>
+      </Properties>
+      <Constraints>
+        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
+          <AbsoluteConstraints x="10" y="70" width="-1" height="-1"/>
+        </Constraint>
+      </Constraints>
+    </Component>
+    <Component class="javax.swing.JCheckBox" name="m_iconifiableCheckBox">
+      <Properties>
+        <Property name="selected" type="boolean" value="true"/>
+        <Property name="text" type="java.lang.String" value="Iconifiable"/>
+      </Properties>
+      <Constraints>
+        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
+          <AbsoluteConstraints x="10" y="100" width="-1" height="-1"/>
+        </Constraint>
+      </Constraints>
+    </Component>
+    <Component class="javax.swing.JCheckBox" name="m_visibleCheckBox">
+      <Properties>
+        <Property name="selected" type="boolean" value="true"/>
+        <Property name="text" type="java.lang.String" value="Visible"/>
+      </Properties>
+      <Constraints>
+        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
+          <AbsoluteConstraints x="10" y="130" width="-1" height="-1"/>
+        </Constraint>
+      </Constraints>
+    </Component>
+    <Component class="javax.swing.JLabel" name="jLabel2">
+      <Properties>
+        <Property name="text" type="java.lang.String" value="DefaultCloseOperation"/>
+      </Properties>
+      <AuxValues>
+        <AuxValue name="JavaCodeGenerator_VariableLocal" type="java.lang.Boolean" value="true"/>
+        <AuxValue name="JavaCodeGenerator_VariableModifier" type="java.lang.Integer" value="0"/>
+      </AuxValues>
+      <Constraints>
+        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
+          <AbsoluteConstraints x="190" y="10" width="190" height="-1"/>
+        </Constraint>
+      </Constraints>
+    </Component>
+    <Component class="javax.swing.JComboBox" name="m_closeOperationComboBox">
+      <Properties>
+        <Property name="model" type="javax.swing.ComboBoxModel" editor="org.netbeans.modules.form.editors2.ComboBoxModelEditor">
+          <StringArray count="3">
+            <StringItem index="0" value="DISPOSE_ON_CLOSE"/>
+            <StringItem index="1" value="HIDE_ON_CLOSE"/>
+            <StringItem index="2" value="DO_NOTHING_ON_CLOSE"/>
+          </StringArray>
+        </Property>
+      </Properties>
+      <Constraints>
+        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
+          <AbsoluteConstraints x="190" y="30" width="190" height="-1"/>
+        </Constraint>
+      </Constraints>
+    </Component>
+    <Component class="javax.swing.JButton" name="m_cancelButton">
+      <Properties>
+        <Property name="text" type="java.lang.String" value="Cancel"/>
+      </Properties>
+      <Events>
+        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="m_cancelButtonActionPerformed"/>
+      </Events>
+      <Constraints>
+        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
+          <AbsoluteConstraints x="310" y="160" width="-1" height="-1"/>
+        </Constraint>
+      </Constraints>
+    </Component>
+    <Component class="javax.swing.JButton" name="m_okButton">
+      <Properties>
+        <Property name="text" type="java.lang.String" value="OK"/>
+      </Properties>
+      <Events>
+        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="m_okButtonActionPerformed"/>
+      </Events>
+      <Constraints>
+        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
+          <AbsoluteConstraints x="250" y="160" width="-1" height="-1"/>
+        </Constraint>
+      </Constraints>
+    </Component>
+  </SubComponents>
+</Form>
diff --git a/src/gr/zeus/tests/JInternalFrameGenerator.java b/src/gr/zeus/tests/JInternalFrameGenerator.java
new file mode 100644
index 0000000..f407df5
--- /dev/null
+++ b/src/gr/zeus/tests/JInternalFrameGenerator.java
@@ -0,0 +1,219 @@
+/*
+ * JInternalFrameGenerator.java - Used by JDesktopTester.java to create frames.
+ *
+ * Copyright (c) 2004-2011 Gregory Kotsaftis
+ * gregkotsaftis at yahoo.com
+ * http://zeus-jscl.sourceforge.net/
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+package gr.zeus.tests;
+
+import java.awt.Dimension;
+import java.awt.Frame;
+import javax.swing.JDialog;
+import javax.swing.JInternalFrame;
+
+public class JInternalFrameGenerator extends JDialog {
+
+    /** A return status code - returned if Cancel button has been pressed */
+    public static final int RET_CANCEL = 0;
+
+    /** A return status code - returned if OK button has been pressed */
+    public static final int RET_OK = 1;
+
+    private int returnStatus = RET_CANCEL;
+
+    private static int s_counter = 0;
+
+
+    public JInternalFrameGenerator(Frame parent, boolean modal)
+    {
+        super(parent, modal);
+        initComponents();
+
+        // set JDialog's default button
+        getRootPane().setDefaultButton( m_okButton );
+
+        s_counter++;
+    }
+
+
+    public final JInternalFrame getNewFrame()
+    {
+        int[] options = new int[] {
+            JInternalFrame.DISPOSE_ON_CLOSE,
+            JInternalFrame.HIDE_ON_CLOSE,
+            JInternalFrame.DO_NOTHING_ON_CLOSE
+        };
+        String[] options_s = new String[] {
+            "DISPOSE_ON_CLOSE",
+            "HIDE_ON_CLOSE",
+            "DO_NOTHING_ON_CLOSE"
+        };
+
+        JInternalFrame jif = new JInternalFrame();
+
+        jif.setPreferredSize( new Dimension(600, 300) );
+        jif.setMaximumSize( new Dimension(600, 300) );
+        jif.setMinimumSize( new Dimension(600, 300) );
+        jif.setBounds(10, 10, 600, 300);
+
+        jif.setResizable( m_resizableCheckBox.isSelected() );
+        jif.setMaximizable( m_maximizableCheckBox.isSelected() );
+        jif.setClosable( m_closableCheckBox.isSelected() );
+        jif.setIconifiable( m_iconifiableCheckBox.isSelected() );
+        jif.setDefaultCloseOperation(
+                options[m_closeOperationComboBox.getSelectedIndex()] );
+        jif.setVisible( m_visibleCheckBox.isSelected() );
+
+        String s1 = jif.isResizable() ? "resizable " : "";
+        String s2 = jif.isMaximizable() ? "maximizable " : "";
+        String s3 = jif.isClosable() ? "closable " : "";
+        String s4 = jif.isIconifiable() ? "iconifiable " : "";
+        String s5 = options_s[ m_closeOperationComboBox.getSelectedIndex() ];
+
+        jif.setTitle(String.valueOf(s_counter) + ": " + s1 + s2 + s3 + s4 + s5);
+
+        return( jif );
+    }
+
+
+    /**
+     * @return the return status of this dialog - one of RET_OK or RET_CANCEL
+     */
+    public int getReturnStatus()
+    {
+        return( returnStatus );
+    }
+
+
+    /** This method is called from within the constructor to
+     * initialize the form.
+     * WARNING: Do NOT modify this code. The content of this method is
+     * always regenerated by the Form Editor.
+     */
+    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
+    private void initComponents()
+    {
+
+        m_resizableCheckBox = new javax.swing.JCheckBox();
+        m_maximizableCheckBox = new javax.swing.JCheckBox();
+        m_closableCheckBox = new javax.swing.JCheckBox();
+        m_iconifiableCheckBox = new javax.swing.JCheckBox();
+        m_visibleCheckBox = new javax.swing.JCheckBox();
+        javax.swing.JLabel jLabel2 = new javax.swing.JLabel();
+        m_closeOperationComboBox = new javax.swing.JComboBox();
+        m_cancelButton = new javax.swing.JButton();
+        m_okButton = new javax.swing.JButton();
+
+        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
+        setResizable(false);
+        getContentPane().setLayout(null);
+
+        m_resizableCheckBox.setSelected(true);
+        m_resizableCheckBox.setText("Resizable");
+        getContentPane().add(m_resizableCheckBox);
+        m_resizableCheckBox.setBounds(10, 10, 63, 18);
+
+        m_maximizableCheckBox.setSelected(true);
+        m_maximizableCheckBox.setText("Maximizable");
+        getContentPane().add(m_maximizableCheckBox);
+        m_maximizableCheckBox.setBounds(10, 40, 75, 18);
+
+        m_closableCheckBox.setSelected(true);
+        m_closableCheckBox.setText("Closable");
+        getContentPane().add(m_closableCheckBox);
+        m_closableCheckBox.setBounds(10, 70, 58, 18);
+
+        m_iconifiableCheckBox.setSelected(true);
+        m_iconifiableCheckBox.setText("Iconifiable");
+        getContentPane().add(m_iconifiableCheckBox);
+        m_iconifiableCheckBox.setBounds(10, 100, 67, 18);
+
+        m_visibleCheckBox.setSelected(true);
+        m_visibleCheckBox.setText("Visible");
+        getContentPane().add(m_visibleCheckBox);
+        m_visibleCheckBox.setBounds(10, 130, 47, 18);
+
+        jLabel2.setText("DefaultCloseOperation");
+        getContentPane().add(jLabel2);
+        jLabel2.setBounds(190, 10, 190, 14);
+
+        m_closeOperationComboBox.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "DISPOSE_ON_CLOSE", "HIDE_ON_CLOSE", "DO_NOTHING_ON_CLOSE" }));
+        getContentPane().add(m_closeOperationComboBox);
+        m_closeOperationComboBox.setBounds(190, 30, 190, 21);
+
+        m_cancelButton.setText("Cancel");
+        m_cancelButton.addActionListener(new java.awt.event.ActionListener()
+        {
+            public void actionPerformed(java.awt.event.ActionEvent evt)
+            {
+                m_cancelButtonActionPerformed(evt);
+            }
+        });
+        getContentPane().add(m_cancelButton);
+        m_cancelButton.setBounds(310, 160, 44, 21);
+
+        m_okButton.setText("OK");
+        m_okButton.addActionListener(new java.awt.event.ActionListener()
+        {
+            public void actionPerformed(java.awt.event.ActionEvent evt)
+            {
+                m_okButtonActionPerformed(evt);
+            }
+        });
+        getContentPane().add(m_okButton);
+        m_okButton.setBounds(250, 160, 26, 21);
+
+        java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
+        setBounds((screenSize.width-405)/2, (screenSize.height-220)/2, 405, 220);
+    }// </editor-fold>//GEN-END:initComponents
+
+    private void m_cancelButtonActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_m_cancelButtonActionPerformed
+    {//GEN-HEADEREND:event_m_cancelButtonActionPerformed
+
+        doClose(RET_CANCEL);
+
+    }//GEN-LAST:event_m_cancelButtonActionPerformed
+
+    private void m_okButtonActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_m_okButtonActionPerformed
+    {//GEN-HEADEREND:event_m_okButtonActionPerformed
+
+         doClose(RET_OK);
+
+    }//GEN-LAST:event_m_okButtonActionPerformed
+
+
+    private void doClose(int retStatus)
+    {
+        returnStatus = retStatus;
+        setVisible(false);
+        dispose();
+    }
+
+
+    // Variables declaration - do not modify//GEN-BEGIN:variables
+    private javax.swing.JButton m_cancelButton;
+    private javax.swing.JCheckBox m_closableCheckBox;
+    private javax.swing.JComboBox m_closeOperationComboBox;
+    private javax.swing.JCheckBox m_iconifiableCheckBox;
+    private javax.swing.JCheckBox m_maximizableCheckBox;
+    private javax.swing.JButton m_okButton;
+    private javax.swing.JCheckBox m_resizableCheckBox;
+    private javax.swing.JCheckBox m_visibleCheckBox;
+    // End of variables declaration//GEN-END:variables
+
+}
diff --git a/src/gr/zeus/tests/JMessageTester.form b/src/gr/zeus/tests/JMessageTester.form
new file mode 100644
index 0000000..9f9e896
--- /dev/null
+++ b/src/gr/zeus/tests/JMessageTester.form
@@ -0,0 +1,108 @@
+<?xml version="1.1" encoding="UTF-8" ?>
+
+<Form version="1.2" maxVersion="1.2" type="org.netbeans.modules.form.forminfo.JFrameFormInfo">
+  <Properties>
+    <Property name="defaultCloseOperation" type="int" value="3"/>
+    <Property name="title" type="java.lang.String" value="JMessageTester"/>
+  </Properties>
+  <SyntheticProperties>
+    <SyntheticProperty name="formSize" type="java.awt.Dimension" value="-84,-19,0,5,115,114,0,18,106,97,118,97,46,97,119,116,46,68,105,109,101,110,115,105,111,110,65,-114,-39,-41,-84,95,68,20,2,0,2,73,0,6,104,101,105,103,104,116,73,0,5,119,105,100,116,104,120,112,0,0,0,-58,0,0,1,54"/>
+    <SyntheticProperty name="formSizePolicy" type="int" value="0"/>
+    <SyntheticProperty name="generateSize" type="boolean" value="true"/>
+    <SyntheticProperty name="generateCenter" type="boolean" value="true"/>
+  </SyntheticProperties>
+  <AuxValues>
+    <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/>
+    <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
+    <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
+    <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
+  </AuxValues>
+
+  <Layout class="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout">
+    <Property name="useNullLayout" type="boolean" value="true"/>
+  </Layout>
+  <SubComponents>
+    <Component class="javax.swing.JButton" name="m_errorButton">
+      <Properties>
+        <Property name="text" type="java.lang.String" value="ERROR"/>
+      </Properties>
+      <Events>
+        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="m_errorButtonActionPerformed"/>
+      </Events>
+      <Constraints>
+        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
+          <AbsoluteConstraints x="10" y="130" width="110" height="-1"/>
+        </Constraint>
+      </Constraints>
+    </Component>
+    <Component class="javax.swing.JButton" name="m_warningButton">
+      <Properties>
+        <Property name="text" type="java.lang.String" value="WARNING"/>
+      </Properties>
+      <Events>
+        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="m_warningButtonActionPerformed"/>
+      </Events>
+      <Constraints>
+        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
+          <AbsoluteConstraints x="10" y="70" width="110" height="-1"/>
+        </Constraint>
+      </Constraints>
+    </Component>
+    <Component class="javax.swing.JButton" name="m_infoButton">
+      <Properties>
+        <Property name="text" type="java.lang.String" value="INFO"/>
+      </Properties>
+      <Events>
+        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="m_infoButtonActionPerformed"/>
+      </Events>
+      <Constraints>
+        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
+          <AbsoluteConstraints x="10" y="40" width="110" height="-1"/>
+        </Constraint>
+      </Constraints>
+    </Component>
+    <Component class="javax.swing.JButton" name="m_questionButton">
+      <Properties>
+        <Property name="text" type="java.lang.String" value="QUESTION"/>
+      </Properties>
+      <Events>
+        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="m_questionButtonActionPerformed"/>
+      </Events>
+      <Constraints>
+        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
+          <AbsoluteConstraints x="10" y="100" width="110" height="-1"/>
+        </Constraint>
+      </Constraints>
+    </Component>
+    <Component class="javax.swing.JButton" name="m_plainButton">
+      <Properties>
+        <Property name="text" type="java.lang.String" value="PLAIN"/>
+      </Properties>
+      <Events>
+        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="m_plainButtonActionPerformed"/>
+      </Events>
+      <Constraints>
+        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
+          <AbsoluteConstraints x="10" y="10" width="110" height="-1"/>
+        </Constraint>
+      </Constraints>
+    </Component>
+    <Component class="javax.swing.JButton" name="m_plainButton2">
+      <Properties>
+        <Property name="text" type="java.lang.String" value="PLAIN+ICO"/>
+      </Properties>
+      <Events>
+        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="m_plainButton2ActionPerformed"/>
+      </Events>
+      <Constraints>
+        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
+          <AbsoluteConstraints x="130" y="10" width="110" height="-1"/>
+        </Constraint>
+      </Constraints>
+    </Component>
+  </SubComponents>
+</Form>
diff --git a/src/gr/zeus/tests/JMessageTester.java b/src/gr/zeus/tests/JMessageTester.java
new file mode 100644
index 0000000..73f1a1e
--- /dev/null
+++ b/src/gr/zeus/tests/JMessageTester.java
@@ -0,0 +1,307 @@
+/*
+ * JMessageTester.java - Test application for JMessage(s)
+ *
+ * Copyright (c) 2004-2011 Gregory Kotsaftis
+ * gregkotsaftis at yahoo.com
+ * http://zeus-jscl.sourceforge.net/
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+package gr.zeus.tests;
+
+import gr.zeus.ui.JMessage;
+import javax.swing.ImageIcon;
+import javax.swing.JFrame;
+import javax.swing.JOptionPane;
+import javax.swing.UIManager;
+
+public class JMessageTester extends JFrame {
+
+
+    public JMessageTester()
+    {
+        initComponents();
+    }
+
+
+    /** This method is called from within the constructor to
+     * initialize the form.
+     * WARNING: Do NOT modify this code. The content of this method is
+     * always regenerated by the Form Editor.
+     */
+    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
+    private void initComponents()
+    {
+
+        m_errorButton = new javax.swing.JButton();
+        m_warningButton = new javax.swing.JButton();
+        m_infoButton = new javax.swing.JButton();
+        m_questionButton = new javax.swing.JButton();
+        m_plainButton = new javax.swing.JButton();
+        m_plainButton2 = new javax.swing.JButton();
+
+        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
+        setTitle("JMessageTester");
+        getContentPane().setLayout(null);
+
+        m_errorButton.setText("ERROR");
+        m_errorButton.addActionListener(new java.awt.event.ActionListener()
+        {
+            public void actionPerformed(java.awt.event.ActionEvent evt)
+            {
+                m_errorButtonActionPerformed(evt);
+            }
+        });
+        getContentPane().add(m_errorButton);
+        m_errorButton.setBounds(10, 130, 110, 21);
+
+        m_warningButton.setText("WARNING");
+        m_warningButton.addActionListener(new java.awt.event.ActionListener()
+        {
+            public void actionPerformed(java.awt.event.ActionEvent evt)
+            {
+                m_warningButtonActionPerformed(evt);
+            }
+        });
+        getContentPane().add(m_warningButton);
+        m_warningButton.setBounds(10, 70, 110, 21);
+
+        m_infoButton.setText("INFO");
+        m_infoButton.addActionListener(new java.awt.event.ActionListener()
+        {
+            public void actionPerformed(java.awt.event.ActionEvent evt)
+            {
+                m_infoButtonActionPerformed(evt);
+            }
+        });
+        getContentPane().add(m_infoButton);
+        m_infoButton.setBounds(10, 40, 110, 21);
+
+        m_questionButton.setText("QUESTION");
+        m_questionButton.addActionListener(new java.awt.event.ActionListener()
+        {
+            public void actionPerformed(java.awt.event.ActionEvent evt)
+            {
+                m_questionButtonActionPerformed(evt);
+            }
+        });
+        getContentPane().add(m_questionButton);
+        m_questionButton.setBounds(10, 100, 110, 21);
+
+        m_plainButton.setText("PLAIN");
+        m_plainButton.addActionListener(new java.awt.event.ActionListener()
+        {
+            public void actionPerformed(java.awt.event.ActionEvent evt)
+            {
+                m_plainButtonActionPerformed(evt);
+            }
+        });
+        getContentPane().add(m_plainButton);
+        m_plainButton.setBounds(10, 10, 110, 21);
+
+        m_plainButton2.setText("PLAIN+ICO");
+        m_plainButton2.addActionListener(new java.awt.event.ActionListener()
+        {
+            public void actionPerformed(java.awt.event.ActionEvent evt)
+            {
+                m_plainButton2ActionPerformed(evt);
+            }
+        });
+        getContentPane().add(m_plainButton2);
+        m_plainButton2.setBounds(130, 10, 110, 21);
+
+        java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
+        setBounds((screenSize.width-310)/2, (screenSize.height-198)/2, 310, 198);
+    }// </editor-fold>//GEN-END:initComponents
+
+    private void m_plainButton2ActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_m_plainButton2ActionPerformed
+    {//GEN-HEADEREND:event_m_plainButton2ActionPerformed
+
+        // a fully customizable message
+        JMessage.showMessageDialog(
+            this,
+            "A message with a custom icon.",
+            "Hello...", // custom title
+            JOptionPane.PLAIN_MESSAGE,
+            JOptionPane.DEFAULT_OPTION,
+            null, // use default button for this type of dialog
+            new ImageIcon(JMessageTester.class.getResource( // custom icon
+                "/gr/zeus/tests/res/custom.png")),
+            null, // no exception functionality
+            "...World", // custom OK button text
+            null, // default button text
+            null, // default button text
+            null); // default button text
+
+    }//GEN-LAST:event_m_plainButton2ActionPerformed
+
+    private void m_questionButtonActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_m_questionButtonActionPerformed
+    {//GEN-HEADEREND:event_m_questionButtonActionPerformed
+
+        int result = JMessage.showMessageDialog(
+                            this,
+                            "A question that it's default button is NO",
+                            JOptionPane.QUESTION_MESSAGE,
+                            JOptionPane.YES_NO_CANCEL_OPTION,
+                            JMessage.JMessageButtonEnum.NO
+                        );
+
+        switch( result ) {
+            case JOptionPane.CANCEL_OPTION:
+                System.out.println("CANCEL"); break;
+
+            case JOptionPane.YES_OPTION:
+                System.out.println("YES"); break;
+
+            case JOptionPane.NO_OPTION:
+                System.out.println("NO"); break;
+
+            case JOptionPane.CLOSED_OPTION:
+                System.out.println("CLOSED"); break;
+
+            default:
+                System.out.println("Unknown button!"); break;
+        }
+
+    }//GEN-LAST:event_m_questionButtonActionPerformed
+
+    private void m_warningButtonActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_m_warningButtonActionPerformed
+    {//GEN-HEADEREND:event_m_warningButtonActionPerformed
+
+        String s = "100.24";
+        try
+        {
+            int num = Integer.parseInt(s);
+        }
+        catch(Exception ex)
+        {
+            /* All messages should begin with '<html>' and end with '</html>',
+             * if not, JMessage automatically converts the plain text to html.
+             * You can also mix plain text and html text together!
+             * '\n' is transformed to '<br>'
+             */
+            JMessage.showMessageDialog(
+                this,
+                "A warning message with an <font color=\"#0066ff\">"+
+                    "<i>exception</i></font>." + "\n" +
+                    "Cannot parse <code>java.lang.Integer</code> number<br>" +
+                    "<b>" + ex.getMessage() + "</b>",
+                JOptionPane.WARNING_MESSAGE,
+                JOptionPane.DEFAULT_OPTION,
+                ex);
+        }
+
+    }//GEN-LAST:event_m_warningButtonActionPerformed
+
+    private void m_plainButtonActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_m_plainButtonActionPerformed
+    {//GEN-HEADEREND:event_m_plainButtonActionPerformed
+
+        JMessage.showMessageDialog(
+            this,
+            "A plain message.",
+            JOptionPane.PLAIN_MESSAGE,
+            JOptionPane.DEFAULT_OPTION);
+
+    }//GEN-LAST:event_m_plainButtonActionPerformed
+
+    private void m_infoButtonActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_m_infoButtonActionPerformed
+    {//GEN-HEADEREND:event_m_infoButtonActionPerformed
+
+        boolean acknowledge = false;
+        while( !acknowledge )
+        {
+            int result = JMessage.showMessageDialog(
+                            this,
+                            "An info message. Acknowledge?" +
+                                "<br>Close the dialog to see what happens...",
+                            JOptionPane.INFORMATION_MESSAGE,
+                            JOptionPane.YES_NO_OPTION);
+
+            switch( result ) {
+                case JOptionPane.YES_OPTION:
+                    acknowledge = true;
+                    System.out.println("YES"); break;
+
+                case JOptionPane.NO_OPTION:
+                    acknowledge = true;
+                    System.out.println("NO"); break;
+            }
+        }
+
+    }//GEN-LAST:event_m_infoButtonActionPerformed
+
+    private void m_errorButtonActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_m_errorButtonActionPerformed
+    {//GEN-HEADEREND:event_m_errorButtonActionPerformed
+
+        try
+        {
+            String s = null;
+            s.length();
+        }
+        catch(Exception ex)
+        {
+            JMessage.showMessageDialog(
+                this,
+                "You really did it this time!",
+                JOptionPane.ERROR_MESSAGE,
+                JOptionPane.DEFAULT_OPTION,
+                ex);
+        }
+
+    }//GEN-LAST:event_m_errorButtonActionPerformed
+
+
+    /**
+     * @param args the command line arguments
+     */
+    public static void main(String args[])
+    {
+        // if you enable this, also enable the CrossPlatformLookAndFeel or
+        // use JGoodies lnf
+        //
+        //JFrame.setDefaultLookAndFeelDecorated( true );
+        //JDialog.setDefaultLookAndFeelDecorated( true );
+        try
+        {
+            UIManager.setLookAndFeel(
+                    UIManager.getSystemLookAndFeelClassName() );
+            //UIManager.setLookAndFeel(
+            //      UIManager.getCrossPlatformLookAndFeelClassName() );
+        }
+        catch( Exception e )
+        {
+            System.err.println("Cannot initialize the look & feel");
+            e.printStackTrace();
+        }
+
+        java.awt.EventQueue.invokeLater(new Runnable()
+        {
+            public void run()
+            {
+                new JMessageTester().setVisible(true);
+            }
+        });
+    }
+
+    // Variables declaration - do not modify//GEN-BEGIN:variables
+    private javax.swing.JButton m_errorButton;
+    private javax.swing.JButton m_infoButton;
+    private javax.swing.JButton m_plainButton;
+    private javax.swing.JButton m_plainButton2;
+    private javax.swing.JButton m_questionButton;
+    private javax.swing.JButton m_warningButton;
+    // End of variables declaration//GEN-END:variables
+
+}
diff --git a/src/gr/zeus/tests/JSplashTester.form b/src/gr/zeus/tests/JSplashTester.form
new file mode 100644
index 0000000..f2f86ec
--- /dev/null
+++ b/src/gr/zeus/tests/JSplashTester.form
@@ -0,0 +1,73 @@
+<?xml version="1.1" encoding="UTF-8" ?>
+
+<Form version="1.2" maxVersion="1.2" type="org.netbeans.modules.form.forminfo.JFrameFormInfo">
+  <Properties>
+    <Property name="defaultCloseOperation" type="int" value="3"/>
+    <Property name="title" type="java.lang.String" value="Sample Application to demonstrate JSplash"/>
+  </Properties>
+  <SyntheticProperties>
+    <SyntheticProperty name="formSizePolicy" type="int" value="1"/>
+  </SyntheticProperties>
+  <AuxValues>
+    <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/>
+    <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
+    <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
+    <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
+    <AuxValue name="designerSize" type="java.awt.Dimension" value="-84,-19,0,5,115,114,0,18,106,97,118,97,46,97,119,116,46,68,105,109,101,110,115,105,111,110,65,-114,-39,-41,-84,95,68,20,2,0,2,73,0,6,104,101,105,103,104,116,73,0,5,119,105,100,116,104,120,112,0,0,1,44,0,0,1,-112"/>
+  </AuxValues>
+
+  <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/>
+  <SubComponents>
+    <Component class="javax.swing.JButton" name="exitButton">
+      <Properties>
+        <Property name="text" type="java.lang.String" value="Exit"/>
+      </Properties>
+      <Events>
+        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="exitButtonActionPerformed"/>
+      </Events>
+      <AuxValues>
+        <AuxValue name="JavaCodeGenerator_VariableLocal" type="java.lang.Boolean" value="true"/>
+        <AuxValue name="JavaCodeGenerator_VariableModifier" type="java.lang.Integer" value="0"/>
+      </AuxValues>
+      <Constraints>
+        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription">
+          <BorderConstraints direction="North"/>
+        </Constraint>
+      </Constraints>
+    </Component>
+    <Component class="javax.swing.JTextArea" name="jTextArea1">
+      <Properties>
+        <Property name="columns" type="int" value="60"/>
+        <Property name="rows" type="int" value="10"/>
+        <Property name="text" type="java.lang.String" value="Hello world!&#xa;"/>
+      </Properties>
+      <AuxValues>
+        <AuxValue name="JavaCodeGenerator_VariableLocal" type="java.lang.Boolean" value="true"/>
+        <AuxValue name="JavaCodeGenerator_VariableModifier" type="java.lang.Integer" value="0"/>
+      </AuxValues>
+      <Constraints>
+        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription">
+          <BorderConstraints direction="Center"/>
+        </Constraint>
+      </Constraints>
+    </Component>
+    <Component class="javax.swing.JLabel" name="jLabel1">
+      <Properties>
+        <Property name="text" type="java.lang.String" value="application loaded"/>
+      </Properties>
+      <AuxValues>
+        <AuxValue name="JavaCodeGenerator_VariableLocal" type="java.lang.Boolean" value="true"/>
+        <AuxValue name="JavaCodeGenerator_VariableModifier" type="java.lang.Integer" value="0"/>
+      </AuxValues>
+      <Constraints>
+        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription">
+          <BorderConstraints direction="South"/>
+        </Constraint>
+      </Constraints>
+    </Component>
+  </SubComponents>
+</Form>
diff --git a/src/gr/zeus/tests/JSplashTester.java b/src/gr/zeus/tests/JSplashTester.java
new file mode 100644
index 0000000..c7c0950
--- /dev/null
+++ b/src/gr/zeus/tests/JSplashTester.java
@@ -0,0 +1,207 @@
+/*
+ * JSplashTester.java - Test application for JSplash
+ *
+ * Copyright (c) 2004-2011 Gregory Kotsaftis
+ * gregkotsaftis at yahoo.com
+ * http://zeus-jscl.sourceforge.net/
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+package gr.zeus.tests;
+
+import gr.zeus.ui.JSplash;
+import gr.zeus.util.GUIUtils;
+import java.awt.Color;
+import java.awt.Font;
+import java.util.Random;
+import javax.swing.JFrame;
+import javax.swing.JOptionPane;
+import javax.swing.UIManager;
+
+public class JSplashTester extends JFrame {
+
+
+    public JSplashTester()
+    {
+        init_lnf();
+
+        initComponents();
+
+        GUIUtils.centerOnScreen( this );
+    }
+
+
+    /** This method is called from within the constructor to
+     * initialize the form.
+     * WARNING: Do NOT modify this code. The content of this method is
+     * always regenerated by the Form Editor.
+     */
+    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
+    private void initComponents()
+    {
+
+        javax.swing.JButton exitButton = new javax.swing.JButton();
+        javax.swing.JTextArea jTextArea1 = new javax.swing.JTextArea();
+        javax.swing.JLabel jLabel1 = new javax.swing.JLabel();
+
+        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
+        setTitle("Sample Application to demonstrate JSplash");
+
+        exitButton.setText("Exit");
+        exitButton.addActionListener(new java.awt.event.ActionListener()
+        {
+            public void actionPerformed(java.awt.event.ActionEvent evt)
+            {
+                exitButtonActionPerformed(evt);
+            }
+        });
+        getContentPane().add(exitButton, java.awt.BorderLayout.NORTH);
+
+        jTextArea1.setColumns(60);
+        jTextArea1.setRows(10);
+        jTextArea1.setText("Hello world!\n");
+        getContentPane().add(jTextArea1, java.awt.BorderLayout.CENTER);
+
+        jLabel1.setText("application loaded");
+        getContentPane().add(jLabel1, java.awt.BorderLayout.SOUTH);
+
+        pack();
+    }// </editor-fold>//GEN-END:initComponents
+
+    private void exitButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_exitButtonActionPerformed
+
+        System.exit( 0 );
+
+    }//GEN-LAST:event_exitButtonActionPerformed
+
+
+    /**
+     * setup our look and feel
+     */
+    private void init_lnf()
+    {
+        try
+        {
+            UIManager.setLookAndFeel(
+                    UIManager.getSystemLookAndFeelClassName() );
+        }
+        catch( Exception e )
+        {
+            System.err.println("Cannot initialize the look & feel");
+
+            e.printStackTrace();
+        }
+    }
+
+
+    /**
+     * @param args the command line arguments
+     */
+    public static void main(String args[])
+    {
+        String[] loadingMessages = {
+            null, // at first, don't display a message
+            "Initializing", "Loading libraries", "Applying configuration",
+            "Setting up logger", "Applying license", "Connecting to db",
+            "Quering customers", "Quering products & catalogs",
+            "Starting up GUI",
+            null // at the end don't display a message,
+                 // keep last message longer on display
+        };
+
+        int res = JOptionPane.showConfirmDialog(
+            new JFrame(),
+            "YES=custom messages, NO=no messages, CANCEL=display percent",
+            "Loading Messages Option", JOptionPane.YES_NO_CANCEL_OPTION,
+            JOptionPane.INFORMATION_MESSAGE, null);
+        boolean displayMessages = (res==0);
+        boolean displayPercent = (res==2);
+
+        // load and prepare the splash screen,
+        // could be done with 'static final' as well...
+        JSplash m_splash = new JSplash(
+            JSplashTester.class.getResource(
+                "/gr/zeus/tests/res/splash.jpg"), // the image
+            true, // do we want a progress bar?
+            displayMessages, // do we want messages displayed during loading?
+            displayPercent, // do we want percent displayed instead of messages?
+            "v1.00 build 35", // do we want to display a text message at the
+                              // bottom-right corner e.g. version number
+            new Font("Tahoma", 0, 11), // do we want another font?
+            Color.RED ); // do we need another color other than black?
+
+        // when we start our main() method, we invoke:
+        m_splash.splashOn();
+
+        // in several points in our code we invoke m_splash.setProgress()
+        // in order to increase the progress bar...
+        // e.g. m_splash.setProgress( 10 );
+        //      (call some methods);
+        //      m_splash.setProgress( 30 );
+        //      (call some methods);
+        //      m_splash.setProgress( 100 ); // finished!
+        //
+        // Here we will do just a simulation
+        //
+        Random r = new Random();
+        for(int i=0, j=0; i<=100; i+=10, j++)
+        {
+            int millis = (r.nextInt( 10 ) + 1) * 100;
+
+            if( displayMessages && !displayPercent )
+            {
+                m_splash.setProgress(i, loadingMessages[j]);
+            }
+            else
+            {
+                m_splash.setProgress( i );
+            }
+
+            try
+            {
+                Thread.sleep( millis );
+            }
+            catch(Exception e)
+            {
+                // do nothing
+            }
+        }
+
+        // give the user a sec to see the complete splash screen 100%
+        try
+        {
+            Thread.sleep( 1000 );
+        }
+        catch(Exception e)
+        {
+            // do nothing
+        }
+
+        // finished loading our application, hide splash
+        m_splash.splashOff();
+
+        // ...finally display your application GUI...
+        java.awt.EventQueue.invokeLater(new Runnable() {
+            public void run() {
+                new JSplashTester().setVisible(true);
+            }
+        });
+    }
+
+
+    // Variables declaration - do not modify//GEN-BEGIN:variables
+    // End of variables declaration//GEN-END:variables
+
+}
diff --git a/src/gr/zeus/tests/JTableTester.form b/src/gr/zeus/tests/JTableTester.form
new file mode 100644
index 0000000..ead6a04
--- /dev/null
+++ b/src/gr/zeus/tests/JTableTester.form
@@ -0,0 +1,209 @@
+<?xml version="1.1" encoding="UTF-8" ?>
+
+<Form version="1.2" maxVersion="1.2" type="org.netbeans.modules.form.forminfo.JFrameFormInfo">
+  <Properties>
+    <Property name="defaultCloseOperation" type="int" value="3"/>
+    <Property name="title" type="java.lang.String" value="Tester for JTable sorting, resizing and more..."/>
+  </Properties>
+  <SyntheticProperties>
+    <SyntheticProperty name="formSizePolicy" type="int" value="1"/>
+  </SyntheticProperties>
+  <AuxValues>
+    <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/>
+    <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
+    <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
+    <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
+    <AuxValue name="designerSize" type="java.awt.Dimension" value="-84,-19,0,5,115,114,0,18,106,97,118,97,46,97,119,116,46,68,105,109,101,110,115,105,111,110,65,-114,-39,-41,-84,95,68,20,2,0,2,73,0,6,104,101,105,103,104,116,73,0,5,119,105,100,116,104,120,112,0,0,1,75,0,0,1,-12"/>
+  </AuxValues>
+
+  <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/>
+  <SubComponents>
+    <Container class="javax.swing.JScrollPane" name="jScrollPane1">
+      <AuxValues>
+        <AuxValue name="JavaCodeGenerator_VariableLocal" type="java.lang.Boolean" value="true"/>
+        <AuxValue name="JavaCodeGenerator_VariableModifier" type="java.lang.Integer" value="0"/>
+      </AuxValues>
+      <Constraints>
+        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription">
+          <BorderConstraints direction="Center"/>
+        </Constraint>
+      </Constraints>
+
+      <Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
+      <SubComponents>
+        <Component class="javax.swing.JTable" name="m_table">
+          <Properties>
+            <Property name="model" type="javax.swing.table.TableModel" editor="org.netbeans.modules.form.editors2.TableModelEditor">
+              <Table columnCount="7" rowCount="0">
+                <Column editable="true" title="Title 1" type="java.lang.Object"/>
+                <Column editable="true" title="Title 2" type="java.lang.Object"/>
+                <Column editable="true" title="Title 3" type="java.lang.Object"/>
+                <Column editable="true" title="Title 4" type="java.lang.Object"/>
+                <Column editable="true" title="Title 5" type="java.lang.Object"/>
+                <Column editable="true" title="Title 6" type="java.lang.Object"/>
+                <Column editable="true" title="Title 7" type="java.lang.Object"/>
+              </Table>
+            </Property>
+            <Property name="toolTipText" type="java.lang.String" value="Press down and hold CTRL or SHIFT while selecting multiple columns' headers for sorting."/>
+          </Properties>
+        </Component>
+      </SubComponents>
+    </Container>
+    <Container class="javax.swing.JPanel" name="jPanel1">
+      <Properties>
+        <Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
+          <Dimension value="[500, 60]"/>
+        </Property>
+        <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
+          <Dimension value="[500, 60]"/>
+        </Property>
+      </Properties>
+      <Constraints>
+        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription">
+          <BorderConstraints direction="South"/>
+        </Constraint>
+      </Constraints>
+
+      <Layout class="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout">
+        <Property name="useNullLayout" type="boolean" value="true"/>
+      </Layout>
+      <SubComponents>
+        <Component class="javax.swing.JLabel" name="jLabel1">
+          <Properties>
+            <Property name="horizontalAlignment" type="int" value="0"/>
+            <Property name="text" type="java.lang.String" value="dd/MM/yyyy"/>
+          </Properties>
+          <Constraints>
+            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
+              <AbsoluteConstraints x="10" y="10" width="70" height="20"/>
+            </Constraint>
+          </Constraints>
+        </Component>
+        <Component class="javax.swing.JTextField" name="dateTextField">
+          <Constraints>
+            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
+              <AbsoluteConstraints x="10" y="30" width="70" height="-1"/>
+            </Constraint>
+          </Constraints>
+        </Component>
+        <Component class="javax.swing.JLabel" name="jLabel2">
+          <Properties>
+            <Property name="horizontalAlignment" type="int" value="0"/>
+            <Property name="text" type="java.lang.String" value="int"/>
+          </Properties>
+          <Constraints>
+            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
+              <AbsoluteConstraints x="90" y="10" width="30" height="20"/>
+            </Constraint>
+          </Constraints>
+        </Component>
+        <Component class="javax.swing.JTextField" name="intTextField">
+          <Constraints>
+            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
+              <AbsoluteConstraints x="90" y="30" width="30" height="-1"/>
+            </Constraint>
+          </Constraints>
+        </Component>
+        <Component class="javax.swing.JLabel" name="jLabel3">
+          <Properties>
+            <Property name="horizontalAlignment" type="int" value="0"/>
+            <Property name="text" type="java.lang.String" value="firstname"/>
+          </Properties>
+          <Constraints>
+            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
+              <AbsoluteConstraints x="130" y="10" width="90" height="20"/>
+            </Constraint>
+          </Constraints>
+        </Component>
+        <Component class="javax.swing.JTextField" name="firstnameTextField">
+          <Constraints>
+            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
+              <AbsoluteConstraints x="130" y="30" width="90" height="-1"/>
+            </Constraint>
+          </Constraints>
+        </Component>
+        <Component class="javax.swing.JLabel" name="jLabel4">
+          <Properties>
+            <Property name="horizontalAlignment" type="int" value="0"/>
+            <Property name="text" type="java.lang.String" value="lastname"/>
+          </Properties>
+          <Constraints>
+            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
+              <AbsoluteConstraints x="230" y="10" width="90" height="20"/>
+            </Constraint>
+          </Constraints>
+        </Component>
+        <Component class="javax.swing.JTextField" name="lastnameTextField">
+          <Constraints>
+            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
+              <AbsoluteConstraints x="230" y="30" width="90" height="-1"/>
+            </Constraint>
+          </Constraints>
+        </Component>
+        <Component class="javax.swing.JLabel" name="jLabel5">
+          <Properties>
+            <Property name="horizontalAlignment" type="int" value="0"/>
+            <Property name="text" type="java.lang.String" value="float"/>
+          </Properties>
+          <Constraints>
+            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
+              <AbsoluteConstraints x="330" y="10" width="30" height="20"/>
+            </Constraint>
+          </Constraints>
+        </Component>
+        <Component class="javax.swing.JTextField" name="floatTextField">
+          <Constraints>
+            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
+              <AbsoluteConstraints x="330" y="30" width="30" height="-1"/>
+            </Constraint>
+          </Constraints>
+        </Component>
+        <Component class="javax.swing.JCheckBox" name="checkBox">
+          <Constraints>
+            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
+              <AbsoluteConstraints x="370" y="30" width="20" height="-1"/>
+            </Constraint>
+          </Constraints>
+        </Component>
+        <Component class="javax.swing.JLabel" name="jLabel6">
+          <Properties>
+            <Property name="horizontalAlignment" type="int" value="0"/>
+            <Property name="text" type="java.lang.String" value="percent"/>
+          </Properties>
+          <Constraints>
+            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
+              <AbsoluteConstraints x="400" y="10" width="40" height="20"/>
+            </Constraint>
+          </Constraints>
+        </Component>
+        <Component class="javax.swing.JSpinner" name="percentSpinner">
+          <AuxValues>
+            <AuxValue name="JavaCodeGenerator_CreateCodeCustom" type="java.lang.String" value="new JSpinner( &#xa;    new SpinnerNumberModel(0, 0, 100, 10)  );"/>
+          </AuxValues>
+          <Constraints>
+            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
+              <AbsoluteConstraints x="400" y="30" width="40" height="-1"/>
+            </Constraint>
+          </Constraints>
+        </Component>
+        <Component class="javax.swing.JButton" name="button">
+          <Properties>
+            <Property name="text" type="java.lang.String" value="+"/>
+          </Properties>
+          <Events>
+            <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="buttonActionPerformed"/>
+          </Events>
+          <Constraints>
+            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
+              <AbsoluteConstraints x="450" y="10" width="40" height="40"/>
+            </Constraint>
+          </Constraints>
+        </Component>
+      </SubComponents>
+    </Container>
+  </SubComponents>
+</Form>
diff --git a/src/gr/zeus/tests/JTableTester.java b/src/gr/zeus/tests/JTableTester.java
new file mode 100644
index 0000000..30aeae3
--- /dev/null
+++ b/src/gr/zeus/tests/JTableTester.java
@@ -0,0 +1,369 @@
+/*
+ * JTableTester.java - Test application for TableSorter and related classes
+ *
+ * Copyright (c) 2004-2011 Gregory Kotsaftis
+ * gregkotsaftis at yahoo.com
+ * http://zeus-jscl.sourceforge.net/
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+package gr.zeus.tests;
+
+import gr.zeus.ui.table.AutoResizeTableColumns;
+import gr.zeus.ui.table.ProgressBarCellRenderer;
+import gr.zeus.ui.table.TableSorter;
+import gr.zeus.ui.table.TableSorterIcons;
+import gr.zeus.util.DateHelper;
+import java.awt.Color;
+import java.text.SimpleDateFormat;
+import java.util.Hashtable;
+import javax.swing.Icon;
+import javax.swing.JFrame;
+import javax.swing.JSpinner;
+import javax.swing.SpinnerNumberModel;
+import javax.swing.UIManager;
+import javax.swing.table.DefaultTableModel;
+import javax.swing.table.TableColumnModel;
+
+public class JTableTester extends JFrame {
+
+    private static final String[] COLUMN_NAMES = {
+        "DATE","INTEGER","FIRSTNAME","LASTNAME","FLOAT","BOOLEAN","PROGRESS"};
+
+    // THIS IS YOUR TABLE MODEL!
+    private DefaultTableModel m_tableModel = new DefaultTableModel(null,
+                                                    COLUMN_NAMES) {
+
+        public boolean isCellEditable(int row, int column)
+        {
+            return( false );
+        }
+
+        public Class getColumnClass(int col)
+        {
+            return( getValueAt(0, col).getClass() );
+        }
+    };
+
+    // THIS IS A VIEW OF YOYR ACTUAL TABLE MODEL, USED FOR TABLE SORTING!
+    private TableSorter m_tableSorter = new TableSorter( m_tableModel );
+
+
+    public JTableTester()
+    {
+        initComponents();
+
+        // set the table model
+        m_table.setModel( m_tableModel );
+
+        // no reordering of the columns
+        //m_table.getTableHeader().setReorderingAllowed( false );
+
+        // select only one row
+        //m_table.setSelectionMode( ListSelectionModel.SINGLE_SELECTION );
+
+        // use scrollbar
+        //m_table.setAutoResizeMode( JTable.AUTO_RESIZE_OFF );
+
+        // Hiding first column in order to test resize
+        //GUIUtils.hideJTableColumn( m_table.getColumnModel().getColumn(0) );
+
+        // SORTING CONFIGURATION
+        // if you wish to use the same icons regardless of column's sorting
+        // priority, then use the two lines below.
+        //
+        //Icon ups[] = new Icon[] {TableSorterIcons.UP5_ICON};
+        //Icon downs[] = new Icon[] {TableSorterIcons.DOWN5_ICON};
+        //
+        Icon ups[] = new Icon[] {
+                TableSorterIcons.UP5_ICON, // this one will be dispayed first
+                TableSorterIcons.UP7_ICON,
+                TableSorterIcons.UP6_ICON,
+                TableSorterIcons.UP4_ICON,
+                TableSorterIcons.UP3_ICON,
+                TableSorterIcons.UP2_ICON,
+                TableSorterIcons.UP1_ICON
+        };
+        Icon downs[] = new Icon[] {
+                TableSorterIcons.DOWN5_ICON, // this one will be dispayed first
+                TableSorterIcons.DOWN7_ICON,
+                TableSorterIcons.DOWN6_ICON,
+                TableSorterIcons.DOWN4_ICON,
+                TableSorterIcons.DOWN3_ICON,
+                TableSorterIcons.DOWN2_ICON,
+                TableSorterIcons.DOWN1_ICON
+        };
+        m_tableSorter.setCustomIcons(ups, downs);
+        m_tableSorter.setTableHeader( m_table.getTableHeader() );
+        m_table.setModel( m_tableSorter );
+        //-----
+
+        // TABLE RESIZING CONFIGURATION
+        // resize but don't lock the columns
+        AutoResizeTableColumns resizer = new AutoResizeTableColumns(m_table,
+            m_tableModel, 32, true, true,
+                new boolean[m_table.getColumnCount()]);
+        // uncomment for debuging
+        //resizer.setDebugMode( true );
+        //-----
+
+        // TABLE ACTUAL DATA
+        try
+        {
+            SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
+            Object[][] values = new Object[][]
+            {
+                {sdf.parse("29/11/2004"), new Integer(999),
+                         "Gregory", "Kotsaftis", new Float(999.99F),
+                         Boolean.FALSE, new Integer(90)},
+                {sdf.parse("14/06/2003"), new Integer(888),
+                         "Litsa", "Katsoni", new Float(888.88F),
+                         Boolean.TRUE, new Integer(80)},
+                {sdf.parse("20/07/2001"), new Integer(9),
+                         "George", "Mavrakis", new Float(109.30F),
+                         Boolean.TRUE, new Integer(25)},
+                {sdf.parse("30/10/1999"), new Integer(190),
+                         "Kostas", "Filippaios", new Float(23.27F),
+                         Boolean.FALSE, new Integer(50)},
+                {sdf.parse("02/02/2002"), new Integer(1258),
+                         "John", "Papadopoulos", new Float(109.30F),
+                         Boolean.TRUE, new Integer(100)},
+                {sdf.parse("15/12/1985"), new Integer(910),
+                         "Spyros", "Papadolpoulos", new Float(410.08F),
+                         Boolean.FALSE, new Integer(75)},
+                {sdf.parse("6/04/2000"), new Integer(5),
+                         "Makis", "Triantafyllopoulos", new Float(10.00F),
+                         Boolean.TRUE, new Integer(100)}
+            };
+
+            /* instead of addRow()... */
+            /*m_tableModel.addRow(values[0]);
+            m_tableModel.addRow(values[1]);
+            m_tableModel.addRow(values[2]);
+            m_tableModel.addRow(values[3]);
+            m_tableModel.addRow(values[4]);
+            m_tableModel.addRow(values[5]);
+            m_tableModel.addRow(values[6]);*/
+
+            /* ...use setDataVector() for performance! */
+            m_tableModel.setDataVector(values, COLUMN_NAMES);
+            //-----
+        }
+        catch(Exception e)
+        {
+            e.printStackTrace();
+        }
+
+        // TABLE SPECIAL RENDERER FOR PROGRESSBAR
+        // configuration for progress bar...
+        Hashtable<Integer,Color> limitColors = new Hashtable<Integer,Color>();
+        limitColors.put(new Integer( 0), Color.green);
+        limitColors.put(new Integer(60), Color.yellow);
+        limitColors.put(new Integer(80), Color.red);
+        // COLUMN 6 contains progress bar!
+        TableColumnModel model = m_table.getColumnModel();
+        model.getColumn(6).setCellRenderer( new ProgressBarCellRenderer(
+                true, false, 0, 100, limitColors, m_table.getBackground()) );
+        //-----
+    }
+
+
+    /**
+     * Quick and dirty data entry to table.
+     */
+    private void add_row()
+    {
+        try
+        {
+            java.util.Date d = DateHelper.parseDate(
+                                dateTextField.getText().trim(), "dd/MM/yyyy");
+            Integer i = new Integer( intTextField.getText().trim() );
+            String firstname = firstnameTextField.getText().trim();
+            String lastname = lastnameTextField.getText().trim();
+            Float f = new Float( floatTextField.getText().trim() );
+            Boolean b = new Boolean( checkBox.isSelected() );
+            Integer percent = (Integer) percentSpinner.getValue();
+
+            m_tableModel.addRow( new Object[]{d, i, firstname, lastname, f, b,
+                                                percent} );
+        }
+        catch(Exception e)
+        {
+            e.printStackTrace();
+        }
+    }
+
+
+    /** This method is called from within the constructor to
+     * initialize the form.
+     * WARNING: Do NOT modify this code. The content of this method is
+     * always regenerated by the Form Editor.
+     */
+    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
+    private void initComponents()
+    {
+
+        javax.swing.JScrollPane jScrollPane1 = new javax.swing.JScrollPane();
+        m_table = new javax.swing.JTable();
+        jPanel1 = new javax.swing.JPanel();
+        jLabel1 = new javax.swing.JLabel();
+        dateTextField = new javax.swing.JTextField();
+        jLabel2 = new javax.swing.JLabel();
+        intTextField = new javax.swing.JTextField();
+        jLabel3 = new javax.swing.JLabel();
+        firstnameTextField = new javax.swing.JTextField();
+        jLabel4 = new javax.swing.JLabel();
+        lastnameTextField = new javax.swing.JTextField();
+        jLabel5 = new javax.swing.JLabel();
+        floatTextField = new javax.swing.JTextField();
+        checkBox = new javax.swing.JCheckBox();
+        jLabel6 = new javax.swing.JLabel();
+        percentSpinner = new JSpinner(
+            new SpinnerNumberModel(0, 0, 100, 10)  );
+        button = new javax.swing.JButton();
+
+        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
+        setTitle("Tester for JTable sorting, resizing and more...");
+
+        m_table.setModel(new javax.swing.table.DefaultTableModel(
+            new Object [][]
+            {
+
+            },
+            new String []
+            {
+                "Title 1", "Title 2", "Title 3", "Title 4", "Title 5", "Title 6", "Title 7"
+            }
+        ));
+        m_table.setToolTipText("Press down and hold CTRL or SHIFT while selecting multiple columns' headers for sorting.");
+        jScrollPane1.setViewportView(m_table);
+
+        getContentPane().add(jScrollPane1, java.awt.BorderLayout.CENTER);
+
+        jPanel1.setMinimumSize(new java.awt.Dimension(500, 60));
+        jPanel1.setPreferredSize(new java.awt.Dimension(500, 60));
+        jPanel1.setLayout(null);
+
+        jLabel1.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
+        jLabel1.setText("dd/MM/yyyy");
+        jPanel1.add(jLabel1);
+        jLabel1.setBounds(10, 10, 70, 20);
+        jPanel1.add(dateTextField);
+        dateTextField.setBounds(10, 30, 70, 21);
+
+        jLabel2.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
+        jLabel2.setText("int");
+        jPanel1.add(jLabel2);
+        jLabel2.setBounds(90, 10, 30, 20);
+        jPanel1.add(intTextField);
+        intTextField.setBounds(90, 30, 30, 21);
+
+        jLabel3.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
+        jLabel3.setText("firstname");
+        jPanel1.add(jLabel3);
+        jLabel3.setBounds(130, 10, 90, 20);
+        jPanel1.add(firstnameTextField);
+        firstnameTextField.setBounds(130, 30, 90, 21);
+
+        jLabel4.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
+        jLabel4.setText("lastname");
+        jPanel1.add(jLabel4);
+        jLabel4.setBounds(230, 10, 90, 20);
+        jPanel1.add(lastnameTextField);
+        lastnameTextField.setBounds(230, 30, 90, 21);
+
+        jLabel5.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
+        jLabel5.setText("float");
+        jPanel1.add(jLabel5);
+        jLabel5.setBounds(330, 10, 30, 20);
+        jPanel1.add(floatTextField);
+        floatTextField.setBounds(330, 30, 30, 21);
+        jPanel1.add(checkBox);
+        checkBox.setBounds(370, 30, 20, 17);
+
+        jLabel6.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
+        jLabel6.setText("percent");
+        jPanel1.add(jLabel6);
+        jLabel6.setBounds(400, 10, 40, 20);
+        jPanel1.add(percentSpinner);
+        percentSpinner.setBounds(400, 30, 40, 21);
+
+        button.setText("+");
+        button.addActionListener(new java.awt.event.ActionListener()
+        {
+            public void actionPerformed(java.awt.event.ActionEvent evt)
+            {
+                buttonActionPerformed(evt);
+            }
+        });
+        jPanel1.add(button);
+        button.setBounds(450, 10, 40, 40);
+
+        getContentPane().add(jPanel1, java.awt.BorderLayout.SOUTH);
+
+        pack();
+    }// </editor-fold>//GEN-END:initComponents
+
+    private void buttonActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_buttonActionPerformed
+    {//GEN-HEADEREND:event_buttonActionPerformed
+
+        add_row();
+
+    }//GEN-LAST:event_buttonActionPerformed
+
+
+    /**
+     * @param args the command line arguments
+     */
+    public static void main(String args[])
+    {
+        try
+        {
+            UIManager.setLookAndFeel(
+                    UIManager.getSystemLookAndFeelClassName() );
+        }
+        catch( Exception e )
+        {
+            e.printStackTrace();
+        }
+
+        java.awt.EventQueue.invokeLater(new Runnable() {
+            public void run() {
+                new JTableTester().setVisible(true);
+            }
+        });
+    }
+
+
+    // Variables declaration - do not modify//GEN-BEGIN:variables
+    private javax.swing.JButton button;
+    private javax.swing.JCheckBox checkBox;
+    private javax.swing.JTextField dateTextField;
+    private javax.swing.JTextField firstnameTextField;
+    private javax.swing.JTextField floatTextField;
+    private javax.swing.JTextField intTextField;
+    private javax.swing.JLabel jLabel1;
+    private javax.swing.JLabel jLabel2;
+    private javax.swing.JLabel jLabel3;
+    private javax.swing.JLabel jLabel4;
+    private javax.swing.JLabel jLabel5;
+    private javax.swing.JLabel jLabel6;
+    private javax.swing.JPanel jPanel1;
+    private javax.swing.JTextField lastnameTextField;
+    private javax.swing.JTable m_table;
+    private javax.swing.JSpinner percentSpinner;
+    // End of variables declaration//GEN-END:variables
+
+}
diff --git a/src/gr/zeus/tests/JTester.form b/src/gr/zeus/tests/JTester.form
new file mode 100644
index 0000000..12b3bff
--- /dev/null
+++ b/src/gr/zeus/tests/JTester.form
@@ -0,0 +1,192 @@
+<?xml version="1.1" encoding="UTF-8" ?>
+
+<Form version="1.2" maxVersion="1.2" type="org.netbeans.modules.form.forminfo.JFrameFormInfo">
+  <NonVisualComponents>
+    <Menu class="javax.swing.JMenuBar" name="jMenuBar1">
+      <AuxValues>
+        <AuxValue name="JavaCodeGenerator_VariableLocal" type="java.lang.Boolean" value="true"/>
+        <AuxValue name="JavaCodeGenerator_VariableModifier" type="java.lang.Integer" value="0"/>
+      </AuxValues>
+      <SubComponents>
+        <Menu class="javax.swing.JMenu" name="jMenu1">
+          <Properties>
+            <Property name="text" type="java.lang.String" value="Menu"/>
+          </Properties>
+          <AuxValues>
+            <AuxValue name="JavaCodeGenerator_VariableLocal" type="java.lang.Boolean" value="true"/>
+            <AuxValue name="JavaCodeGenerator_VariableModifier" type="java.lang.Integer" value="0"/>
+          </AuxValues>
+          <SubComponents>
+            <MenuItem class="javax.swing.JMenuItem" name="abnormalExit">
+              <Properties>
+                <Property name="text" type="java.lang.String" value="Abnormal Exit"/>
+              </Properties>
+              <Events>
+                <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="abnormalExitActionPerformed"/>
+              </Events>
+              <AuxValues>
+                <AuxValue name="JavaCodeGenerator_VariableLocal" type="java.lang.Boolean" value="true"/>
+                <AuxValue name="JavaCodeGenerator_VariableModifier" type="java.lang.Integer" value="0"/>
+              </AuxValues>
+            </MenuItem>
+            <MenuItem class="javax.swing.JMenuItem" name="normalExit">
+              <Properties>
+                <Property name="text" type="java.lang.String" value="Normal Exit"/>
+              </Properties>
+              <Events>
+                <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="normalExitActionPerformed"/>
+              </Events>
+              <AuxValues>
+                <AuxValue name="JavaCodeGenerator_VariableLocal" type="java.lang.Boolean" value="true"/>
+                <AuxValue name="JavaCodeGenerator_VariableModifier" type="java.lang.Integer" value="0"/>
+              </AuxValues>
+            </MenuItem>
+          </SubComponents>
+        </Menu>
+      </SubComponents>
+    </Menu>
+  </NonVisualComponents>
+  <Properties>
+    <Property name="title" type="java.lang.String" value="Main Test/Demo Application"/>
+  </Properties>
+  <SyntheticProperties>
+    <SyntheticProperty name="menuBar" type="java.lang.String" value="jMenuBar1"/>
+    <SyntheticProperty name="formSizePolicy" type="int" value="1"/>
+  </SyntheticProperties>
+  <Events>
+    <EventHandler event="windowClosing" listener="java.awt.event.WindowListener" parameters="java.awt.event.WindowEvent" handler="formWindowClosing"/>
+  </Events>
+  <AuxValues>
+    <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/>
+    <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
+    <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
+    <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
+    <AuxValue name="designerSize" type="java.awt.Dimension" value="-84,-19,0,5,115,114,0,18,106,97,118,97,46,97,119,116,46,68,105,109,101,110,115,105,111,110,65,-114,-39,-41,-84,95,68,20,2,0,2,73,0,6,104,101,105,103,104,116,73,0,5,119,105,100,116,104,120,112,0,0,1,62,0,0,2,-20"/>
+  </AuxValues>
+
+  <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/>
+  <SubComponents>
+    <Component class="javax.swing.JTextArea" name="infoTextArea">
+      <Properties>
+        <Property name="editable" type="boolean" value="false"/>
+        <Property name="lineWrap" type="boolean" value="true"/>
+        <Property name="text" type="java.lang.String" value="In order to test the SingleAppInstance functionality&#xa;try to start again this program (JTester).&#xa;&#xa;Also you can try the "Abnormal Exit" from the menu&#xa;and then try to start again this program.&#xa;"/>
+        <Property name="wrapStyleWord" type="boolean" value="true"/>
+      </Properties>
+      <AuxValues>
+        <AuxValue name="JavaCodeGenerator_VariableLocal" type="java.lang.Boolean" value="true"/>
+        <AuxValue name="JavaCodeGenerator_VariableModifier" type="java.lang.Integer" value="0"/>
+      </AuxValues>
+      <Constraints>
+        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription">
+          <BorderConstraints direction="Center"/>
+        </Constraint>
+      </Constraints>
+    </Component>
+    <Container class="javax.swing.JPanel" name="buttonsPanel">
+      <AuxValues>
+        <AuxValue name="JavaCodeGenerator_VariableLocal" type="java.lang.Boolean" value="true"/>
+        <AuxValue name="JavaCodeGenerator_VariableModifier" type="java.lang.Integer" value="0"/>
+      </AuxValues>
+      <Constraints>
+        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription">
+          <BorderConstraints direction="South"/>
+        </Constraint>
+      </Constraints>
+
+      <Layout class="org.netbeans.modules.form.compat2.layouts.DesignFlowLayout">
+        <Property name="alignment" type="int" value="0"/>
+      </Layout>
+      <SubComponents>
+        <Component class="javax.swing.JButton" name="windowManagerButton">
+          <Properties>
+            <Property name="text" type="java.lang.String" value="WindowManager"/>
+          </Properties>
+          <Events>
+            <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="windowManagerButtonActionPerformed"/>
+          </Events>
+          <AuxValues>
+            <AuxValue name="JavaCodeGenerator_VariableLocal" type="java.lang.Boolean" value="true"/>
+            <AuxValue name="JavaCodeGenerator_VariableModifier" type="java.lang.Integer" value="0"/>
+          </AuxValues>
+        </Component>
+        <Component class="javax.swing.JButton" name="outlookToolbarButton">
+          <Properties>
+            <Property name="text" type="java.lang.String" value="OutLookToolBar"/>
+          </Properties>
+          <Events>
+            <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="outlookToolbarButtonActionPerformed"/>
+          </Events>
+          <AuxValues>
+            <AuxValue name="JavaCodeGenerator_VariableLocal" type="java.lang.Boolean" value="true"/>
+            <AuxValue name="JavaCodeGenerator_VariableModifier" type="java.lang.Integer" value="0"/>
+          </AuxValues>
+        </Component>
+        <Component class="javax.swing.JButton" name="tableButton">
+          <Properties>
+            <Property name="text" type="java.lang.String" value="JTable"/>
+          </Properties>
+          <Events>
+            <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="tableButtonActionPerformed"/>
+          </Events>
+          <AuxValues>
+            <AuxValue name="JavaCodeGenerator_VariableLocal" type="java.lang.Boolean" value="true"/>
+            <AuxValue name="JavaCodeGenerator_VariableModifier" type="java.lang.Integer" value="0"/>
+          </AuxValues>
+        </Component>
+        <Component class="javax.swing.JButton" name="jsplashButton">
+          <Properties>
+            <Property name="text" type="java.lang.String" value="JSplash"/>
+          </Properties>
+          <Events>
+            <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jsplashButtonActionPerformed"/>
+          </Events>
+          <AuxValues>
+            <AuxValue name="JavaCodeGenerator_VariableLocal" type="java.lang.Boolean" value="true"/>
+            <AuxValue name="JavaCodeGenerator_VariableModifier" type="java.lang.Integer" value="0"/>
+          </AuxValues>
+        </Component>
+        <Component class="javax.swing.JButton" name="jconsoleButton">
+          <Properties>
+            <Property name="text" type="java.lang.String" value="JConsole"/>
+          </Properties>
+          <Events>
+            <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jconsoleButtonActionPerformed"/>
+          </Events>
+          <AuxValues>
+            <AuxValue name="JavaCodeGenerator_VariableLocal" type="java.lang.Boolean" value="true"/>
+            <AuxValue name="JavaCodeGenerator_VariableModifier" type="java.lang.Integer" value="0"/>
+          </AuxValues>
+        </Component>
+        <Component class="javax.swing.JButton" name="jconsoleButton2">
+          <Properties>
+            <Property name="text" type="java.lang.String" value="JConsole2"/>
+          </Properties>
+          <Events>
+            <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jconsoleButton2ActionPerformed"/>
+          </Events>
+        </Component>
+        <Component class="javax.swing.JButton" name="typesafeButton">
+          <Properties>
+            <Property name="text" type="java.lang.String" value="TypeSafe"/>
+          </Properties>
+          <Events>
+            <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="typesafeButtonActionPerformed"/>
+          </Events>
+        </Component>
+        <Component class="javax.swing.JButton" name="jmessageButton">
+          <Properties>
+            <Property name="text" type="java.lang.String" value="JMessage"/>
+          </Properties>
+          <Events>
+            <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jmessageButtonActionPerformed"/>
+          </Events>
+        </Component>
+      </SubComponents>
+    </Container>
+  </SubComponents>
+</Form>
diff --git a/src/gr/zeus/tests/JTester.java b/src/gr/zeus/tests/JTester.java
new file mode 100644
index 0000000..d1d697f
--- /dev/null
+++ b/src/gr/zeus/tests/JTester.java
@@ -0,0 +1,466 @@
+/*
+ * JTester.java - Test application for the library, wrapper for all demos
+ *
+ * Copyright (c) 2004-2011 Gregory Kotsaftis
+ * gregkotsaftis at yahoo.com
+ * http://zeus-jscl.sourceforge.net/
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+package gr.zeus.tests;
+
+import gr.zeus.ui.SingleAppInstance;
+import gr.zeus.util.SimpleTimerMillis;
+import gr.zeus.util.SimpleTimerNanos;
+import javax.swing.JFrame;
+import javax.swing.JOptionPane;
+import javax.swing.SwingUtilities;
+import javax.swing.UIManager;
+import javax.swing.WindowConstants;
+
+public class JTester extends JFrame {
+
+    // allow only one instance of this program (tester for SingleAppInstance)
+    // very simple to use: execute onInit() just after program execution and
+    // onExit() just before program exiting.
+    private static SingleAppInstance m_inst = null;
+
+    // SimpleTimerMillis demo
+    private SimpleTimerMillis m_timerMillis = new SimpleTimerMillis();
+
+    // SimpleTimerNanos demo
+    private SimpleTimerNanos m_timerNanos = new SimpleTimerNanos();
+
+
+    public JTester()
+    {
+        // time how long for the gui to load
+        m_timerMillis.start();
+        m_timerNanos.start();
+
+        init_lnf();
+
+        initComponents();
+
+        long nanos = m_timerNanos.elapsedNanos();
+        double millis2 = m_timerNanos.elapsedMillis();
+        double secs2 = m_timerNanos.elapsedSeconds();
+        long millis = m_timerMillis.elapsedMillis();
+        double secs = m_timerMillis.elapsedSeconds();
+
+        System.out.println("gui startup time: " + nanos + " nanos, " + millis2 +
+                " milliseconds, " + secs2 + " seconds.");
+        System.out.println("gui startup time: " + millis + " milliseconds, " +
+                secs + " seconds.");
+
+        // reset the timer
+        m_timerMillis.reset();
+        m_timerNanos.reset();
+
+        // time how long we used this application
+        m_timerMillis.start();
+        m_timerNanos.start();
+    }
+
+
+    /** This method is called from within the constructor to
+     * initialize the form.
+     * WARNING: Do NOT modify this code. The content of this method is
+     * always regenerated by the Form Editor.
+     */
+    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
+    private void initComponents()
+    {
+
+        javax.swing.JTextArea infoTextArea = new javax.swing.JTextArea();
+        javax.swing.JPanel buttonsPanel = new javax.swing.JPanel();
+        javax.swing.JButton windowManagerButton = new javax.swing.JButton();
+        javax.swing.JButton outlookToolbarButton = new javax.swing.JButton();
+        javax.swing.JButton tableButton = new javax.swing.JButton();
+        javax.swing.JButton jsplashButton = new javax.swing.JButton();
+        javax.swing.JButton jconsoleButton = new javax.swing.JButton();
+        jconsoleButton2 = new javax.swing.JButton();
+        typesafeButton = new javax.swing.JButton();
+        jmessageButton = new javax.swing.JButton();
+        javax.swing.JMenuBar jMenuBar1 = new javax.swing.JMenuBar();
+        javax.swing.JMenu jMenu1 = new javax.swing.JMenu();
+        javax.swing.JMenuItem abnormalExit = new javax.swing.JMenuItem();
+        javax.swing.JMenuItem normalExit = new javax.swing.JMenuItem();
+
+        setTitle("Main Test/Demo Application");
+        addWindowListener(new java.awt.event.WindowAdapter()
+        {
+            public void windowClosing(java.awt.event.WindowEvent evt)
+            {
+                formWindowClosing(evt);
+            }
+        });
+
+        infoTextArea.setEditable(false);
+        infoTextArea.setLineWrap(true);
+        infoTextArea.setText("In order to test the SingleAppInstance functionality\ntry to start again this program (JTester).\n\nAlso you can try the \"Abnormal Exit\" from the menu\nand then try to start again this program.\n");
+        infoTextArea.setWrapStyleWord(true);
+        getContentPane().add(infoTextArea, java.awt.BorderLayout.CENTER);
+
+        buttonsPanel.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.LEFT));
+
+        windowManagerButton.setText("WindowManager");
+        windowManagerButton.addActionListener(new java.awt.event.ActionListener()
+        {
+            public void actionPerformed(java.awt.event.ActionEvent evt)
+            {
+                windowManagerButtonActionPerformed(evt);
+            }
+        });
+        buttonsPanel.add(windowManagerButton);
+
+        outlookToolbarButton.setText("OutLookToolBar");
+        outlookToolbarButton.addActionListener(new java.awt.event.ActionListener()
+        {
+            public void actionPerformed(java.awt.event.ActionEvent evt)
+            {
+                outlookToolbarButtonActionPerformed(evt);
+            }
+        });
+        buttonsPanel.add(outlookToolbarButton);
+
+        tableButton.setText("JTable");
+        tableButton.addActionListener(new java.awt.event.ActionListener()
+        {
+            public void actionPerformed(java.awt.event.ActionEvent evt)
+            {
+                tableButtonActionPerformed(evt);
+            }
+        });
+        buttonsPanel.add(tableButton);
+
+        jsplashButton.setText("JSplash");
+        jsplashButton.addActionListener(new java.awt.event.ActionListener()
+        {
+            public void actionPerformed(java.awt.event.ActionEvent evt)
+            {
+                jsplashButtonActionPerformed(evt);
+            }
+        });
+        buttonsPanel.add(jsplashButton);
+
+        jconsoleButton.setText("JConsole");
+        jconsoleButton.addActionListener(new java.awt.event.ActionListener()
+        {
+            public void actionPerformed(java.awt.event.ActionEvent evt)
+            {
+                jconsoleButtonActionPerformed(evt);
+            }
+        });
+        buttonsPanel.add(jconsoleButton);
+
+        jconsoleButton2.setText("JConsole2");
+        jconsoleButton2.addActionListener(new java.awt.event.ActionListener()
+        {
+            public void actionPerformed(java.awt.event.ActionEvent evt)
+            {
+                jconsoleButton2ActionPerformed(evt);
+            }
+        });
+        buttonsPanel.add(jconsoleButton2);
+
+        typesafeButton.setText("TypeSafe");
+        typesafeButton.addActionListener(new java.awt.event.ActionListener()
+        {
+            public void actionPerformed(java.awt.event.ActionEvent evt)
+            {
+                typesafeButtonActionPerformed(evt);
+            }
+        });
+        buttonsPanel.add(typesafeButton);
+
+        jmessageButton.setText("JMessage");
+        jmessageButton.addActionListener(new java.awt.event.ActionListener()
+        {
+            public void actionPerformed(java.awt.event.ActionEvent evt)
+            {
+                jmessageButtonActionPerformed(evt);
+            }
+        });
+        buttonsPanel.add(jmessageButton);
+
+        getContentPane().add(buttonsPanel, java.awt.BorderLayout.SOUTH);
+
+        jMenu1.setText("Menu");
+
+        abnormalExit.setText("Abnormal Exit");
+        abnormalExit.addActionListener(new java.awt.event.ActionListener()
+        {
+            public void actionPerformed(java.awt.event.ActionEvent evt)
+            {
+                abnormalExitActionPerformed(evt);
+            }
+        });
+        jMenu1.add(abnormalExit);
+
+        normalExit.setText("Normal Exit");
+        normalExit.addActionListener(new java.awt.event.ActionListener()
+        {
+            public void actionPerformed(java.awt.event.ActionEvent evt)
+            {
+                normalExitActionPerformed(evt);
+            }
+        });
+        jMenu1.add(normalExit);
+
+        jMenuBar1.add(jMenu1);
+
+        setJMenuBar(jMenuBar1);
+
+        pack();
+    }// </editor-fold>//GEN-END:initComponents
+
+    private void jconsoleButton2ActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_jconsoleButton2ActionPerformed
+    {//GEN-HEADEREND:event_jconsoleButton2ActionPerformed
+
+        JOptionPane.showMessageDialog(
+            this,
+            "Please use the console_panel.bat to check out the " +
+                "JConsolePane functionality.",
+            "Info",
+            JOptionPane.INFORMATION_MESSAGE);
+
+        /* This does not work any more. Why?
+         *
+        SwingUtilities.invokeLater(
+            new Runnable() {
+                public void run() {
+                    JConsolePaneTester t = new JConsolePaneTester();
+                    t.setVisible(true);
+                    t.setExitMode( false );
+                }
+            }
+        );*/
+
+    }//GEN-LAST:event_jconsoleButton2ActionPerformed
+
+    private void jmessageButtonActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_jmessageButtonActionPerformed
+    {//GEN-HEADEREND:event_jmessageButtonActionPerformed
+
+        SwingUtilities.invokeLater(
+            new Runnable() {
+                public void run() {
+                    JMessageTester t = new JMessageTester();
+                    t.setVisible(true);
+                    t.setDefaultCloseOperation( WindowConstants.HIDE_ON_CLOSE );
+                }
+            }
+        );
+
+    }//GEN-LAST:event_jmessageButtonActionPerformed
+
+    private void typesafeButtonActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_typesafeButtonActionPerformed
+    {//GEN-HEADEREND:event_typesafeButtonActionPerformed
+
+        SwingUtilities.invokeLater(
+            new Runnable() {
+                public void run() {
+                    JTypeSafeTester t = new JTypeSafeTester();
+                    t.setVisible(true);
+                    t.setDefaultCloseOperation( WindowConstants.HIDE_ON_CLOSE );
+                }
+            }
+        );
+
+    }//GEN-LAST:event_typesafeButtonActionPerformed
+
+    private void normalExitActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_normalExitActionPerformed
+
+        normal_exit();
+
+    }//GEN-LAST:event_normalExitActionPerformed
+
+    private void abnormalExitActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_abnormalExitActionPerformed
+
+        abnormal_exit();
+
+    }//GEN-LAST:event_abnormalExitActionPerformed
+
+    private void formWindowClosing(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowClosing
+
+        normal_exit();
+
+    }//GEN-LAST:event_formWindowClosing
+
+    private void windowManagerButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_windowManagerButtonActionPerformed
+
+        SwingUtilities.invokeLater(
+            new Runnable() {
+                public void run() {
+                    JDesktopTester t = new JDesktopTester();
+                    t.setVisible(true);
+                    t.setDefaultCloseOperation( WindowConstants.HIDE_ON_CLOSE );
+                }
+            }
+        );
+
+    }//GEN-LAST:event_windowManagerButtonActionPerformed
+
+    private void outlookToolbarButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_outlookToolbarButtonActionPerformed
+
+        SwingUtilities.invokeLater(
+            new Runnable() {
+                public void run() {
+                    JToolBarTester t = new JToolBarTester();
+                    t.setVisible(true);
+                    t.setDefaultCloseOperation( WindowConstants.HIDE_ON_CLOSE );
+                }
+            }
+        );
+
+    }//GEN-LAST:event_outlookToolbarButtonActionPerformed
+
+    private void tableButtonActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_tableButtonActionPerformed
+    {//GEN-HEADEREND:event_tableButtonActionPerformed
+
+        SwingUtilities.invokeLater(
+            new Runnable() {
+                public void run() {
+                    JTableTester t = new JTableTester();
+                    t.setVisible(true);
+                    t.setDefaultCloseOperation( WindowConstants.HIDE_ON_CLOSE );
+                }
+            }
+        );
+
+    }//GEN-LAST:event_tableButtonActionPerformed
+
+    private void jsplashButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jsplashButtonActionPerformed
+
+        JOptionPane.showMessageDialog(
+            this,
+            "Please use the splash.bat to check out the splash screen demo.",
+            "Info",
+            JOptionPane.INFORMATION_MESSAGE);
+
+    }//GEN-LAST:event_jsplashButtonActionPerformed
+
+    private void jconsoleButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jconsoleButtonActionPerformed
+
+        JOptionPane.showMessageDialog(
+            this,
+            "Please use the console.bat to check out the " +
+                "JConsolePane functionality.",
+            "Info",
+            JOptionPane.INFORMATION_MESSAGE);
+
+        /* This does not work any more. Why?
+         *
+        SwingUtilities.invokeLater(
+            new Runnable() {
+                public void run() {
+                    JConsoleTester t = new JConsoleTester();
+                    t.setVisible(true);
+                    t.setExitMode( false );
+                }
+            }
+        );*/
+
+    }//GEN-LAST:event_jconsoleButtonActionPerformed
+
+
+    /**
+     * setup our look and feel
+     */
+    private void init_lnf()
+    {
+        try
+        {
+            UIManager.setLookAndFeel(
+                    UIManager.getSystemLookAndFeelClassName() );
+        }
+        catch( Exception e )
+        {
+            System.err.println("Cannot initialize the look & feel");
+
+            e.printStackTrace();
+        }
+    }
+
+
+    private void abnormal_exit()
+    {
+        // do not invoke SingleAppInstance's onExit() method...
+        // ...and see what happens!
+        System.exit( 0 );
+    }
+
+
+    private void normal_exit()
+    {
+        // at the end make sure we notify SingleAppInstance
+        // that our application finished...
+        m_inst.onExit();
+
+        long nanos = m_timerNanos.elapsedNanos();
+        double millis2 = m_timerNanos.elapsedMillis();
+        double secs2 = m_timerNanos.elapsedSeconds();
+        long millis = m_timerMillis.elapsedMillis();
+        double secs = m_timerMillis.elapsedSeconds();
+        System.out.println("user time: " + nanos + " nanoseconds, " + millis2 +
+                " milliseconds, " + secs2 + " seconds.");
+        System.out.println("user time: " + millis + " milliseconds, " + secs +
+                " seconds.");
+
+        System.exit( 0 );
+    }
+
+
+    /**
+     * @param args the command line arguments
+     */
+    public static void main(String args[])
+    {
+        m_inst = SingleAppInstance.getInstance();
+        /*
+         * if you wish to execute more than one applications at a single time,
+         * from within the same folder use the method below instead, in order
+         * to specify the unique filename to create and lock.
+         *
+         * m_inst = SingleAppInstance.getInstance(
+         *              JTester.class.getSimpleName() + ".run" );
+         */
+
+        /*
+         * if you wish to be notified via stderr instead a popup window, use
+         * the method below. Execute now 2 times the 'test.bat' and see what
+         * happens!
+         *
+         * m_inst.setReportPopup( false );
+         */
+
+        // notify SingleAppInstance that our application started...
+        m_inst.onInit();
+
+        java.awt.EventQueue.invokeLater(new Runnable() {
+            public void run() {
+                new JTester().setVisible(true);
+            }
+        });
+    }
+
+
+    // Variables declaration - do not modify//GEN-BEGIN:variables
+    private javax.swing.JButton jconsoleButton2;
+    private javax.swing.JButton jmessageButton;
+    private javax.swing.JButton typesafeButton;
+    // End of variables declaration//GEN-END:variables
+
+}
diff --git a/src/gr/zeus/tests/JToolBarTester.form b/src/gr/zeus/tests/JToolBarTester.form
new file mode 100644
index 0000000..f075bdb
--- /dev/null
+++ b/src/gr/zeus/tests/JToolBarTester.form
@@ -0,0 +1,91 @@
+<?xml version="1.1" encoding="UTF-8" ?>
+
+<Form version="1.2" maxVersion="1.2" type="org.netbeans.modules.form.forminfo.JFrameFormInfo">
+  <Properties>
+    <Property name="defaultCloseOperation" type="int" value="3"/>
+  </Properties>
+  <SyntheticProperties>
+    <SyntheticProperty name="formSize" type="java.awt.Dimension" value="-84,-19,0,5,115,114,0,18,106,97,118,97,46,97,119,116,46,68,105,109,101,110,115,105,111,110,65,-114,-39,-41,-84,95,68,20,2,0,2,73,0,6,104,101,105,103,104,116,73,0,5,119,105,100,116,104,120,112,0,0,1,44,0,0,1,-112"/>
+    <SyntheticProperty name="formSizePolicy" type="int" value="0"/>
+    <SyntheticProperty name="generateSize" type="boolean" value="true"/>
+    <SyntheticProperty name="generateCenter" type="boolean" value="true"/>
+  </SyntheticProperties>
+  <AuxValues>
+    <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/>
+    <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
+    <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
+    <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
+  </AuxValues>
+
+  <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/>
+  <SubComponents>
+    <Container class="javax.swing.JToolBar" name="m_toolbar">
+      <Constraints>
+        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription">
+          <BorderConstraints direction="North"/>
+        </Constraint>
+      </Constraints>
+
+      <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBoxLayout"/>
+      <SubComponents>
+        <Component class="javax.swing.JButton" name="button1">
+          <Properties>
+            <Property name="text" type="java.lang.String" value="Button1"/>
+          </Properties>
+          <Events>
+            <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="button1ActionPerformed"/>
+          </Events>
+          <AuxValues>
+            <AuxValue name="JavaCodeGenerator_VariableLocal" type="java.lang.Boolean" value="true"/>
+            <AuxValue name="JavaCodeGenerator_VariableModifier" type="java.lang.Integer" value="0"/>
+          </AuxValues>
+        </Component>
+        <Component class="javax.swing.JButton" name="button2">
+          <Properties>
+            <Property name="text" type="java.lang.String" value="Button2"/>
+          </Properties>
+          <Events>
+            <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="button2ActionPerformed"/>
+          </Events>
+          <AuxValues>
+            <AuxValue name="JavaCodeGenerator_VariableLocal" type="java.lang.Boolean" value="true"/>
+            <AuxValue name="JavaCodeGenerator_VariableModifier" type="java.lang.Integer" value="0"/>
+          </AuxValues>
+        </Component>
+        <Component class="javax.swing.JButton" name="button3">
+          <Properties>
+            <Property name="text" type="java.lang.String" value="Button3"/>
+          </Properties>
+          <Events>
+            <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="button3ActionPerformed"/>
+          </Events>
+          <AuxValues>
+            <AuxValue name="JavaCodeGenerator_VariableLocal" type="java.lang.Boolean" value="true"/>
+            <AuxValue name="JavaCodeGenerator_VariableModifier" type="java.lang.Integer" value="0"/>
+          </AuxValues>
+        </Component>
+      </SubComponents>
+    </Container>
+    <Container class="javax.swing.JScrollPane" name="jScrollPane1">
+      <AuxValues>
+        <AuxValue name="JavaCodeGenerator_VariableLocal" type="java.lang.Boolean" value="true"/>
+        <AuxValue name="JavaCodeGenerator_VariableModifier" type="java.lang.Integer" value="0"/>
+      </AuxValues>
+      <Constraints>
+        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription">
+          <BorderConstraints direction="Center"/>
+        </Constraint>
+      </Constraints>
+
+      <Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
+      <SubComponents>
+        <Component class="javax.swing.JTextArea" name="m_textArea">
+        </Component>
+      </SubComponents>
+    </Container>
+  </SubComponents>
+</Form>
diff --git a/src/gr/zeus/tests/JToolBarTester.java b/src/gr/zeus/tests/JToolBarTester.java
new file mode 100644
index 0000000..c3fa58d
--- /dev/null
+++ b/src/gr/zeus/tests/JToolBarTester.java
@@ -0,0 +1,167 @@
+/*
+ * JToolbarTester.java - Test application for JToolBar that simulates outlook
+ *                       toolbar behavior.
+ *
+ * Copyright (c) 2004-2011 Gregory Kotsaftis
+ * gregkotsaftis at yahoo.com
+ * http://zeus-jscl.sourceforge.net/
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+package gr.zeus.tests;
+
+import gr.zeus.ui.OutLookToolBar;
+import javax.swing.JButton;
+import javax.swing.JFrame;
+import javax.swing.UIManager;
+
+public class JToolBarTester extends JFrame {
+
+    private OutLookToolBar m_outLookToolBar = null;
+    private JButton m_dummy = null;
+
+
+    public JToolBarTester()
+    {
+        initComponents();
+
+        m_outLookToolBar = new OutLookToolBar( m_toolbar );
+    }
+
+
+    /** This method is called from within the constructor to
+     * initialize the form.
+     * WARNING: Do NOT modify this code. The content of this method is
+     * always regenerated by the Form Editor.
+     */
+    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
+    private void initComponents()
+    {
+
+        m_toolbar = new javax.swing.JToolBar();
+        javax.swing.JButton button1 = new javax.swing.JButton();
+        javax.swing.JButton button2 = new javax.swing.JButton();
+        javax.swing.JButton button3 = new javax.swing.JButton();
+        javax.swing.JScrollPane jScrollPane1 = new javax.swing.JScrollPane();
+        m_textArea = new javax.swing.JTextArea();
+
+        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
+
+        button1.setText("Button1");
+        button1.addActionListener(new java.awt.event.ActionListener()
+        {
+            public void actionPerformed(java.awt.event.ActionEvent evt)
+            {
+                button1ActionPerformed(evt);
+            }
+        });
+        m_toolbar.add(button1);
+
+        button2.setText("Button2");
+        button2.addActionListener(new java.awt.event.ActionListener()
+        {
+            public void actionPerformed(java.awt.event.ActionEvent evt)
+            {
+                button2ActionPerformed(evt);
+            }
+        });
+        m_toolbar.add(button2);
+
+        button3.setText("Button3");
+        button3.addActionListener(new java.awt.event.ActionListener()
+        {
+            public void actionPerformed(java.awt.event.ActionEvent evt)
+            {
+                button3ActionPerformed(evt);
+            }
+        });
+        m_toolbar.add(button3);
+
+        getContentPane().add(m_toolbar, java.awt.BorderLayout.NORTH);
+
+        jScrollPane1.setViewportView(m_textArea);
+
+        getContentPane().add(jScrollPane1, java.awt.BorderLayout.CENTER);
+
+        java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
+        setBounds((screenSize.width-400)/2, (screenSize.height-300)/2, 400, 300);
+    }// </editor-fold>//GEN-END:initComponents
+
+    private void button3ActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_button3ActionPerformed
+    {//GEN-HEADEREND:event_button3ActionPerformed
+
+        m_textArea.append("Button3 pressed\n");
+
+    }//GEN-LAST:event_button3ActionPerformed
+
+    private void button2ActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_button2ActionPerformed
+    {//GEN-HEADEREND:event_button2ActionPerformed
+
+        m_textArea.append("Button2 pressed\n");
+
+        if( m_dummy != null )
+        {
+            m_textArea.append("removing the dummy button\n");
+            m_toolbar.remove( m_dummy );
+            m_dummy = null;
+        }
+
+    }//GEN-LAST:event_button2ActionPerformed
+
+    private void button1ActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_button1ActionPerformed
+    {//GEN-HEADEREND:event_button1ActionPerformed
+
+        m_textArea.append("Button1 pressed\n");
+
+        if( m_dummy == null )
+        {
+            m_textArea.append("adding new dummy button to demonstrate how " +
+                    "this automatically inherits outlook like functionality\n");
+            m_dummy = new JButton("dummy");
+            m_toolbar.add( m_dummy );
+        }
+
+    }//GEN-LAST:event_button1ActionPerformed
+
+
+    /**
+     * @param args the command line arguments
+     */
+    public static void main(String args[])
+    {
+        try
+        {
+            UIManager.setLookAndFeel(
+                    UIManager.getSystemLookAndFeelClassName() );
+        }
+        catch( Exception e )
+        {
+            e.printStackTrace();
+        }
+
+        java.awt.EventQueue.invokeLater(new Runnable() {
+            public void run() {
+                new JToolBarTester().setVisible(true);
+            }
+        });
+    }
+
+
+    // Variables declaration - do not modify//GEN-BEGIN:variables
+    private javax.swing.JTextArea m_textArea;
+    private javax.swing.JToolBar m_toolbar;
+    // End of variables declaration//GEN-END:variables
+
+}
diff --git a/src/gr/zeus/tests/JTypeSafeTester.form b/src/gr/zeus/tests/JTypeSafeTester.form
new file mode 100644
index 0000000..0e25be4
--- /dev/null
+++ b/src/gr/zeus/tests/JTypeSafeTester.form
@@ -0,0 +1,245 @@
+<?xml version="1.1" encoding="UTF-8" ?>
+
+<Form version="1.2" maxVersion="1.2" type="org.netbeans.modules.form.forminfo.JFrameFormInfo">
+  <Properties>
+    <Property name="defaultCloseOperation" type="int" value="3"/>
+  </Properties>
+  <SyntheticProperties>
+    <SyntheticProperty name="formSize" type="java.awt.Dimension" value="-84,-19,0,5,115,114,0,18,106,97,118,97,46,97,119,116,46,68,105,109,101,110,115,105,111,110,65,-114,-39,-41,-84,95,68,20,2,0,2,73,0,6,104,101,105,103,104,116,73,0,5,119,105,100,116,104,120,112,0,0,1,74,0,0,2,4"/>
+    <SyntheticProperty name="formSizePolicy" type="int" value="0"/>
+    <SyntheticProperty name="generateSize" type="boolean" value="true"/>
+    <SyntheticProperty name="generateCenter" type="boolean" value="true"/>
+  </SyntheticProperties>
+  <AuxValues>
+    <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/>
+    <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
+    <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
+    <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
+  </AuxValues>
+
+  <Layout class="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout">
+    <Property name="useNullLayout" type="boolean" value="true"/>
+  </Layout>
+  <SubComponents>
+    <Component class="javax.swing.JLabel" name="infoLabel">
+      <Properties>
+        <Property name="foreground" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
+          <Color blue="33" green="0" red="cc" type="rgb"/>
+        </Property>
+        <Property name="horizontalAlignment" type="int" value="0"/>
+        <Property name="text" type="java.lang.String" value="Modify mygui.properties and restart application to test the functionality"/>
+      </Properties>
+      <AuxValues>
+        <AuxValue name="JavaCodeGenerator_VariableLocal" type="java.lang.Boolean" value="true"/>
+        <AuxValue name="JavaCodeGenerator_VariableModifier" type="java.lang.Integer" value="0"/>
+      </AuxValues>
+      <Constraints>
+        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
+          <AbsoluteConstraints x="10" y="10" width="490" height="-1"/>
+        </Constraint>
+      </Constraints>
+    </Component>
+    <Component class="javax.swing.JLabel" name="jLabel1">
+      <Properties>
+        <Property name="text" type="java.lang.String" value="Name"/>
+      </Properties>
+      <AuxValues>
+        <AuxValue name="JavaCodeGenerator_VariableLocal" type="java.lang.Boolean" value="true"/>
+        <AuxValue name="JavaCodeGenerator_VariableModifier" type="java.lang.Integer" value="0"/>
+      </AuxValues>
+      <Constraints>
+        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
+          <AbsoluteConstraints x="10" y="40" width="50" height="20"/>
+        </Constraint>
+      </Constraints>
+    </Component>
+    <Component class="javax.swing.JTextField" name="tf_firstname">
+      <Properties>
+        <Property name="toolTipText" type="java.lang.String" value="This is a JTextField, use TAB and SHIFT+TAB for focus traversal."/>
+      </Properties>
+      <Constraints>
+        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
+          <AbsoluteConstraints x="60" y="40" width="320" height="20"/>
+        </Constraint>
+      </Constraints>
+    </Component>
+    <Component class="javax.swing.JLabel" name="jLabel2">
+      <Properties>
+        <Property name="text" type="java.lang.String" value="Age"/>
+      </Properties>
+      <AuxValues>
+        <AuxValue name="JavaCodeGenerator_VariableLocal" type="java.lang.Boolean" value="true"/>
+        <AuxValue name="JavaCodeGenerator_VariableModifier" type="java.lang.Integer" value="0"/>
+      </AuxValues>
+      <Constraints>
+        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
+          <AbsoluteConstraints x="10" y="70" width="50" height="20"/>
+        </Constraint>
+      </Constraints>
+    </Component>
+    <Component class="javax.swing.JTextField" name="tf_age">
+      <Properties>
+        <Property name="toolTipText" type="java.lang.String" value="This is a JTextField, use TAB and SHIFT+TAB for focus traversal."/>
+      </Properties>
+      <Constraints>
+        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
+          <AbsoluteConstraints x="60" y="70" width="70" height="20"/>
+        </Constraint>
+      </Constraints>
+    </Component>
+    <Component class="javax.swing.JLabel" name="jLabel3">
+      <Properties>
+        <Property name="text" type="java.lang.String" value="Birthdate"/>
+      </Properties>
+      <AuxValues>
+        <AuxValue name="JavaCodeGenerator_VariableLocal" type="java.lang.Boolean" value="true"/>
+        <AuxValue name="JavaCodeGenerator_VariableModifier" type="java.lang.Integer" value="0"/>
+      </AuxValues>
+      <Constraints>
+        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
+          <AbsoluteConstraints x="190" y="70" width="60" height="20"/>
+        </Constraint>
+      </Constraints>
+    </Component>
+    <Component class="javax.swing.JFormattedTextField" name="ftf_birthdate">
+      <Properties>
+        <Property name="toolTipText" type="java.lang.String" value="This is a JFormattedTextField, use TAB and SHIFT+TAB for focus traversal."/>
+      </Properties>
+      <Constraints>
+        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
+          <AbsoluteConstraints x="250" y="70" width="130" height="-1"/>
+        </Constraint>
+      </Constraints>
+    </Component>
+    <Component class="javax.swing.JLabel" name="jLabel4">
+      <Properties>
+        <Property name="text" type="java.lang.String" value="Balance"/>
+      </Properties>
+      <AuxValues>
+        <AuxValue name="JavaCodeGenerator_VariableLocal" type="java.lang.Boolean" value="true"/>
+        <AuxValue name="JavaCodeGenerator_VariableModifier" type="java.lang.Integer" value="0"/>
+      </AuxValues>
+      <Constraints>
+        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
+          <AbsoluteConstraints x="10" y="100" width="50" height="20"/>
+        </Constraint>
+      </Constraints>
+    </Component>
+    <Component class="javax.swing.JTextField" name="tf_balance">
+      <Properties>
+        <Property name="toolTipText" type="java.lang.String" value="This is a JTextField, use TAB and SHIFT+TAB for focus traversal."/>
+      </Properties>
+      <Constraints>
+        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
+          <AbsoluteConstraints x="60" y="100" width="70" height="20"/>
+        </Constraint>
+      </Constraints>
+    </Component>
+    <Component class="javax.swing.JLabel" name="jLabel5">
+      <Properties>
+        <Property name="text" type="java.lang.String" value="No Focus"/>
+      </Properties>
+      <AuxValues>
+        <AuxValue name="JavaCodeGenerator_VariableLocal" type="java.lang.Boolean" value="true"/>
+        <AuxValue name="JavaCodeGenerator_VariableModifier" type="java.lang.Integer" value="0"/>
+      </AuxValues>
+      <Constraints>
+        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
+          <AbsoluteConstraints x="190" y="100" width="60" height="20"/>
+        </Constraint>
+      </Constraints>
+    </Component>
+    <Component class="javax.swing.JTextField" name="tf_noFocus">
+      <Properties>
+        <Property name="toolTipText" type="java.lang.String" value="no focus for me..."/>
+      </Properties>
+      <Constraints>
+        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
+          <AbsoluteConstraints x="250" y="100" width="130" height="20"/>
+        </Constraint>
+      </Constraints>
+    </Component>
+    <Component class="javax.swing.JButton" name="jButton1">
+      <Properties>
+        <Property name="text" type="java.lang.String" value="Hi"/>
+      </Properties>
+      <Constraints>
+        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
+          <AbsoluteConstraints x="390" y="40" width="110" height="80"/>
+        </Constraint>
+      </Constraints>
+    </Component>
+    <Container class="javax.swing.JPanel" name="jPanel1">
+      <Properties>
+        <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
+          <Border info="org.netbeans.modules.form.compat2.border.TitledBorderInfo">
+            <TitledBorder title="This is another JPanel"/>
+          </Border>
+        </Property>
+      </Properties>
+      <AuxValues>
+        <AuxValue name="JavaCodeGenerator_VariableLocal" type="java.lang.Boolean" value="true"/>
+        <AuxValue name="JavaCodeGenerator_VariableModifier" type="java.lang.Integer" value="0"/>
+      </AuxValues>
+      <Constraints>
+        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
+          <AbsoluteConstraints x="10" y="130" width="490" height="160"/>
+        </Constraint>
+      </Constraints>
+
+      <Layout class="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout">
+        <Property name="useNullLayout" type="boolean" value="true"/>
+      </Layout>
+      <SubComponents>
+        <Component class="javax.swing.JTextArea" name="ta_info1">
+          <Properties>
+            <Property name="background" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
+              <Color blue="cc" green="ff" red="ff" type="rgb"/>
+            </Property>
+            <Property name="lineWrap" type="boolean" value="true"/>
+            <Property name="text" type="java.lang.String" value="This is a JTextArea, use TAB and SHIFT+TAB for focus traversal; instead of CTRL+TAB and SHIFT+CTRL+TAB which are the standard Sun's traversal keys for JTextAreas."/>
+            <Property name="toolTipText" type="java.lang.String" value="This is a JTextArea, use TAB and SHIFT+TAB for focus traversal."/>
+            <Property name="wrapStyleWord" type="boolean" value="true"/>
+          </Properties>
+          <Constraints>
+            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
+              <AbsoluteConstraints x="10" y="20" width="150" height="130"/>
+            </Constraint>
+          </Constraints>
+        </Component>
+        <Component class="javax.swing.JTextPane" name="tp_info2">
+          <Properties>
+            <Property name="background" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
+              <Color blue="cc" green="ff" red="cc" type="rgb"/>
+            </Property>
+            <Property name="text" type="java.lang.String" value="This is a JTextPane, use TAB and SHIFT+TAB for focus traversal; instead of CTRL+TAB and SHIFT+CTRL+TAB which are the standard Sun's traversal keys for JTextPanes."/>
+            <Property name="toolTipText" type="java.lang.String" value="This is a JTextPane, use TAB and SHIFT+TAB for focus traversal."/>
+          </Properties>
+          <Constraints>
+            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
+              <AbsoluteConstraints x="170" y="20" width="150" height="130"/>
+            </Constraint>
+          </Constraints>
+        </Component>
+        <Component class="javax.swing.JEditorPane" name="ep_info3">
+          <Properties>
+            <Property name="background" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
+              <Color blue="cc" green="cc" red="ff" type="rgb"/>
+            </Property>
+            <Property name="text" type="java.lang.String" value="This is a JEditorPane, use TAB and SHIFT+TAB for focus traversal; instead of CTRL+TAB and SHIFT+CTRL+TAB which are the standard Sun's traversal keys for JEditorPanes."/>
+            <Property name="toolTipText" type="java.lang.String" value="This is a JEditorPane, use TAB and SHIFT+TAB for focus traversal."/>
+          </Properties>
+          <Constraints>
+            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
+              <AbsoluteConstraints x="330" y="20" width="150" height="130"/>
+            </Constraint>
+          </Constraints>
+        </Component>
+      </SubComponents>
+    </Container>
+  </SubComponents>
+</Form>
diff --git a/src/gr/zeus/tests/JTypeSafeTester.java b/src/gr/zeus/tests/JTypeSafeTester.java
new file mode 100644
index 0000000..2a1c55f
--- /dev/null
+++ b/src/gr/zeus/tests/JTypeSafeTester.java
@@ -0,0 +1,211 @@
+/*
+ * JTypeSafeTester.java - Test application for classes in typesafe package.
+ *
+ * Copyright (c) 2004-2011 Gregory Kotsaftis
+ * gregkotsaftis at yahoo.com
+ * http://zeus-jscl.sourceforge.net/
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+package gr.zeus.tests;
+
+import gr.zeus.ui.typesafe.SwingConfigurationManager;
+import java.awt.Component;
+import javax.swing.JFrame;
+import javax.swing.UIManager;
+
+public class JTypeSafeTester extends JFrame {
+
+
+    public JTypeSafeTester()
+    {
+        initComponents();
+
+        // the focus sequence depends on the placement
+        // of the components in the array
+        Component[] focusable_components = {tf_firstname, tf_balance,
+                ftf_birthdate, tf_age, ta_info1, tp_info2, ep_info3, jButton1
+                /*, tf_noFocus*/};
+
+        try
+        {
+            //SwingConfigurationManager mng = new SwingConfigurationManager(
+            //    ResourceBundle.getBundle("gr.zeus.tests.mygui"));
+
+            SwingConfigurationManager mng = new SwingConfigurationManager(
+                "mygui.properties");
+
+            mng.configComponent("name_field", tf_firstname);
+            mng.configComponent("date_field", ftf_birthdate);
+            mng.configComponent("age_field", tf_age);
+            mng.configComponent("real_number", tf_balance);
+            mng.configComponent("general_text", ta_info1, tp_info2, ep_info3);
+
+            mng.applyFocus(this, focusable_components);
+        }
+        catch(Exception e)
+        {
+            e.printStackTrace();
+        }
+    }
+
+
+    /** This method is called from within the constructor to
+     * initialize the form.
+     * WARNING: Do NOT modify this code. The content of this method is
+     * always regenerated by the Form Editor.
+     */
+    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
+    private void initComponents()
+    {
+
+        javax.swing.JLabel infoLabel = new javax.swing.JLabel();
+        javax.swing.JLabel jLabel1 = new javax.swing.JLabel();
+        tf_firstname = new javax.swing.JTextField();
+        javax.swing.JLabel jLabel2 = new javax.swing.JLabel();
+        tf_age = new javax.swing.JTextField();
+        javax.swing.JLabel jLabel3 = new javax.swing.JLabel();
+        ftf_birthdate = new javax.swing.JFormattedTextField();
+        javax.swing.JLabel jLabel4 = new javax.swing.JLabel();
+        tf_balance = new javax.swing.JTextField();
+        javax.swing.JLabel jLabel5 = new javax.swing.JLabel();
+        tf_noFocus = new javax.swing.JTextField();
+        jButton1 = new javax.swing.JButton();
+        javax.swing.JPanel jPanel1 = new javax.swing.JPanel();
+        ta_info1 = new javax.swing.JTextArea();
+        tp_info2 = new javax.swing.JTextPane();
+        ep_info3 = new javax.swing.JEditorPane();
+
+        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
+        getContentPane().setLayout(null);
+
+        infoLabel.setForeground(new java.awt.Color(204, 0, 51));
+        infoLabel.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
+        infoLabel.setText("Modify mygui.properties and restart application to test the functionality");
+        getContentPane().add(infoLabel);
+        infoLabel.setBounds(10, 10, 490, 14);
+
+        jLabel1.setText("Name");
+        getContentPane().add(jLabel1);
+        jLabel1.setBounds(10, 40, 50, 20);
+
+        tf_firstname.setToolTipText("This is a JTextField, use TAB and SHIFT+TAB for focus traversal.");
+        getContentPane().add(tf_firstname);
+        tf_firstname.setBounds(60, 40, 320, 20);
+
+        jLabel2.setText("Age");
+        getContentPane().add(jLabel2);
+        jLabel2.setBounds(10, 70, 50, 20);
+
+        tf_age.setToolTipText("This is a JTextField, use TAB and SHIFT+TAB for focus traversal.");
+        getContentPane().add(tf_age);
+        tf_age.setBounds(60, 70, 70, 20);
+
+        jLabel3.setText("Birthdate");
+        getContentPane().add(jLabel3);
+        jLabel3.setBounds(190, 70, 60, 20);
+
+        ftf_birthdate.setToolTipText("This is a JFormattedTextField, use TAB and SHIFT+TAB for focus traversal.");
+        getContentPane().add(ftf_birthdate);
+        ftf_birthdate.setBounds(250, 70, 130, 21);
+
+        jLabel4.setText("Balance");
+        getContentPane().add(jLabel4);
+        jLabel4.setBounds(10, 100, 50, 20);
+
+        tf_balance.setToolTipText("This is a JTextField, use TAB and SHIFT+TAB for focus traversal.");
+        getContentPane().add(tf_balance);
+        tf_balance.setBounds(60, 100, 70, 20);
+
+        jLabel5.setText("No Focus");
+        getContentPane().add(jLabel5);
+        jLabel5.setBounds(190, 100, 60, 20);
+
+        tf_noFocus.setToolTipText("no focus for me...");
+        getContentPane().add(tf_noFocus);
+        tf_noFocus.setBounds(250, 100, 130, 20);
+
+        jButton1.setText("Hi");
+        getContentPane().add(jButton1);
+        jButton1.setBounds(390, 40, 110, 80);
+
+        jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder("This is another JPanel"));
+        jPanel1.setLayout(null);
+
+        ta_info1.setBackground(new java.awt.Color(255, 255, 204));
+        ta_info1.setLineWrap(true);
+        ta_info1.setText("This is a JTextArea, use TAB and SHIFT+TAB for focus traversal; instead of CTRL+TAB and SHIFT+CTRL+TAB which are the standard Sun's traversal keys for JTextAreas.");
+        ta_info1.setToolTipText("This is a JTextArea, use TAB and SHIFT+TAB for focus traversal.");
+        ta_info1.setWrapStyleWord(true);
+        jPanel1.add(ta_info1);
+        ta_info1.setBounds(10, 20, 150, 130);
+
+        tp_info2.setBackground(new java.awt.Color(204, 255, 204));
+        tp_info2.setText("This is a JTextPane, use TAB and SHIFT+TAB for focus traversal; instead of CTRL+TAB and SHIFT+CTRL+TAB which are the standard Sun's traversal keys for JTextPanes.");
+        tp_info2.setToolTipText("This is a JTextPane, use TAB and SHIFT+TAB for focus traversal.");
+        jPanel1.add(tp_info2);
+        tp_info2.setBounds(170, 20, 150, 130);
+
+        ep_info3.setBackground(new java.awt.Color(255, 204, 204));
+        ep_info3.setText("This is a JEditorPane, use TAB and SHIFT+TAB for focus traversal; instead of CTRL+TAB and SHIFT+CTRL+TAB which are the standard Sun's traversal keys for JEditorPanes.");
+        ep_info3.setToolTipText("This is a JEditorPane, use TAB and SHIFT+TAB for focus traversal.");
+        jPanel1.add(ep_info3);
+        ep_info3.setBounds(330, 20, 150, 130);
+
+        getContentPane().add(jPanel1);
+        jPanel1.setBounds(10, 130, 490, 160);
+
+        java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
+        setBounds((screenSize.width-516)/2, (screenSize.height-330)/2, 516, 330);
+    }// </editor-fold>//GEN-END:initComponents
+
+
+    /**
+     * @param args the command line arguments
+     */
+    public static void main(String args[])
+    {
+        try
+        {
+            UIManager.setLookAndFeel(
+                    UIManager.getSystemLookAndFeelClassName() );
+        }
+        catch( Exception e )
+        {
+            e.printStackTrace();
+        }
+
+        java.awt.EventQueue.invokeLater(new Runnable() {
+            public void run()
+            {
+                new JTypeSafeTester().setVisible(true);
+            }
+        });
+    }
+
+
+    // Variables declaration - do not modify//GEN-BEGIN:variables
+    private javax.swing.JEditorPane ep_info3;
+    private javax.swing.JFormattedTextField ftf_birthdate;
+    private javax.swing.JButton jButton1;
+    private javax.swing.JTextArea ta_info1;
+    private javax.swing.JTextField tf_age;
+    private javax.swing.JTextField tf_balance;
+    private javax.swing.JTextField tf_firstname;
+    private javax.swing.JTextField tf_noFocus;
+    private javax.swing.JTextPane tp_info2;
+    // End of variables declaration//GEN-END:variables
+
+}
diff --git a/src/gr/zeus/tests/mygui.properties b/src/gr/zeus/tests/mygui.properties
new file mode 100644
index 0000000..a012cd0
--- /dev/null
+++ b/src/gr/zeus/tests/mygui.properties
@@ -0,0 +1,76 @@
+# global parameter
+customfocustraversalpolicy=true
+simpletextareatraversal=true
+simpletextpanetraversal=true
+simpleeditorpanetraversal=true
+
+
+### ALL POSSIBLE TAGS ###
+#tagname.selectall=
+#tagname.classtype=
+#tagname.trimspaces=
+#tagname.uppercase=
+#tagname.lowercase=
+#tagname.maxchars=
+#tagname.minchars=
+#tagname.validchars=
+#tagname.invalidchars=
+#tagname.replacablechars=
+#tagname.replacedchars=
+#tagname.defaultsonerror=
+#tagname.defaultnum=
+#tagname.minnum=
+#tagname.maxnum=
+#tagname.datepattern=
+#tagname.defaultdate=
+###
+
+
+# name_field
+name_field.selectall=true
+name_field.classtype=java.lang.String
+name_field.trimspaces=true
+name_field.uppercase=true
+name_field.maxchars=16
+name_field.minchars=0
+name_field.invalidchars=1234567890`~!@#$%^&*()-_=+[{]};:'",<.>/?
+name_field.defaultsonerror=false
+
+
+# date_field
+date_field.classtype=java.util.Date
+date_field.defaultsonerror=true
+date_field.datepattern=dd/MM/yyyy
+
+
+# age_field
+age_field.classtype=java.lang.Integer
+age_field.trimspaces=true
+age_field.validchars=1234567890
+age_field.defaultsonerror=true
+age_field.defaultnum=32
+age_field.minnum=16
+age_field.maxnum=95
+
+
+# real_number
+real_number.classtype=java.lang.Float
+real_number.trimspaces=true
+real_number.validchars=1234567890.,
+real_number.replacablechars=,
+real_number.replacedchars=.
+real_number.defaultsonerror=true
+real_number.defaultnum=0.0
+
+
+# general_text
+general_text.selectall=false
+general_text.classtype=java.lang.String
+general_text.trimspaces=true
+general_text.lowercase=false
+general_text.maxchars=256
+general_text.minchars=0
+general_text.validchars=
+general_text.invalidchars=
+general_text.replacablechars=1234567890
+general_text.replacedchars=qwertyuiop
diff --git a/src/gr/zeus/tests/res/custom.png b/src/gr/zeus/tests/res/custom.png
new file mode 100644
index 0000000..ebddc34
Binary files /dev/null and b/src/gr/zeus/tests/res/custom.png differ
diff --git a/src/gr/zeus/tests/res/splash.jpg b/src/gr/zeus/tests/res/splash.jpg
new file mode 100644
index 0000000..34e759a
Binary files /dev/null and b/src/gr/zeus/tests/res/splash.jpg differ
diff --git a/src/gr/zeus/ui/JConsole.form b/src/gr/zeus/ui/JConsole.form
new file mode 100644
index 0000000..51faeb5
--- /dev/null
+++ b/src/gr/zeus/ui/JConsole.form
@@ -0,0 +1,25 @@
+<?xml version="1.1" encoding="UTF-8" ?>
+
+<Form version="1.2" maxVersion="1.2" type="org.netbeans.modules.form.forminfo.JFrameFormInfo">
+  <Properties>
+    <Property name="title" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
+      <ResourceString bundle="gr/zeus/res/jconsole.properties" key="titleMsg" replaceFormat="java.util.ResourceBundle.getBundle("{bundleNameSlashes}").getString("{key}")"/>
+    </Property>
+  </Properties>
+  <SyntheticProperties>
+    <SyntheticProperty name="formSizePolicy" type="int" value="1"/>
+  </SyntheticProperties>
+  <AuxValues>
+    <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/>
+    <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
+    <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
+    <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
+    <AuxValue name="designerSize" type="java.awt.Dimension" value="-84,-19,0,5,115,114,0,18,106,97,118,97,46,97,119,116,46,68,105,109,101,110,115,105,111,110,65,-114,-39,-41,-84,95,68,20,2,0,2,73,0,6,104,101,105,103,104,116,73,0,5,119,105,100,116,104,120,112,0,0,1,37,0,0,1,-112"/>
+  </AuxValues>
+
+  <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/>
+</Form>
diff --git a/src/gr/zeus/ui/JConsole.java b/src/gr/zeus/ui/JConsole.java
new file mode 100644
index 0000000..ccda23c
--- /dev/null
+++ b/src/gr/zeus/ui/JConsole.java
@@ -0,0 +1,115 @@
+/*
+ * JConsole.java
+ *
+ * Copyright (c) 2004-2011 Gregory Kotsaftis
+ * gregkotsaftis at yahoo.com
+ * http://zeus-jscl.sourceforge.net/
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+package gr.zeus.ui;
+
+import java.awt.BorderLayout;
+import java.awt.event.ComponentAdapter;
+import java.awt.event.ComponentEvent;
+import javax.swing.ImageIcon;
+import javax.swing.JFrame;
+
+/**
+ * The JFrame edition of <b>JConsolePane</b>.<br>
+ * {@link JConsolePane}
+ * <p>
+ * @author Gregory Kotsaftis
+ * @since 1.40
+ */
+public final class JConsole extends JFrame {
+
+    /**
+     * The single instance of JConsolePane.
+     */
+    private static JConsolePane s_consolePane = JConsolePane.getConsolePane();
+
+
+    /**
+     * Returns the instance of the <code>JConsolePane</code> for further
+     * configuration.
+     */
+    public static JConsolePane getConsole()
+    {
+        return( s_consolePane );
+    }
+
+
+    /**
+     * Constructor.
+     * Creates a new JFrame and adds to it the single instance of JConsolePane.
+     * Finally hides the frame until it is required to be seen.
+     */
+    public JConsole()
+    {
+        initComponents();
+
+        setIconImage( new ImageIcon(JConsole.class.getResource(
+            "/gr/zeus/res/console.gif")).getImage() );
+
+        // attach a listener to watch for close button pressed
+        s_consolePane.addComponentListener(new ComponentAdapter() {
+            public void componentHidden(ComponentEvent evt)
+            {
+                // hide this frame also
+                setVisible(false);
+            }
+        });
+
+        // show console when frame is shown
+        addComponentListener(new ComponentAdapter() {
+            public void componentShown(ComponentEvent evt)
+            {
+                // usually not needed unless you have manually invoked:
+                // getConsole().hideConsole() for some reason.
+                // Make sure the console is visible when this frame
+                // is made visible.
+                s_consolePane.setVisible(true);
+            }
+        });
+
+        // no need for the console to be hidden inside a frame. We will control
+        // the frame visibility instead.
+        s_consolePane.setVisible(true);
+
+        getContentPane().add(s_consolePane, BorderLayout.CENTER);
+        pack();
+    }
+
+
+    /** This method is called from within the constructor to
+     * initialize the form.
+     * WARNING: Do NOT modify this code. The content of this method is
+     * always regenerated by the Form Editor.
+     */
+    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
+    private void initComponents()
+    {
+
+        java.util.ResourceBundle bundle = java.util.ResourceBundle.getBundle("gr/zeus/res/jconsole"); // NOI18N
+        setTitle(bundle.getString("titleMsg")); // NOI18N
+
+        pack();
+    }// </editor-fold>//GEN-END:initComponents
+
+    // Variables declaration - do not modify//GEN-BEGIN:variables
+    // End of variables declaration//GEN-END:variables
+
+}
diff --git a/src/gr/zeus/ui/JConsolePane.form b/src/gr/zeus/ui/JConsolePane.form
new file mode 100644
index 0000000..d90994b
--- /dev/null
+++ b/src/gr/zeus/ui/JConsolePane.form
@@ -0,0 +1,101 @@
+<?xml version="1.1" encoding="UTF-8" ?>
+
+<Form version="1.2" maxVersion="1.2" type="org.netbeans.modules.form.forminfo.JPanelFormInfo">
+  <Properties>
+    <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
+      <Dimension value="[400, 300]"/>
+    </Property>
+  </Properties>
+  <AuxValues>
+    <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/>
+    <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
+    <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
+    <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
+    <AuxValue name="designerSize" type="java.awt.Dimension" value="-84,-19,0,5,115,114,0,18,106,97,118,97,46,97,119,116,46,68,105,109,101,110,115,105,111,110,65,-114,-39,-41,-84,95,68,20,2,0,2,73,0,6,104,101,105,103,104,116,73,0,5,119,105,100,116,104,120,112,0,0,1,44,0,0,1,-112"/>
+  </AuxValues>
+
+  <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/>
+  <SubComponents>
+    <Container class="javax.swing.JPanel" name="button_panel">
+      <Properties>
+        <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
+          <Dimension value="[150, 33]"/>
+        </Property>
+      </Properties>
+      <Constraints>
+        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription">
+          <BorderConstraints direction="South"/>
+        </Constraint>
+      </Constraints>
+
+      <Layout class="org.netbeans.modules.form.compat2.layouts.DesignFlowLayout">
+        <Property name="alignment" type="int" value="2"/>
+      </Layout>
+      <SubComponents>
+        <Component class="javax.swing.JButton" name="btn_clear">
+          <Properties>
+            <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
+              <ResourceString bundle="gr/zeus/res/jconsole.properties" key="clearMsg" replaceFormat="java.util.ResourceBundle.getBundle("{bundleNameSlashes}").getString("{key}")"/>
+            </Property>
+          </Properties>
+          <Events>
+            <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="btn_clearActionPerformed"/>
+          </Events>
+        </Component>
+        <Component class="javax.swing.JButton" name="btn_save">
+          <Properties>
+            <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
+              <ResourceString bundle="gr/zeus/res/jconsole.properties" key="saveMsg" replaceFormat="java.util.ResourceBundle.getBundle("{bundleNameSlashes}").getString("{key}")"/>
+            </Property>
+          </Properties>
+          <Events>
+            <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="btn_saveActionPerformed"/>
+          </Events>
+        </Component>
+        <Component class="javax.swing.JButton" name="btn_close">
+          <Properties>
+            <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
+              <ResourceString bundle="gr/zeus/res/jconsole.properties" key="closeMsg" replaceFormat="java.util.ResourceBundle.getBundle("{bundleNameSlashes}").getString("{key}")"/>
+            </Property>
+          </Properties>
+          <Events>
+            <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="btn_closeActionPerformed"/>
+          </Events>
+        </Component>
+      </SubComponents>
+    </Container>
+    <Container class="javax.swing.JScrollPane" name="text_scrollpane">
+      <Properties>
+        <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
+          <Border info="org.netbeans.modules.form.compat2.border.EmptyBorderInfo">
+            <EmptyBorder bottom="5" left="5" right="5" top="5"/>
+          </Border>
+        </Property>
+      </Properties>
+      <AuxValues>
+        <AuxValue name="JavaCodeGenerator_VariableLocal" type="java.lang.Boolean" value="true"/>
+        <AuxValue name="JavaCodeGenerator_VariableModifier" type="java.lang.Integer" value="0"/>
+      </AuxValues>
+      <Constraints>
+        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription">
+          <BorderConstraints direction="Center"/>
+        </Constraint>
+      </Constraints>
+
+      <Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
+      <SubComponents>
+        <Component class="javax.swing.JTextArea" name="ta_messages">
+          <Properties>
+            <Property name="columns" type="int" value="40"/>
+            <Property name="editable" type="boolean" value="false"/>
+            <Property name="rows" type="int" value="20"/>
+          </Properties>
+        </Component>
+      </SubComponents>
+    </Container>
+  </SubComponents>
+</Form>
diff --git a/src/gr/zeus/ui/JConsolePane.java b/src/gr/zeus/ui/JConsolePane.java
new file mode 100644
index 0000000..34e1cde
--- /dev/null
+++ b/src/gr/zeus/ui/JConsolePane.java
@@ -0,0 +1,1105 @@
+/*
+ * JConsolePane.java
+ *
+ * Copyright (c) 2004-2011 Gregory Kotsaftis
+ * gregkotsaftis at yahoo.com
+ * http://zeus-jscl.sourceforge.net/
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+package gr.zeus.ui;
+
+import gr.zeus.util.CurrentDateHelper;
+import gr.zeus.util.GUIUtils;
+import gr.zeus.util.IOHelper;
+import java.awt.Color;
+import java.awt.Component;
+import java.awt.Font;
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.FilterOutputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.io.PrintStream;
+import java.lang.reflect.InvocationTargetException;
+import java.util.ResourceBundle;
+import javax.swing.JFileChooser;
+import javax.swing.JOptionPane;
+import javax.swing.JPanel;
+import javax.swing.SwingUtilities;
+
+/**
+ * A java console to replace the command line window. Redirects the stdout
+ * and stderr. Customizable. Can save its messages to text file. In addition,
+ * it can auto dump to a log file and clear the textarea. Can be used with
+ * JFrame, JInternalFrame or as a JPanel. If used in conjunction with any exe
+ * creator for java, e.g:
+ * <a href="http://launch4j.sourceforge.net/">launch4j</a> or
+ * <a href="http://jsmooth.sourceforge.net/">JSmooth</a>,
+ * it eliminates the dos application windows and your application looks more
+ * professional.
+ * <p>
+ * @author Gregory Kotsaftis
+ * @since 1.0
+ */
+public final class JConsolePane extends JPanel {
+
+    /**
+     * Singleton implementation.
+     */
+    private static JConsolePane s_consolePane = null;
+
+    /**
+     * Default output stream.
+     */
+    private static final PrintStream STDOUT = System.out;
+
+    /**
+     * Default error stream.
+     */
+    private static final PrintStream STDERR = System.err;
+
+    /**
+     * Foreground color.
+     */
+    private static final Color FG_COLOR = Color.WHITE;
+
+    /**
+     * Background color.
+     */
+    private static final Color BG_COLOR = Color.BLACK;
+
+    /**
+     * Selected text color.
+     */
+    private static final Color SLT_COLOR = BG_COLOR;
+
+    /**
+     * Selection color.
+     */
+    private static final Color SL_COLOR = FG_COLOR;
+
+    /**
+     * Default text font.
+     */
+    private static final Font TEXT_FONT = new Font("Courier", 0, 12);
+
+    /**
+     * Out print stream.
+     */
+    private final PrintStream m_stdoutPS = new PrintStream(
+        new JTextAreaOutStream( new ByteArrayOutputStream() ) );
+
+    /**
+     * Error print stream.
+     */
+    private final PrintStream m_stderrPS = new PrintStream(
+        new JTextAreaOutStream( new ByteArrayOutputStream() ) );
+
+    /**
+     * File chooser for saving messages.
+     */
+    private final JFileChooser m_fileChooser = new JFileChooser();
+
+    /**
+     * Confirm title.
+     */
+    private String m_confimTitle = ResourceBundle.getBundle(
+        "gr/zeus/res/jconsole").getString("confimTitle");
+
+    /**
+     * File exists warning message.
+     */
+    private String m_confimMessage = ResourceBundle.getBundle(
+        "gr/zeus/res/jconsole").getString("confimMessage");
+
+    /**
+     * Default file name, used by the filechooser.
+     */
+    private String m_messagesFilename = "messages.txt";
+
+    /**
+     * Default file name, used by the auto dump functions.
+     */
+    private String m_traceFilename = "trace.log";
+
+    /**
+     * Append or overwrite the trace file
+     * the first time JConsolePane tries to write to it?
+     */
+    private boolean m_appendFirstTime = false;
+
+    /**
+     * Auto save the trace file?
+     */
+    private boolean m_autoSave = false;
+
+    /**
+     * Display infinite characters in the textarea, no limit.
+     * <p>
+     * <b>NOTE:</b> Will slow down your application if a lot of messages
+     * are to be displayed to the textarea (more than a couple of Kbytes).
+     */
+    private int m_maxChars = -1;
+
+    /**
+     * Number of times messages have been flushed to the trace file.
+     */
+    private int m_numFlushes = 0;
+
+    /**
+     * Initial buffer size.
+     */
+    private static final int BUF_SIZE = 4 * 1024;
+
+    /**
+     * Store here all the text for <code>dumpConsole()</code> usage.
+     */
+    private final StringBuilder m_consoleText = new StringBuilder( BUF_SIZE );
+
+
+    /**
+     * Private constructor. Initializes the GUI and prepares new streams.
+     * <p>
+     * @throws InterruptedException, InvocationTargetException
+     */
+    private JConsolePane()
+        throws InterruptedException,
+               InvocationTargetException
+    {
+        GUIUtils.invokeAndWait( new Runnable() {
+            @Override public void run()
+            {
+                initComponents();
+
+                ta_messages.setForeground( FG_COLOR );
+                ta_messages.setBackground( BG_COLOR );
+                ta_messages.setSelectedTextColor( SLT_COLOR );
+                ta_messages.setSelectionColor( SL_COLOR );
+                ta_messages.setFont( TEXT_FONT );
+
+                m_fileChooser.setDialogType( JFileChooser.SAVE_DIALOG );
+                m_fileChooser.setFileSelectionMode( JFileChooser.FILES_ONLY );
+                m_fileChooser.setMultiSelectionEnabled( false );
+                m_fileChooser.setAcceptAllFileFilterUsed( true );
+                m_fileChooser.setControlButtonsAreShown( true );
+            }
+        });
+
+        hideConsole();
+    }
+
+
+    /**
+     * Singleton constructor.
+     * <p>
+     * @return  <code>JConsolePane</code>.
+     * <p>
+     * @throws ExceptionInInitializerError
+     */
+    public synchronized static JConsolePane getConsolePane()
+    {
+        if( s_consolePane==null )
+        {
+            try
+            {
+                s_consolePane = new JConsolePane();
+            }
+            catch(Exception ex)
+            {
+                // unlikely to happen!
+                throw( new ExceptionInInitializerError(ex) );
+            }
+        }
+
+        return( s_consolePane );
+    }
+
+
+    /**
+     * Attachs the new streams to stdout and stderr.
+     */
+    public synchronized void startConsole()
+    {
+        System.setOut( m_stdoutPS );
+        System.setErr( m_stderrPS );
+    }
+
+
+    /**
+     * Attachs the original streams to stdout and stderr.
+     */
+    public synchronized void stopConsole()
+    {
+        System.setOut( STDOUT );
+        System.setErr( STDERR );
+    }
+
+
+    /**
+     * Shows the console.
+     */
+    public void showConsole()
+    {
+        java.awt.EventQueue.invokeLater( new Runnable() {
+            @Override public void run()
+            {
+                setVisible( true );
+            }
+        });
+    }
+
+
+    /**
+     * Hides the console.
+     */
+    public void hideConsole()
+    {
+        java.awt.EventQueue.invokeLater( new Runnable() {
+            @Override public void run()
+            {
+                setVisible( false );
+            }
+        });
+    }
+
+
+    /**
+     * Shows the control buttons.
+     */
+    public void showControlButtons()
+    {
+        java.awt.EventQueue.invokeLater( new Runnable() {
+            @Override public void run()
+            {
+                button_panel.setVisible( true );
+            }
+        });
+    }
+
+
+    /**
+     * Hides the control buttons.
+     */
+    public void hideControlButtons()
+    {
+        java.awt.EventQueue.invokeLater( new Runnable() {
+            @Override public void run()
+            {
+                button_panel.setVisible( false );
+            }
+        });
+    }
+
+
+    /**
+     * Clears all the messages stored in the internal buffer from the beginning
+     * of the <code>JConsolePane</code>. Use this if you have printed too many
+     * messages and you want to free up the memory used. Perhaps you should
+     * invoke <code>dumpConsole()</code> to store the messages first, unless
+     * of course you already have enabled autosave.
+     */
+    public synchronized void clearBufferMessages()
+    {
+        m_consoleText.delete(0, m_consoleText.length());
+        m_consoleText.ensureCapacity( BUF_SIZE );
+    }
+
+
+    /**
+     * Clears only the messages that are displayed in the textarea.
+     */
+    public void clearScreenMessages()
+    {
+        java.awt.EventQueue.invokeLater( new Runnable() {
+            @Override public void run()
+            {
+                ta_messages.setText("");
+            }
+        });
+    }
+
+
+    /**
+     * Dumps all the console messages (up to now) to a file (not only the
+     * messages displayed in the textarea).
+     * This method does not clear the messages buffer, use
+     * <code>clearBufferMessages()</code> for this.
+     * <p>
+     * @param filename  The filename to store all console's messages.
+     * @param append    If <code>true</code> text is appended in the file,
+     *                  else the file gets overwritten.
+     * <p>
+     * @throws IOException
+     */
+    public void dumpConsole(String filename, boolean append)
+        throws IOException
+    {
+        String txt = createTimestamp();
+        synchronized(this)
+        {
+            txt += m_consoleText.toString();
+        }
+        IOHelper.saveTxtFile(filename, txt, append);
+    }
+
+
+    /**
+     * Destroys the console.
+     * Actually what it does is this:
+     * Stops, hides and clears the console.
+     * If you are to invoke <code>getConsole()</code> after this
+     * method you will get a brand new console with no messages at all. This
+     * method is not needed for simple applications that are about to invoke
+     * System.exit() or normaly close.
+     */
+    public void destroyConsole()
+    {
+        stopConsole();
+
+        hideConsole();
+
+        // Clears the messages from JConsolePane (if not done already), because
+        // if we have invoked destroyConsole() and will not call System.exit(),
+        // right next, invoking getConsole() again and executing showConsole()
+        // will show us our old messages...
+        clearScreenMessages();
+
+        // for the same reason, also clear the string buffer.
+        clearBufferMessages();
+    }
+
+
+    /**
+     * Updates the look and feel of the <code>JConsolePane</code> and it's
+     * components. <b>MUST</b> be called <b>AFTER</b> invoking:
+     * <code>UIManager.setLookAndFeel()</code> in your application.
+     */
+    public void updateLNF()
+    {
+        final Component THIS = this;
+        java.awt.EventQueue.invokeLater( new Runnable() {
+            @Override public void run()
+            {
+                SwingUtilities.updateComponentTreeUI( THIS );
+                SwingUtilities.updateComponentTreeUI( m_fileChooser );
+            }
+        });
+    }
+
+
+    /**
+     * Gets the title for the popup window that confirms file overwrite.
+     * <p>
+     * @return  The title.
+     */
+    public String getConfimTitle()
+    {
+        return( m_confimTitle );
+    }
+
+
+    /**
+     * Sets the title for the popup window that confirms file overwrite.
+     * <p>
+     * @param s The title.
+     */
+    public void setConfimTitle(String s)
+    {
+        m_confimTitle = s;
+    }
+
+
+    /**
+     * Gets the text for the popup window that confirms file overwrite.
+     * <p>
+     * @return  The message.
+     */
+    public String getConfimMessage()
+    {
+        return( m_confimMessage );
+    }
+
+
+    /**
+     * Sets the text for the popup window that confirms file overwrite.
+     * <p>
+     * @param s The message.
+     */
+    public void setConfimMessage(String s)
+    {
+        m_confimMessage = s;
+    }
+
+
+    /**
+     * Gets the default filename for the filechooser.
+     * <p>
+     * @return  The filename.
+     */
+    public String getMessagesFilename()
+    {
+        return( m_messagesFilename );
+    }
+
+
+    /**
+     * Sets the default filename for the filechooser.
+     * <p>
+     * @param s The filename.
+     */
+    public void setMessagesFilename(String s)
+    {
+        m_messagesFilename = s;
+    }
+
+
+    /**
+     * Gets the file used by <code>dumpConsole()</code> and
+     * all auto save methods.
+     * <p>
+     * @return  The filename.
+     */
+    public String getTraceFilename()
+    {
+        return( m_traceFilename );
+    }
+
+
+    /**
+     * Sets the file used by <code>dumpConsole()</code> and
+     * all auto save methods.
+     * <p>
+     * @param s The filename.
+     */
+    public void setTraceFilename(String s)
+    {
+        m_traceFilename = s;
+    }
+
+
+    /**
+     * Gets append policy.
+     * If the 'traceFilename' exists the first time we try to save the messages,
+     * should we append or overwrite?
+     * <p>
+     * @return  true/false
+     */
+    public boolean getAppendFirstTime()
+    {
+        return( m_appendFirstTime );
+    }
+
+
+    /**
+     * Sets append policy.
+     * If the 'traceFilename' exists the first time we try to save the messages,
+     * should we append or overwrite?
+     * <p>
+     * @param b true/false
+     */
+    public void setAppendFirstTime(boolean b)
+    {
+        m_appendFirstTime = b;
+    }
+
+
+    /**
+     * Gets auto save status.
+     * Auto save the console messages to file 'traceFilename' when 'maxChars'
+     * are reached and clear the messages (append new messages when required)?
+     * <p>
+     * @return  true/false
+     */
+    public boolean getAutoSave()
+    {
+        return( m_autoSave );
+    }
+
+
+    /**
+     * Sets auto save status.
+     * Auto save the console messages to file 'traceFilename' when 'maxChars'
+     * are reached and clear the messages (append new messages when required)?
+     * <p>
+     * @param b true/false
+     */
+    public void setAutoSave(boolean b)
+    {
+        m_autoSave = b;
+    }
+
+
+    /**
+     * If -1 no limit, else the messages will be flushed to 'traceFilename' and
+     * cleared when this limit is reached.
+     * <p>
+     * @return  The limit.
+     */
+    public int getMaxChars()
+    {
+        return( m_maxChars );
+    }
+
+
+    /**
+     * If -1 no limit, else the messages will be flushed to 'traceFilename' and
+     * cleared when this limit is reached.
+     * <p>
+     * @param i The limit.
+     */
+    public void setMaxChars(int i)
+    {
+        m_maxChars = i;
+    }
+
+
+    /**
+     * Gets the foreground color of the textarea.
+     * <p>
+     * @return  The color.
+     */
+    public Color getForegroundColor()
+    {
+        return( ta_messages.getForeground() );
+    }
+
+
+    /**
+     * Sets the foreground color of the textarea.
+     * <p>
+     * @param c The color.
+     */
+    public void setForegroundColor(final Color c)
+    {
+        java.awt.EventQueue.invokeLater( new Runnable() {
+            @Override public void run()
+            {
+                ta_messages.setForeground( c );
+            }
+        });
+    }
+
+
+    /**
+     * Gets the background color of the textarea.
+     * <p>
+     * @return  The color.
+     */
+    public Color getBackgroundColor()
+    {
+        return( ta_messages.getBackground() );
+    }
+
+
+    /**
+     * Sets the background color of the textarea.
+     * <p>
+     * @param c The color.
+     */
+    public void setBackgroundColor(final Color c)
+    {
+        java.awt.EventQueue.invokeLater( new Runnable() {
+            @Override public void run()
+            {
+                ta_messages.setBackground( c );
+            }
+        });
+    }
+
+
+    /**
+     * Gets the selected text color of the textarea.
+     * <p>
+     * @return  The color.
+     */
+    public Color getSelectedTextColor()
+    {
+        return( ta_messages.getSelectedTextColor() );
+    }
+
+
+    /**
+     * Sets the selected text color of the textarea.
+     * <p>
+     * @param c The color.
+     */
+    public void setSelectedTextColor(final Color c)
+    {
+        java.awt.EventQueue.invokeLater( new Runnable() {
+            @Override public void run()
+            {
+                ta_messages.setSelectedTextColor( c );
+            }
+        });
+    }
+
+
+    /**
+     * Gets the selection color of the textarea.
+     * <p>
+     * @return  The color.
+     */
+    public Color getSelectionColor()
+    {
+        return( ta_messages.getSelectionColor() );
+    }
+
+
+    /**
+     * Sets the selection color of the textarea.
+     * <p>
+     * @param c The color.
+     */
+    public void setSelectionColor(final Color c)
+    {
+        java.awt.EventQueue.invokeLater( new Runnable() {
+            @Override public void run()
+            {
+                ta_messages.setSelectionColor( c );
+            }
+        });
+    }
+
+
+    /**
+     * Gets the text of the clear button.
+     * <p>
+     * @return  The text.
+     */
+    public String getClearButtonText()
+    {
+        return( btn_clear.getText() );
+    }
+
+
+    /**
+     * Sets the text of the clear button.
+     * <p>
+     * @param s The text.
+     */
+    public void setClearButtonText(final String s)
+    {
+        java.awt.EventQueue.invokeLater( new Runnable() {
+            @Override public void run()
+            {
+                btn_clear.setText( s );
+            }
+        });
+    }
+
+
+    /**
+     * Gets the text of the save button.
+     * <p>
+     * @return  The text.
+     */
+    public String getSaveButtonText()
+    {
+        return( btn_save.getText() );
+    }
+
+
+    /**
+     * Sets the text of the save button.
+     * <p>
+     * @param s The text.
+     */
+    public void setSaveButtonText(final String s)
+    {
+        java.awt.EventQueue.invokeLater( new Runnable() {
+            @Override public void run()
+            {
+                btn_save.setText( s );
+            }
+        });
+    }
+
+
+    /**
+     * Gets the text of the close button.
+     * <p>
+     * @return  The text.
+     */
+    public String getCloseButtonText()
+    {
+        return( btn_close.getText() );
+    }
+
+
+    /**
+     * Sets the text of the close button.
+     * <p>
+     * @param s The text.
+     */
+    public void setCloseButtonText(final String s)
+    {
+        java.awt.EventQueue.invokeLater( new Runnable() {
+            @Override public void run()
+            {
+                btn_close.setText( s );
+            }
+        });
+    }
+
+
+    /**
+     * Gets the filechooser title.
+     * <p>
+     * @return  The title.
+     */
+    public String getFilechooserTitle()
+    {
+        return( m_fileChooser.getDialogTitle() );
+    }
+
+
+    /**
+     * Sets the filechooser title.
+     * <p>
+     * @param s The title.
+     */
+    public void setFilechooserTitle(final String s)
+    {
+        java.awt.EventQueue.invokeLater( new Runnable() {
+            @Override public void run()
+            {
+                m_fileChooser.setDialogTitle( s );
+            }
+        });
+    }
+
+
+    /**
+     * Gets the filechooser approve button text.
+     * <p>
+     * @return  The text.
+     */
+    public String getFilechooserApproveButtonText()
+    {
+        return( m_fileChooser.getApproveButtonText() );
+    }
+
+
+    /**
+     * Sets the filechooser approve button text.
+     * <p>
+     * @param s The text.
+     */
+    public void setFilechooserApproveButtonText(final String s)
+    {
+        java.awt.EventQueue.invokeLater( new Runnable() {
+            @Override public void run()
+            {
+                m_fileChooser.setApproveButtonText( s );
+            }
+        });
+    }
+
+
+    /**
+     * Gets the font of the textarea.
+     * <p>
+     * @return  The font.
+     */
+    public Font getTextFont()
+    {
+        return( ta_messages.getFont() );
+    }
+
+
+    /**
+     * Sets the font of the textarea.
+     * <p>
+     * @param f The font.
+     */
+    public void setTextFont(final Font f)
+    {
+        java.awt.EventQueue.invokeLater( new Runnable() {
+            @Override public void run()
+            {
+                ta_messages.setFont( f );
+            }
+        });
+    }
+
+
+    /** This method is called from within the constructor to
+     * initialize the form.
+     * WARNING: Do NOT modify this code. The content of this method is
+     * always regenerated by the Form Editor.
+     */
+    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
+    private void initComponents() {
+
+        button_panel = new javax.swing.JPanel();
+        btn_clear = new javax.swing.JButton();
+        btn_save = new javax.swing.JButton();
+        btn_close = new javax.swing.JButton();
+        javax.swing.JScrollPane text_scrollpane = new javax.swing.JScrollPane();
+        ta_messages = new javax.swing.JTextArea();
+
+        setPreferredSize(new java.awt.Dimension(400, 300));
+        setLayout(new java.awt.BorderLayout());
+
+        button_panel.setPreferredSize(new java.awt.Dimension(150, 33));
+        button_panel.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.RIGHT));
+
+        java.util.ResourceBundle bundle = java.util.ResourceBundle.getBundle("gr/zeus/res/jconsole"); // NOI18N
+        btn_clear.setText(bundle.getString("clearMsg")); // NOI18N
+        btn_clear.addActionListener(new java.awt.event.ActionListener() {
+            public void actionPerformed(java.awt.event.ActionEvent evt) {
+                btn_clearActionPerformed(evt);
+            }
+        });
+        button_panel.add(btn_clear);
+
+        btn_save.setText(bundle.getString("saveMsg")); // NOI18N
+        btn_save.addActionListener(new java.awt.event.ActionListener() {
+            public void actionPerformed(java.awt.event.ActionEvent evt) {
+                btn_saveActionPerformed(evt);
+            }
+        });
+        button_panel.add(btn_save);
+
+        btn_close.setText(bundle.getString("closeMsg")); // NOI18N
+        btn_close.addActionListener(new java.awt.event.ActionListener() {
+            public void actionPerformed(java.awt.event.ActionEvent evt) {
+                btn_closeActionPerformed(evt);
+            }
+        });
+        button_panel.add(btn_close);
+
+        add(button_panel, java.awt.BorderLayout.SOUTH);
+
+        text_scrollpane.setBorder(javax.swing.BorderFactory.createEmptyBorder(5, 5, 5, 5));
+
+        ta_messages.setColumns(40);
+        ta_messages.setEditable(false);
+        ta_messages.setRows(20);
+        text_scrollpane.setViewportView(ta_messages);
+
+        add(text_scrollpane, java.awt.BorderLayout.CENTER);
+    }// </editor-fold>//GEN-END:initComponents
+
+    private void btn_closeActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_btn_closeActionPerformed
+    {//GEN-HEADEREND:event_btn_closeActionPerformed
+        do_btn_close();
+    }//GEN-LAST:event_btn_closeActionPerformed
+
+    private void btn_saveActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_btn_saveActionPerformed
+    {//GEN-HEADEREND:event_btn_saveActionPerformed
+        do_btn_save();
+    }//GEN-LAST:event_btn_saveActionPerformed
+
+    private void btn_clearActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_btn_clearActionPerformed
+    {//GEN-HEADEREND:event_btn_clearActionPerformed
+        do_btn_clear();
+    }//GEN-LAST:event_btn_clearActionPerformed
+
+
+    /**
+     * Executes close button command.
+     */
+    private void do_btn_close()
+    {
+        hideConsole();
+    }
+
+
+    /**
+     * Executes clear button command.
+     */
+    private void do_btn_clear()
+    {
+        clearScreenMessages();
+    }
+
+
+    /**
+     * Executes save button command.
+     * Saves only text displayed in the textarea.
+     */
+    private void do_btn_save()
+    {
+        m_fileChooser.setSelectedFile( new File(m_messagesFilename) );
+        int returnVal = m_fileChooser.showSaveDialog( this );
+        if( returnVal==JFileChooser.APPROVE_OPTION )
+        {
+            File f = m_fileChooser.getSelectedFile();
+            if( f.exists() )
+            {
+                int res = JOptionPane.showConfirmDialog(
+                                this,
+                                m_confimMessage,
+                                m_confimTitle,
+                                JOptionPane.YES_NO_OPTION,
+                                JOptionPane.QUESTION_MESSAGE);
+                if( res!=0 )
+                {
+                    return;
+                }
+            }
+
+            try
+            {
+                IOHelper.saveTxtFile(f, ta_messages.getText(), false);
+            }
+            catch(IOException ex)
+            {
+                String msg = ResourceBundle.getBundle(
+                    "gr/zeus/res/jconsole").getString("saveErrorMsg");
+                System.err.println(msg + " " + ex.getMessage());
+                JMessage.showErrorMessage(null, msg, ex);
+            }
+        }
+    }
+
+
+    /**
+     * Generate a timestamp signature for the log file.
+     */
+    private String createTimestamp()
+    {
+        String timestamp = ResourceBundle.getBundle(
+            "gr/zeus/res/jconsole").getString("timestampMessage") + " " +
+            String.valueOf( CurrentDateHelper.getCurrentDay() ) + "/" +
+            String.valueOf( CurrentDateHelper.getCurrentMonth() ) + "/" +
+            String.valueOf( CurrentDateHelper.getCurrentYear() ) + " " +
+            String.valueOf( CurrentDateHelper.getCurrentHour() ) + ":" +
+            String.valueOf( CurrentDateHelper.getCurrentMinutes() ) + ":" +
+            String.valueOf( CurrentDateHelper.getCurrentSeconds() + "\r\n\r\n");
+        return( timestamp );
+    }
+
+
+    // Variables declaration - do not modify//GEN-BEGIN:variables
+    private javax.swing.JButton btn_clear;
+    private javax.swing.JButton btn_close;
+    private javax.swing.JButton btn_save;
+    private javax.swing.JPanel button_panel;
+    private javax.swing.JTextArea ta_messages;
+    // End of variables declaration//GEN-END:variables
+
+
+    /**
+     * Private inner class. Filter to redirect the data to the textarea.
+     */
+    private final class JTextAreaOutStream extends FilterOutputStream {
+
+        /**
+         * Constructor.
+         * <p>
+         * @param aStream   The <code>OutputStream</code>.
+         */
+        public JTextAreaOutStream( OutputStream aStream )
+        {
+            super( aStream );
+        }
+
+
+        /**
+         * Writes the messages.
+         * <p>
+         * @param b     The message in a <code>byte[]</code> array.
+         * <p>
+         * @throws IOException
+         */
+        public synchronized void write( byte b[] )
+            throws IOException
+        {
+            String s = new String( b );
+            m_consoleText.append( s );
+            appendMessage( s );
+            flushTextArea();
+        }
+
+
+        /**
+         * Writes the messages.
+         * <p>
+         * @param b     The message in a <code>byte[]</code> array.
+         * @param off   The offset.
+         * @param len   Length.
+         * <p>
+         * @throws IOException
+         */
+        public synchronized void write( byte b[], int off, int len )
+            throws IOException
+        {
+            String s = new String(b, off, len);
+            m_consoleText.append( s );
+            appendMessage( s );
+            flushTextArea();
+        }
+
+
+        /**
+         * Appends a message to the textarea and/or a textfile.
+         * <p>
+         * @param s     The message.
+         * <p>
+         * @throws IOException
+         */
+        private void appendMessage(final String s)
+            throws IOException
+        {
+            java.awt.EventQueue.invokeLater( new Runnable() {
+                @Override public void run()
+                {
+                    ta_messages.append( s );
+                }
+            });
+
+            if( m_autoSave )
+            {
+                boolean append = true;
+                if( m_numFlushes==0 && !m_appendFirstTime )
+                {
+                    append = false;
+                }
+
+                IOHelper.saveTxtFile(m_traceFilename, s, append);
+                m_numFlushes++;
+            }
+        }
+
+
+        /**
+         * Clears the textarea if we have enabled a maxChars limit.
+         */
+        private void flushTextArea()
+        {
+            java.awt.EventQueue.invokeLater( new Runnable() {
+                @Override public void run()
+                {
+                    int len = ta_messages.getText().length();
+
+                    // Always scroll down to the last line
+                    ta_messages.setCaretPosition( len );
+
+                    // if we have set a maximum characters limit and
+                    // we have exceeded that limit, clear the messages
+                    if( m_maxChars > 0 && len > m_maxChars )
+                    {
+                        ta_messages.setText("");
+                    }
+                }
+            });
+        }
+
+    }
+
+}
diff --git a/src/gr/zeus/ui/JIConsole.form b/src/gr/zeus/ui/JIConsole.form
new file mode 100644
index 0000000..281b7eb
--- /dev/null
+++ b/src/gr/zeus/ui/JIConsole.form
@@ -0,0 +1,33 @@
+<?xml version="1.1" encoding="UTF-8" ?>
+
+<Form version="1.2" maxVersion="1.2" type="org.netbeans.modules.form.forminfo.JInternalFrameFormInfo">
+  <Properties>
+    <Property name="closable" type="boolean" value="true"/>
+    <Property name="defaultCloseOperation" type="int" value="1"/>
+    <Property name="iconifiable" type="boolean" value="true"/>
+    <Property name="maximizable" type="boolean" value="true"/>
+    <Property name="resizable" type="boolean" value="true"/>
+    <Property name="title" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
+      <ResourceString bundle="gr/zeus/res/jconsole.properties" key="titleMsg" replaceFormat="java.util.ResourceBundle.getBundle("{bundleNameSlashes}").getString("{key}")"/>
+    </Property>
+    <Property name="frameIcon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
+      <Image iconType="3" name="/gr/zeus/res/console.gif"/>
+    </Property>
+  </Properties>
+  <SyntheticProperties>
+    <SyntheticProperty name="formSizePolicy" type="int" value="1"/>
+  </SyntheticProperties>
+  <AuxValues>
+    <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/>
+    <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
+    <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
+    <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
+    <AuxValue name="designerSize" type="java.awt.Dimension" value="-84,-19,0,5,115,114,0,18,106,97,118,97,46,97,119,116,46,68,105,109,101,110,115,105,111,110,65,-114,-39,-41,-84,95,68,20,2,0,2,73,0,6,104,101,105,103,104,116,73,0,5,119,105,100,116,104,120,112,0,0,1,44,0,0,1,-112"/>
+  </AuxValues>
+
+  <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/>
+</Form>
diff --git a/src/gr/zeus/ui/JIConsole.java b/src/gr/zeus/ui/JIConsole.java
new file mode 100644
index 0000000..759af40
--- /dev/null
+++ b/src/gr/zeus/ui/JIConsole.java
@@ -0,0 +1,118 @@
+/*
+ * JIConsole.java
+ *
+ * Copyright (c) 2004-2011 Gregory Kotsaftis
+ * gregkotsaftis at yahoo.com
+ * http://zeus-jscl.sourceforge.net/
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+package gr.zeus.ui;
+
+import java.awt.BorderLayout;
+import java.awt.event.ComponentAdapter;
+import java.awt.event.ComponentEvent;
+import javax.swing.JInternalFrame;
+
+/**
+ * The JInternalFrame edition of <b>JConsolePane</b>.<br>
+ * {@link JConsolePane}
+ * <p>
+ * @author Gregory Kotsaftis
+ * @since 1.40
+ */
+public final class JIConsole extends JInternalFrame {
+
+    /**
+     * The single instance of JConsolePane.
+     */
+    private static JConsolePane s_consolePane = JConsolePane.getConsolePane();
+
+
+    /**
+     * Returns the instance of the <code>JConsolePane</code> for further
+     * configuration.
+     */
+    public static JConsolePane getConsole()
+    {
+        return( s_consolePane );
+    }
+
+
+    /**
+     * Constructor.
+     * Creates a new JInternalFrame and adds to it the single instance of
+     * JConsolePane. Finally hides the frame until it is required to be seen.
+     */
+    public JIConsole()
+    {
+        initComponents();
+
+        // attach a listener to watch for close button pressed
+        s_consolePane.addComponentListener(new ComponentAdapter() {
+            public void componentHidden(ComponentEvent evt)
+            {
+                // hide this frame also
+                setVisible(false);
+            }
+        });
+
+        // show console when frame is shown
+        addComponentListener(new ComponentAdapter() {
+            public void componentShown(ComponentEvent evt)
+            {
+                // usually not needed unless you have manually invoked:
+                // getConsole().hideConsole() for some reason.
+                // Make sure the console is visible when this frame
+                // is made visible.
+                s_consolePane.setVisible(true);
+            }
+        });
+
+        // no need for the console to be hidden inside a frame. We will control
+        // the frame visibility instead.
+        s_consolePane.setVisible(true);
+
+        getContentPane().add(s_consolePane, BorderLayout.CENTER);
+        pack();
+    }
+
+
+    /** This method is called from within the constructor to
+     * initialize the form.
+     * WARNING: Do NOT modify this code. The content of this method is
+     * always regenerated by the Form Editor.
+     */
+    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
+    private void initComponents()
+    {
+
+        setClosable(true);
+        setDefaultCloseOperation(javax.swing.WindowConstants.HIDE_ON_CLOSE);
+        setIconifiable(true);
+        setMaximizable(true);
+        setResizable(true);
+        java.util.ResourceBundle bundle = java.util.ResourceBundle.getBundle("gr/zeus/res/jconsole"); // NOI18N
+        setTitle(bundle.getString("titleMsg")); // NOI18N
+        setFrameIcon(new javax.swing.ImageIcon(getClass().getResource("/gr/zeus/res/console.gif"))); // NOI18N
+
+        pack();
+    }// </editor-fold>//GEN-END:initComponents
+
+
+    // Variables declaration - do not modify//GEN-BEGIN:variables
+    // End of variables declaration//GEN-END:variables
+
+}
diff --git a/src/gr/zeus/ui/JMessage.form b/src/gr/zeus/ui/JMessage.form
new file mode 100644
index 0000000..ffaa612
--- /dev/null
+++ b/src/gr/zeus/ui/JMessage.form
@@ -0,0 +1,158 @@
+<?xml version="1.1" encoding="UTF-8" ?>
+
+<Form version="1.2" maxVersion="1.2" type="org.netbeans.modules.form.forminfo.JDialogFormInfo">
+  <Properties>
+    <Property name="alwaysOnTop" type="boolean" value="true"/>
+    <Property name="resizable" type="boolean" value="false"/>
+  </Properties>
+  <SyntheticProperties>
+    <SyntheticProperty name="formSizePolicy" type="int" value="1"/>
+  </SyntheticProperties>
+  <Events>
+    <EventHandler event="windowClosing" listener="java.awt.event.WindowListener" parameters="java.awt.event.WindowEvent" handler="formWindowClosing"/>
+    <EventHandler event="windowOpened" listener="java.awt.event.WindowListener" parameters="java.awt.event.WindowEvent" handler="formWindowOpened"/>
+  </Events>
+  <AuxValues>
+    <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/>
+    <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
+    <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
+    <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
+    <AuxValue name="designerSize" type="java.awt.Dimension" value="-84,-19,0,5,115,114,0,18,106,97,118,97,46,97,119,116,46,68,105,109,101,110,115,105,111,110,65,-114,-39,-41,-84,95,68,20,2,0,2,73,0,6,104,101,105,103,104,116,73,0,5,119,105,100,116,104,120,112,0,0,0,-69,0,0,1,80"/>
+  </AuxValues>
+
+  <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/>
+  <SubComponents>
+    <Container class="javax.swing.JPanel" name="m_westPane">
+      <Constraints>
+        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription">
+          <BorderConstraints direction="West"/>
+        </Constraint>
+      </Constraints>
+
+      <Layout class="org.netbeans.modules.form.compat2.layouts.DesignFlowLayout">
+        <Property name="horizontalGap" type="int" value="10"/>
+        <Property name="verticalGap" type="int" value="10"/>
+      </Layout>
+      <SubComponents>
+        <Component class="javax.swing.JLabel" name="m_icon">
+        </Component>
+      </SubComponents>
+    </Container>
+    <Container class="javax.swing.JPanel" name="m_centerPane">
+      <Constraints>
+        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription">
+          <BorderConstraints direction="Center"/>
+        </Constraint>
+      </Constraints>
+
+      <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/>
+      <SubComponents>
+        <Container class="javax.swing.JPanel" name="m_messagePane">
+          <Constraints>
+            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription">
+              <BorderConstraints direction="North"/>
+            </Constraint>
+          </Constraints>
+
+          <Layout class="org.netbeans.modules.form.compat2.layouts.DesignFlowLayout">
+            <Property name="alignment" type="int" value="0"/>
+            <Property name="verticalGap" type="int" value="20"/>
+          </Layout>
+          <SubComponents>
+            <Component class="javax.swing.JLabel" name="m_messageText">
+            </Component>
+            <Component class="javax.swing.JToggleButton" name="m_detailsButton">
+              <Properties>
+                <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
+                  <Image iconType="3" name="/gr/zeus/res/expand.gif"/>
+                </Property>
+                <Property name="focusPainted" type="boolean" value="false"/>
+                <Property name="maximumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
+                  <Dimension value="[18, 18]"/>
+                </Property>
+                <Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
+                  <Dimension value="[18, 18]"/>
+                </Property>
+                <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
+                  <Dimension value="[18, 18]"/>
+                </Property>
+              </Properties>
+              <Events>
+                <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="m_detailsButtonActionPerformed"/>
+              </Events>
+            </Component>
+          </SubComponents>
+        </Container>
+        <Container class="javax.swing.JScrollPane" name="m_scrollPane">
+          <Constraints>
+            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription">
+              <BorderConstraints direction="Center"/>
+            </Constraint>
+          </Constraints>
+
+          <Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
+          <SubComponents>
+            <Component class="javax.swing.JTextArea" name="m_messageException">
+              <Properties>
+                <Property name="editable" type="boolean" value="false"/>
+              </Properties>
+            </Component>
+          </SubComponents>
+        </Container>
+        <Container class="javax.swing.JPanel" name="m_buttonsPane">
+          <Constraints>
+            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription">
+              <BorderConstraints direction="South"/>
+            </Constraint>
+          </Constraints>
+
+          <Layout class="org.netbeans.modules.form.compat2.layouts.DesignFlowLayout">
+            <Property name="verticalGap" type="int" value="10"/>
+          </Layout>
+          <SubComponents>
+            <Component class="javax.swing.JButton" name="m_okButton">
+              <Events>
+                <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="m_okButtonActionPerformed"/>
+              </Events>
+            </Component>
+            <Component class="javax.swing.JButton" name="m_yesButton">
+              <Events>
+                <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="m_yesButtonActionPerformed"/>
+              </Events>
+            </Component>
+            <Component class="javax.swing.JButton" name="m_noButton">
+              <Events>
+                <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="m_noButtonActionPerformed"/>
+              </Events>
+            </Component>
+            <Component class="javax.swing.JButton" name="m_cancelButton">
+              <Events>
+                <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="m_cancelButtonActionPerformed"/>
+              </Events>
+            </Component>
+          </SubComponents>
+        </Container>
+      </SubComponents>
+    </Container>
+    <Container class="javax.swing.JPanel" name="m_eastPane">
+      <Constraints>
+        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription">
+          <BorderConstraints direction="East"/>
+        </Constraint>
+      </Constraints>
+
+      <Layout class="org.netbeans.modules.form.compat2.layouts.DesignFlowLayout">
+        <Property name="horizontalGap" type="int" value="10"/>
+        <Property name="verticalGap" type="int" value="10"/>
+      </Layout>
+      <SubComponents>
+        <Component class="javax.swing.JLabel" name="m_emptySpace">
+        </Component>
+      </SubComponents>
+    </Container>
+  </SubComponents>
+</Form>
diff --git a/src/gr/zeus/ui/JMessage.java b/src/gr/zeus/ui/JMessage.java
new file mode 100644
index 0000000..2dc25b4
--- /dev/null
+++ b/src/gr/zeus/ui/JMessage.java
@@ -0,0 +1,1094 @@
+/*
+ * JMessage.java
+ *
+ * Copyright (c) 2004-2011 Gregory Kotsaftis
+ * gregkotsaftis at yahoo.com
+ * http://zeus-jscl.sourceforge.net/
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+package gr.zeus.ui;
+
+import java.awt.BorderLayout;
+import java.awt.Frame;
+import java.io.PrintWriter;
+import java.io.StringWriter;
+import java.util.ResourceBundle;
+import javax.swing.Icon;
+import javax.swing.ImageIcon;
+import javax.swing.JButton;
+import javax.swing.JDialog;
+import javax.swing.JOptionPane;
+import javax.swing.JRootPane;
+import javax.swing.UIManager;
+
+/**
+ * This component is similar to <code>javax.swing.JOptionPane</code> component.
+ * It can be used to display message and error dialogs. The main features of
+ * <code>JMessage</code> are:<br>
+ * <ul>
+ * <li>Displays simple messages and the stacktrace of an exception</li>
+ * <li>Supports html text for messages with build-in plain text conversion</li>
+ * <li>The dialogs are modal. In addition they stay on top of other windows at
+ * all times</li>
+ * <li>Supports for <code>JOptionPane</code> OK,CANCEL,YES,NO buttons</li>
+ * <li>Selects a default button in the dialog</li>
+ * <li>Supports all <code>JOptionPane</code> messageType(s) & optionType(s)</li>
+ * <li>Uses UI default icons or user supplied icons</li>
+ * <li>Uses localized dialog titles and button text, or user supplied text</li>
+ * <li>Returns dialog status depending on which button was pressed</li>
+ * </ul>
+ * <p>
+ * @author Gregory Kotsaftis
+ * @since 1.40
+ */
+public final class JMessage extends JDialog {
+
+    /**
+     * Localized title for ERROR dialog.
+     */
+    private static final String ERROR_TITLE = ResourceBundle.getBundle(
+        "gr/zeus/res/jmessage").getString("errorTitle");
+
+    /**
+     * Localized title for INFO dialog.
+     */
+    private static final String INFO_TITLE = ResourceBundle.getBundle(
+        "gr/zeus/res/jmessage").getString("infoTitle");
+
+    /**
+     * Localized title for WARNING dialog.
+     */
+    private static final String WARNING_TITLE = ResourceBundle.getBundle(
+        "gr/zeus/res/jmessage").getString("warningTitle");
+
+    /**
+     * Localized title for QUESTION dialog.
+     */
+    private static final String QUESTION_TITLE = ResourceBundle.getBundle(
+        "gr/zeus/res/jmessage").getString("questionTitle");
+
+    /**
+     * Localized title for PLAIN dialog.
+     */
+    private static final String PLAIN_TITLE = ResourceBundle.getBundle(
+        "gr/zeus/res/jmessage").getString("plainTitle");
+
+    /**
+     * Localized text for OK button.
+     */
+    private static final String OK_BUTTON_TEXT = ResourceBundle.getBundle(
+        "gr/zeus/res/jmessage").getString("okButtonText");
+
+    /**
+     * Localized text for CANCEL button.
+     */
+    private static final String CANCEL_BUTTON_TEXT = ResourceBundle.getBundle(
+        "gr/zeus/res/jmessage").getString("cancelButtonText");
+
+    /**
+     * Localized text for YES button.
+     */
+    private static final String YES_BUTTON_TEXT = ResourceBundle.getBundle(
+        "gr/zeus/res/jmessage").getString("yesButtonText");
+
+    /**
+     * Localized text for NO button.
+     */
+    private static final String NO_BUTTON_TEXT = ResourceBundle.getBundle(
+        "gr/zeus/res/jmessage").getString("noButtonText");
+
+    /**
+     * Icon for button that shows the exception's pane.
+     */
+    private static final ImageIcon EXPAND_ICON = new ImageIcon(
+        JMessage.class.getResource("/gr/zeus/res/expand.gif"));
+
+    /**
+     * Icon for button that hides the exception's pane.
+     */
+    private static final ImageIcon COLLAPSE_ICON = new ImageIcon(
+        JMessage.class.getResource("/gr/zeus/res/collapse.gif"));
+
+    /**
+     * Min columns displayed for the textarea's exception panel when the
+     * message is not big enough.
+     */
+    private static final int MIN_COLUMNS = 50;
+
+    /**
+     * Number of rows displayed for the textarea's exception panel.
+     */
+    private static final int NUM_ROWS = 15;
+
+    /**
+     * Enum with all the supported buttons of the dialog.
+     */
+    public enum JMessageButtonEnum { OK, CANCEL, YES, NO;
+
+        JButton whichOne(JButton btn_ok, JButton btn_cancel, JButton btn_yes,
+            JButton btn_no)
+        {
+            switch( this ) {
+                case OK:        return(btn_ok);
+                case CANCEL:    return(btn_cancel);
+                case YES:       return(btn_yes);
+                case NO:        return(btn_no);
+            }
+            throw new AssertionError("Unknown JMessageButtonEnum: " + this);
+        }
+    }
+
+    /**
+     * Which is the default button for this dialog.
+     */
+    private JMessageButtonEnum m_defaultButton = JMessageButtonEnum.OK;
+
+    /**
+     * The return status of this dialog.
+     */
+    private int m_returnStatus = JOptionPane.CLOSED_OPTION;
+
+
+
+
+    /**
+     * Shows a question window with YES/NO button options. Default button is YES.
+     * Also enables button to print the stacktrace of an exception.
+     * NOTE: On dialog close, it also returns false.
+     * <p>
+     * @param parent        The parent relative frame, can be <code>null</code>.
+     * @param message       The message to display, can be plain or html.
+     * @param ex            An exception to display it's stacktrace,
+     *                      <code>null</code> will disable the stacktrace button
+     *                      functionality.
+     * <p>
+     * @return              true for YES, false for NO
+     */
+    public static boolean showErrorQuestionMessageY(Frame parent, String message,
+            Throwable ex)
+    {
+        int messageType = JOptionPane.ERROR_MESSAGE;
+
+        JMessage msg = new JMessage(
+            parent,
+            message,
+            null, // default dialog title for current locale
+            messageType,
+            JOptionPane.YES_NO_OPTION,
+            JMessage.JMessageButtonEnum.YES,
+            get_default_ico(messageType),
+            ex,
+            null, // default text
+            null, // default text
+            null, // default text
+            null // default text
+        );
+
+        msg.setVisible(true);
+
+        return( msg.getReturnStatus() == JOptionPane.YES_OPTION );
+    }
+
+
+    /**
+     * Wrapper method for showMessageDialog(). Shows an error window with
+     * default button option.
+     * <p>
+     * @param parent        The parent relative frame, can be <code>null</code>.
+     * @param message       The message to display, can be plain or html.
+     */
+    public static void showErrorMessage(Frame parent, String message)
+    {
+        showErrorMessage(parent, message, null);
+    }
+
+
+    /**
+     * Wrapper method for showMessageDialog(). Shows an error window with
+     * default button option.
+     * <p>
+     * @param parent        The parent relative frame, can be <code>null</code>.
+     * @param message       The message to display, can be plain or html.
+     * @param ex            An exception to display it's stacktrace,
+     *                      <code>null</code> will disable the stacktrace button
+     *                      functionality.
+     */
+    public static void showErrorMessage(Frame parent, String message,
+            Throwable ex)
+    {
+        showMessageDialog(parent, message, JOptionPane.ERROR_MESSAGE,
+            JOptionPane.DEFAULT_OPTION, ex);
+    }
+
+
+    /**
+     * Wrapper method for showMessageDialog(). Shows a warning window with
+     * default button option.
+     * <p>
+     * @param parent        The parent relative frame, can be <code>null</code>.
+     * @param message       The message to display, can be plain or html.
+     */
+    public static void showWarningMessage(Frame parent, String message)
+    {
+        showWarningMessage(parent, message, null);
+    }
+
+
+    /**
+     * Wrapper method for showMessageDialog(). Shows a warning window with
+     * default button option.
+     * <p>
+     * @param parent        The parent relative frame, can be <code>null</code>.
+     * @param message       The message to display, can be plain or html.
+     * @param ex            An exception to display it's stacktrace,
+     *                      <code>null</code> will disable the stacktrace button
+     *                      functionality.
+     */
+    public static void showWarningMessage(Frame parent, String message,
+            Throwable ex)
+    {
+        showMessageDialog(parent, message, JOptionPane.WARNING_MESSAGE,
+            JOptionPane.DEFAULT_OPTION, ex);
+    }
+
+
+    /**
+     * Wrapper method for showMessageDialog(). Shows an info window with
+     * default button option.
+     * <p>
+     * @param parent        The parent relative frame, can be <code>null</code>.
+     * @param message       The message to display, can be plain or html.
+     */
+    public static void showInfoMessage(Frame parent, String message)
+    {
+        showInfoMessage(parent, message, null);
+    }
+
+
+    /**
+     * Wrapper method for showMessageDialog(). Shows an info window with
+     * default button option.
+     * <p>
+     * @param parent        The parent relative frame, can be <code>null</code>.
+     * @param message       The message to display, can be plain or html.
+     * @param ex            An exception to display it's stacktrace,
+     *                      <code>null</code> will disable the stacktrace button
+     *                      functionality.
+     */
+    public static void showInfoMessage(Frame parent, String message,
+            Throwable ex)
+    {
+        showMessageDialog(parent, message, JOptionPane.INFORMATION_MESSAGE,
+            JOptionPane.DEFAULT_OPTION, ex);
+    }
+
+
+    /**
+     * Wrapper method for showMessageDialog(). Shows a question window with
+     * YES/NO button options. Default button is NO, e.g. for use with delete
+     * confirmation dialogs. NOTE: On dialog close, it also returns false.
+     * <p>
+     * @param parent        The parent relative frame, can be <code>null</code>.
+     * @param message       The message to display, can be plain or html.
+     * <p>
+     * @return              true for YES, false for NO
+     */
+    public static boolean showQuestionMessageN(Frame parent, String message)
+    {
+        int res = showMessageDialog(parent, message,
+                        JOptionPane.QUESTION_MESSAGE, JOptionPane.YES_NO_OPTION,
+                        JMessage.JMessageButtonEnum.NO);
+
+        return( res == JOptionPane.YES_OPTION );
+    }
+
+
+    /**
+     * Wrapper method for showMessageDialog(). Shows a question window with
+     * YES/NO button options. Default button is YES, e.g. for use with save
+     * confirmation dialogs. NOTE: On dialog close, it also returns false.
+     * <p>
+     * @param parent        The parent relative frame, can be <code>null</code>.
+     * @param message       The message to display, can be plain or html.
+     * <p>
+     * @return              true for YES, false for NO
+     */
+    public static boolean showQuestionMessageY(Frame parent, String message)
+    {
+        int res = showMessageDialog(parent, message,
+                        JOptionPane.QUESTION_MESSAGE, JOptionPane.YES_NO_OPTION,
+                        JMessage.JMessageButtonEnum.YES);
+
+        return( res == JOptionPane.YES_OPTION );
+    }
+
+
+    /**
+     * Factory method, create-show-return.
+     * Creates a dialog relative to <code>parent</code> frame using UI defaults
+     * for icon and a locale specific frame title.
+     * <p>
+     * @param parent        The parent relative frame, can be <code>null</code>.
+     * @param message       The message to display, can be plain or html.
+     * @param messageType   Same as <code>JOptionPane</code>, one of:
+     *                      ERROR_MESSAGE, INFORMATION_MESSAGE, WARNING_MESSAGE,
+     *                      QUESTION_MESSAGE, or PLAIN_MESSAGE
+     * @param optionType    Same as <code>JOptionPane</code>, one of:
+     *                      DEFAULT_OPTION, YES_NO_OPTION, YES_NO_CANCEL_OPTION,
+     *                      OK_CANCEL_OPTION
+     * <p>
+     * @return              The status of the dialog depending on which button
+     *                      was pressed. Same as <code>JOptionPane</code>,
+     *                      one of: CANCEL_OPTION, NO_OPTION, YES_OPTION,
+     *                      OK_OPTION or CLOSED_OPTION if the dialog was closed.
+     */
+    public static int showMessageDialog(Frame parent, String message,
+        int messageType, int optionType)
+    {
+        JMessage msg = new JMessage(
+            parent,
+            message,
+            null, // default dialog title for current locale
+            messageType,
+            optionType,
+            null, // default button
+            get_default_ico(messageType),
+            null, // no exception
+            null, // default text
+            null, // default text
+            null, // default text
+            null // default text
+        );
+
+        msg.setVisible(true);
+
+        return( msg.getReturnStatus() );
+    }
+
+
+    /**
+     * Factory method, create-show-return.
+     * Creates a dialog relative to <code>parent</code> frame using UI defaults
+     * for icon and a locale specific frame title.
+     * Use <code>JMessageButtonEnum</code> to setup the default button.
+     * <p>
+     * @param parent        The parent relative frame, can be <code>null</code>.
+     * @param message       The message to display, can be plain or html.
+     * @param messageType   Same as <code>JOptionPane</code>, one of:
+     *                      ERROR_MESSAGE, INFORMATION_MESSAGE, WARNING_MESSAGE,
+     *                      QUESTION_MESSAGE, or PLAIN_MESSAGE
+     * @param optionType    Same as <code>JOptionPane</code>, one of:
+     *                      DEFAULT_OPTION, YES_NO_OPTION, YES_NO_CANCEL_OPTION,
+     *                      OK_CANCEL_OPTION
+     * @param defaultButton The default selected button for the dialog, if
+     *                      <code>null</code> the default for
+     *                      <code>optionType</code> will be selected.
+     * <p>
+     * @return              The status of the dialog depending on which button
+     *                      was pressed. Same as <code>JOptionPane</code>,
+     *                      one of: CANCEL_OPTION, NO_OPTION, YES_OPTION,
+     *                      OK_OPTION or CLOSED_OPTION if the dialog was closed.
+     */
+    public static int showMessageDialog(Frame parent, String message,
+        int messageType, int optionType, JMessageButtonEnum defaultButton)
+    {
+        JMessage msg = new JMessage(
+            parent,
+            message,
+            null, // default dialog title for current locale
+            messageType,
+            optionType,
+            defaultButton,
+            get_default_ico(messageType),
+            null, // no exception
+            null, // default text
+            null, // default text
+            null, // default text
+            null // default text
+        );
+
+        msg.setVisible(true);
+
+        return( msg.getReturnStatus() );
+    }
+
+
+    /**
+     * Factory method, create-show-return.
+     * Creates a dialog relative to <code>parent</code> frame using UI defaults
+     * for icon and a locale specific frame title. Also enables button to print
+     * the stacktrace of an exception.
+     * <p>
+     * @param parent        The parent relative frame, can be <code>null</code>.
+     * @param message       The message to display, can be plain or html.
+     * @param messageType   Same as <code>JOptionPane</code>, one of:
+     *                      ERROR_MESSAGE, INFORMATION_MESSAGE, WARNING_MESSAGE,
+     *                      QUESTION_MESSAGE, or PLAIN_MESSAGE
+     * @param optionType    Same as <code>JOptionPane</code>, one of:
+     *                      DEFAULT_OPTION, YES_NO_OPTION, YES_NO_CANCEL_OPTION,
+     *                      OK_CANCEL_OPTION
+     * @param ex            An exception to display it's stacktrace,
+     *                      <code>null</code> will disable the stacktrace button
+     *                      functionality.
+     * <p>
+     * @return              The status of the dialog depending on which button
+     *                      was pressed. Same as <code>JOptionPane</code>,
+     *                      one of: CANCEL_OPTION, NO_OPTION, YES_OPTION,
+     *                      OK_OPTION or CLOSED_OPTION if the dialog was closed.
+     */
+    public static int showMessageDialog(Frame parent, String message,
+        int messageType, int optionType, Throwable ex)
+    {
+        JMessage msg = new JMessage(
+            parent,
+            message,
+            null, // default dialog title for current locale
+            messageType,
+            optionType,
+            null, // default button
+            get_default_ico(messageType),
+            ex,
+            null, // default text
+            null, // default text
+            null, // default text
+            null // default text
+        );
+
+        msg.setVisible(true);
+
+        return( msg.getReturnStatus() );
+    }
+
+
+    /**
+     * Factory method, create-show-return.
+     * Creates fully customizable message dialog.
+     * <p>
+     * @param parent        The parent relative frame, can be <code>null</code>.
+     * @param message       The message to display, can be plain or html.
+     * @param frameTitle    The title for the frame, if <code>null</code> the
+     *                      default is used.
+     * @param messageType   Same as <code>JOptionPane</code>, one of:
+     *                      ERROR_MESSAGE, INFORMATION_MESSAGE, WARNING_MESSAGE,
+     *                      QUESTION_MESSAGE, or PLAIN_MESSAGE
+     * @param optionType    Same as <code>JOptionPane</code>, one of:
+     *                      DEFAULT_OPTION, YES_NO_OPTION, YES_NO_CANCEL_OPTION,
+     *                      OK_CANCEL_OPTION
+     * @param defaultButton The default selected button for the dialog, if
+     *                      <code>null</code> the default for
+     *                      <code>optionType</code> will be selected.
+     * @param ico           The custom icon to use, <code>null</code> means no
+     *                      icon.
+     * @param ex            An exception to display it's stacktrace,
+     *                      <code>null</code> will disable the stacktrace button
+     *                      functionality.
+     * @param okText        Ok button text, if <code>null</code> the default
+     *                      is used.
+     * @param cancelText    Cancel button text, if <code>null</code> the default
+     *                      is used.
+     * @param yesText       Yes button text, if <code>null</code> the default
+     *                      is used.
+     * @param noText        No button text, if <code>null</code> the default
+     *                      is used.
+     * <p>
+     * @return              The status of the dialog depending on which button
+     *                      was pressed. Same as <code>JOptionPane</code>,
+     *                      one of: CANCEL_OPTION, NO_OPTION, YES_OPTION,
+     *                      OK_OPTION or CLOSED_OPTION if the dialog was closed.
+     */
+    public static int showMessageDialog(Frame parent, String message,
+        String frameTitle, int messageType, int optionType,
+        JMessageButtonEnum defaultButton, Icon ico, Throwable ex, String okText,
+        String cancelText, String yesText, String noText)
+    {
+        JMessage msg = new JMessage(
+            parent,
+            message,
+            frameTitle,
+            messageType,
+            optionType,
+            defaultButton,
+            ico,
+            ex,
+            okText,
+            cancelText,
+            yesText,
+            noText);
+
+        msg.setVisible(true);
+
+        return( msg.getReturnStatus() );
+    }
+
+
+    /**
+     * Constructor. Creates fully customizable message dialog.
+     * <p>
+     * @param parent        The parent relative frame, can be <code>null</code>.
+     * @param message       The message to display, can be plain or html.
+     * @param frameTitle    The title for the frame, if <code>null</code> the
+     *                      default is used.
+     * @param messageType   Same as <code>JOptionPane</code>, one of:
+     *                      ERROR_MESSAGE, INFORMATION_MESSAGE, WARNING_MESSAGE,
+     *                      QUESTION_MESSAGE, or PLAIN_MESSAGE
+     * @param optionType    Same as <code>JOptionPane</code>, one of:
+     *                      DEFAULT_OPTION, YES_NO_OPTION, YES_NO_CANCEL_OPTION,
+     *                      OK_CANCEL_OPTION
+     * @param defaultButton The default selected button for the dialog, if
+     *                      <code>null</code> the default for
+     *                      <code>optionType</code> will be selected.
+     * @param ico           The custom icon to use, <code>null</code> means no
+     *                      icon.
+     * @param ex            An exception to display it's stacktrace,
+     *                      <code>null</code> will disable the stacktrace button
+     *                      functionality.
+     * @param okText        Ok button text, if <code>null</code> the default
+     *                      is used.
+     * @param cancelText    Cancel button text, if <code>null</code> the default
+     *                      is used.
+     * @param yesText       Yes button text, if <code>null</code> the default
+     *                      is used.
+     * @param noText        No button text, if <code>null</code> the default
+     *                      is used.
+     */
+    public JMessage(Frame parent, String message, String frameTitle,
+        int messageType, int optionType, JMessageButtonEnum defaultButton,
+        Icon ico, Throwable ex, String okText, String cancelText,
+        String yesText, String noText)
+    {
+        super(
+            parent,
+            frameTitle!=null ? frameTitle : get_localized_title(messageType),
+            true // modal
+        );
+
+        m_defaultButton = defaultButton;
+        if( m_defaultButton==null )
+        {
+            m_defaultButton = get_default_button(optionType);
+        }
+
+        // MUST be called before the dialog becomes visible!
+        if( JDialog.isDefaultLookAndFeelDecorated() )
+        {
+            boolean supportsWindowDecorations =
+                UIManager.getLookAndFeel().getSupportsWindowDecorations();
+
+            if( supportsWindowDecorations )
+            {
+                setUndecorated(true);
+                getRootPane().setWindowDecorationStyle(
+                    styleFromMessageType(messageType));
+            }
+        }
+
+        initComponents();
+
+        // remove the scrollpane used for the design form
+        m_centerPane.remove( m_scrollPane );
+
+        // set the icon
+        m_icon.setIcon( ico );
+
+        // display only used buttons
+        setup_buttons(optionType, okText, cancelText, yesText, noText);
+
+        // display the message
+        m_messageText.setText( convert_message_to_html(message) );
+
+        // display the exception
+        boolean hasException = (ex!=null);
+        if( hasException )
+        {
+            m_messageException.setColumns( MIN_COLUMNS );
+            m_messageException.setRows( NUM_ROWS );
+
+            StringWriter sw = new StringWriter();
+            ex.printStackTrace( new PrintWriter(sw) );
+            m_messageException.setText( sw.toString() );
+
+            // Scroll up to the first line
+            m_messageException.setCaretPosition( 0 );
+        }
+
+        // disable exception display functionality if it is not needed
+        m_detailsButton.setVisible( hasException );
+
+        // lockdown the panel size on the left based on the panel on the right
+        // in order for the dialog to look nicer on screen.
+        m_emptySpace.setMinimumSize( m_icon.getPreferredSize() );
+        m_emptySpace.setMaximumSize( m_icon.getPreferredSize() );
+        m_emptySpace.setPreferredSize( m_icon.getPreferredSize() );
+
+        // revalidate and show the components
+        pack();
+
+        // java bug, component's layout is corrupt!
+        pack();
+
+        setLocationRelativeTo( parent );
+    }
+
+
+    /**
+     * Returns the status of the dialog depending on which button was pressed.
+     * <p>
+     * @return              Same as <code>JOptionPane</code>, one of:
+     *                      CANCEL_OPTION, NO_OPTION, YES_OPTION, OK_OPTION or
+     *                      CLOSED_OPTION if the dialog was closed.
+     */
+    public int getReturnStatus()
+    {
+        return( m_returnStatus );
+    }
+
+
+    /** This method is called from within the constructor to
+     * initialize the form.
+     * WARNING: Do NOT modify this code. The content of this method is
+     * always regenerated by the Form Editor.
+     */
+    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
+    private void initComponents()
+    {
+
+        m_westPane = new javax.swing.JPanel();
+        m_icon = new javax.swing.JLabel();
+        m_centerPane = new javax.swing.JPanel();
+        m_messagePane = new javax.swing.JPanel();
+        m_messageText = new javax.swing.JLabel();
+        m_detailsButton = new javax.swing.JToggleButton();
+        m_scrollPane = new javax.swing.JScrollPane();
+        m_messageException = new javax.swing.JTextArea();
+        m_buttonsPane = new javax.swing.JPanel();
+        m_okButton = new javax.swing.JButton();
+        m_yesButton = new javax.swing.JButton();
+        m_noButton = new javax.swing.JButton();
+        m_cancelButton = new javax.swing.JButton();
+        m_eastPane = new javax.swing.JPanel();
+        m_emptySpace = new javax.swing.JLabel();
+
+        setAlwaysOnTop(true);
+        setResizable(false);
+        addWindowListener(new java.awt.event.WindowAdapter()
+        {
+            public void windowClosing(java.awt.event.WindowEvent evt)
+            {
+                formWindowClosing(evt);
+            }
+            public void windowOpened(java.awt.event.WindowEvent evt)
+            {
+                formWindowOpened(evt);
+            }
+        });
+
+        m_westPane.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.CENTER, 10, 10));
+        m_westPane.add(m_icon);
+
+        getContentPane().add(m_westPane, java.awt.BorderLayout.WEST);
+
+        m_centerPane.setLayout(new java.awt.BorderLayout());
+
+        m_messagePane.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.LEFT, 5, 20));
+        m_messagePane.add(m_messageText);
+
+        m_detailsButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/gr/zeus/res/expand.gif"))); // NOI18N
+        m_detailsButton.setFocusPainted(false);
+        m_detailsButton.setMaximumSize(new java.awt.Dimension(18, 18));
+        m_detailsButton.setMinimumSize(new java.awt.Dimension(18, 18));
+        m_detailsButton.setPreferredSize(new java.awt.Dimension(18, 18));
+        m_detailsButton.addActionListener(new java.awt.event.ActionListener()
+        {
+            public void actionPerformed(java.awt.event.ActionEvent evt)
+            {
+                m_detailsButtonActionPerformed(evt);
+            }
+        });
+        m_messagePane.add(m_detailsButton);
+
+        m_centerPane.add(m_messagePane, java.awt.BorderLayout.NORTH);
+
+        m_messageException.setEditable(false);
+        m_scrollPane.setViewportView(m_messageException);
+
+        m_centerPane.add(m_scrollPane, java.awt.BorderLayout.CENTER);
+
+        m_buttonsPane.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.CENTER, 5, 10));
+
+        m_okButton.addActionListener(new java.awt.event.ActionListener()
+        {
+            public void actionPerformed(java.awt.event.ActionEvent evt)
+            {
+                m_okButtonActionPerformed(evt);
+            }
+        });
+        m_buttonsPane.add(m_okButton);
+
+        m_yesButton.addActionListener(new java.awt.event.ActionListener()
+        {
+            public void actionPerformed(java.awt.event.ActionEvent evt)
+            {
+                m_yesButtonActionPerformed(evt);
+            }
+        });
+        m_buttonsPane.add(m_yesButton);
+
+        m_noButton.addActionListener(new java.awt.event.ActionListener()
+        {
+            public void actionPerformed(java.awt.event.ActionEvent evt)
+            {
+                m_noButtonActionPerformed(evt);
+            }
+        });
+        m_buttonsPane.add(m_noButton);
+
+        m_cancelButton.addActionListener(new java.awt.event.ActionListener()
+        {
+            public void actionPerformed(java.awt.event.ActionEvent evt)
+            {
+                m_cancelButtonActionPerformed(evt);
+            }
+        });
+        m_buttonsPane.add(m_cancelButton);
+
+        m_centerPane.add(m_buttonsPane, java.awt.BorderLayout.SOUTH);
+
+        getContentPane().add(m_centerPane, java.awt.BorderLayout.CENTER);
+
+        m_eastPane.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.CENTER, 10, 10));
+        m_eastPane.add(m_emptySpace);
+
+        getContentPane().add(m_eastPane, java.awt.BorderLayout.EAST);
+
+        pack();
+    }// </editor-fold>//GEN-END:initComponents
+
+    private void formWindowOpened(java.awt.event.WindowEvent evt)//GEN-FIRST:event_formWindowOpened
+    {//GEN-HEADEREND:event_formWindowOpened
+
+        if( m_defaultButton!=null )
+        {
+            /* For some reason this piece of code is not working within the
+             * constructor. Also the requestFocus() should not be needed, but it
+             * does! Must check with Sun to see if this actually another swing
+             * bug...?
+             */
+
+            JButton tmp = m_defaultButton.whichOne(m_okButton, m_cancelButton,
+                m_yesButton, m_noButton);
+
+            // only setup the default button if it is visible
+            if( tmp.isVisible() )
+            {
+                getRootPane().setDefaultButton( tmp );
+                tmp.requestFocus();
+            }
+        }
+
+    }//GEN-LAST:event_formWindowOpened
+
+    private void m_cancelButtonActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_m_cancelButtonActionPerformed
+    {//GEN-HEADEREND:event_m_cancelButtonActionPerformed
+        doClose(JOptionPane.CANCEL_OPTION);
+    }//GEN-LAST:event_m_cancelButtonActionPerformed
+
+    private void m_noButtonActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_m_noButtonActionPerformed
+    {//GEN-HEADEREND:event_m_noButtonActionPerformed
+        doClose(JOptionPane.NO_OPTION);
+    }//GEN-LAST:event_m_noButtonActionPerformed
+
+    private void m_yesButtonActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_m_yesButtonActionPerformed
+    {//GEN-HEADEREND:event_m_yesButtonActionPerformed
+        doClose(JOptionPane.YES_OPTION);
+    }//GEN-LAST:event_m_yesButtonActionPerformed
+
+    private void m_okButtonActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_m_okButtonActionPerformed
+    {//GEN-HEADEREND:event_m_okButtonActionPerformed
+        doClose(JOptionPane.OK_OPTION);
+    }//GEN-LAST:event_m_okButtonActionPerformed
+
+    private void formWindowClosing(java.awt.event.WindowEvent evt)//GEN-FIRST:event_formWindowClosing
+    {//GEN-HEADEREND:event_formWindowClosing
+        doClose(JOptionPane.CLOSED_OPTION);
+    }//GEN-LAST:event_formWindowClosing
+
+    private void m_detailsButtonActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_m_detailsButtonActionPerformed
+    {//GEN-HEADEREND:event_m_detailsButtonActionPerformed
+
+        if( m_detailsButton.isSelected()==false )
+        {
+            m_detailsButton.setIcon( EXPAND_ICON );
+            m_centerPane.remove( m_scrollPane );
+        }
+        else
+        {
+            m_detailsButton.setIcon( COLLAPSE_ICON );
+            m_centerPane.add(m_scrollPane, BorderLayout.CENTER);
+        }
+
+        // revalidate and show the components
+        pack();
+
+    }//GEN-LAST:event_m_detailsButtonActionPerformed
+
+
+    /**
+     * Closes the dialog and sets the return value of the dialog.
+     * <p>
+     * @param retStatus     Same as <code>JOptionPane</code>, one of:
+     *                      CANCEL_OPTION, NO_OPTION, YES_OPTION, OK_OPTION or
+     *                      CLOSED_OPTION
+     */
+    private void doClose(int retStatus)
+    {
+        m_returnStatus = retStatus;
+        setVisible(false);
+        dispose();
+    }
+
+
+    /**
+     * Gets the localized message title.
+     * <p>
+     * @param messageType   Same as <code>JOptionPane</code>, one of:
+     *                      ERROR_MESSAGE, INFORMATION_MESSAGE, WARNING_MESSAGE,
+     *                      QUESTION_MESSAGE, or PLAIN_MESSAGE
+     * <p>
+     * @return              The locale specific title for the dialog.
+     */
+    private static final String get_localized_title(int messageType)
+    {
+        switch(messageType) {
+            case JOptionPane.ERROR_MESSAGE:
+                return(ERROR_TITLE);
+
+            case JOptionPane.INFORMATION_MESSAGE:
+                return(INFO_TITLE);
+
+            case JOptionPane.WARNING_MESSAGE:
+                return(WARNING_TITLE);
+
+            case JOptionPane.QUESTION_MESSAGE:
+                return(QUESTION_TITLE);
+
+            case JOptionPane.PLAIN_MESSAGE:
+            default:
+                return(PLAIN_TITLE);
+        }
+    }
+
+
+    /**
+     * Gets the UI default icon.
+     * <p>
+     * @param messageType   Same as <code>JOptionPane</code>, one of:
+     *                      ERROR_MESSAGE, INFORMATION_MESSAGE, WARNING_MESSAGE,
+     *                      QUESTION_MESSAGE, or PLAIN_MESSAGE
+     * <p>
+     * @return              The icon.
+     */
+    private static final Icon get_default_ico(int messageType)
+    {
+        switch(messageType) {
+            case JOptionPane.ERROR_MESSAGE:
+                return( UIManager.getIcon("OptionPane.errorIcon") );
+
+            case JOptionPane.INFORMATION_MESSAGE:
+                return( UIManager.getIcon("OptionPane.informationIcon") );
+
+            case JOptionPane.WARNING_MESSAGE:
+                return( UIManager.getIcon("OptionPane.warningIcon") );
+
+            case JOptionPane.QUESTION_MESSAGE:
+                return( UIManager.getIcon("OptionPane.questionIcon") );
+
+            case JOptionPane.PLAIN_MESSAGE:
+            default:
+                return( null );
+        }
+    }
+
+
+    /**
+     * Setups the buttons required by the dialog.
+     * <p>
+     * @param optionType    Same as <code>JOptionPane</code>, one of:
+     *                      DEFAULT_OPTION, YES_NO_OPTION, YES_NO_CANCEL_OPTION,
+     *                      OK_CANCEL_OPTION
+     * @param okText        Ok button text, if <code>null</code> the default
+     *                      is used.
+     * @param cancelText    Cancel button text, if <code>null</code> the default
+     *                      is used.
+     * @param yesText       Yes button text, if <code>null</code> the default
+     *                      is used.
+     * @param noText        No button text, if <code>null</code> the default
+     *                      is used.
+     */
+    private void setup_buttons(int optionType, String okText, String cancelText,
+        String yesText, String noText)
+    {
+        m_okButton.setText(
+            okText!=null ? okText : OK_BUTTON_TEXT );
+
+        m_cancelButton.setText(
+            cancelText!=null ? cancelText : CANCEL_BUTTON_TEXT );
+
+        m_yesButton.setText(
+            yesText!=null ? yesText : YES_BUTTON_TEXT );
+
+        m_noButton.setText(
+            noText!=null ? noText : NO_BUTTON_TEXT );
+
+        switch(optionType) {
+            case JOptionPane.YES_NO_CANCEL_OPTION:
+                m_okButton.setVisible( false );
+                m_cancelButton.setVisible( true );
+                m_yesButton.setVisible( true );
+                m_noButton.setVisible( true );
+                break;
+
+            case JOptionPane.YES_NO_OPTION:
+                m_okButton.setVisible( false );
+                m_cancelButton.setVisible( false );
+                m_yesButton.setVisible( true );
+                m_noButton.setVisible( true );
+                break;
+
+            case JOptionPane.OK_CANCEL_OPTION:
+                m_okButton.setVisible( true );
+                m_cancelButton.setVisible( true );
+                m_yesButton.setVisible( false );
+                m_noButton.setVisible( false );
+                break;
+
+            case JOptionPane.DEFAULT_OPTION:
+            default:
+                m_okButton.setVisible( true );
+                m_cancelButton.setVisible( false );
+                m_yesButton.setVisible( false );
+                m_noButton.setVisible( false );
+                break;
+        }
+    }
+
+
+    /**
+     * Converts a plain text string to an html string if needed. Also replaces
+     * all '\n' with '<br>'.
+     * <p>
+     * @param message       The message.
+     * <p>
+     * @return              The html string.
+     */
+    private static String convert_message_to_html(String message)
+    {
+        String htmlMessage = (message!=null) ? message : "";
+
+        htmlMessage = htmlMessage.trim();
+
+        if( !htmlMessage.startsWith("<html>") )
+        {
+            htmlMessage = "<html>" + htmlMessage;
+        }
+
+        if( !htmlMessage.endsWith("</html>") )
+        {
+            htmlMessage = htmlMessage + "</html>";
+        }
+
+        htmlMessage = htmlMessage.replaceAll("\n", "<br>");
+
+        return( htmlMessage );
+    }
+
+
+    /**
+     * Gets UI style from 'messageType'.
+     * <p>
+     * @param messageType   Same as <code>JOptionPane</code>, one of:
+     *                      ERROR_MESSAGE, INFORMATION_MESSAGE, WARNING_MESSAGE,
+     *                      QUESTION_MESSAGE, or PLAIN_MESSAGE
+     * <p>
+     * @return              One of: JRootPane.ERROR_DIALOG,
+     *                      JRootPane.QUESTION_DIALOG, JRootPane.WARNING_DIALOG,
+     *                      JRootPane.INFORMATION_DIALOG, JRootPane.PLAIN_DIALOG
+     */
+    private static int styleFromMessageType(int messageType)
+    {
+        switch( messageType ) {
+            case JOptionPane.ERROR_MESSAGE:
+                return(JRootPane.ERROR_DIALOG);
+
+            case JOptionPane.QUESTION_MESSAGE:
+                return(JRootPane.QUESTION_DIALOG);
+
+            case JOptionPane.WARNING_MESSAGE:
+                return(JRootPane.WARNING_DIALOG);
+
+            case JOptionPane.INFORMATION_MESSAGE:
+                return(JRootPane.INFORMATION_DIALOG);
+
+            case JOptionPane.PLAIN_MESSAGE:
+            default:
+                return(JRootPane.PLAIN_DIALOG);
+        }
+    }
+
+
+    /**
+     * Gets a default button for dialog.
+     * <p>
+     * @param optionType    Same as <code>JOptionPane</code>, one of:
+     *                      DEFAULT_OPTION, YES_NO_OPTION, YES_NO_CANCEL_OPTION,
+     *                      OK_CANCEL_OPTION
+     * <p>
+     * @return              JMessageButtonEnum.YES or JMessageButtonEnum.OK
+     */
+    private static JMessageButtonEnum get_default_button(
+        int optionType)
+    {
+        switch(optionType) {
+            case JOptionPane.YES_NO_CANCEL_OPTION:
+            case JOptionPane.YES_NO_OPTION:
+                return( JMessageButtonEnum.YES );
+
+            case JOptionPane.OK_CANCEL_OPTION:
+            case JOptionPane.DEFAULT_OPTION:
+            default:
+                return( JMessageButtonEnum.OK );
+        }
+    }
+
+
+    // Variables declaration - do not modify//GEN-BEGIN:variables
+    private javax.swing.JPanel m_buttonsPane;
+    private javax.swing.JButton m_cancelButton;
+    private javax.swing.JPanel m_centerPane;
+    private javax.swing.JToggleButton m_detailsButton;
+    private javax.swing.JPanel m_eastPane;
+    private javax.swing.JLabel m_emptySpace;
+    private javax.swing.JLabel m_icon;
+    private javax.swing.JTextArea m_messageException;
+    private javax.swing.JPanel m_messagePane;
+    private javax.swing.JLabel m_messageText;
+    private javax.swing.JButton m_noButton;
+    private javax.swing.JButton m_okButton;
+    private javax.swing.JScrollPane m_scrollPane;
+    private javax.swing.JPanel m_westPane;
+    private javax.swing.JButton m_yesButton;
+    // End of variables declaration//GEN-END:variables
+
+}
diff --git a/src/gr/zeus/ui/JSplash.java b/src/gr/zeus/ui/JSplash.java
new file mode 100644
index 0000000..2deade7
--- /dev/null
+++ b/src/gr/zeus/ui/JSplash.java
@@ -0,0 +1,215 @@
+/*
+ * JSplash.java
+ *
+ * Copyright (c) 2004-2011 Gregory Kotsaftis
+ * gregkotsaftis at yahoo.com
+ * http://zeus-jscl.sourceforge.net/
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+package gr.zeus.ui;
+
+import gr.zeus.util.GUIUtils;
+import java.awt.BorderLayout;
+import java.awt.Color;
+import java.awt.Font;
+import java.net.URL;
+import javax.swing.BorderFactory;
+import javax.swing.JPanel;
+import javax.swing.JProgressBar;
+import javax.swing.JWindow;
+
+/**
+ * A simple, yet nice splash screen implementation for java applications.
+ * Follows Sun recommendations for splash screen and logos: see
+ * <a href="http://java.sun.com/products/jlf/ed2/book/HIG.Graphics7.html">
+ * <i>"Designing Graphics for Corporate and Product Identity"</i></a>.
+ * Draws a black border of one pixel wide around the splash image.
+ * Also uses a simple progress bar that the user must "progress" manually in his
+ * code in order for it to work. Also, it has options for percent display,
+ * custom loading messages display and application version string display at the
+ * bottom-right corner of the image.
+ * <p>
+ * @author Gregory Kotsaftis
+ * @since 1.0
+ */
+public final class JSplash extends JWindow {
+
+    /**
+     * Progress bar to use in the splash screen.
+     */
+    private final JProgressBar m_progress = new JProgressBar();
+
+    /**
+     * Check for whether to use the progress bar or not.
+     */
+    private boolean m_progressBar = false;
+
+    /**
+     * Check for whether to use progress bar messages or not.
+     */
+    private boolean m_progressBarMessages = false;
+
+    /**
+     * Check for whether to use precentage values or not.
+     */
+    private boolean m_progressBarPercent = false;
+
+
+    /**
+     * Constructor for the splash window.
+     * <p>
+     * @param url                   Image for ImageIcon.
+     * @param progress              Do we want a progress bar at all?
+     * @param messages              If we want a progress bar, do we want to
+     *                              display messages inside the progress bar?
+     * @param percent               If we want a progress bar, do we want to
+     *                              display the percent?
+     * @param versionString         If null no string is displayed on the
+     *                              bottom-right of the splash window.
+     * @param versionStringFont     Font for version string, if null default.
+     * @param versionStringColor    Color for version string, if null default.
+     * <p>
+     * <b>NOTE:</b> Use only one flag for: messages / percent
+     * (one or the other, NOT both).
+     */
+    public JSplash(URL url,
+        boolean progress, boolean messages, boolean percent,
+        String versionString, Font versionStringFont, Color versionStringColor)
+    {
+        super();
+
+        m_progressBar = progress;
+        m_progressBarMessages = messages;
+        m_progressBarPercent = percent;
+
+        // build a panel with a black line for border,
+        // and set it as the content pane
+        //
+        JPanel panel = new JPanel();
+        panel.setLayout( new BorderLayout() );
+        panel.setBorder( BorderFactory.createLineBorder( Color.BLACK ) );
+        setContentPane( panel );
+
+        // build a label and set it's icon
+        //
+        JSplashLabel label = new JSplashLabel(url,
+                versionString, versionStringFont, versionStringColor);
+
+        // build a progress bar
+        //
+        if( m_progressBar )
+        {
+            if( m_progressBarMessages || m_progressBarPercent )
+            {
+                m_progress.setStringPainted( true );
+            }
+            else
+            {
+                m_progress.setStringPainted( false );
+            }
+
+            if( m_progressBarMessages && !m_progressBarPercent )
+            {
+                m_progress.setString( "" );
+            }
+
+            m_progress.setMaximum( 100 );
+            m_progress.setMinimum( 0 );
+            m_progress.setValue( 0 );
+        }
+
+        // add the components to the panel
+        //
+        getContentPane().add(label, BorderLayout.CENTER);
+
+        if( m_progressBar )
+        {
+            getContentPane().add(m_progress, BorderLayout.SOUTH);
+        }
+
+        // validate, and display the components
+        pack();
+
+        // center on screen
+        GUIUtils.centerOnScreen( this );
+
+        // hide the panel for now...
+        setVisible( false );
+    }
+
+
+    /**
+     * Displays the splash screen
+     */
+    public void splashOn()
+    {
+        setVisible( true );
+    }
+
+
+    /**
+     * Hides and disposes the splash screen
+     */
+    public void splashOff()
+    {
+        setVisible( false );
+        dispose();
+    }
+
+
+    /**
+     * Sets the progress indicator (values: 0 - 100).
+     * <p>
+     * @param value     The progress indicator value.
+     */
+    public void setProgress(int value)
+    {
+        if( m_progressBar && value>=0 && value<=100 )
+        {
+            m_progress.setValue( value );
+        }
+    }
+
+
+    /**
+     * Sets the progress indicator (values: 0 - 100) and a label to print
+     * inside the progress bar.
+     * <p>
+     * @param value     The progress indicator value.
+     * @param msg       The message to print.
+     */
+    public void setProgress(int value, String msg)
+    {
+        setProgress( value );
+
+        if( m_progressBarMessages && !m_progressBarPercent && msg!=null )
+        {
+            m_progress.setString( msg );
+        }
+    }
+
+
+    /**
+     * Get the progress bar for custom usage.
+     * <p>
+     * @return          The progress bar.
+     */
+    public final JProgressBar getProgressBar()
+    {
+        return( m_progress );
+    }
+
+}
diff --git a/src/gr/zeus/ui/JSplashLabel.java b/src/gr/zeus/ui/JSplashLabel.java
new file mode 100644
index 0000000..d185e1e
--- /dev/null
+++ b/src/gr/zeus/ui/JSplashLabel.java
@@ -0,0 +1,115 @@
+/*
+ * JSplashLabel.java
+ *
+ * Copyright (c) 2004-2011 Gregory Kotsaftis
+ * gregkotsaftis at yahoo.com
+ * http://zeus-jscl.sourceforge.net/
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+package gr.zeus.ui;
+
+import java.awt.Color;
+import java.awt.Font;
+import java.awt.FontMetrics;
+import java.awt.Graphics;
+import java.awt.MediaTracker;
+import java.net.URL;
+import javax.swing.ImageIcon;
+import javax.swing.JLabel;
+
+/**
+ * Extends JLabel to provide support for custom text drawing inside image used
+ * for JSplash component.
+ * <p>
+ * @author Gregory Kotsaftis
+ * @since 1.06
+ */
+public final class JSplashLabel extends JLabel {
+
+    /**
+     * Used to draw the text string.
+     */
+    private String m_text = null;
+
+    /**
+     * Font to use when drawing the text.
+     */
+    private Font m_font = null;
+
+    /**
+     * Colour to use when drawing the text.
+     */
+    private Color m_color = null;
+
+
+    /**
+     * Constructor.
+     * <p>
+     * @param url   The location of the image (<b>it cannot be null</b>).
+     * @param s     The string to draw (can be null).
+     * @param f     The font to use (can be null).
+     * @param c     The color to use (can be null).
+     */
+    public JSplashLabel(URL url, String s, Font f, Color c)
+    {
+        super();
+
+        ImageIcon icon = new ImageIcon( url );
+        if( icon.getImageLoadStatus()!=MediaTracker.COMPLETE )
+        {
+            System.err.println("Cannot load splash screen: " + url);
+            setText("Cannot load splash screen: " + url);
+        }
+        else
+        {
+            setIcon( icon );
+            m_text = s;
+            m_font = f;
+            m_color = c;
+
+            if( m_font!=null )
+            {
+                setFont( m_font );
+            }
+        }
+    }
+
+
+    /**
+     * Overrides paint in order to draw the version number on the splash screen.
+     * <p>
+     * @param g     The graphics context to use.
+     */
+    public void paint(Graphics g)
+    {
+        super.paint(g);
+
+        if( m_text!=null )
+        {
+            if( m_color!=null )
+            {
+                g.setColor( m_color );
+            }
+
+            FontMetrics fm = g.getFontMetrics();
+            int width = fm.stringWidth(m_text) + 20;
+            int height = fm.getHeight();
+
+            g.drawString(m_text, getWidth() - width, getHeight() - height);
+        }
+    }
+
+}
diff --git a/src/gr/zeus/ui/OutLookToolBar.java b/src/gr/zeus/ui/OutLookToolBar.java
new file mode 100644
index 0000000..5df3789
--- /dev/null
+++ b/src/gr/zeus/ui/OutLookToolBar.java
@@ -0,0 +1,199 @@
+/*
+ * OutLookToolBar.java
+ *
+ * Copyright (c) 2004-2011 Gregory Kotsaftis
+ * gregkotsaftis at yahoo.com
+ * http://zeus-jscl.sourceforge.net/
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+package gr.zeus.ui;
+
+import java.awt.Component;
+import java.awt.event.ContainerEvent;
+import java.awt.event.ContainerListener;
+import java.awt.event.MouseEvent;
+import java.awt.event.MouseListener;
+import javax.swing.JButton;
+import javax.swing.JToolBar;
+
+/**
+ * Takes a simple <code>JToolBar</code> and transforms it into a
+ * microsoft outlook like toolbar.
+ * <p>
+ * @author Gregory Kotsaftis
+ * @since 1.04
+ */
+public final class OutLookToolBar {
+
+    /**
+     * The toolbar to transform.
+     */
+    private JToolBar m_toolbar = null;
+
+
+    /**
+     * Constructor.
+     * <p>
+     * @param t     The <code>JToolBar</code>.
+     */
+    public OutLookToolBar(JToolBar t)
+    {
+        m_toolbar = t;
+
+        if( m_toolbar == null )
+        {
+            throw new NullPointerException(
+                "JToolBar instance required for OutLookToolBar is NULL!");
+        }
+
+        m_toolbar.addContainerListener( new MyContainerListener() );
+    }
+
+
+    /**
+     * Private class to handle button add/remove.
+     */
+    private final class MyContainerListener implements ContainerListener {
+
+        /**
+         * Constructor, manually invoke transform() the first time.
+         */
+        public MyContainerListener()
+        {
+            transform();
+        }
+
+
+        /**
+         * Transforms the toolbar.
+         */
+        private void transform()
+        {
+            if( m_toolbar != null )
+            {
+                int count = m_toolbar.getComponentCount();
+
+                for(int i=0; i<count; i++)
+                {
+                    Component c = m_toolbar.getComponentAtIndex( i );
+
+                    if( c instanceof JButton )
+                    {
+                        JButton b = (JButton) c;
+                        b.setBorderPainted( false );
+                        b.setFocusPainted( false );
+                        b.addMouseListener( new MouseOver() );
+                    }
+                }
+            }
+        }
+
+
+        /**
+         * Called when we add a button in the toolbar.
+         * Invokes transform() again to update the toolbar.
+         * <p>
+         * @param e     The <code>ContainerEvent</code>.
+         */
+        public void componentAdded(ContainerEvent e)
+        {
+            transform();
+        }
+
+
+        /**
+         * Called when we remove a button from the toolbar.
+         * Invokes transform() again to update the toolbar.
+         * <p>
+         * @param e     The <code>ContainerEvent</code>.
+         */
+        public void componentRemoved(ContainerEvent e)
+        {
+            m_toolbar.repaint();
+        }
+
+    }
+
+
+    /**
+     * Private class to handle the mouseover behavior.
+     */
+    private static final class MouseOver implements MouseListener {
+
+        /**
+         * Paints the buttons border when the mouse enters the button area.
+         * <p>
+         * @param e     The <code>MouseEvent</code>.
+         */
+        public void mouseEntered(MouseEvent e)
+        {
+            Component c = e.getComponent();
+            if( c instanceof JButton )
+            {
+                JButton b = (JButton) c;
+                b.setBorderPainted( true );
+            }
+        }
+
+
+        /**
+         * Removes the buttons border when the mouse exits the button area.
+         * <p>
+         * @param e     The <code>MouseEvent</code>.
+         */
+        public void mouseExited(MouseEvent e)
+        {
+            Component c = e.getComponent();
+            if( c instanceof JButton )
+            {
+                JButton b = (JButton) c;
+                b.setBorderPainted( false );
+            }
+        }
+
+
+        /**
+         * Unused.
+         * <p>
+         * @param e     The <code>MouseEvent</code>.
+         */
+        public void mouseClicked(MouseEvent e)
+        {
+        }
+
+
+        /**
+         * Unused.
+         * <p>
+         * @param e     The <code>MouseEvent</code>.
+         */
+        public void mousePressed(MouseEvent e)
+        {
+        }
+
+
+        /**
+         * Unused.
+         * <p>
+         * @param e     The <code>MouseEvent</code>.
+         */
+        public void mouseReleased(MouseEvent e)
+        {
+        }
+
+    }
+
+}
diff --git a/src/gr/zeus/ui/SingleAppInstance.java b/src/gr/zeus/ui/SingleAppInstance.java
new file mode 100644
index 0000000..d4422d3
--- /dev/null
+++ b/src/gr/zeus/ui/SingleAppInstance.java
@@ -0,0 +1,418 @@
+/*
+ * SingleAppInstance.java
+ *
+ * Copyright (c) 2004-2011 Gregory Kotsaftis
+ * gregkotsaftis at yahoo.com
+ * http://zeus-jscl.sourceforge.net/
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+package gr.zeus.ui;
+
+import java.io.File;
+import java.io.RandomAccessFile;
+import java.nio.channels.FileChannel;
+import java.nio.channels.FileLock;
+import java.util.ResourceBundle;
+import javax.swing.JOptionPane;
+
+/**
+ * This helper component provides a simple solution to the multiple applications
+ * instances problem. Just invoke <code>onInit()</code> at your application's
+ * startup and <code>onExit()</code> at your application's shutdown and that's
+ * all there is to it. <code>SingleAppInstance</code> creates and locks a file
+ * within the startup directory so if anyone is to execute your application
+ * again the second <code>onInit()</code> call fails with a message.
+ * The <code>onExit()</code> method unlocks and deletes the file.
+ * If <code>m_reportPopup</code> is true, a popup window is displayed for the
+ * user to take action, else the user is informed via <code>stderr</code>.
+ * If you wish to change the look and feel of the popup window invoke
+ * <code>SingleAppInstance</code> after setting the look and feel inside your
+ * application. If you wish to translate the messages for this component create
+ * a new property file for your locale and place it inside
+ * <b><code>/gr/zeus/</code></b> where the default
+ * <b>"singleappinstance.properties"</b> resides.
+ * <p>
+ * @author Gregory Kotsaftis
+ * @since 1.05
+ */
+public final class SingleAppInstance {
+
+    /**
+     * Singleton.
+     */
+    private static SingleAppInstance s_instance = null;
+
+    /**
+     * Instance file name.
+     */
+    private static final String INSTANCE_FILENAME = "INSTANCE.RUN";
+
+    /**
+     * Used to create the file.
+     */
+    private File m_file = null;
+
+    /**
+     * Used to read and write the file.
+     */
+    private FileChannel m_channel = null;
+
+    /**
+     * Used to lock the temporary file.
+     */
+    private FileLock m_lock = null;
+
+    /**
+     * Check to report errors via a popup if <code>true</code> or
+     * via <code>stderr</code> if <code>false</code>.
+     */
+    private boolean m_reportPopup = true;
+
+    /**
+     * File lock error title.
+     */
+    private static final String m_fileLockErrorTitle = ResourceBundle.getBundle(
+        "gr/zeus/res/singleappinstance").getString("fileLockErrorTitle");
+
+    /**
+     * File lock error message 1.
+     */
+    private static final String m_fileLockErrorMsg1 = ResourceBundle.getBundle(
+        "gr/zeus/res/singleappinstance").getString("fileLockErrorMsg1");
+
+    /**
+     * File lock error message 2.
+     */
+    private static final String m_fileLockErrorMsg2 = ResourceBundle.getBundle(
+        "gr/zeus/res/singleappinstance").getString("fileLockErrorMsg2");
+
+    /**
+     * File delete error title.
+     */
+    private static final String m_fileDeleteErrorTitle =
+        ResourceBundle.getBundle(
+            "gr/zeus/res/singleappinstance").getString("fileDeleteErrorTitle");
+
+    /**
+     * File delete error message 1.
+     */
+    private static final String m_fileDeleteErrorMsg1 =
+        ResourceBundle.getBundle(
+            "gr/zeus/res/singleappinstance").getString("fileDeleteErrorMsg1");
+
+    /**
+     * File delete error message 2.
+     */
+    private static final String m_fileDeleteErrorMsg2 =
+        ResourceBundle.getBundle(
+            "gr/zeus/res/singleappinstance").getString("fileDeleteErrorMsg2");
+
+    /**
+     * File exists title.
+     */
+    private static final String m_fileExistsTitle = ResourceBundle.getBundle(
+        "gr/zeus/res/singleappinstance").getString("fileExistsTitle");
+
+    /**
+     * File exists error message 1.
+     */
+    private static final String m_fileExistsMsg1 = ResourceBundle.getBundle(
+        "gr/zeus/res/singleappinstance").getString("fileExistsMsg1");
+
+    /**
+     * File exists error message 2.
+     */
+    private static final String m_fileExistsMsg2 = ResourceBundle.getBundle(
+        "gr/zeus/res/singleappinstance").getString("fileExistsMsg2");
+
+    /**
+     * File exists error message 3.
+     */
+    private static final String m_fileExistsMsg3 = ResourceBundle.getBundle(
+        "gr/zeus/res/singleappinstance").getString("fileExistsMsg3");
+
+
+    /**
+     * This method returns the single instance of this class.
+     * <p>
+     * @return  The single instance of this class.
+     */
+    public synchronized static SingleAppInstance getInstance()
+    {
+        // lazy instantiation
+        if( s_instance==null )
+        {
+            s_instance = new SingleAppInstance();
+        }
+
+        return( s_instance );
+    }
+
+
+    /**
+     * This method returns the single instance of this class.
+     * Uses the filename parameter instead of default filename.
+     * <p>
+     * @param filename  The filename to create and lock, should be unique and
+     *                  within current folder.
+     * <p>
+     * @return          The single instance of this class.
+     */
+    public synchronized static SingleAppInstance getInstance(String filename)
+    {
+        // lazy instantiation
+        if( s_instance==null )
+        {
+            s_instance = new SingleAppInstance( filename );
+        }
+
+        return( s_instance );
+    }
+
+
+    /**
+     * Creates a file and obtains a lock. If the file exists or
+     * there is any error creating it this method invokes
+     * <code>System.exit()</code>. Should be invoked <b>ONCE</b>
+     * inside <code>main()</code> in your application.
+     */
+    public synchronized void onInit()
+    {
+        // if file already exists...
+        if( m_file.exists() )
+        {
+            // notify user and ask for instructions...
+            if( inform_user()==false )
+            {
+                System.exit( 1 );
+            }
+
+            // ok, he is sure. try to delete the old file.
+            if( force_delete_file()==false )
+            {
+                System.exit( 2 );
+            }
+        }
+
+        // try to create and lock the file.
+        if( lock_file()==false )
+        {
+            System.exit( 3 );
+        }
+    }
+
+
+    /**
+     * Release the file lock and delete the file.
+     * Should be invoked <b>ONCE</b> just before calling
+     * <code>System.exit()</code> on your application.
+     */
+    public synchronized void onExit()
+    {
+        try
+        {
+            // Release the lock, close and delete the file
+            m_lock.release();
+            m_channel.close();
+            m_file.delete();
+        }
+        catch(Exception e)
+        {
+            // not much to do here, since the application is possibly exiting...
+            e.printStackTrace();
+        }
+    }
+
+
+    /**
+     * Gets whether to report via a popup or via <code>stderr</code>.
+     * <p>
+     * @return  If <code>true</code>, a popup window is displayed,
+     *          else the user is informed via <code>stderr</code>.
+     */
+    public boolean getReportPopup()
+    {
+        return( m_reportPopup );
+    }
+
+
+    /**
+     * Sets whether to report via a popup or via <code>stderr</code>.
+     * <p>
+     * @param f     If <code>true</code>, via a popup window,
+     *              else via <code>stderr</code>.
+     */
+    public synchronized void setReportPopup(boolean f)
+    {
+        m_reportPopup = f;
+    }
+
+
+    /**
+     * Private constructor.
+     */
+    private SingleAppInstance()
+    {
+        m_file = new File( INSTANCE_FILENAME );
+    }
+
+
+    /**
+     * Private constructor.
+     * <p>
+     * @param filename  The filename to create and lock, should be unique and
+     *                  within current folder.
+     */
+    private SingleAppInstance(String filename)
+    {
+        m_file = new File( filename );
+    }
+
+
+    /**
+     * Reports a lock error.
+     * <p>
+     * @param s     The error message.
+     */
+    private void report_lock_error(String s)
+    {
+        String msg = m_fileLockErrorMsg1 + m_file.getAbsolutePath() +
+                     m_fileLockErrorMsg2 + s;
+        String title = m_fileLockErrorTitle;
+
+        if( m_reportPopup )
+        {
+            JOptionPane.showMessageDialog(null, msg, title,
+                JOptionPane.ERROR_MESSAGE);
+        }
+        else
+        {
+            System.err.println( msg );
+        }
+    }
+
+
+    /**
+     * Reports a delete error.
+     * <p>
+     * @param s     The error message.
+     */
+    private void report_delete_error(String s)
+    {
+        String msg = m_fileDeleteErrorMsg1 + m_file.getAbsolutePath();
+        if( s!=null )
+        {
+            msg += m_fileDeleteErrorMsg2 + s;
+        }
+
+        String title = m_fileDeleteErrorTitle;
+
+        if( m_reportPopup )
+        {
+            JOptionPane.showMessageDialog(null, msg, title,
+                JOptionPane.ERROR_MESSAGE);
+        }
+        else
+        {
+            System.err.println( msg );
+        }
+    }
+
+
+    /**
+     * Creates and locks the file.
+     * <p>
+     * @return  <code>true</code> if file is locked,
+     *          <code>false</code> otherwise.
+     */
+    private boolean lock_file()
+    {
+        try
+        {
+            // create the file and obtain a lock to it.
+            // this way nobody can delete this file as long as this
+            // application is running!
+            m_channel = new RandomAccessFile(m_file, "rw").getChannel();
+            m_lock = m_channel.lock();
+
+            return( true );
+        }
+        catch(Exception ex)
+        {
+            report_lock_error( ex.getMessage() );
+
+            return( false );
+        }
+    }
+
+
+    /**
+     * Force deletion of the file.
+     * <p>
+     * @return  <code>true</code> if file is deleted,
+     *          <code>false</code> otherwise.
+     */
+    private boolean force_delete_file()
+    {
+        try
+        {
+            boolean deleted = m_file.delete();
+
+            if( !deleted )
+            {
+                report_delete_error( null );
+            }
+
+            return( deleted );
+        }
+        catch(Exception ex)
+        {
+            report_delete_error( ex.getMessage() );
+
+            return( false );
+        }
+    }
+
+
+    /**
+     * Informs the user that the file exists.
+     * <p>
+     * @return  <code>true</code> if user is informed,
+     *          <code>false</code> otherwise.
+     */
+    private boolean inform_user()
+    {
+        String msg_gui = m_fileExistsMsg1 + m_fileExistsMsg2;
+        String msg_txt = m_fileExistsMsg1 + m_fileExistsMsg3 +
+                         m_file.getAbsolutePath();
+        String title = m_fileExistsTitle;
+
+        if( m_reportPopup )
+        {
+            int res = JOptionPane.showConfirmDialog(null, msg_gui, title,
+                        JOptionPane.OK_CANCEL_OPTION,
+                        JOptionPane.WARNING_MESSAGE);
+            return( res==0 ); // if YES return true
+        }
+        else
+        {
+            System.err.println( msg_txt );
+
+            return( false );
+        }
+    }
+
+}
diff --git a/src/gr/zeus/ui/mdi/JInternalFrameComparator.java b/src/gr/zeus/ui/mdi/JInternalFrameComparator.java
new file mode 100644
index 0000000..55dc1f0
--- /dev/null
+++ b/src/gr/zeus/ui/mdi/JInternalFrameComparator.java
@@ -0,0 +1,74 @@
+/*
+ * JInternalFrameComparator.java
+ *
+ * Copyright (c) 2004-2011 Gregory Kotsaftis
+ * gregkotsaftis at yahoo.com
+ * http://zeus-jscl.sourceforge.net/
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+package gr.zeus.ui.mdi;
+
+import java.util.Comparator;
+import javax.swing.JInternalFrame;
+
+/**
+ * A simple comparator for <code>JInternalFrames</code>, based on their title.
+ * <p>
+ * @author Gregory Kotsaftis
+ * @since 1.04
+ */
+public final class JInternalFrameComparator
+    implements Comparator<JInternalFrame> {
+
+    /**
+     * Compares internal frames based on their title.
+     * <p>
+     * @param o1    First frame.
+     * @param o2    Second frame.
+     * <p>
+     * @return      The comparison.
+     */
+    public int compare(JInternalFrame o1, JInternalFrame o2)
+    {
+        int ret = 0;
+
+        if( o1!=null && o2!=null )
+        {
+            String t1 = o1.getTitle();
+            String t2 = o2.getTitle();
+
+            if( t1 != null && t2 != null )
+            {
+                ret = t1.compareTo(t2);
+            }
+            else if( t1 == null && t2 != null )
+            {
+                ret = -1;
+            }
+            else if( t1 != null && t2 == null )
+            {
+                ret = 1;
+            }
+            else
+            {
+                ret = 0;
+            }
+        }
+
+        return( ret );
+    }
+
+}
diff --git a/src/gr/zeus/ui/mdi/WindowManager.java b/src/gr/zeus/ui/mdi/WindowManager.java
new file mode 100644
index 0000000..9d881e4
--- /dev/null
+++ b/src/gr/zeus/ui/mdi/WindowManager.java
@@ -0,0 +1,1601 @@
+/*
+ * WindowManager.java
+ *
+ * Copyright (c) 2004-2011 Gregory Kotsaftis
+ * gregkotsaftis at yahoo.com
+ * http://zeus-jscl.sourceforge.net/
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+package gr.zeus.ui.mdi;
+
+import java.awt.Dimension;
+import java.awt.Point;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.ContainerEvent;
+import java.awt.event.ContainerListener;
+import java.util.Arrays;
+import java.util.Hashtable;
+import javax.swing.JDesktopPane;
+import javax.swing.JInternalFrame;
+import javax.swing.JMenu;
+import javax.swing.JRadioButtonMenuItem;
+import javax.swing.UIManager;
+import javax.swing.WindowConstants;
+import javax.swing.event.InternalFrameEvent;
+import javax.swing.event.InternalFrameListener;
+
+/**
+ * A JDesktop window manager.
+ * <p>
+ * Major functions implemented:
+ * <ul>
+ * <li>close()</li>
+ * <li>closeAll()</li>
+ * <li>minimize()</li>
+ * <li>minimizeAll()</li>
+ * <li>maximize()</li>
+ * <li>maximizeAll()</li>
+ * <li>restore()</li>
+ * <li>restoreAll()</li>
+ * <li>hide()</li>
+ * <li>hideAll()</li>
+ * <li>selectNext()</li>
+ * <li>selectPrevious()</li>
+ * <li>reset()</li>
+ * <li>resetAll()</li>
+ * <li>tileHorizontally()</li>
+ * <li>tileVertically()</li>
+ * <li>tile()</li>
+ * <li>cascade()</li>
+ * </ul>
+ * <p>
+ * @author Gregory Kotsaftis
+ * @since 1.04
+ */
+public final class WindowManager {
+
+    /**
+     * Number of menu items.
+     */
+    private int m_lastMenuItemsCount = 0;
+
+    /**
+     * Stores 'radio button menu items' and 'internal frames' pairs.
+     */
+    private final Hashtable<JRadioButtonMenuItem, JInternalFrame>
+        m_radioMenuItemsAndFrames =
+            new Hashtable<JRadioButtonMenuItem, JInternalFrame>();
+
+    /**
+     * Stores 'internal frames' and 'radio button menu items' pairs.
+     */
+    private final Hashtable<JInternalFrame, JRadioButtonMenuItem>
+        m_framesAndRadioMenuItems =
+            new Hashtable<JInternalFrame, JRadioButtonMenuItem>();
+
+    /**
+     * Compares frames by title.
+     */
+    private final JInternalFrameComparator m_frameComparator =
+        new JInternalFrameComparator();
+
+    /**
+     * Container listener.
+     */
+    private final FrameListener m_frameListener = new FrameListener();
+
+    /**
+     * Internal frame listener.
+     */
+    private final SelectFrameListener m_selectFrameListener =
+        new SelectFrameListener();
+
+    /**
+     * Radio button menu item listener.
+     */
+    private final MenuItemActionListener m_radioMenuItemListener =
+        new MenuItemActionListener();
+
+    /**
+     * JDesktopPane instance.
+     */
+    private JDesktopPane m_desktop = null;
+
+    /**
+     * JMenu instance.
+     */
+    private JMenu m_windowsMenu = null;
+
+    /**
+     * Check to see which drag mode should be used.
+     */
+    private boolean m_outlineDragMode = false;
+
+    /**
+     * Used to set the de-iconifiable policy.
+     */
+    private boolean m_deiconifiablePolicy = false;
+
+    /**
+     * Used to set the close policy.
+     */
+    private boolean m_closePolicy = false;
+
+    /**
+     * Used to set the auto-position policy.
+     */
+    private boolean m_autoPositionPolicy = true;
+
+    /**
+     * Position for next placed JInternalFrame within the desktop.
+     * Used in conjuction with <code>m_autoPositionPolicy</code>.
+     */
+    private Point m_nextFramePos = new Point(0,0);
+
+
+    /**
+     * Closes an internal frame if it is not already closed and is closable.
+     * <p>
+     * @param f     The <code>JInternalFrame</code> to close.
+     */
+    private void close_frame(JInternalFrame f)
+    {
+        if( f!=null && !f.isClosed() && f.isClosable() )
+        {
+            try
+            {
+                if( m_closePolicy )
+                {
+                    f.setClosed( true );
+                }
+                else
+                {
+                    f.doDefaultCloseAction();
+                }
+            }
+            catch(Exception e)
+            {
+                e.printStackTrace();
+            }
+        }
+    }
+
+
+    /**
+     * Iconifies a frame if it is iconifiable but not yet iconified.
+     * <p>
+     * @param f     The <code>JInternalFrame</code> to iconify.
+     */
+    private void iconify_frame(JInternalFrame f)
+    {
+        if( f!=null && !f.isIcon() && f.isIconifiable() )
+        {
+            try
+            {
+                f.setIcon( true );
+            }
+            catch(Exception e)
+            {
+                e.printStackTrace();
+            }
+        }
+    }
+
+
+    /**
+     * De-iconifies a frame if it is iconified.
+     * <p>
+     * @param f     The <code>JInternalFrame</code> to de-iconify.
+     */
+    private void deiconify_frame(JInternalFrame f)
+    {
+        if( f!=null && f.isIcon() && f.isIconifiable() )
+        {
+            try
+            {
+                f.setIcon( false );
+            }
+            catch(Exception e)
+            {
+                e.printStackTrace();
+            }
+        }
+    }
+
+
+    /**
+     * Restores a frame.
+     * <p>
+     * @param f     The <code>JInternalFrame</code> to restore.
+     */
+    private void restore_frame(JInternalFrame f)
+    {
+        if( f!=null )
+        {
+            try
+            {
+                f.setMaximum( false );
+            }
+            catch(Exception e)
+            {
+                e.printStackTrace();
+            }
+        }
+    }
+
+
+    /**
+     * Maximizes a frame if it is can be maximized and is not already maximized.
+     * <p>
+     * @param f     The <code>JInternalFrame</code> to maximize.
+     */
+    private void maximize_frame(JInternalFrame f)
+    {
+        if( f!=null && !f.isMaximum() && f.isMaximizable() )
+        {
+            try
+            {
+                f.setMaximum( true );
+            }
+            catch(Exception e)
+            {
+                e.printStackTrace();
+            }
+        }
+    }
+
+
+    /**
+     * Resets a frame to it's original size.
+     * <p>
+     * @param f     The <code>JInternalFrame</code> to reset to original size.
+     */
+    private void reset_frame(JInternalFrame f)
+    {
+        if( f != null )
+        {
+            f.pack();
+        }
+    }
+
+
+    /**
+     * Selects a frame and brings it to front of it's layer.
+     * <p>
+     * @param f     The selected <code>JInternalFrame</code>.
+     */
+    private void select_frame(JInternalFrame f)
+    {
+        if( f!=null && !f.isSelected() )
+        {
+            try
+            {
+                f.setSelected( true );
+                f.toFront();
+            }
+            catch(Exception e)
+            {
+                e.printStackTrace();
+            }
+        }
+    }
+
+
+    /**
+     * Hides a frame if it is visible. Also rebuilds the windows menu.
+     * <p>
+     * @param f     The <code>JInternalFrame</code> to hide.
+     */
+    private void hide_frame(JInternalFrame f)
+    {
+        if( f!=null && f.isVisible() )
+        {
+            f.setVisible( false );
+
+            if( f.isSelected() )
+            {
+                try
+                {
+                    f.setSelected( false );
+                }
+                catch(Exception e)
+                {
+                    e.printStackTrace();
+                }
+            }
+
+            // this event will not be fired otherwise!
+            m_frameListener.manualFireEvent();
+        }
+    }
+
+
+    /**
+     * Finds if an internal frame has our frame listener attached. In this case
+     * i should skip attaching it again. This method is needed because
+     * when i debuged the code around <code>addInternalFrameListener()</code>
+     * i saw, to my surprise, that the <b>SAME</b> listener was added in the
+     * array with the internal frame listeners over and over again! Perhaps
+     * this is a bug of swings, perhaps not. Until this issue is solved i use
+     * this approach.
+     * <p>
+     * @todo Check java forums about this!
+     */
+    private boolean is_internal_frame_listener_attached(JInternalFrame jif)
+    {
+        boolean found = false;
+
+        InternalFrameListener[] all = jif.getInternalFrameListeners();
+        for(int i=0; i<all.length; i++)
+        {
+            if( all[i] == m_selectFrameListener )
+            {
+                found = true;
+                break;
+            }
+        }
+
+        return( found );
+    }
+
+
+    /**
+     * Constructor. Creates a new <code>WindowManager</code> and
+     * attaches it to a desktop pane.
+     * <p>
+     * @param d             The <code>JDesktopPane</code> instance.
+     * @param windowsMenu   The <code>JMenu</code> instance.
+     */
+    public WindowManager(JDesktopPane d, JMenu windowsMenu)
+    {
+        m_desktop = d;
+        m_windowsMenu = windowsMenu;
+
+        if( m_desktop == null )
+        {
+            throw new NullPointerException(
+                "JDesktopPane instance provided to WindowManager is NULL!");
+        }
+
+        if( m_windowsMenu == null )
+        {
+            throw new NullPointerException(
+                "JMenu instance provided to WindowManager is NULL!");
+        }
+
+        // prepare the windows menu to add our radio buttons
+        windowsMenu.addSeparator();
+        m_lastMenuItemsCount = m_windowsMenu.getMenuComponentCount();
+
+        // listener for new frames that will be added in the desktop
+        m_desktop.addContainerListener( m_frameListener );
+
+        // find if there are any frames in the desktop and start monitoring them
+        JInternalFrame[] frames = m_desktop.getAllFrames();
+        for(int i=0; frames!=null && i<frames.length; i++)
+        {
+            frames[i].addInternalFrameListener( m_selectFrameListener );
+        }
+
+        // rebuild the windows menu if there were any frames opened before we
+        // attached our ContainerListener.
+        m_frameListener.manualFireEvent();
+    }
+
+
+    /**
+     * Selects frames' drawing strategy.
+     * <p>
+     * @param outline   <code>true</code> to enable
+     *                  <code>JDesktopPane.OUTLINE_DRAG_MODE</code>, or
+     *                  <code>false</code> to enable
+     *                  <code>JDesktopPane.LIVE_DRAG_MODE</code>.
+     */
+    public void setOutlineDragMode(boolean outline)
+    {
+        m_outlineDragMode = outline;
+
+        if( m_desktop != null )
+        {
+            if( m_outlineDragMode )
+            {
+                m_desktop.setDragMode( JDesktopPane.OUTLINE_DRAG_MODE );
+            }
+            else
+            {
+                m_desktop.setDragMode( JDesktopPane.LIVE_DRAG_MODE );
+            }
+        }
+    }
+
+
+    /**
+     * Gets frames' drawing strategy.
+     * <p>
+     * @return  <code>true</code> if desktop's <code>DragMode</code> is
+     *          <code>JDesktopPane.OUTLINE_DRAG_MODE</code> or
+     *          <code>false</code> if desktop's <code>DragMode</code> is
+     *          <code>JDesktopPane.LIVE_DRAG_MODE</code>.
+     */
+    public boolean getOutlineDragMode()
+    {
+        return( m_outlineDragMode );
+    }
+
+
+    /**
+     * Sets de-iconifiable policy. Should we force a frame to de-iconify
+     * if it is iconified, during cascade operations?
+     * <p>
+     * @param p     <code>true</code> if force, <code>false</code> otherwise.
+     */
+    public void setDeiconifiablePolicy(boolean p)
+    {
+        m_deiconifiablePolicy = p;
+    }
+
+
+    /**
+     * Gets the de-iconifiable policy.
+     * <p>
+     * @return  The de-iconifiable policy.
+     */
+    public boolean getDeiconifiablePolicy()
+    {
+        return( m_deiconifiablePolicy );
+    }
+
+
+    /**
+     * Sets the close policy. Should we do default close operation per frame
+     * or force close it?
+     * <p>
+     * @param p     <code>true</code> to force close,
+     *              <code>false</code> do default close operation.
+     */
+    public void setClosePolicy(boolean p)
+    {
+        m_closePolicy = p;
+    }
+
+
+    /**
+     * Gets the close policy.
+     * <p>
+     * @return  <code>true</code> for force close,
+     *          <code>false</code> for default close operation.
+     */
+    public boolean getClosePolicy()
+    {
+        return( m_closePolicy );
+    }
+
+
+    /**
+     * Sets the auto position frames policy. Should we auto position the
+     * new frames in the desktop or not?
+     * <p>
+     * @param p     <code>true</code> for auto-position,
+     *              <code>false</code> for none.
+     */
+    public void setAutoPositionPolicy(boolean p)
+    {
+        m_autoPositionPolicy = p;
+    }
+
+
+    /**
+     * Gets the auto position frames policy.
+     * <p>
+     * @return  The auto-position policy.
+     */
+    public boolean getAutoPositionPolicy()
+    {
+        return( m_autoPositionPolicy );
+    }
+
+
+    /**
+     * Counts all frames, even those that are closed with
+     * <code>DefaultCloseOperation = HIDE_ON_CLOSE</code>
+     * <p>
+     * <b>NOTE</b>Use this method in order to understand how many
+     * "ghost" frames remain within the desktop.
+     * <p>
+     * @return  The number of frames.
+     */
+    public int countFrames()
+    {
+        if( m_desktop == null ||
+            m_desktop.getAllFrames() == null ||
+            m_desktop.getAllFrames().length < 1 )
+        {
+            return( 0 );
+        }
+
+        JInternalFrame[] frames = m_desktop.getAllFrames();
+
+        return( frames.length );
+    }
+
+
+    /**
+     * Counts only visible frames.
+     * <p>
+     * @return  The number of visible frames.
+     */
+    public int countVisibleFrames()
+    {
+        if( m_desktop == null ||
+            m_desktop.getAllFrames() == null ||
+            m_desktop.getAllFrames().length < 1 )
+        {
+            return( 0 );
+        }
+
+        JInternalFrame[] frames = m_desktop.getAllFrames();
+
+        int count = 0;
+        for(int i=0; i<frames.length; i++)
+        {
+            if( frames[i].isVisible() )
+            {
+                count++;
+            }
+        }
+
+        return( count );
+    }
+
+
+    /**
+     * Closes the selected frame if it is closable.
+     */
+    public void close()
+    {
+        if( m_desktop == null ||
+            m_desktop.getAllFrames() == null ||
+            m_desktop.getAllFrames().length < 1 )
+        {
+            return;
+        }
+
+        JInternalFrame activeframe = m_desktop.getSelectedFrame();
+
+        close_frame( activeframe );
+    }
+
+
+    /**
+     * Closes all frames that are closable.
+     */
+    public void closeAll()
+    {
+        if( m_desktop == null ||
+            m_desktop.getAllFrames() == null ||
+            m_desktop.getAllFrames().length < 1 )
+        {
+            return;
+        }
+
+        JInternalFrame[] frames = m_desktop.getAllFrames();
+
+        for(int i=0; i<frames.length; i++)
+        {
+            close_frame( frames[i] );
+        }
+    }
+
+
+    /**
+     * Minimizes the selected frame if it is iconifiable.
+     */
+    public void minimize()
+    {
+        if( m_desktop == null ||
+            m_desktop.getAllFrames() == null ||
+            m_desktop.getAllFrames().length < 1 )
+        {
+            return;
+        }
+
+        JInternalFrame activeframe = m_desktop.getSelectedFrame();
+
+        iconify_frame( activeframe );
+    }
+
+
+    /**
+     * Minimizes all frames that are iconifiable.
+     */
+    public void minimizeAll()
+    {
+        if( m_desktop == null ||
+            m_desktop.getAllFrames() == null ||
+            m_desktop.getAllFrames().length < 1 )
+        {
+            return;
+        }
+
+        JInternalFrame[] frames = m_desktop.getAllFrames();
+
+        for(int i=0; i<frames.length; i++)
+        {
+            // if DefaultCloseOperation for a JInternalFrame is HIDE_ON_CLOSE
+            // this frame is invisible and so we should not minimize it!
+            if( !frames[i].isVisible() )
+                continue;
+
+            iconify_frame( frames[i] );
+        }
+    }
+
+
+    /**
+     * Restores the selected frame from it's maximized state.
+     */
+    public void restore()
+    {
+        if( m_desktop == null ||
+            m_desktop.getAllFrames() == null ||
+            m_desktop.getAllFrames().length < 1 )
+        {
+            return;
+        }
+
+        JInternalFrame activeframe = m_desktop.getSelectedFrame();
+
+        if( activeframe != null )
+        {
+            if( activeframe.isMaximum() || activeframe.isIcon() )
+            {
+                // if it is minimized, it must be deiconified
+                deiconify_frame( activeframe );
+
+                restore_frame( activeframe );
+            }
+        }
+    }
+
+
+    /**
+     * Restores all frames from their maximized state.
+     */
+    public void restoreAll()
+    {
+        if( m_desktop == null ||
+            m_desktop.getAllFrames() == null ||
+            m_desktop.getAllFrames().length < 1 )
+        {
+            return;
+        }
+
+        JInternalFrame[] frames = m_desktop.getAllFrames();
+
+        for(int i=0; i<frames.length; i++)
+        {
+            // if DefaultCloseOperation for a JInternalFrame is HIDE_ON_CLOSE
+            // this frame is invisible and so we should not restore it!
+            if( !frames[i].isVisible() )
+                continue;
+
+            if( frames[i].isMaximum() || frames[i].isIcon() )
+            {
+                // if it is minimized, it must be deiconified
+                deiconify_frame( frames[i] );
+
+                restore_frame( frames[i] );
+            }
+        }
+    }
+
+
+    /**
+     * Maximizes the selected frame if it is not already maximized.
+     */
+    public void maximize()
+    {
+        if( m_desktop == null ||
+            m_desktop.getAllFrames() == null ||
+            m_desktop.getAllFrames().length < 1 )
+        {
+            return;
+        }
+
+        JInternalFrame activeframe = m_desktop.getSelectedFrame();
+
+        maximize_frame( activeframe );
+    }
+
+
+    /**
+     * Maximizes all frames that are not already maximized.
+     */
+    public void maximizeAll()
+    {
+        if( m_desktop == null ||
+            m_desktop.getAllFrames() == null ||
+            m_desktop.getAllFrames().length < 1 )
+        {
+            return;
+        }
+
+        JInternalFrame[] frames = m_desktop.getAllFrames();
+
+        for(int i=0; i<frames.length; i++)
+        {
+            // if DefaultCloseOperation for a JInternalFrame is HIDE_ON_CLOSE
+            // this frame is invisible and so we should not maximize it!
+            if( !frames[i].isVisible() )
+                continue;
+
+            maximize_frame( frames[i] );
+        }
+    }
+
+
+    /**
+     * Resets the frame to it's original preferred size of its components.
+     */
+    public void reset()
+    {
+        if( m_desktop == null ||
+            m_desktop.getAllFrames() == null ||
+            m_desktop.getAllFrames().length < 1 )
+        {
+            return;
+        }
+
+        JInternalFrame activeframe = m_desktop.getSelectedFrame();
+
+        reset_frame( activeframe );
+    }
+
+
+    /**
+     * Resets all frames to their original preferred size of their components.
+     */
+    public void resetAll()
+    {
+        if( m_desktop == null ||
+            m_desktop.getAllFrames() == null ||
+            m_desktop.getAllFrames().length < 1 )
+        {
+            return;
+        }
+
+        JInternalFrame[] frames = m_desktop.getAllFrames();
+
+        for(int i=0; i<frames.length; i++)
+        {
+            // if DefaultCloseOperation for a JInternalFrame is HIDE_ON_CLOSE
+            // this frame is invisible and so we should not pack() it!
+            if( !frames[i].isVisible() )
+                continue;
+
+            reset_frame( frames[i] );
+        }
+    }
+
+
+    /**
+     * Hides a frame. The hidden frame is added to the menu with
+     * disabled-like color.
+     */
+    public void hide()
+    {
+        if( m_desktop == null ||
+            m_desktop.getAllFrames() == null ||
+            m_desktop.getAllFrames().length < 1 )
+        {
+            return;
+        }
+
+        if( m_windowsMenu == null )
+        {
+            return;
+        }
+
+        JInternalFrame activeframe = m_desktop.getSelectedFrame();
+
+        hide_frame( activeframe );
+    }
+
+
+    /**
+     * Hides all frames. The hidden frames are added to the menu with
+     * disabled-like color.
+     */
+    public void hideAll()
+    {
+        if( m_desktop == null ||
+            m_desktop.getAllFrames() == null ||
+            m_desktop.getAllFrames().length < 1 )
+        {
+            return;
+        }
+
+        if( m_windowsMenu == null )
+        {
+            return;
+        }
+
+        JInternalFrame[] frames = m_desktop.getAllFrames();
+
+        for(int i=0; i<frames.length; i++)
+        {
+            // this frame is already hidden!
+            if( !frames[i].isVisible() )
+                continue;
+
+            hide_frame( frames[i] );
+        }
+    }
+
+
+    /**
+     * Selects the next internal frame.
+     */
+    public void selectNext()
+    {
+        if( m_desktop == null ||
+            m_desktop.getAllFrames() == null ||
+            m_desktop.getAllFrames().length < 1 )
+        {
+            return;
+        }
+
+        JInternalFrame[] frames = m_desktop.getAllFrames();
+
+        // we need at least 2 frames to perform next window!
+        if( frames.length < 2 )
+        {
+            return;
+        }
+
+        JInternalFrame activeframe = m_desktop.getSelectedFrame();
+
+        if( activeframe == null )
+        {
+            return;
+        }
+
+        // NOTE: IT SEEMS IF WE DO NOT SORT THE FRAMES WE CANNOT SELECT
+        //       THE NEXT FRAME CORRECTLY!!!
+        // sort frames by title
+        Arrays.sort(frames, m_frameComparator);
+
+        int next_frame = -1;
+        for(int i=0; i<frames.length; i++)
+        {
+            // if DefaultCloseOperation for a JInternalFrame is HIDE_ON_CLOSE
+            // this frame is invisible and so we should not select it!
+            if( !frames[i].isVisible() )
+                continue;
+
+            // find index of selected frame
+            if( frames[i] != activeframe )
+                continue;
+
+            // check all remaining frames ahead, if they can be selected
+            for(int j=i+1; j<frames.length; j++)
+            {
+                if( !frames[j].isIcon() )
+                {
+                    next_frame = j;
+                    break;
+                }
+            }
+
+            // if no frame found, check from the start
+            if( next_frame == -1 )
+            {
+                for(int k=0; k<i; k++)
+                {
+                    if( !frames[k].isIcon() )
+                    {
+                        next_frame = k;
+                        break;
+                    }
+                }
+            }
+
+            if( next_frame != -1 )
+                break;
+        }
+
+        if( next_frame != -1 )
+        {
+            select_frame( frames[next_frame] );
+        }
+    }
+
+
+    /**
+     * Selects the previous internal frame.
+     */
+    public void selectPrevious()
+    {
+        if( m_desktop == null ||
+            m_desktop.getAllFrames() == null ||
+            m_desktop.getAllFrames().length < 1 )
+        {
+            return;
+        }
+
+        JInternalFrame[] frames = m_desktop.getAllFrames();
+
+        // we need at least 2 frames to perform previous window!
+        if( frames.length < 2 )
+        {
+            return;
+        }
+
+        JInternalFrame activeframe = m_desktop.getSelectedFrame();
+
+        if( activeframe == null )
+        {
+            return;
+        }
+
+        // NOTE: IT SEEMS IF WE DO NOT SORT THE FRAMES WE CANNOT SELECT
+        //       THE PREVIOUS FRAME CORRECTLY!!!
+        // sort frames by title
+        Arrays.sort(frames, m_frameComparator);
+
+        int previous_frame = -1;
+        for(int i=0; i<frames.length; i++)
+        {
+            // if DefaultCloseOperation for a JInternalFrame is HIDE_ON_CLOSE
+            // this frame is invisible and so we should not select it!
+            if( !frames[i].isVisible() )
+                continue;
+
+            // find index of selected frame
+            if( frames[i] != activeframe )
+                continue;
+
+            // check all previous frames, if they can be selected
+            for(int j=i-1; j>=0; j--)
+            {
+                if( !frames[j].isIcon() )
+                {
+                    previous_frame = j;
+                    break;
+                }
+            }
+
+            // if no frame found, check from the end
+            if( previous_frame == -1 )
+            {
+                for(int k=frames.length-1; k>i; k--)
+                {
+                    if( !frames[k].isIcon() )
+                    {
+                        previous_frame = k;
+                        break;
+                    }
+                }
+            }
+
+            if( previous_frame != -1 )
+                break;
+        }
+
+        if( previous_frame != -1 )
+        {
+            select_frame( frames[previous_frame] );
+        }
+    }
+
+
+    /**
+     * Cascades all frames. If De-iconifiablePolicy is false, minimized frames
+     * stay minimized.During cascade, it also sorts frames based on their title.
+     */
+    public void cascade()
+    {
+        if( m_desktop == null ||
+            m_desktop.getAllFrames() == null ||
+            m_desktop.getAllFrames().length < 1 )
+        {
+            return;
+        }
+
+        JInternalFrame activeframe = m_desktop.getSelectedFrame();
+        JInternalFrame[] frames = m_desktop.getAllFrames();
+
+        // sort frames by title
+        Arrays.sort(frames, m_frameComparator);
+
+        int x = 0;
+        int y = 0;
+        int width = m_desktop.getWidth() / 2;
+        int height = m_desktop.getHeight() / 2;
+
+        for(int i=0; i<frames.length; i++)
+        {
+            // if DefaultCloseOperation for a JInternalFrame is HIDE_ON_CLOSE
+            // this frame is invisible and so we should not cascade it!
+            if( !frames[i].isVisible() )
+                continue;
+
+            // should we cascade also the iconified frames?
+            if( m_deiconifiablePolicy == false && frames[i].isIcon() )
+                continue;
+
+            deiconify_frame( frames[i] );
+
+            frames[i].reshape(x, y, width, height);
+
+            frames[i].moveToFront();
+
+            if( frames[i] != activeframe )
+            {
+                int next_pos = frames[i].getHeight() -
+                                    frames[i].getContentPane().getHeight();
+
+                frames[i].setLocation(x, y);
+                x += next_pos;
+                y += next_pos;
+            }
+
+            // wrap around at the desktop edge
+            if( (x + width) > m_desktop.getWidth() )
+            {
+                x = 0;
+            }
+            if( (y + height) > m_desktop.getHeight() )
+            {
+                y = 0;
+            }
+        }
+
+        // last frame will be the selected frame, if any.
+        if( activeframe != null )
+        {
+            activeframe.moveToFront();
+            activeframe.setLocation(x, y);
+        }
+    }
+
+
+    /**
+     * Tiles all windows vertically.
+     */
+    public void tileVertically()
+    {
+        if( m_desktop == null ||
+            m_desktop.getAllFrames() == null ||
+            m_desktop.getAllFrames().length < 1 )
+        {
+            return;
+        }
+
+        JInternalFrame[] frames = m_desktop.getAllFrames();
+
+        int visibleFrames = 0;
+        for(int i=0; i<frames.length; i++)
+        {
+            if( !frames[i].isVisible() )
+                continue;
+
+            visibleFrames++;
+        }
+
+        if( visibleFrames == 0 )
+            return;
+
+        // sort frames by title
+        Arrays.sort(frames, m_frameComparator);
+
+        int width = m_desktop.getWidth() / visibleFrames;
+        int height = m_desktop.getHeight();
+        int x = 0;
+
+        for(int i=0; i<frames.length; i++)
+        {
+            // if DefaultCloseOperation for a JInternalFrame is HIDE_ON_CLOSE
+            // this frame is invisible and so we should not tile it!
+            if( !frames[i].isVisible() )
+                continue;
+
+            try
+            {
+                frames[i].setMaximum( false );
+                frames[i].setIcon( false );
+                frames[i].moveToFront();
+            }
+            catch(Exception ex)
+            {
+                ex.printStackTrace();
+            }
+
+            frames[i].reshape(x, 0, width, height);
+
+            x += width;
+        }
+    }
+
+
+    /**
+     * Tiles all windows horizontally.
+     */
+    public void tileHorizontally()
+    {
+        if( m_desktop == null ||
+            m_desktop.getAllFrames() == null ||
+            m_desktop.getAllFrames().length < 1 )
+        {
+            return;
+        }
+
+        JInternalFrame[] frames = m_desktop.getAllFrames();
+
+        int visibleFrames = 0;
+        for(int i=0; i<frames.length; i++)
+        {
+            if( !frames[i].isVisible() )
+                continue;
+
+            visibleFrames++;
+        }
+
+        if( visibleFrames == 0 )
+            return;
+
+        // sort frames by title
+        Arrays.sort(frames, m_frameComparator);
+
+        int width = m_desktop.getWidth();
+        int height = m_desktop.getHeight() / visibleFrames;
+        int y = 0;
+
+        for(int i=0; i<frames.length; i++)
+        {
+            // if DefaultCloseOperation for a JInternalFrame is HIDE_ON_CLOSE
+            // this frame is invisible and so we should not tile it!
+            if( !frames[i].isVisible() )
+                continue;
+
+            try
+            {
+                frames[i].setMaximum( false );
+                frames[i].setIcon( false );
+                frames[i].moveToFront();
+            }
+            catch(Exception ex)
+            {
+                ex.printStackTrace();
+            }
+
+            frames[i].reshape(0, y, width, height);
+
+            y += height;
+        }
+    }
+
+
+    /**
+     * Tiles all windows equally.
+     */
+    public void tile()
+    {
+        if( m_desktop == null ||
+            m_desktop.getAllFrames() == null ||
+            m_desktop.getAllFrames().length < 1 )
+        {
+            return;
+        }
+
+        JInternalFrame[] frames = m_desktop.getAllFrames();
+
+        int visibleFrames = 0;
+        for(int i=0; i<frames.length; i++)
+        {
+            if( !frames[i].isVisible() )
+                continue;
+
+            visibleFrames++;
+        }
+
+        if( visibleFrames == 0 )
+            return;
+
+        // sort frames by title
+        Arrays.sort(frames, m_frameComparator);
+
+        // create a matrix
+        int sqrt = (int) Math.sqrt( frames.length );
+        int numRows = sqrt;
+        int numCols = sqrt;
+
+        // because of possible precision loss, fix the matrix size
+        if( numRows * numCols < frames.length )
+        {
+            numCols++;
+            if( numRows * numCols < frames.length )
+            {
+                numRows++;
+            }
+        }
+
+        int width = m_desktop.getWidth() / numCols;
+        int height = m_desktop.getHeight() / numRows;
+        int x = 0;
+        int y = 0;
+
+        for(int i=0; i<numRows; i++)
+        {
+            for(int j=0; j < numCols; j++)
+            {
+                int index = (i * numCols) + j;
+
+                if( index >= frames.length )
+                    break;
+
+                // if DefaultCloseOperation for a JInternalFrame is
+                // HIDE_ON_CLOSE then this frame is invisible and so
+                // we should not tile it!
+                if( !frames[index].isVisible() )
+                    continue;
+
+                try
+                {
+                    frames[index].setMaximum( false );
+                    frames[index].setIcon( false );
+                    frames[index].moveToFront();
+                }
+                catch(Exception ex)
+                {
+                    ex.printStackTrace();
+                }
+
+                frames[index].reshape(x, y, width, height);
+
+                x += width;
+            }
+
+            y += height;
+            x = 0;
+        }
+    }
+
+
+
+
+    /**
+     * A ContainerListener for <code>JDesktopPane</code> whenever a frame is
+     * added/removed from the desktop, the windows menu is being rebuilt to
+     * add/remove the new frame as a radio button. Also has a
+     * <code>manualFireEvent()</code> method to manually rebuild the menu.
+     */
+    private final class FrameListener implements ContainerListener {
+
+        /**
+         * Rebuilds the menu.
+         */
+        private void rebuild_menu()
+        {
+            if( m_desktop != null && m_windowsMenu != null )
+            {
+                // remove old items
+                while( m_windowsMenu.getMenuComponentCount() >
+                        m_lastMenuItemsCount )
+                {
+                    m_windowsMenu.remove(
+                        m_windowsMenu.getMenuComponentCount() - 1 );
+                }
+
+                m_radioMenuItemsAndFrames.clear();
+                m_framesAndRadioMenuItems.clear();
+
+                // create a radio button for each frame in desktop
+                JInternalFrame[] frames = m_desktop.getAllFrames();
+
+                // sort frames by title
+                Arrays.sort(frames, m_frameComparator);
+
+                for(int i=0; i<frames.length; i++)
+                {
+                    JRadioButtonMenuItem item = new JRadioButtonMenuItem(
+                        "" + (i+1) + ": " + frames[i].getTitle(),
+                            frames[i].isSelected() );
+
+                    // change color for hidden frames
+                    if( !frames[i].isVisible() )
+                    {
+                        item.setForeground( UIManager.getColor(
+                            "RadioButtonMenuItem.disabledForeground") );
+                    }
+                    /*else
+                    {
+                        item.setForeground( UIManager.getColor(
+                            "RadioButtonMenuItem.foreground") );
+                    }*/
+
+                    item.addActionListener( m_radioMenuItemListener );
+                    m_windowsMenu.add( item );
+
+                    m_radioMenuItemsAndFrames.put(item, frames[i]);
+                    m_framesAndRadioMenuItems.put(frames[i], item);
+                }
+            }
+        }
+
+
+        /**
+         * Manually rebuilds the menu.
+         */
+        public void manualFireEvent()
+        {
+            rebuild_menu();
+        }
+
+
+        /**
+         * Component added <code>Container</code> event.
+         * <p>
+         * @param ce    The <code>ContainerEvent</code>.
+         */
+        public void componentAdded(ContainerEvent ce)
+        {
+            // auto position new frames?
+            if( m_desktop != null &&
+                m_autoPositionPolicy==true &&
+                ce.getChild() != null &&
+                ce.getChild() instanceof JInternalFrame )
+            {
+                JInternalFrame jif = (JInternalFrame) ce.getChild();
+                int w = jif.getWidth();
+                int h = jif.getHeight();
+
+                //---
+                // fix suggested by Kostas Filippaios
+                // if this is the first JInternalFrame added,
+                // reset the position to 0,0
+                int visibleFrames = countVisibleFrames();
+                if( visibleFrames==1 )
+                {
+                    Dimension desktopSize = m_desktop.getSize();
+                    Dimension jifSize = jif.getSize();
+                    m_nextFramePos.setLocation(
+                        (desktopSize.width - jifSize.width)/2,
+                        (desktopSize.height- jifSize.height)/2
+                    );
+                }
+                else if( visibleFrames==2 )
+                {
+                    m_nextFramePos.setLocation(0,0);
+                }
+                //---
+
+                jif.setLocation( m_nextFramePos );
+
+                int next_pos = h - jif.getContentPane().getHeight();
+                m_nextFramePos.x += next_pos;
+                m_nextFramePos.y += next_pos;
+
+                // wrap around at the desktop edge
+                if( (m_nextFramePos.x + w) > m_desktop.getWidth() )
+                {
+                    m_nextFramePos.x = 0;
+                }
+                if( (m_nextFramePos.y + h) > m_desktop.getHeight() )
+                {
+                    m_nextFramePos.y = 0;
+                }
+            }
+
+            // attach listener to new frame
+            if( m_desktop != null )
+            {
+                JInternalFrame[] frames = m_desktop.getAllFrames();
+                for(int i=0; frames!=null && i<frames.length; i++)
+                {
+                    // skip if frame already attached!
+                    if( is_internal_frame_listener_attached(frames[i]) )
+                        continue;
+
+                    frames[i].addInternalFrameListener( m_selectFrameListener );
+                }
+            }
+
+            rebuild_menu();
+        }
+
+
+        /**
+         * Component removed <code>Container</code> event.
+         * <p>
+         * @param ce    The <code>ContainerEvent</code>.
+         */
+        public void componentRemoved(ContainerEvent ce)
+        {
+            rebuild_menu();
+        }
+
+    }
+
+
+
+
+    /**
+     * Whenever a radio button is selected, the related frame
+     * will be made visible and selected too.
+     */
+    private final class MenuItemActionListener implements ActionListener {
+
+        /**
+         * Selects the related frame and makes it visible.
+         * <p>
+         * @param ae    The <code>ActionEvent</code>.
+         */
+        public void actionPerformed(ActionEvent ae)
+        {
+            Object o = ae.getSource();
+
+            if( o instanceof JRadioButtonMenuItem )
+            {
+                JRadioButtonMenuItem item = (JRadioButtonMenuItem) o;
+
+                JInternalFrame frame = (JInternalFrame)
+                    m_radioMenuItemsAndFrames.get( item );
+
+                if( item.isSelected() )
+                {
+                    try
+                    {
+                        if( !frame.isVisible() )
+                        {
+                            frame.setVisible( true );
+                            frame.toFront();
+                        }
+
+                        if( !frame.isSelected() )
+                        {
+                            frame.setSelected( true );
+                        }
+
+                        if( frame.isIcon() )
+                        {
+                            frame.setIcon( false );
+                        }
+                    }
+                    catch(Exception e)
+                    {
+                        e.printStackTrace();
+                    }
+                }
+                else
+                {
+                    // we cannot deselect the radio button, makes no sense...
+                    item.setSelected( true );
+                }
+
+                // rebuild the windows menu
+                m_frameListener.manualFireEvent();
+            }
+        }
+
+    }
+
+
+
+
+    /**
+     * Internal frame listener.
+     */
+    private final class SelectFrameListener implements InternalFrameListener {
+
+        /**
+         * Internal frame activated event method.
+         * <p>
+         * @param ife   The <code>InternalFrameEvent</code>.
+         */
+        public void internalFrameActivated(InternalFrameEvent ife)
+        {
+            JInternalFrame jif = ife.getInternalFrame();
+
+            JRadioButtonMenuItem item = (JRadioButtonMenuItem)
+                m_framesAndRadioMenuItems.get( jif );
+
+            item.setSelected( true );
+        }
+
+
+        /**
+         * Internal frame closed event method.
+         * <p>
+         * @param ife   The <code>InternalFrameEvent</code>.
+         */
+        public void internalFrameClosed(InternalFrameEvent ife)
+        {
+        }
+
+
+        /**
+         * Internal frame closing event method.
+         * <p>
+         * @param ife   The <code>InternalFrameEvent</code>.
+         */
+        public void internalFrameClosing(InternalFrameEvent ife)
+        {
+        }
+
+
+        /**
+         * Internal frame deactivated event method.
+         * <p>
+         * @param ife   The <code>InternalFrameEvent</code>.
+         */
+        public void internalFrameDeactivated(InternalFrameEvent ife)
+        {
+            JInternalFrame jif = ife.getInternalFrame();
+
+            JRadioButtonMenuItem item = (JRadioButtonMenuItem)
+                m_framesAndRadioMenuItems.get( jif );
+
+            item.setSelected( false );
+
+            // if this is a normal frame e.g. DISPOSE_ON_CLOSE and we close
+            // it from X then a ContainerListener componentRemoved() will fire
+            // so we will rebuild the windows menu BUT if this is a
+            // HIDE_ON_CLOSE frame componentRemoved() is never invoked so we
+            // need to call this in order or apply the disabled color to this
+            // hidden frame...
+            if( jif.getDefaultCloseOperation() ==
+                    WindowConstants.HIDE_ON_CLOSE )
+            {
+                // rebuild the windows menu
+                m_frameListener.manualFireEvent();
+            }
+        }
+
+
+        /**
+         * Internal frame deiconified event method.
+         * <p>
+         * @param ife   The <code>InternalFrameEvent</code>.
+         */
+        public void internalFrameDeiconified(InternalFrameEvent ife)
+        {
+        }
+
+
+        /**
+         * Internal frame iconified event method.
+         * <p>
+         * @param ife   The <code>InternalFrameEvent</code>.
+         */
+        public void internalFrameIconified(InternalFrameEvent ife)
+        {
+        }
+
+
+        /**
+         * Internal frame opened event method.
+         * <p>
+         * @param ife   The <code>InternalFrameEvent</code>.
+         */
+        public void internalFrameOpened(InternalFrameEvent ife)
+        {
+        }
+
+    }
+
+}
diff --git a/src/gr/zeus/ui/table/AutoResizeTableColumns.java b/src/gr/zeus/ui/table/AutoResizeTableColumns.java
new file mode 100644
index 0000000..0d3e03e
--- /dev/null
+++ b/src/gr/zeus/ui/table/AutoResizeTableColumns.java
@@ -0,0 +1,382 @@
+/*
+ * AutoResizeTableColumns.java
+ *
+ * Copyright (c) 2004-2011 Gregory Kotsaftis
+ * gregkotsaftis at yahoo.com
+ * http://zeus-jscl.sourceforge.net/
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+package gr.zeus.ui.table;
+
+import java.awt.Component;
+import java.awt.FontMetrics;
+import javax.swing.JLabel;
+import javax.swing.JTable;
+import javax.swing.event.TableModelEvent;
+import javax.swing.event.TableModelListener;
+import javax.swing.table.TableCellRenderer;
+import javax.swing.table.TableColumn;
+import javax.swing.table.TableColumnModel;
+import javax.swing.table.TableModel;
+import javax.swing.text.JTextComponent;
+
+/**
+ * <b>
+ * NOTE: This class needs a lot of testing in order to check all possible
+ * use cases! Please use <code>setDebugMode(true)</code> and reports any bugs or
+ * malfunctions to <a href="mailto:gregkotsaftis at yahoo.com">
+ *gregkotsaftis at yahoo.com</a>
+ * </b><p>
+ *
+ * This class can be used to dynamically resize a <code>JTable</code>, every
+ * time it's data changes, based on header size and row data. It can also lock
+ * any or all of the table's columns (no manual resize possible). Please note
+ * that this class respects hidden columns (columns with all sizes set to zero)
+ * and excludes them from the resize. Also take into consideration that if
+ * performance is a must, you should avoid adding and removing single rows
+ * in the table's model, to avoid multiple tableChanged() events leading to
+ * multiple executions of this class. Instead you should store your data in
+ * Vectors and pass them on to the table's model in a single step. Finally, you
+ * can use the method <code>setDebugMode(true)</code> in order to understand
+ * how this class functions and the results of your own application; note that
+ * if you enable debuging, the performance will degrade by a major degree!
+ * <p>
+ * @author Gregory Kotsaftis
+ * @since 1.50
+ */
+public final class AutoResizeTableColumns implements TableModelListener {
+
+    public static final int DEFAULT_COLUMN_PADDING = 5;
+
+    private JTable m_table = null;
+    private TableModel m_model = null;
+    private int m_columnPadding = 0;
+    private boolean m_includeHeaders = false;
+    private boolean m_includeRows = false;
+    private boolean[] m_lockColumns = null;
+    private boolean m_debugMode = false;
+
+
+    /**
+     * Constructor. Uses default values (includes headers and rows calculations,
+     * does not lock columns and column padding is set to 5 pixels).
+     * <p>
+     * @param tbl               The table instance.
+     */
+    public AutoResizeTableColumns(JTable tbl)
+    {
+        this(tbl, false);
+    }
+
+
+    /**
+     * Constructor. Uses default values (includes headers and rows calculations,
+     * column padding is set to 5 pixels).
+     * <p>
+     * @param tbl               The table instance.
+     * @param allColumnsLock    true/false to lock/unlock all columns
+     */
+    public AutoResizeTableColumns(JTable tbl, boolean allColumnsLock)
+    {
+        this(tbl, tbl.getModel(), DEFAULT_COLUMN_PADDING, true, true,
+            getBooleanArray(tbl.getColumnCount(), allColumnsLock) );
+    }
+
+
+    /**
+     * Constructor.
+     * <p>
+     * @param tbl               The table instance.
+     * @param mdl               The table model.
+     * @param columnPadding     The pixels to use for column padding.
+     * @param includeHeaders    true/false to include headers in calculation.
+     * @param includeRows       true/false to include rows in calculation.
+     * @param lockColumns       An array that contains the lock status of each
+     *                          individual column.
+     */
+    public AutoResizeTableColumns(JTable tbl, TableModel mdl, int columnPadding,
+            boolean includeHeaders, boolean includeRows, boolean[] lockColumns)
+    {
+        m_table = tbl;
+        m_model = mdl;
+        m_columnPadding = columnPadding;
+        m_includeHeaders = includeHeaders;
+        m_includeRows = includeRows;
+        m_lockColumns = lockColumns;
+
+        m_model.addTableModelListener( this );
+    }
+
+
+    /**
+     * Sets debug mode.
+     * <b>WARNING! Enabling this will slow down your application!</b>
+     * <p>
+     * @param debugMode         true/false enable or disable the debug output.
+     */
+    public void setDebugMode(boolean debugMode)
+    {
+        m_debugMode = debugMode;
+    }
+
+
+    /**
+     * Implementation of TableModelListener.
+     * <p>
+     * @param tableModelEvent   The event.
+     */
+    public void tableChanged(TableModelEvent tableModelEvent)
+    {
+        printDebug("AutoResizeTableColumns::tableChanged(): started");
+
+        int numColumns = m_table.getColumnCount();
+        int numRows = m_model.getRowCount();
+
+        printDebug("table columns: " + numColumns + " rows: " + numRows);
+
+        // if no columns, nothing to do...
+        if( numColumns > 0 )
+        {
+            // array to hold max widths for each column
+            int[] columnsWidths = new int[ numColumns ];
+
+            TableColumnModel tcMdl = m_table.getTableHeader().getColumnModel();
+
+            int inter_cell_spacing = m_table.getIntercellSpacing().width;
+            printDebug("inter cell spacing=" + inter_cell_spacing);
+
+            int column_margin = tcMdl.getColumnMargin();
+            printDebug("column margin=" + column_margin);
+
+            int increment = m_columnPadding +
+                            2 * inter_cell_spacing +
+                            2 * column_margin;
+            printDebug("total increment for each column=" + increment);
+
+            for(int col=0; col<numColumns; col++)
+            {
+                printDebug("processing column: " + col);
+
+                int max1 = 0; // for column header
+                int max2 = 0; // for rows
+
+                TableColumn tCol = tcMdl.getColumn( col );
+
+                // respect hidden columns
+                if( tCol.getMaxWidth()==0 &&
+                    tCol.getMinWidth()==0 &&
+                    tCol.getPreferredWidth()==0 )
+                {
+                    printDebug("\t" +
+                        "this table column is hidden will be ignored");
+                    max1 = 0;
+                    max2 = 0;
+                }
+                else /* here we go... */
+                {
+                    // do we take the headers' sizes into consideration?
+                    if( m_includeHeaders )
+                    {
+                        printDebug("\t" + "checking table header");
+
+                        // minimize debug output to a single line
+                        String col_debug = "\t";
+
+                        TableCellRenderer tCelRndr = tCol.getHeaderRenderer();
+                        if( tCelRndr != null )
+                        {
+                            col_debug += "FOUND header renderer; ";
+
+                            Component comp =
+                                tCelRndr.getTableCellRendererComponent(m_table,
+                                    tCol.getHeaderValue(),
+                                    false, false, -1, col);
+
+                            col_debug += "renderer component is ";
+
+                            if( comp instanceof JTextComponent )
+                            {
+                                col_debug += "a JTextComponent";
+
+                                max1 = increment +
+                                       getTextPixels((JTextComponent)comp);
+                            }
+                            else
+                            {
+                                col_debug += "NOT a JTextComponent";
+
+                                max1 = increment +
+                                       comp.getPreferredSize().width;
+                            }
+                        }
+                        else
+                        {
+                            col_debug += "NO header renderer found; ";
+
+                            Object headerValue = tCol.getHeaderValue();
+
+                            if( headerValue instanceof String )
+                            {
+                                col_debug += "HeaderValue is a String";
+
+                                String txt = (String)headerValue;
+                                JLabel tmpLabel = new JLabel( txt );
+
+                                max1 = increment + getTextPixels(tmpLabel, txt);
+                            }
+                            else
+                            {
+                                col_debug += "UNKNOWN HeaderValue type!";
+
+                                // unable to figure out the pixels
+                                max1 = increment + 0;
+                            }
+                        }
+
+                        printDebug( col_debug );
+                        printDebug("\t" +
+                            "calculated size based on column header: " +
+                            max1);
+                    } // END OF HEADERS
+
+                    // do we take the rows into consideration?
+                    if( m_includeRows && numRows > 0 )
+                    {
+                        printDebug("\t" + "checking table rows");
+
+                        for(int row=0; row<numRows; row++)
+                        {
+                            // minimize debug output to a single line
+                            String row_debug = "\t" + "\t" + "row: " + row;
+
+                            int tmpSize = 0;
+
+                            TableCellRenderer tCelRndr =
+                                m_table.getCellRenderer(row, col);
+
+                            Component comp =
+                                tCelRndr.getTableCellRendererComponent(m_table,
+                                    m_model.getValueAt(row, col),
+                                    false, false, row, col);
+
+                            if( comp instanceof JTextComponent )
+                            {
+                                tmpSize = increment +
+                                          getTextPixels((JTextComponent)comp);
+
+                                row_debug += " size: " + tmpSize;
+                                row_debug += " FOUND cell renderer;";
+                                row_debug += " renderer component is";
+                                row_debug += " a JTextComponent";
+                            }
+                            else
+                            {
+                                tmpSize = increment +
+                                          comp.getPreferredSize().width;
+
+                                row_debug += " size: " + tmpSize;
+                                row_debug += " FOUND cell renderer;";
+                                row_debug += " renderer component is";
+                                row_debug += " NOT a JTextComponent";
+                            }
+
+                            printDebug( row_debug );
+
+                            // calculate max of all rows in a column
+                            max2 = Math.max(max2, tmpSize);
+                        }
+
+                        printDebug("\t" +
+                            "calculated size based on column's rows: " +
+                            max2);
+                    } // END OF ROWS
+
+                } /* END OF ELSE HIDDEN COLUMNS */
+
+                columnsWidths[col] = Math.max(max1, max2);
+
+                if( columnsWidths[col] > 0 )
+                {
+                    printDebug("resizing column: " + col + " size: " +
+                        columnsWidths[col]);
+
+                    resizeTableColumn(tCol, columnsWidths[col],
+                        m_lockColumns[col]);
+                }
+                else
+                {
+                    printDebug("column: " + col + " was not resized");
+                }
+
+            } /* END OF COLUMNS LOOP */
+
+        } /* END OF IF COLUMNS > 0 */
+
+        printDebug("AutoResizeTableColumns::tableChanged(): finished");
+    }
+
+
+    private int getTextPixels(JTextComponent c)
+    {
+        FontMetrics f = c.getFontMetrics( c.getFont() );
+        int pixels = f.stringWidth( c.getText() );
+
+        return( pixels );
+    }
+
+
+    private int getTextPixels(Component c, String s)
+    {
+        FontMetrics f = c.getFontMetrics( c.getFont() );
+        int pixels = f.stringWidth( s );
+
+        return( pixels );
+    }
+
+
+    private void resizeTableColumn(TableColumn tc, int pixels, boolean lock)
+    {
+        tc.setPreferredWidth( pixels );
+
+        if( lock )
+        {
+            tc.setMinWidth( pixels );
+            tc.setMaxWidth( pixels );
+            tc.setResizable( false );
+        }
+    }
+
+
+    private void printDebug(String s)
+    {
+        if( m_debugMode )
+        {
+            System.out.println( s );
+        }
+    }
+
+
+    private static boolean[] getBooleanArray(int size, boolean value)
+    {
+        boolean[] flags = new boolean[size];
+        for(int i=0; i<size; i++)
+        {
+            flags[i] = value;
+        }
+        return( flags );
+    }
+
+}
diff --git a/src/gr/zeus/ui/table/ProgressBarCellRenderer.java b/src/gr/zeus/ui/table/ProgressBarCellRenderer.java
new file mode 100644
index 0000000..a74e925
--- /dev/null
+++ b/src/gr/zeus/ui/table/ProgressBarCellRenderer.java
@@ -0,0 +1,217 @@
+/*
+ * ProgressBarCellRenderer.java
+ *
+ * Copyright (c) 2004-2011 Gregory Kotsaftis
+ * gregkotsaftis at yahoo.com
+ * http://zeus-jscl.sourceforge.net/
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+package gr.zeus.ui.table;
+
+import java.awt.Color;
+import java.awt.Component;
+import java.util.Enumeration;
+import java.util.Hashtable;
+import javax.swing.JProgressBar;
+import javax.swing.JTable;
+import javax.swing.SwingConstants;
+import javax.swing.table.TableCellRenderer;
+
+/**
+ * Progress Bar Cell Renderer for JTable. Original code from:
+ * <a href="http://www.senun.com/Left/Programming/Java_old/Examples_swing/
+ *SwingExamples.html">http://www.senun.com/Left/Programming/Java_old/
+ *Examples_swing/SwingExamples.html</a>
+ * <p>
+ * @author Gregory Kotsaftis
+ * @since 1.02
+ */
+public final class ProgressBarCellRenderer extends JProgressBar
+    implements TableCellRenderer {
+
+    /**
+     * Used to get colours.
+     */
+    private Hashtable m_limitColors;
+
+    /**
+     * Used to get values.
+     */
+    private int[] m_limitValues;
+
+
+    /**
+     * Constructor.
+     */
+    public ProgressBarCellRenderer()
+    {
+        this(false, true, 0, 100, new Hashtable(), Color.WHITE);
+    }
+
+
+    /**
+     * Constructor.
+     * <p>
+     * @param paintNum      <code>true</code> or <code>false</code>.
+     * @param paintBorder   <code>true</code> or <code>false</code>.
+     * @param min           Minimum value.
+     * @param max           Maximum value.
+     * @param limitColors   <code>Hashtable</code> of colors.
+     * @param bg            The <code>Color</code>.
+     */
+    public ProgressBarCellRenderer(boolean paintNum, boolean paintBorder,
+        int min, int max, Hashtable limitColors, Color bg)
+    {
+        super(SwingConstants.HORIZONTAL, min, max);
+        setStringPainted( paintNum );
+        setBorderPainted( paintBorder );
+        setBackground( bg );
+        setLimits( limitColors );
+    }
+
+
+    /**
+     * Gets the table cell renderer component.
+     * <p>
+     * @param table         The <code>JTable</code>.
+     * @param value         The <code>Object</code>.
+     * @param isSelected    <code>true</code> if selected.
+     * @param hasFocus      <code>true</code> if has focus.
+     * @param row           The row number.
+     * @param column        The column number.
+     * <p>
+     * @return              The table cell renderer <code>Component</code>.
+     */
+    public Component getTableCellRendererComponent(JTable table, Object value,
+        boolean isSelected, boolean hasFocus, int row, int column)
+    {
+        int n = 0;
+
+        if( !(value instanceof Number) )
+        {
+            String str;
+            if( value instanceof String )
+            {
+                str = (String) value;
+            }
+            else
+            {
+                str = value.toString();
+            }
+
+            try
+            {
+                n = Integer.valueOf(str).intValue();
+            }
+            catch(NumberFormatException e)
+            {
+                e.printStackTrace();
+            }
+        }
+        else
+        {
+            n = ((Number) value).intValue();
+        }
+
+        Color color = getColor( n );
+        if( color != null )
+        {
+            setForeground( color );
+        }
+
+        setValue( n );
+
+        return( this );
+    }
+
+
+    /**
+     * Sets the limits.
+     * <p>
+     * @param limitColors   <code>Hashtable</code>.
+     */
+    public void setLimits(Hashtable limitColors)
+    {
+        m_limitColors = limitColors;
+
+        if( m_limitColors!=null )
+        {
+            int i=0;
+            int n = m_limitColors.size();
+            m_limitValues = new int[n];
+            Enumeration e = m_limitColors.keys();
+            while( e.hasMoreElements() )
+            {
+                m_limitValues[i++] = ((Integer) e.nextElement()).intValue();
+            }
+
+            sort( m_limitValues );
+        }
+    }
+
+
+    /**
+     * Gets the colour.
+     * <p>
+     * @param value     The value to get the colour from.
+     * <p>
+     * @return          The <code>Color</code>.
+     */
+    private Color getColor(int value)
+    {
+        Color color = null;
+        if( m_limitValues != null )
+        {
+            for(int i=0; i<m_limitValues.length; i++)
+            {
+                if( m_limitValues[i] < value )
+                {
+                    color = (Color) m_limitColors.get(
+                                        new Integer( m_limitValues[i] ) );
+                }
+            }
+        }
+
+        return( color );
+    }
+
+
+    /**
+     * Sort method.
+     * <p>
+     * @param a     Array to sort.
+     */
+    private static void sort(int[] a)
+    {
+        int n = a.length;
+        for(int i=0; i<n-1; i++)
+        {
+            int k = i;
+            for(int j=i+1; j<n; j++)
+            {
+                if( a[j] < a[k] )
+                {
+                    k = j;
+                }
+            }
+
+            int tmp = a[i];
+            a[i] = a[k];
+            a[k] = tmp;
+        }
+    }
+
+}
diff --git a/src/gr/zeus/ui/table/TableSorter.java b/src/gr/zeus/ui/table/TableSorter.java
new file mode 100644
index 0000000..02f432b
--- /dev/null
+++ b/src/gr/zeus/ui/table/TableSorter.java
@@ -0,0 +1,742 @@
+/*
+ * TableSorter.java
+ *
+ * Copyright (c) 2004-2011 Gregory Kotsaftis
+ * gregkotsaftis at yahoo.com
+ * http://zeus-jscl.sourceforge.net/
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+/*
+ * The original code was written by 'Sun' and was published
+ * at 'java.sun.com' tutorial. All original copyrights (if any) are
+ * reserved by the original author.
+ * The zeus-jscl copyright above refers only to any modifications
+ * made to the original sources.
+ * http://java.sun.com/docs/books/tutorial/uiswing/components/table.html#sorting
+ */
+
+package gr.zeus.ui.table;
+
+import java.awt.Color;
+import java.awt.Component;
+import java.awt.Graphics;
+import java.awt.event.MouseAdapter;
+import java.awt.event.MouseEvent;
+import java.awt.event.MouseListener;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Comparator;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import javax.swing.Icon;
+import javax.swing.JLabel;
+import javax.swing.JTable;
+import javax.swing.event.TableModelEvent;
+import javax.swing.event.TableModelListener;
+import javax.swing.table.AbstractTableModel;
+import javax.swing.table.JTableHeader;
+import javax.swing.table.TableCellRenderer;
+import javax.swing.table.TableColumnModel;
+import javax.swing.table.TableModel;
+
+/**
+ * TableSorter is a decorator for TableModels; adding sorting
+ * functionality to a supplied TableModel. TableSorter does
+ * not store or copy the data in its TableModel; instead it maintains
+ * a map from the row indexes of the view to the row indexes of the
+ * model. As requests are made of the sorter (like getValueAt(row, col))
+ * they are passed to the underlying model after the row numbers
+ * have been translated via the internal mapping array. This way,
+ * the TableSorter appears to hold another copy of the table
+ * with the rows in a different order.
+ * <p/>
+ * TableSorter registers itself as a listener to the underlying model,
+ * just as the JTable itself would. Events recieved from the model
+ * are examined, sometimes manipulated (typically widened), and then
+ * passed on to the TableSorter's listeners (typically the JTable).
+ * If a change to the model has invalidated the order of TableSorter's
+ * rows, a note of this is made and the sorter will resort the
+ * rows the next time a value is requested.
+ * <p/>
+ * When the tableHeader property is set, either by using the
+ * setTableHeader() method or the two argument constructor, the
+ * table header may be used as a complete UI for TableSorter.
+ * The default renderer of the tableHeader is decorated with a renderer
+ * that indicates the sorting status of each column. In addition,
+ * a mouse listener is installed with the following behavior:
+ * <ul>
+ * <li>
+ * Mouse-click: Clears the sorting status of all other columns
+ * and advances the sorting status of that column through three
+ * values: {NOT_SORTED, ASCENDING, DESCENDING} (then back to
+ * NOT_SORTED again).
+ * <li>
+ * SHIFT-mouse-click: Clears the sorting status of all other columns
+ * and cycles the sorting status of the column through the same
+ * three values, in the opposite order: {NOT_SORTED, DESCENDING, ASCENDING}.
+ * <li>
+ * CONTROL-mouse-click and CONTROL-SHIFT-mouse-click: as above except
+ * that the changes to the column do not cancel the statuses of columns
+ * that are already sorting - giving a way to initiate a compound
+ * sort.
+ * </ul>
+ * <p/>
+ * This is a long overdue rewrite of a class of the same name that
+ * first appeared in the swing table demos in 1997.
+ *
+ * <p>
+ * Modified by Gregory Kotsaftis in order to accept custom icon images
+ * instead of just Arrow icon.
+ * <p>
+ *
+ * @author Philip Milne
+ * @author Brendon McLean
+ * @author Dan van Enckevort
+ * @author Parwinder Sekhon
+ * @version 2.0 02/27/04
+ *
+ * @author Gregory Kotsaftis
+ * @since 1.50
+ */
+public class TableSorter extends AbstractTableModel {
+
+    // Greg
+    private boolean m_useCustomIcons = false;
+    private Icon[] m_customUpIcons = null;
+    private Icon[] m_customDownIcons = null;
+
+    protected TableModel tableModel;
+
+    public static final int DESCENDING = -1;
+    public static final int NOT_SORTED = 0;
+    public static final int ASCENDING = 1;
+
+    private static Directive EMPTY_DIRECTIVE = new Directive(-1, NOT_SORTED);
+
+    public static final Comparator COMPARABLE_COMPARATOR = new Comparator()
+    {
+        public int compare(Object o1, Object o2)
+        {
+            return ((Comparable) o1).compareTo(o2);
+        }
+    };
+
+    public static final Comparator LEXICAL_COMPARATOR = new Comparator()
+    {
+        public int compare(Object o1, Object o2)
+        {
+            return o1.toString().compareTo(o2.toString());
+        }
+    };
+
+    private Row[] viewToModel;
+    private int[] modelToView;
+
+    private JTableHeader tableHeader;
+    private MouseListener mouseListener;
+    private TableModelListener tableModelListener;
+    private Map columnComparators = new HashMap();
+    private List sortingColumns = new ArrayList();
+
+
+    public TableSorter()
+    {
+        this.mouseListener = new MouseHandler();
+        this.tableModelListener = new TableModelHandler();
+    }
+
+
+    public TableSorter(TableModel tableModel)
+    {
+        this();
+        setTableModel(tableModel);
+    }
+
+
+    public TableSorter(TableModel tableModel, JTableHeader tableHeader)
+    {
+        this();
+        setTableHeader(tableHeader);
+        setTableModel(tableModel);
+    }
+
+
+    private void clearSortingState()
+    {
+        viewToModel = null;
+        modelToView = null;
+    }
+
+
+    public TableModel getTableModel()
+    {
+        return tableModel;
+    }
+
+
+    /**
+     * Arrays contains all custom icons with priority order from high to low.
+     * Greg
+     */
+    public void setCustomIcons(Icon[] ups, Icon[] downs)
+    {
+        m_customUpIcons = ups;
+        m_customDownIcons = downs;
+        m_useCustomIcons = (m_customUpIcons != null &&
+                            m_customUpIcons.length > 0 &&
+                            m_customDownIcons != null &&
+                            m_customDownIcons.length > 0 &&
+                            m_customUpIcons.length == m_customDownIcons.length);
+    }
+
+
+    public void setTableModel(TableModel tableModel)
+    {
+        if (this.tableModel != null)
+        {
+            this.tableModel.removeTableModelListener(tableModelListener);
+        }
+
+        this.tableModel = tableModel;
+        if (this.tableModel != null)
+        {
+            this.tableModel.addTableModelListener(tableModelListener);
+        }
+
+        clearSortingState();
+        fireTableStructureChanged();
+    }
+
+
+    public JTableHeader getTableHeader()
+    {
+        return tableHeader;
+    }
+
+
+    public void setTableHeader(JTableHeader tableHeader)
+    {
+        if (this.tableHeader != null)
+        {
+            this.tableHeader.removeMouseListener(mouseListener);
+            TableCellRenderer defaultRenderer =
+                    this.tableHeader.getDefaultRenderer();
+            if (defaultRenderer instanceof SortableHeaderRenderer)
+            {
+                this.tableHeader.setDefaultRenderer( ((SortableHeaderRenderer)
+                    defaultRenderer).tableCellRenderer );
+            }
+        }
+        this.tableHeader = tableHeader;
+        if (this.tableHeader != null)
+        {
+            this.tableHeader.addMouseListener(mouseListener);
+            this.tableHeader.setDefaultRenderer(
+                    new SortableHeaderRenderer(
+                        this.tableHeader.getDefaultRenderer()) );
+        }
+    }
+
+
+    public boolean isSorting()
+    {
+        return sortingColumns.size() != 0;
+    }
+
+
+    private Directive getDirective(int column)
+    {
+        for (int i = 0; i < sortingColumns.size(); i++)
+        {
+            Directive directive = (Directive)sortingColumns.get(i);
+            if (directive.column == column)
+            {
+                return directive;
+            }
+        }
+        return EMPTY_DIRECTIVE;
+    }
+
+
+    public int getSortingStatus(int column)
+    {
+        return getDirective(column).direction;
+    }
+
+
+    private void sortingStatusChanged()
+    {
+        clearSortingState();
+        fireTableDataChanged();
+        if (tableHeader != null)
+        {
+            tableHeader.repaint();
+        }
+    }
+
+
+    public void setSortingStatus(int column, int status)
+    {
+        Directive directive = getDirective(column);
+        if (directive != EMPTY_DIRECTIVE)
+        {
+            sortingColumns.remove(directive);
+        }
+        if (status != NOT_SORTED)
+        {
+            sortingColumns.add(new Directive(column, status));
+        }
+        sortingStatusChanged();
+    }
+
+
+    protected Icon getHeaderRendererIcon(int column, int size)
+    {
+        Directive directive = getDirective(column);
+        if (directive == EMPTY_DIRECTIVE)
+        {
+            return null;
+        }
+        return new Arrow(directive.direction == DESCENDING, size,
+                                            sortingColumns.indexOf(directive));
+    }
+
+
+    // Greg
+    protected Icon getHeaderRendererCustomIcon(int column)
+    {
+        Directive directive = getDirective(column);
+        if (directive == EMPTY_DIRECTIVE)
+        {
+            return null;
+        }
+
+        if( sortingColumns.indexOf(directive) < m_customUpIcons.length )
+        {
+            if( directive.direction == DESCENDING )
+            {
+                return m_customDownIcons[sortingColumns.indexOf(directive)];
+            }
+            else
+            {
+                return m_customUpIcons[sortingColumns.indexOf(directive)];
+            }
+        }
+        else
+        {
+            return null ;
+        }
+    }
+
+
+    private void cancelSorting()
+    {
+        sortingColumns.clear();
+        sortingStatusChanged();
+    }
+
+
+    public void setColumnComparator(Class type, Comparator comparator)
+    {
+        if (comparator == null)
+        {
+            columnComparators.remove(type);
+        }
+        else
+        {
+            columnComparators.put(type, comparator);
+        }
+    }
+
+
+    protected Comparator getComparator(int column)
+    {
+        Class columnType = tableModel.getColumnClass(column);
+        Comparator comparator = (Comparator) columnComparators.get(columnType);
+        if (comparator != null)
+        {
+            return comparator;
+        }
+        if (Comparable.class.isAssignableFrom(columnType))
+        {
+            return COMPARABLE_COMPARATOR;
+        }
+        return LEXICAL_COMPARATOR;
+    }
+
+
+    private Row[] getViewToModel()
+    {
+        if (viewToModel == null)
+        {
+            int tableModelRowCount = tableModel.getRowCount();
+            viewToModel = new Row[tableModelRowCount];
+            for (int row = 0; row < tableModelRowCount; row++)
+            {
+                viewToModel[row] = new Row(row);
+            }
+
+            if (isSorting())
+            {
+                Arrays.sort(viewToModel);
+            }
+        }
+        return viewToModel;
+    }
+
+
+    public int modelIndex(int viewIndex)
+    {
+        return getViewToModel()[viewIndex].modelIndex;
+    }
+
+
+    private int[] getModelToView()
+    {
+        if (modelToView == null)
+        {
+            int n = getViewToModel().length;
+            modelToView = new int[n];
+            for (int i = 0; i < n; i++)
+            {
+                modelToView[modelIndex(i)] = i;
+            }
+        }
+        return modelToView;
+    }
+
+
+    // TableModel interface methods
+
+    public int getRowCount()
+    {
+        return (tableModel == null) ? 0 : tableModel.getRowCount();
+    }
+
+
+    public int getColumnCount()
+    {
+        return (tableModel == null) ? 0 : tableModel.getColumnCount();
+    }
+
+
+    public String getColumnName(int column)
+    {
+        return tableModel.getColumnName(column);
+    }
+
+
+    public Class getColumnClass(int column)
+    {
+        return tableModel.getColumnClass(column);
+    }
+
+
+    public boolean isCellEditable(int row, int column)
+    {
+        return tableModel.isCellEditable(modelIndex(row), column);
+    }
+
+
+    public Object getValueAt(int row, int column)
+    {
+        return tableModel.getValueAt(modelIndex(row), column);
+    }
+
+
+    public void setValueAt(Object aValue, int row, int column)
+    {
+        tableModel.setValueAt(aValue, modelIndex(row), column);
+    }
+
+
+    // Helper classes
+
+    private class Row implements Comparable {
+
+        private int modelIndex;
+
+
+        public Row(int index)
+        {
+            this.modelIndex = index;
+        }
+
+
+        public int compareTo(Object o)
+        {
+            int row1 = modelIndex;
+            int row2 = ((Row) o).modelIndex;
+
+            for (Iterator it = sortingColumns.iterator(); it.hasNext();)
+            {
+                Directive directive = (Directive) it.next();
+                int column = directive.column;
+                Object o1 = tableModel.getValueAt(row1, column);
+                Object o2 = tableModel.getValueAt(row2, column);
+
+                int comparison = 0;
+                // Define null less than everything, except null.
+                if (o1 == null && o2 == null)
+                {
+                    comparison = 0;
+                }
+                else if (o1 == null)
+                {
+                    comparison = -1;
+                }
+                else if (o2 == null)
+                {
+                    comparison = 1;
+                }
+                else
+                {
+                    comparison = getComparator(column).compare(o1, o2);
+                }
+                if (comparison != 0)
+                {
+                    return directive.direction == DESCENDING ?
+                                                    -comparison : comparison;
+                }
+            }
+            return 0;
+        }
+
+    }
+
+
+    private class TableModelHandler implements TableModelListener {
+
+
+        public void tableChanged(TableModelEvent e)
+        {
+            // If we're not sorting by anything, just pass the event along.
+            if (!isSorting())
+            {
+                clearSortingState();
+                fireTableChanged(e);
+                return;
+            }
+
+            // If the table structure has changed, cancel the sorting; the
+            // sorting columns may have been either moved or deleted from
+            // the model.
+            if (e.getFirstRow() == TableModelEvent.HEADER_ROW)
+            {
+                cancelSorting();
+                fireTableChanged(e);
+                return;
+            }
+
+            // We can map a cell event through to the view without widening
+            // when the following conditions apply:
+            //
+            // a) all the changes are on one row
+            //    (e.getFirstRow() == e.getLastRow()) and,
+            // b) all the changes are in one column
+            //    (column != TableModelEvent.ALL_COLUMNS) and,
+            // c) we are not sorting on that column
+            //    (getSortingStatus(column) == NOT_SORTED) and,
+            // d) a reverse lookup will not trigger a sort (modelToView != null)
+            //
+            // Note: INSERT and DELETE events fail this test as they have
+            //       column == ALL_COLUMNS.
+            //
+            // The last check, for (modelToView != null) is to see if
+            // modelToView is already allocated. If we don't do this check;
+            // sorting can become a performance bottleneck for applications
+            // where cells change rapidly in different parts of the table.
+            // If cells change alternately in the sorting column and then
+            // outside of it this class can end up re-sorting on alternate cell
+            // updates - which can be a performance problem for large tables.
+            // The last clause avoids this problem.
+            int column = e.getColumn();
+            if (e.getFirstRow() == e.getLastRow()
+            && column != TableModelEvent.ALL_COLUMNS
+                    && getSortingStatus(column) == NOT_SORTED
+                    && modelToView != null)
+            {
+                int viewIndex = getModelToView()[e.getFirstRow()];
+                fireTableChanged(new TableModelEvent(TableSorter.this,
+                        viewIndex, viewIndex,
+                        column, e.getType()));
+                return;
+            }
+
+            // Something has happened to the data that may have
+            // invalidated the row order.
+            clearSortingState();
+            fireTableDataChanged();
+            return;
+        }
+
+    }
+
+
+    private class MouseHandler extends MouseAdapter {
+
+
+        public void mouseClicked(MouseEvent e)
+        {
+            JTableHeader h = (JTableHeader) e.getSource();
+            TableColumnModel columnModel = h.getColumnModel();
+            int viewColumn = columnModel.getColumnIndexAtX(e.getX());
+            int column = columnModel.getColumn(viewColumn).getModelIndex();
+            if (column != -1)
+            {
+                int status = getSortingStatus(column);
+                if (!e.isControlDown())
+                {
+                    cancelSorting();
+                }
+                // Cycle the sorting states through {NOT_SORTED, ASCENDING,
+                // DESCENDING} or {NOT_SORTED, DESCENDING, ASCENDING}
+                // depending on whether shift is pressed.
+                status = status + (e.isShiftDown() ? -1 : 1);
+                status = (status + 4) % 3 - 1; // signed mod, returning {-1,0,1}
+                setSortingStatus(column, status);
+            }
+        }
+
+    }
+
+
+    private static class Arrow implements Icon {
+
+        private boolean descending;
+        private int size;
+        private int priority;
+
+
+        public Arrow(boolean descending, int size, int priority)
+        {
+            this.descending = descending;
+            this.size = size;
+            this.priority = priority;
+        }
+
+
+        public void paintIcon(Component c, Graphics g, int x, int y)
+        {
+            Color color = c == null ? Color.GRAY : c.getBackground();
+            // In a compound sort, make each succesive triangle 20%
+            // smaller than the previous one.
+            int dx = (int)(size/2*Math.pow(0.8, priority));
+            int dy = descending ? dx : -dx;
+            // Align icon (roughly) with font baseline.
+            y = y + 5*size/6 + (descending ? -dy : 0);
+            int shift = descending ? 1 : -1;
+            g.translate(x, y);
+
+            // Right diagonal.
+            g.setColor(color.darker());
+            g.drawLine(dx / 2, dy, 0, 0);
+            g.drawLine(dx / 2, dy + shift, 0, shift);
+
+            // Left diagonal.
+            g.setColor(color.brighter());
+            g.drawLine(dx / 2, dy, dx, 0);
+            g.drawLine(dx / 2, dy + shift, dx, shift);
+
+            // Horizontal line.
+            if (descending)
+            {
+                g.setColor(color.darker().darker());
+            }
+            else
+            {
+                g.setColor(color.brighter().brighter());
+            }
+            g.drawLine(dx, 0, 0, 0);
+
+            g.setColor(color);
+            g.translate(-x, -y);
+        }
+
+
+        public int getIconWidth()
+        {
+            return size;
+        }
+
+
+        public int getIconHeight()
+        {
+            return size;
+        }
+
+    }
+
+
+    private class SortableHeaderRenderer implements TableCellRenderer {
+
+        private TableCellRenderer tableCellRenderer;
+
+
+        public SortableHeaderRenderer(TableCellRenderer tableCellRenderer)
+        {
+            this.tableCellRenderer = tableCellRenderer;
+        }
+
+
+        public Component getTableCellRendererComponent(JTable table,
+                Object value,
+                boolean isSelected,
+                boolean hasFocus,
+                int row,
+                int column)
+        {
+            Component c = tableCellRenderer.getTableCellRendererComponent(table,
+                    value, isSelected, hasFocus, row, column);
+            if (c instanceof JLabel)
+            {
+                JLabel l = (JLabel) c;
+                l.setHorizontalTextPosition(JLabel.LEFT);
+                int modelColumn = table.convertColumnIndexToModel(column);
+                // Greg
+                if( m_useCustomIcons )
+                {
+                    l.setIcon(getHeaderRendererCustomIcon(modelColumn));
+                }
+                else
+                {
+                    l.setIcon( getHeaderRendererIcon(modelColumn,
+                                l.getFont().getSize()) );
+                }
+            }
+            return c;
+        }
+
+    }
+
+
+    private static class Directive {
+
+        private int column;
+        private int direction;
+
+
+        public Directive(int column, int direction)
+        {
+            this.column = column;
+            this.direction = direction;
+        }
+    }
+
+}
diff --git a/src/gr/zeus/ui/table/TableSorterIcons.java b/src/gr/zeus/ui/table/TableSorterIcons.java
new file mode 100644
index 0000000..4636218
--- /dev/null
+++ b/src/gr/zeus/ui/table/TableSorterIcons.java
@@ -0,0 +1,118 @@
+/*
+ * TableSorterIcons.java
+ *
+ * Copyright (c) 2004-2011 Gregory Kotsaftis
+ * gregkotsaftis at yahoo.com
+ * http://zeus-jscl.sourceforge.net/
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+package gr.zeus.ui.table;
+
+import javax.swing.ImageIcon;
+
+/**
+ * Icon constants.
+ * <p>
+ * @author Gregory Kotsaftis
+ * @since 1.50
+ */
+public final class TableSorterIcons {
+
+    /**
+     * Up image icon 1.
+     */
+    public static final ImageIcon UP1_ICON = new ImageIcon(
+        TableSorterIcons.class.getResource("/gr/zeus/res/up1.gif"));
+
+    /**
+     * Down image icon 1.
+     */
+    public static final ImageIcon DOWN1_ICON = new ImageIcon(
+        TableSorterIcons.class.getResource("/gr/zeus/res/down1.gif"));
+
+    /**
+     * Up image icon 2.
+     */
+    public static final ImageIcon UP2_ICON = new ImageIcon(
+        TableSorterIcons.class.getResource("/gr/zeus/res/up2.gif"));
+
+    /**
+     * Down image icon 2.
+     */
+    public static final ImageIcon DOWN2_ICON = new ImageIcon(
+        TableSorterIcons.class.getResource("/gr/zeus/res/down2.gif"));
+
+    /**
+     * Up image icon 3.
+     */
+    public static final ImageIcon UP3_ICON = new ImageIcon(
+        TableSorterIcons.class.getResource("/gr/zeus/res/up3.gif"));
+
+    /**
+     * Down image icon 3.
+     */
+    public static final ImageIcon DOWN3_ICON = new ImageIcon(
+        TableSorterIcons.class.getResource("/gr/zeus/res/down3.gif"));
+
+    /**
+     * Up image icon 4.
+     */
+    public static final ImageIcon UP4_ICON = new ImageIcon(
+        TableSorterIcons.class.getResource("/gr/zeus/res/top.png"));
+
+    /**
+     * Down image icon 4.
+     */
+    public static final ImageIcon DOWN4_ICON = new ImageIcon(
+        TableSorterIcons.class.getResource("/gr/zeus/res/bottom.png"));
+
+    /**
+     * Up image icon 5.
+     */
+    public static final ImageIcon UP5_ICON = new ImageIcon(
+        TableSorterIcons.class.getResource("/gr/zeus/res/up.png"));
+
+    /**
+     * Down image icon 5.
+     */
+    public static final ImageIcon DOWN5_ICON = new ImageIcon(
+        TableSorterIcons.class.getResource("/gr/zeus/res/down.png"));
+
+    /**
+     * Up image icon 6.
+     */
+    public static final ImageIcon UP6_ICON = new ImageIcon(
+        TableSorterIcons.class.getResource("/gr/zeus/res/1uparrow.png"));
+
+    /**
+     * Down image icon 6.
+     */
+    public static final ImageIcon DOWN6_ICON = new ImageIcon(
+        TableSorterIcons.class.getResource("/gr/zeus/res/1downarrow.png"));
+
+    /**
+     * Up image icon 7.
+     */
+    public static final ImageIcon UP7_ICON = new ImageIcon(
+        TableSorterIcons.class.getResource("/gr/zeus/res/2uparrow.png"));
+
+    /**
+     * Down image icon 7.
+     */
+    public static final ImageIcon DOWN7_ICON = new ImageIcon(
+        TableSorterIcons.class.getResource("/gr/zeus/res/2downarrow.png"));
+
+}
diff --git a/src/gr/zeus/ui/typesafe/CustomFocusTraversalPolicy.java b/src/gr/zeus/ui/typesafe/CustomFocusTraversalPolicy.java
new file mode 100644
index 0000000..e10deb5
--- /dev/null
+++ b/src/gr/zeus/ui/typesafe/CustomFocusTraversalPolicy.java
@@ -0,0 +1,259 @@
+/*
+ * CustomFocusTraversalPolicy.java
+ *
+ * Copyright (c) 2004-2011 Gregory Kotsaftis
+ * gregkotsaftis at yahoo.com
+ * http://zeus-jscl.sourceforge.net/
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+package gr.zeus.ui.typesafe;
+
+import java.awt.Component;
+import java.awt.Container;
+import javax.swing.LayoutFocusTraversalPolicy;
+
+/**
+ * This class creates a custom focus policy for Swing components by extending
+ * LayoutFocusTraversalPolicy. The focus policy is based upon an array of
+ * components. These components are focused as they are placed in the array:
+ * array[0] --> array[1] --> ... ---> array[last] ---> array[0]
+ * Only components in the array are focused, all other components only gain
+ * focus if you place the mouse pointer inside. This is a pretty clean and
+ * solid solution to the Swing Focus Issue, at least until Sun provides us
+ * with a better one.
+ * <p>
+ * @author Gregory Kotsaftis
+ * @since 1.20
+ */
+public final class CustomFocusTraversalPolicy
+        extends LayoutFocusTraversalPolicy {
+
+    /**
+     * The components array.
+     */
+    private Component[] m_allComponents = null;
+
+
+    /**
+     * Constructor.
+     * <p>
+     * @param all           The array with the components.
+     */
+    public CustomFocusTraversalPolicy(Component[] all)
+    {
+        m_allComponents = (all!=null) ? all : new Component[]{};
+    }
+
+
+    /**
+     * Gets the next focusable component.
+     * <p>
+     * @param aContainer    The swing container, e.g. a JFrame.
+     * @param aComponent    The component to calculate focus.
+     * <p>
+     * @return              The next focusable component.
+     */
+    public Component getComponentAfter(Container aContainer,
+            Component aComponent)
+    {
+        Component ret = null;
+        int index = -1;
+
+        for(int i=0; i<m_allComponents.length; i++)
+        {
+            if( aComponent == m_allComponents[i] )
+            {
+                if( i == m_allComponents.length - 1 )
+                {
+                    index = 0;
+                    ret = m_allComponents[ 0 ];
+                }
+                else
+                {
+                    index = i + 1;
+                    ret = m_allComponents[ i + 1 ];
+                }
+
+                break;
+            }
+        }
+
+        // if we found the next component but is disabled
+        // find next enabled component.
+        if( ret != null && !ret.isEnabled() )
+        {
+            int j = index;
+            for(;;)
+            {
+                // get next component
+                if( j == m_allComponents.length - 1 )
+                {
+                    j = 0;
+                }
+                else
+                {
+                    j++;
+                }
+
+                if( j == index )
+                {
+                    // none found!
+                    break;
+                }
+
+                if( m_allComponents[j].isEnabled() )
+                {
+                    // found a component
+                    ret = m_allComponents[j];
+                    break;
+                }
+            }
+        }
+        //---
+
+        return( (ret != null) ? ret : super.getComponentAfter(aContainer,
+                aComponent) );
+    }
+
+
+    /**
+     * Gets the previous focusable component.
+     * <p>
+     * @param aContainer    The swing container, e.g. a JFrame.
+     * @param aComponent    The component to calculate focus.
+     * <p>
+     * @return              The previous focusable component.
+     */
+    public Component getComponentBefore(Container aContainer,
+            Component aComponent)
+    {
+        Component ret = null;
+        int index = -1;
+
+        for(int i=0; i<m_allComponents.length; i++)
+        {
+            if( aComponent == m_allComponents[i] )
+            {
+                if( i == 0 )
+                {
+                    index = m_allComponents.length - 1;
+                    ret = m_allComponents[ m_allComponents.length - 1 ];
+                }
+                else
+                {
+                    index = i - 1;
+                    ret = m_allComponents[ i - 1 ];
+                }
+
+                break;
+            }
+        }
+
+        // if we found the next component but is disabled
+        // find next enabled component.
+        if( ret != null && !ret.isEnabled() )
+        {
+            int j = index;
+            for(;;)
+            {
+                // get next component
+                if( j == 0 )
+                {
+                    j = m_allComponents.length - 1;
+                }
+                else
+                {
+                    j--;
+                }
+
+                if( j == index )
+                {
+                    // none found!
+                    break;
+                }
+
+                if( m_allComponents[j].isEnabled() )
+                {
+                    // found a component
+                    ret = m_allComponents[j];
+                    break;
+                }
+            }
+        }
+        //---
+
+        return( (ret != null) ? ret : super.getComponentBefore(aContainer,
+                aComponent) );
+    }
+
+
+    /**
+     * Gets the first focusable component.
+     * <p>
+     * @param aContainer    The swing container, e.g. a JFrame.
+     * <p>
+     * @return              The first focusable component.
+     */
+    public Component getFirstComponent(Container aContainer)
+    {
+        Component ret = null;
+        for(int i=0; i<m_allComponents.length; i++)
+        {
+            Component c = m_allComponents[ i ];
+
+            // if component is disabled, continue to find the
+            // next enabled component.
+            if( c.isEnabled() )
+            {
+                ret = c;
+                break;
+            }
+        }
+
+        return( (ret != null) ? ret : super.getFirstComponent(aContainer) );
+    }
+
+
+    /**
+     * Gets the last focusable component.
+     * <p>
+     * @param aContainer    The swing container, e.g. a JFrame.
+     * <p>
+     * @return              The last focusable component.
+     */
+    public Component getLastComponent(Container aContainer)
+    {
+        Component ret = null;
+        if( m_allComponents.length > 0 )
+        {
+            for(int i=m_allComponents.length-1; i>=0; i--)
+            {
+                Component c = m_allComponents[ i ];
+
+                // if component is disabled, continue to find the
+                // next enabled component.
+                if( c.isEnabled() )
+                {
+                    ret = c;
+                    break;
+                }
+            }
+        }
+
+        return( (ret != null) ? ret : super.getLastComponent(aContainer) );
+    }
+
+}
diff --git a/src/gr/zeus/ui/typesafe/SelectAllTextOnFocus.java b/src/gr/zeus/ui/typesafe/SelectAllTextOnFocus.java
new file mode 100644
index 0000000..e0e0a17
--- /dev/null
+++ b/src/gr/zeus/ui/typesafe/SelectAllTextOnFocus.java
@@ -0,0 +1,97 @@
+/*
+ * SelectAllTextOnFocus.java
+ *
+ * Copyright (c) 2004-2011 Gregory Kotsaftis
+ * gregkotsaftis at yahoo.com
+ * http://zeus-jscl.sourceforge.net/
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+package gr.zeus.ui.typesafe;
+
+import java.awt.event.FocusEvent;
+import java.awt.event.FocusListener;
+import javax.swing.text.JTextComponent;
+
+/**
+ * This class is a simple FocusListener that when enabled performs a selectAll()
+ * to any JTextComponent.
+ * <p>
+ * @author Gregory Kotsaftis
+ * @since 1.20
+ */
+public final class SelectAllTextOnFocus implements FocusListener {
+
+    /**
+     * Enable/Disable flag.
+     */
+    private boolean m_enabled = false;
+
+
+    /**
+     * Constructor.
+     */
+    public SelectAllTextOnFocus()
+    {
+    }
+
+
+    /**
+     * Gets status flag.
+     * <p>
+     * @return      true/false.
+     */
+    public boolean isEnabled()
+    {
+        return( m_enabled );
+    }
+
+
+    /**
+     * Sets status flag.
+     * <p>
+     * @param f     true/false.
+     */
+    public void setEnabled(boolean f)
+    {
+        m_enabled = f;
+    }
+
+
+    /**
+     * Focus gained event.
+     * <p>
+     * @param evt   The event.
+     */
+    public void focusGained(FocusEvent evt)
+    {
+        if( m_enabled && (evt.getComponent() instanceof JTextComponent) )
+        {
+            ((JTextComponent)evt.getComponent()).selectAll();
+        }
+    }
+
+
+    /**
+     * Focus lost event.
+     * <p>
+     * @param evt   The event.
+     */
+    public void focusLost(FocusEvent evt)
+    {
+        /* do nothing */
+    }
+
+}
diff --git a/src/gr/zeus/ui/typesafe/SimpleEditorPaneTraversal.java b/src/gr/zeus/ui/typesafe/SimpleEditorPaneTraversal.java
new file mode 100644
index 0000000..213bcf7
--- /dev/null
+++ b/src/gr/zeus/ui/typesafe/SimpleEditorPaneTraversal.java
@@ -0,0 +1,136 @@
+/*
+ * SimpleEditorPaneTraversal.java
+ *
+ * Copyright (c) 2004-2011 Gregory Kotsaftis
+ * gregkotsaftis at yahoo.com
+ * http://zeus-jscl.sourceforge.net/
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+package gr.zeus.ui.typesafe;
+
+import java.awt.AWTKeyStroke;
+import java.awt.KeyboardFocusManager;
+import java.awt.event.InputEvent;
+import java.awt.event.KeyEvent;
+import java.util.HashSet;
+import java.util.Set;
+import javax.swing.JEditorPane;
+
+/**
+ * This class can be used to replace the default traversal keys for any
+ * JEditorPane object. As you already know when advancing focus inside a form,
+ * using the TAB key, when you reach a editor panel you need to press CTRL+TAB
+ * in order to advance the focus to the next component. With this class you
+ * can address this issue and use the TAB key instead.
+ * <p>
+ * @author Gregory Kotsaftis
+ * @since 1.50
+ */
+public final class SimpleEditorPaneTraversal {
+
+    /**
+     * The new forward traversal keys, TAB and CTRL+TAB.
+     */
+    private static final Set<AWTKeyStroke> NEW_FORWARD_TRAVERSAL_KEYS =
+                                                    new HashSet<AWTKeyStroke>();
+    static
+    {
+        NEW_FORWARD_TRAVERSAL_KEYS.add( AWTKeyStroke.getAWTKeyStroke(
+            KeyEvent.VK_TAB, 0) ); // use 0 to specify no modifiers
+
+        NEW_FORWARD_TRAVERSAL_KEYS.add( AWTKeyStroke.getAWTKeyStroke(
+            KeyEvent.VK_TAB, InputEvent.CTRL_DOWN_MASK) );
+    }
+
+    /**
+     * The new backward traversal keys, SHIFT+TAB and CTRL+SHIFT+TAB.
+     */
+    private static final Set<AWTKeyStroke> NEW_BACKWARD_TRAVERSAL_KEYS =
+                                                    new HashSet<AWTKeyStroke>();
+    static
+    {
+        NEW_BACKWARD_TRAVERSAL_KEYS.add( AWTKeyStroke.getAWTKeyStroke(
+            KeyEvent.VK_TAB, InputEvent.SHIFT_DOWN_MASK) );
+
+        NEW_BACKWARD_TRAVERSAL_KEYS.add( AWTKeyStroke.getAWTKeyStroke(
+            KeyEvent.VK_TAB,
+                InputEvent.SHIFT_DOWN_MASK | InputEvent.CTRL_DOWN_MASK) );
+    }
+
+    /**
+     * The JEditorPane instance.
+     */
+    private JEditorPane m_editorPane = null;
+
+    /**
+     * A backup copy of the forward traversal keys.
+     */
+    private Set<AWTKeyStroke> m_oldForwardKeys = null;
+
+    /**
+     * A backup copy of the backward traversal keys.
+     */
+    private Set<AWTKeyStroke> m_oldBackwardKeys = null;
+
+
+    /**
+     * Constructor, Stores a backup copy of the original traversal keys
+     * of this editor panel.
+     * <p>
+     * @param ep    The editor panel object.
+     */
+    public SimpleEditorPaneTraversal(JEditorPane ep)
+    {
+        m_editorPane = ep;
+
+        // store original keys
+        m_oldForwardKeys = m_editorPane.getFocusTraversalKeys(
+                                KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS);
+        m_oldBackwardKeys = m_editorPane.getFocusTraversalKeys(
+                                KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS);
+    }
+
+
+    /**
+     * Replaces the original traversal keys with new ones.
+     * After invoking this method you can advance focus out of the editor panel
+     * using only the TAB key instead of CTRL+TAB.
+     */
+    public void changeTraveralKeys()
+    {
+        m_editorPane.setFocusTraversalKeys(
+            KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS,
+                NEW_FORWARD_TRAVERSAL_KEYS);
+
+        m_editorPane.setFocusTraversalKeys(
+            KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS,
+                NEW_BACKWARD_TRAVERSAL_KEYS);
+    }
+
+
+    /**
+     * Restores the original traversal keys.
+     */
+    public void restoreTraveralKeys()
+    {
+        m_editorPane.setFocusTraversalKeys(
+            KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS, m_oldForwardKeys);
+
+        m_editorPane.setFocusTraversalKeys(
+            KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS, m_oldBackwardKeys);
+    }
+
+}
diff --git a/src/gr/zeus/ui/typesafe/SimpleTextAreaTraversal.java b/src/gr/zeus/ui/typesafe/SimpleTextAreaTraversal.java
new file mode 100644
index 0000000..a52d723
--- /dev/null
+++ b/src/gr/zeus/ui/typesafe/SimpleTextAreaTraversal.java
@@ -0,0 +1,136 @@
+/*
+ * SimpleTextAreaTraversal.java
+ *
+ * Copyright (c) 2004-2011 Gregory Kotsaftis
+ * gregkotsaftis at yahoo.com
+ * http://zeus-jscl.sourceforge.net/
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+package gr.zeus.ui.typesafe;
+
+import java.awt.AWTKeyStroke;
+import java.awt.KeyboardFocusManager;
+import java.awt.event.InputEvent;
+import java.awt.event.KeyEvent;
+import java.util.HashSet;
+import java.util.Set;
+import javax.swing.JTextArea;
+
+/**
+ * This class can be used to replace the default traversal keys for any
+ * JTextArea object. As you already know when advancing focus inside a form,
+ * using the TAB key, when you reach a text area you need to press CTRL+TAB
+ * in order to advance the focus to the next component. With this class you
+ * can address this issue and use the TAB key instead.
+ * <p>
+ * @author Gregory Kotsaftis
+ * @since 1.50
+ */
+public final class SimpleTextAreaTraversal {
+
+    /**
+     * The new forward traversal keys, TAB and CTRL+TAB.
+     */
+    private static final Set<AWTKeyStroke> NEW_FORWARD_TRAVERSAL_KEYS =
+                                                    new HashSet<AWTKeyStroke>();
+    static
+    {
+        NEW_FORWARD_TRAVERSAL_KEYS.add( AWTKeyStroke.getAWTKeyStroke(
+            KeyEvent.VK_TAB, 0) ); // use 0 to specify no modifiers
+
+        NEW_FORWARD_TRAVERSAL_KEYS.add( AWTKeyStroke.getAWTKeyStroke(
+            KeyEvent.VK_TAB, InputEvent.CTRL_DOWN_MASK) );
+    }
+
+    /**
+     * The new backward traversal keys, SHIFT+TAB and CTRL+SHIFT+TAB.
+     */
+    private static final Set<AWTKeyStroke> NEW_BACKWARD_TRAVERSAL_KEYS =
+                                                    new HashSet<AWTKeyStroke>();
+    static
+    {
+        NEW_BACKWARD_TRAVERSAL_KEYS.add( AWTKeyStroke.getAWTKeyStroke(
+            KeyEvent.VK_TAB, InputEvent.SHIFT_DOWN_MASK) );
+
+        NEW_BACKWARD_TRAVERSAL_KEYS.add( AWTKeyStroke.getAWTKeyStroke(
+            KeyEvent.VK_TAB,
+                InputEvent.SHIFT_DOWN_MASK | InputEvent.CTRL_DOWN_MASK) );
+    }
+
+    /**
+     * The JTextArea instance.
+     */
+    private JTextArea m_textArea = null;
+
+    /**
+     * A backup copy of the forward traversal keys.
+     */
+    private Set<AWTKeyStroke> m_oldForwardKeys = null;
+
+    /**
+     * A backup copy of the backward traversal keys.
+     */
+    private Set<AWTKeyStroke> m_oldBackwardKeys = null;
+
+
+    /**
+     * Constructor, Stores a backup copy of the original traversal keys
+     * of this text area.
+     * <p>
+     * @param ta    The text area object.
+     */
+    public SimpleTextAreaTraversal(JTextArea ta)
+    {
+        m_textArea = ta;
+
+        // store original keys
+        m_oldForwardKeys = m_textArea.getFocusTraversalKeys(
+                                KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS);
+        m_oldBackwardKeys = m_textArea.getFocusTraversalKeys(
+                                KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS);
+    }
+
+
+    /**
+     * Replaces the original traversal keys with new ones.
+     * After invoking this method you can advance focus out of the text area
+     * using only the TAB key instead of CTRL+TAB.
+     */
+    public void changeTraveralKeys()
+    {
+        m_textArea.setFocusTraversalKeys(
+            KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS,
+                NEW_FORWARD_TRAVERSAL_KEYS);
+
+        m_textArea.setFocusTraversalKeys(
+            KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS,
+                NEW_BACKWARD_TRAVERSAL_KEYS);
+    }
+
+
+    /**
+     * Restores the original traversal keys.
+     */
+    public void restoreTraveralKeys()
+    {
+        m_textArea.setFocusTraversalKeys(
+            KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS, m_oldForwardKeys);
+
+        m_textArea.setFocusTraversalKeys(
+            KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS, m_oldBackwardKeys);
+    }
+
+}
diff --git a/src/gr/zeus/ui/typesafe/SimpleTextPaneTraversal.java b/src/gr/zeus/ui/typesafe/SimpleTextPaneTraversal.java
new file mode 100644
index 0000000..0981c30
--- /dev/null
+++ b/src/gr/zeus/ui/typesafe/SimpleTextPaneTraversal.java
@@ -0,0 +1,136 @@
+/*
+ * SimpleTextPaneTraversal.java
+ *
+ * Copyright (c) 2004-2011 Gregory Kotsaftis
+ * gregkotsaftis at yahoo.com
+ * http://zeus-jscl.sourceforge.net/
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+package gr.zeus.ui.typesafe;
+
+import java.awt.AWTKeyStroke;
+import java.awt.KeyboardFocusManager;
+import java.awt.event.InputEvent;
+import java.awt.event.KeyEvent;
+import java.util.HashSet;
+import java.util.Set;
+import javax.swing.JTextPane;
+
+/**
+ * This class can be used to replace the default traversal keys for any
+ * JTextPane object. As you already know when advancing focus inside a form,
+ * using the TAB key, when you reach a text panel you need to press CTRL+TAB
+ * in order to advance the focus to the next component. With this class you
+ * can address this issue and use the TAB key instead.
+ * <p>
+ * @author Gregory Kotsaftis
+ * @since 1.50
+ */
+public final class SimpleTextPaneTraversal {
+
+    /**
+     * The new forward traversal keys, TAB and CTRL+TAB.
+     */
+    private static final Set<AWTKeyStroke> NEW_FORWARD_TRAVERSAL_KEYS =
+                                                    new HashSet<AWTKeyStroke>();
+    static
+    {
+        NEW_FORWARD_TRAVERSAL_KEYS.add( AWTKeyStroke.getAWTKeyStroke(
+            KeyEvent.VK_TAB, 0) ); // use 0 to specify no modifiers
+
+        NEW_FORWARD_TRAVERSAL_KEYS.add( AWTKeyStroke.getAWTKeyStroke(
+            KeyEvent.VK_TAB, InputEvent.CTRL_DOWN_MASK) );
+    }
+
+    /**
+     * The new backward traversal keys, SHIFT+TAB and CTRL+SHIFT+TAB.
+     */
+    private static final Set<AWTKeyStroke> NEW_BACKWARD_TRAVERSAL_KEYS =
+                                                    new HashSet<AWTKeyStroke>();
+    static
+    {
+        NEW_BACKWARD_TRAVERSAL_KEYS.add( AWTKeyStroke.getAWTKeyStroke(
+            KeyEvent.VK_TAB, InputEvent.SHIFT_DOWN_MASK) );
+
+        NEW_BACKWARD_TRAVERSAL_KEYS.add( AWTKeyStroke.getAWTKeyStroke(
+            KeyEvent.VK_TAB,
+                InputEvent.SHIFT_DOWN_MASK | InputEvent.CTRL_DOWN_MASK) );
+    }
+
+    /**
+     * The JTextPane instance.
+     */
+    private JTextPane m_textPane = null;
+
+    /**
+     * A backup copy of the forward traversal keys.
+     */
+    private Set<AWTKeyStroke> m_oldForwardKeys = null;
+
+    /**
+     * A backup copy of the backward traversal keys.
+     */
+    private Set<AWTKeyStroke> m_oldBackwardKeys = null;
+
+
+    /**
+     * Constructor, Stores a backup copy of the original traversal keys
+     * of this text panel.
+     * <p>
+     * @param tp    The text panel object.
+     */
+    public SimpleTextPaneTraversal(JTextPane tp)
+    {
+        m_textPane = tp;
+
+        // store original keys
+        m_oldForwardKeys = m_textPane.getFocusTraversalKeys(
+                                KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS);
+        m_oldBackwardKeys = m_textPane.getFocusTraversalKeys(
+                                KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS);
+    }
+
+
+    /**
+     * Replaces the original traversal keys with new ones.
+     * After invoking this method you can advance focus out of the text panel
+     * using only the TAB key instead of CTRL+TAB.
+     */
+    public void changeTraveralKeys()
+    {
+        m_textPane.setFocusTraversalKeys(
+            KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS,
+                NEW_FORWARD_TRAVERSAL_KEYS);
+
+        m_textPane.setFocusTraversalKeys(
+            KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS,
+                NEW_BACKWARD_TRAVERSAL_KEYS);
+    }
+
+
+    /**
+     * Restores the original traversal keys.
+     */
+    public void restoreTraveralKeys()
+    {
+        m_textPane.setFocusTraversalKeys(
+            KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS, m_oldForwardKeys);
+
+        m_textPane.setFocusTraversalKeys(
+            KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS, m_oldBackwardKeys);
+    }
+
+}
diff --git a/src/gr/zeus/ui/typesafe/SwingConfigurationManager.java b/src/gr/zeus/ui/typesafe/SwingConfigurationManager.java
new file mode 100644
index 0000000..6cfb081
--- /dev/null
+++ b/src/gr/zeus/ui/typesafe/SwingConfigurationManager.java
@@ -0,0 +1,479 @@
+/*
+ * SwingConfigurationManager.java
+ *
+ * Copyright (c) 2004-2011 Gregory Kotsaftis
+ * gregkotsaftis at yahoo.com
+ * http://zeus-jscl.sourceforge.net/
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+package gr.zeus.ui.typesafe;
+
+import java.awt.Component;
+import java.awt.Container;
+import java.io.FileInputStream;
+import java.text.SimpleDateFormat;
+import java.util.Enumeration;
+import java.util.Properties;
+import java.util.ResourceBundle;
+import javax.swing.JEditorPane;
+import javax.swing.JFormattedTextField;
+import javax.swing.JTextArea;
+import javax.swing.JTextPane;
+import javax.swing.text.AbstractDocument;
+import javax.swing.text.JTextComponent;
+
+/**
+ * This class is the central point of execution for all the classes inside
+ * <code>gr.zeus.ui.typesafe</code> package. Although each class can be used as
+ * standalone, the SwingConfigurationManager provides an easy way to configure
+ * multiple swing components within many forms via a property file. You can have
+ * as many instances of this class as you need, just keep in mind that each
+ * instance is attached to a single property file. The property file can also
+ * exist inside a ResourceBundle. Aside the constructors the main methods are:
+ * applyFocus(), initializes the focus for a container and configComponent(),
+ * that configures all the swing components. Property file format example:
+ * <br>customfocustraversalpolicy=true/false
+ * <br>(tagname).(param)=(value)
+ * <p>
+ * <b>Note: Due to the internal design of the JFormattedTextField, the
+ * TypeSafeTextDocumentFilter is not applied (see Sun's javadocs). Only the
+ * Verifier's functionality is applied.</b>
+ * <p>
+ * @author Gregory Kotsaftis
+ * @since 1.20
+ */
+public final class SwingConfigurationManager {
+
+    /**
+     * Constants used for the property file parsing.
+     */
+    // global
+    private static final String PROP_CUSTOMFOCUS = "customfocustraversalpolicy";
+    private static final String PROP_SIMPLETEXTAREATRAVERSAL =
+                                                    "simpletextareatraversal";
+    private static final String PROP_SIMPLETEXTPANETRAVERSAL =
+                                                    "simpletextpanetraversal";
+    private static final String PROP_SIMPLEEDITORPANETRAVERSAL =
+                                                    "simpleeditorpanetraversal";
+    // per component
+    private static final String PROP_CLASSTYPE = ".classtype";
+    private static final String PROP_SELECTALL = ".selectall";
+    private static final String PROP_TRIMSPACES = ".trimspaces";
+    private static final String PROP_UPPERCASE = ".uppercase";
+    private static final String PROP_LOWERCASE = ".lowercase";
+    private static final String PROP_MAXCHARS = ".maxchars";
+    private static final String PROP_MINCHARS = ".minchars";
+    private static final String PROP_VALIDCHARS = ".validchars";
+    private static final String PROP_INVALIDCHARS = ".invalidchars";
+    private static final String PROP_REPLACABLECHARS = ".replacablechars";
+    private static final String PROP_REPLACEDCHARS = ".replacedchars";
+    private static final String PROP_DEFAULTSONERROR = ".defaultsonerror";
+    private static final String PROP_DEFAULTNUM = ".defaultnum";
+    private static final String PROP_MAXNUM = ".maxnum";
+    private static final String PROP_MINNUM = ".minnum";
+    private static final String PROP_DATEPATTERN = ".datepattern";
+    private static final String PROP_DEFAULTDATE = ".defaultdate";
+
+    /**
+     * The properties.
+     */
+    private Properties m_props = new Properties();
+
+
+    /**
+     * Constructor, loads the property file from the specified pathname.
+     * <p>
+     * @param propertyFile      The pathname to the property file.
+     */
+    public SwingConfigurationManager(String propertyFile)
+    {
+        if( propertyFile==null )
+        {
+            System.err.println("Initialization failure for: " +
+                "SwingConfigurationManager; null filename!");
+            return;
+        }
+
+        FileInputStream fin = null;
+        try
+        {
+            fin = new FileInputStream( propertyFile );
+            m_props.load( fin );
+        }
+        catch(Exception e)
+        {
+            System.err.println("Initialization failure for: " +
+                "SwingConfigurationManager; Failed to load property file: " +
+                propertyFile + " ; " + e.getMessage());
+        }
+        finally
+        {
+            if( fin!=null )
+            {
+                try { fin.close(); } catch(Exception ignored) { }
+            }
+        }
+    }
+
+
+    /**
+     * Constructor, creates the properties from the specified ResourceBundle.
+     * <p>
+     * @param res               The resource bundle to load the properties from.
+     */
+    public SwingConfigurationManager(ResourceBundle res)
+    {
+        if( res==null )
+        {
+            System.err.println("Initialization failure for: " +
+                "SwingConfigurationManager; null ResourceBundle!");
+            return;
+        }
+
+        try
+        {
+            Enumeration<String> e = res.getKeys();
+            while( e.hasMoreElements() )
+            {
+                String key = e.nextElement();
+                m_props.setProperty(key, res.getString(key));
+            }
+        }
+        catch(Exception e)
+        {
+            System.err.println("Initialization failure for: " +
+                "SwingConfigurationManager; Failed reading ResourceBundle; " +
+                e.getMessage());
+        }
+    }
+
+
+    /**
+     * Apply focus policy to all the components in the array, depending on the
+     * component's placement within this array.
+     * Also changes the traversal keys for all JTextArea, JTextPane and
+     * JEditorPane within this array if the appropriate properties are set in
+     * the configuration file.
+     * <p>
+     * @param c                 The swing container, e.g. a JFrame.
+     * @param all               The array with the components.
+     */
+    public void applyFocus(Container c, Component[] all)
+    {
+        if( get_prop(PROP_CUSTOMFOCUS).equalsIgnoreCase("true") )
+        {
+            c.setFocusTraversalPolicy( new CustomFocusTraversalPolicy(all) );
+        }
+
+        if( all != null )
+        {
+            for(int i=0; i<all.length; i++)
+            {
+                if( all[i] instanceof JTextArea && get_prop(
+                    PROP_SIMPLETEXTAREATRAVERSAL).equalsIgnoreCase("true") )
+                {
+                    SimpleTextAreaTraversal trav =
+                        new SimpleTextAreaTraversal( (JTextArea)all[i] );
+                    trav.changeTraveralKeys();
+                }
+                else if(all[i] instanceof JTextPane && get_prop(
+                    PROP_SIMPLETEXTPANETRAVERSAL).equalsIgnoreCase("true") )
+                {
+                    SimpleTextPaneTraversal trav =
+                        new SimpleTextPaneTraversal( (JTextPane)all[i] );
+                    trav.changeTraveralKeys();
+                }
+                else if(all[i] instanceof JEditorPane && get_prop(
+                    PROP_SIMPLEEDITORPANETRAVERSAL).equalsIgnoreCase("true") )
+                {
+                    SimpleEditorPaneTraversal trav =
+                        new SimpleEditorPaneTraversal( (JEditorPane)all[i] );
+                    trav.changeTraveralKeys();
+                }
+            }
+        }
+    }
+
+
+    /**
+     * Apply a configuration to one or more components.
+     * <p>
+     * @param name              The tagname within the property file.
+     * @param all               One or more components to apply the
+     *                          configuration rule.
+     */
+    public void configComponent(String name, JTextComponent... all)
+        throws Exception
+    {
+        for(JTextComponent c : all)
+        {
+            config_component(name, c);
+        }
+    }
+
+
+    //--- PRIVATE HELPER METHODS ---
+
+
+    private String get_prop(String p)
+    {
+        String s = m_props.getProperty(p);
+        return( s!=null ? s : "" );
+    }
+
+
+    /**
+     * This is the actual component configuration method.
+     */
+    private void config_component(String name, JTextComponent c)
+        throws Exception
+    {
+        String cls = get_prop(name+PROP_CLASSTYPE);
+        if( cls.length() < 1 )
+        {
+            cls = "java.lang.String";
+        }
+
+        TypeSafeTextDocumentFilter tstdf = new TypeSafeTextDocumentFilter();
+        TypeSafeVerifier tsv = new TypeSafeVerifier( Class.forName(cls) );
+        SelectAllTextOnFocus satof = new SelectAllTextOnFocus();
+
+        /* TAKEN FROM JDK DOCUMENTATION:
+         * Warning: As the AbstractFormatter will typically install a
+         * DocumentFilter on the Document, and a NavigationFilter on the
+         * JFormattedTextField you should not install your own. If you do,
+         * you are likely to see odd behavior in that the editing policy of the
+         * AbstractFormatter will not be enforced.
+         */
+        if( !(c instanceof JFormattedTextField) )
+        {
+            ((AbstractDocument) c.getDocument()).setDocumentFilter( tstdf );
+        }
+
+        c.setInputVerifier( tsv );
+        c.addFocusListener( satof );
+
+        if( get_prop(name+PROP_SELECTALL).equalsIgnoreCase("true") )
+        {
+            satof.setEnabled( true );
+        }
+        else if( get_prop(name+PROP_SELECTALL).equalsIgnoreCase("false") )
+        {
+            satof.setEnabled( false );
+        }
+
+        if( get_prop(name+PROP_TRIMSPACES).equalsIgnoreCase("true") )
+        {
+            tsv.setTrimSpaces( true );
+        }
+        else if( get_prop(name+PROP_TRIMSPACES).equalsIgnoreCase("false") )
+        {
+            tsv.setTrimSpaces( false );
+        }
+
+        if( get_prop(name+PROP_UPPERCASE).equalsIgnoreCase("true") )
+        {
+            tstdf.setUpperCase( true );
+        }
+        else if( get_prop(name+PROP_UPPERCASE).equalsIgnoreCase("false") )
+        {
+            tstdf.setUpperCase( false );
+        }
+
+        if( get_prop(name+PROP_LOWERCASE).equalsIgnoreCase("true") )
+        {
+            tstdf.setLowerCase( true );
+        }
+        else if( get_prop(name+PROP_LOWERCASE).equalsIgnoreCase("false") )
+        {
+            tstdf.setLowerCase( false );
+        }
+
+        String s = get_prop(name+PROP_MAXCHARS);
+        if( s.length() > 0 )
+        {
+            int i = Integer.parseInt(s);
+            tstdf.setMaxChars( i );
+        }
+
+        s = get_prop(name+PROP_MINCHARS);
+        if( s.length() > 0 )
+        {
+            int i = Integer.parseInt(s);
+            tsv.setMinChars( i );
+        }
+
+        s = get_prop(name+PROP_VALIDCHARS);
+        if( s.length() > 0 )
+        {
+            tstdf.setValidChars( s );
+        }
+
+        s = get_prop(name+PROP_INVALIDCHARS);
+        if( s.length() > 0 )
+        {
+            tstdf.setInvalidChars(s);
+        }
+
+        s = get_prop(name+PROP_REPLACABLECHARS);
+        if( s.length() > 0 )
+        {
+            tstdf.setReplacableChars(s);
+        }
+
+        s = get_prop(name+PROP_REPLACEDCHARS);
+        if( s.length() > 0 )
+        {
+            tstdf.setReplacedChars(s);
+        }
+
+        if( get_prop(name+PROP_DEFAULTSONERROR).equalsIgnoreCase("true") )
+        {
+            tsv.setDefaultsOnError( true );
+        }
+        else if( get_prop(name+PROP_DEFAULTSONERROR).equalsIgnoreCase("false") )
+        {
+            tsv.setDefaultsOnError( false );
+        }
+
+        s = get_prop(name+PROP_DEFAULTNUM);
+        if( s.length() > 0 )
+        {
+            Class vclass = tsv.getVerifierClassType();
+            if( vclass.equals(String.class) )
+            {
+                /* ignored */
+            }
+            else if( vclass.equals(Byte.class) )
+            {
+                tsv.setDefaultByteValue( Byte.parseByte(s) );
+            }
+            else if( vclass.equals(Short.class) )
+            {
+                tsv.setDefaultShortValue( Short.parseShort(s) );
+            }
+            else if( vclass.equals(Integer.class) )
+            {
+                tsv.setDefaultIntegerValue( Integer.parseInt(s) );
+            }
+            else if( vclass.equals(Long.class) )
+            {
+                tsv.setDefaultLongValue( Long.parseLong(s) );
+            }
+            else if( vclass.equals(Float.class) )
+            {
+                tsv.setDefaultFloatValue( Float.parseFloat(s) );
+            }
+            else if( vclass.equals(Double.class) )
+            {
+                tsv.setDefaultDoubleValue( Double.parseDouble(s) );
+            }
+        }
+
+        s = get_prop(name+PROP_MAXNUM);
+        if( s.length() > 0 )
+        {
+            Class vclass = tsv.getVerifierClassType();
+            if( vclass.equals(String.class) )
+            {
+                /* ignored */
+            }
+            else if( vclass.equals(Byte.class) )
+            {
+                tsv.setMaxByteValue( Byte.parseByte(s) );
+            }
+            else if( vclass.equals(Short.class) )
+            {
+                tsv.setMaxShortValue( Short.parseShort(s) );
+            }
+            else if( vclass.equals(Integer.class) )
+            {
+                tsv.setMaxIntegerValue( Integer.parseInt(s) );
+            }
+            else if( vclass.equals(Long.class) )
+            {
+                tsv.setMaxLongValue( Long.parseLong(s) );
+            }
+            else if( vclass.equals(Float.class) )
+            {
+                tsv.setMaxFloatValue( Float.parseFloat(s) );
+            }
+            else if( vclass.equals(Double.class) )
+            {
+                tsv.setMaxDoubleValue( Double.parseDouble(s) );
+            }
+        }
+
+        s = get_prop(name+PROP_MINNUM);
+        if( s.length() > 0 )
+        {
+            Class vclass = tsv.getVerifierClassType();
+            if( vclass.equals(String.class) )
+            {
+                /* ignored */
+            }
+            else if( vclass.equals(Byte.class) )
+            {
+                tsv.setMinByteValue( Byte.parseByte(s) );
+            }
+            else if( vclass.equals(Short.class) )
+            {
+                tsv.setMinShortValue( Short.parseShort(s) );
+            }
+            else if( vclass.equals(Integer.class) )
+            {
+                tsv.setMinIntegerValue( Integer.parseInt(s) );
+            }
+            else if( vclass.equals(Long.class) )
+            {
+                tsv.setMinLongValue( Long.parseLong(s) );
+            }
+            else if( vclass.equals(Float.class) )
+            {
+                tsv.setMinFloatValue( Float.parseFloat(s) );
+            }
+            else if( vclass.equals(Double.class) )
+            {
+                tsv.setMinDoubleValue( Double.parseDouble(s) );
+            }
+        }
+
+        s = get_prop(name+PROP_DATEPATTERN);
+        if( s.length() > 0 )
+        {
+            tsv.setDatePattern( s );
+        }
+
+        s = get_prop(name+PROP_DEFAULTDATE);
+        if( s.length() > 0 )
+        {
+            try
+            {
+                SimpleDateFormat frm = new SimpleDateFormat(
+                                                        tsv.getDatePattern() );
+                java.util.Date dt = frm.parse( s );
+                tsv.setDefaultDateValue( dt );
+            }
+            catch(Exception e)
+            {
+                /* set nothing */
+                System.err.println("Configuration failure for: " +
+                    "SwingConfigurationManager; defaultdate is invalid!");
+            }
+        }
+    }
+
+}
diff --git a/src/gr/zeus/ui/typesafe/TypeSafeTextDocumentFilter.java b/src/gr/zeus/ui/typesafe/TypeSafeTextDocumentFilter.java
new file mode 100644
index 0000000..d075956
--- /dev/null
+++ b/src/gr/zeus/ui/typesafe/TypeSafeTextDocumentFilter.java
@@ -0,0 +1,410 @@
+/*
+ * TypeSafeTextDocumentFilter.java
+ *
+ * Copyright (c) 2004-2011 Gregory Kotsaftis
+ * gregkotsaftis at yahoo.com
+ * http://zeus-jscl.sourceforge.net/
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+package gr.zeus.ui.typesafe;
+
+import javax.swing.text.AttributeSet;
+import javax.swing.text.BadLocationException;
+import javax.swing.text.Document;
+import javax.swing.text.DocumentFilter;
+
+/**
+ * This class creates a custom filter for JTextComponents by extending the
+ * DocumentFilter. With this filter we achieve the following data validation
+ * within a field:
+ * <li>max characters</li>
+ * <li>uppercase/lowercase or not</li>
+ * <li>valid characters</li>
+ * <li>invalid characters</li>
+ * <li>replaceable/replaced character pairs</li>
+ * <p>
+ * @author Gregory Kotsaftis
+ * @since 1.20
+ */
+public final class TypeSafeTextDocumentFilter extends DocumentFilter {
+
+    // if you need more, give me a call...
+    public static final int     DEFAULT_MAXCHARS = 4*1024;
+
+    private static final boolean DEFAULT_UPPERCASE = false;
+    private static final boolean DEFAULT_LOWERCASE = false;
+    private static final String  DEFAULT_VALIDCHARS = "";
+    private static final String  DEFAULT_INVALIDCHARS = "";
+    private static final String  DEFAULT_REPLACABLECHARS = "";
+    private static final String  DEFAULT_REPLACEDCHARS = "";
+
+    /**
+     * Should we convert to uppercase?
+     */
+    private boolean m_upperCase = DEFAULT_UPPERCASE;
+
+    /**
+     * Should we convert to lowercase?
+     */
+    private boolean m_lowerCase = DEFAULT_LOWERCASE;
+
+    /**
+     * Max characters to be typed.
+     */
+    private int     m_maxChars = DEFAULT_MAXCHARS;
+
+    /**
+     * Only these characters will be accepted.
+     */
+    private String  m_validChars = DEFAULT_VALIDCHARS;
+
+    /**
+     * Characters not to be accepted.
+     */
+    private String  m_invalidChars = DEFAULT_INVALIDCHARS;
+
+    /**
+     *  Characters that must be replaced.
+     */
+    private String  m_replacableChars = DEFAULT_REPLACABLECHARS;
+
+    /**
+     * Characters to replace with.
+     */
+    private String  m_replacedChars = DEFAULT_REPLACEDCHARS;
+
+
+    /**
+     * Constructor.
+     */
+    public TypeSafeTextDocumentFilter()
+    {
+    }
+
+
+    /**
+     * Invoked prior to insertion of text into the specified Document.
+     * <p>
+     * @param fb            The FilterBypass.
+     * @param offset        The offset.
+     * @param text          The text to insert.
+     * @param attrs         The AttributeSet.
+     */
+    public void insertString(DocumentFilter.FilterBypass fb, int offset,
+            String text, AttributeSet attrs)
+        throws BadLocationException
+    {
+        replace(fb, offset, 0, text, attrs);
+    }
+
+
+    /**
+     * Invoked prior to removal of the specified region
+     * in the specified Document.
+     * <p>
+     * @param fb            The FilterBypass.
+     * @param offset        The offset.
+     * @param length        The length to remove.
+     */
+    public void remove(DocumentFilter.FilterBypass fb, int offset, int length)
+        throws BadLocationException
+    {
+        replace(fb, offset, length, "", null);
+    }
+
+
+    /**
+     * Invoked prior to replacing a region of text in the specified Document.
+     * <p>
+     * @param fb            The FilterBypass.
+     * @param offset        The offset.
+     * @param length        The length of the text.
+     * @param text          The text to replace.
+     * @param attrs         The AttributeSet.
+     */
+    public void replace(DocumentFilter.FilterBypass fb, int offset, int length,
+            String text, AttributeSet attrs)
+        throws BadLocationException
+    {
+        if( text==null )
+        {
+            text = "";
+        }
+
+        Document doc = fb.getDocument();
+        int currentLength = doc.getLength();
+        String currentContent = doc.getText(0, currentLength);
+        String before = currentContent.substring(0, offset);
+        String after = currentContent.substring(length+offset, currentLength);
+        String newValue = before + text + after;
+
+        /* here we go... */
+        // max limit
+        if( newValue.length() > m_maxChars )
+        {
+            throw new BadLocationException("MaxChars limit exceeded",
+                    newValue.length());
+        }
+
+        // valid characters
+        if( m_validChars.length() > 0 )
+        {
+            for(int i=0; i<text.length(); i++)
+            {
+                if( m_validChars.indexOf(text.charAt(i)) == -1 )
+                {
+                    throw new BadLocationException("Invalid character", i);
+                }
+            }
+        }
+
+        // invalid characters
+        if( m_invalidChars.length() > 0 )
+        {
+            for(int i=0; i<text.length(); i++)
+            {
+                if( m_invalidChars.indexOf(text.charAt(i)) != -1 )
+                {
+                    throw new BadLocationException("Invalid character", i);
+                }
+            }
+        }
+
+        // replacable characters
+        if( m_replacableChars.length() > 0 && m_replacedChars.length() > 0 &&
+            m_replacableChars.length() == m_replacedChars.length() )
+        {
+            char[] data = text.toCharArray();
+            for(int i=0; i<data.length; i++)
+            {
+                for(int j=0; j<m_replacableChars.length(); j++)
+                {
+                    if( data[i] == m_replacableChars.charAt(j) )
+                    {
+                        data[i] = m_replacedChars.charAt(j);
+                        break;
+                    }
+                }
+            }
+            text = String.copyValueOf(data);
+        }
+
+        text = (m_upperCase==true) ? text.toUpperCase() : text;
+        text = (m_lowerCase==true) ? text.toLowerCase() : text;
+
+        fb.replace(offset, length, text, attrs);
+    }
+
+
+    //--- ACCESS METHODS ---
+
+
+    /**
+     * Gets uppercase flag.
+     * <p>
+     * @return      true/false.
+     */
+    public boolean getUpperCase()
+    {
+        return( m_upperCase );
+    }
+
+
+    /**
+     * Sets uppercase flag.
+     * <p>
+     * @param f     true/false.
+     */
+    public void setUpperCase(boolean f)
+    {
+        m_upperCase = f;
+    }
+
+
+    /**
+     * Gets lowercase flag.
+     * <p>
+     * @return      true/false.
+     */
+    public boolean getLowerCase()
+    {
+        return( m_lowerCase );
+    }
+
+
+    /**
+     * Sets lowercase flag.
+     * <p>
+     * @param f     true/false.
+     */
+    public void setLowerCase(boolean f)
+    {
+        m_lowerCase = f;
+    }
+
+
+    /**
+     * Gets max characters allowed.
+     * <p>
+     * @return      maxChars.
+     */
+    public int getMaxChars()
+    {
+        return( m_maxChars );
+    }
+
+
+    /**
+     * Sets max characters allowed.
+     * <p>
+     * @param num   maxChars.
+     */
+    public void setMaxChars(int num)
+    {
+        // max limit
+        if( num <= 0 )
+        {
+            System.err.println("TypeSafeTextDocumentFilter: invalid maxChars(" +
+                    num + "), reverting to default(" + DEFAULT_MAXCHARS + ")");
+            m_maxChars = DEFAULT_MAXCHARS;
+        }
+        else
+        {
+            m_maxChars = num;
+        }
+    }
+
+
+    /**
+     * Gets valid characters.
+     * <p>
+     * @return      validChars.
+     */
+    public String getValidChars()
+    {
+        return( m_validChars );
+    }
+
+
+    /**
+     * Sets valid characters.
+     * <p>
+     * @param all   validChars.
+     */
+    public void setValidChars(String all)
+    {
+        if( all==null )
+        {
+            m_validChars = DEFAULT_VALIDCHARS;
+        }
+        else
+        {
+            m_validChars = all;
+        }
+    }
+
+
+    /**
+     * Gets invalid characters.
+     * <p>
+     * @return      invalidChars.
+     */
+    public String getInvalidChars()
+    {
+        return( m_invalidChars );
+    }
+
+
+    /**
+     * Sets invalid characters.
+     * <p>
+     * @param all   invalidChars.
+     */
+    public void setInvalidChars(String all)
+    {
+        if( all==null )
+        {
+            m_invalidChars = DEFAULT_INVALIDCHARS;
+        }
+        else
+        {
+            m_invalidChars = all;
+        }
+    }
+
+
+    /**
+     * Gets the replacable characters.
+     * <b>Must be used in conjuction with replaced characters.</b>
+     * <p>
+     * @return      replacableChars.
+     */
+    public String getReplacableChars()
+    {
+        return( m_replacableChars );
+    }
+
+
+    /**
+     * Sets replacable characters.
+     * <b>Must be used in conjuction with replaced characters.</b>
+     * <p>
+     * @param all   replacableChars.
+     */
+    public void setReplacableChars(String all)
+    {
+        if( all==null )
+        {
+            m_replacableChars = DEFAULT_REPLACABLECHARS;
+        }
+        else
+        {
+            m_replacableChars = all;
+        }
+    }
+
+
+    /**
+     * Gets the replaced characters.
+     * <b>Must be used in conjuction with replacable characters.</b>
+     * <p>
+     * @return      replacedChars.
+     */
+    public String getReplacedChars()
+    {
+        return( m_replacedChars );
+    }
+
+
+    /**
+     * Sets replaced characters.
+     * <b>Must be used in conjuction with replacable characters.</b>
+     * <p>
+     * @param all   replacedChars.
+     */
+    public void setReplacedChars(String all)
+    {
+        if( all==null )
+        {
+            m_replacedChars = DEFAULT_REPLACEDCHARS;
+        }
+        else
+        {
+            m_replacedChars = all;
+        }
+    }
+
+}
diff --git a/src/gr/zeus/ui/typesafe/TypeSafeVerifier.java b/src/gr/zeus/ui/typesafe/TypeSafeVerifier.java
new file mode 100644
index 0000000..4659e1d
--- /dev/null
+++ b/src/gr/zeus/ui/typesafe/TypeSafeVerifier.java
@@ -0,0 +1,992 @@
+/*
+ * TypeSafeVerifier.java
+ *
+ * Copyright (c) 2004-2011 Gregory Kotsaftis
+ * gregkotsaftis at yahoo.com
+ * http://zeus-jscl.sourceforge.net/
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+package gr.zeus.ui.typesafe;
+
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+import javax.swing.InputVerifier;
+import javax.swing.JComponent;
+import javax.swing.text.JTextComponent;
+
+/**
+ * This class creates a custom verifier for JTextComponents by extending the
+ * InputVerifier. With this verifier we achieve the following data validation
+ * within a field:
+ * <li>min characters</li>
+ * <li>trimspaces or not</li>
+ * <li>byte,short,int and long numbers parsing</li>
+ * <li>float and double numbers parsing</li>
+ * <li>date parsing</li>
+ * <p>
+ * @author Gregory Kotsaftis
+ * @since 1.20
+ */
+public final class TypeSafeVerifier extends InputVerifier {
+
+    private static final boolean        DEFAULT_TRIMSPACES = false;
+    private static final int            DEFAULT_MINCHARS = 0;
+    private static final java.util.Date DEFAULT_DATE =
+                                            Calendar.getInstance().getTime();
+    private static final String         DEFAULT_DATEPATTERN = "dd/MM/yyyy";
+
+    /**
+     * The class type of the field.
+     */
+    private Class m_classType = null;
+
+    /**
+     * Print a default value on invalid entry.
+     */
+    private boolean m_defaultsOnError = false;
+
+    /**
+     * Trim spaces flag.
+     */
+    private boolean m_trimSpaces = DEFAULT_TRIMSPACES;
+
+    /**
+     * Min characters for String fields.
+     */
+    private int m_minChars = DEFAULT_MINCHARS;
+
+    /**
+     * The date pattern for SimpleDateFormat.
+     */
+    private String m_datePattern = DEFAULT_DATEPATTERN;
+
+    /**
+     * The default date.
+     */
+    private java.util.Date m_defaultDateValue = DEFAULT_DATE;
+
+    /**
+     * The min byte value.
+     */
+    private byte m_minByteValue = Byte.MIN_VALUE;
+
+    /**
+     * The max byte value.
+     */
+    private byte m_maxByteValue = Byte.MAX_VALUE;
+
+    /**
+     * The default byte value.
+     */
+    private byte m_defaultByteValue = 0;
+
+    /**
+     * The min short value.
+     */
+    private short m_minShortValue = Short.MIN_VALUE;
+
+    /**
+     * The max short value.
+     */
+    private short m_maxShortValue = Short.MAX_VALUE;
+
+    /**
+     * The default short value.
+     */
+    private short m_defaultShortValue = 0;
+
+    /**
+     * The min integer value.
+     */
+    private int m_minIntegerValue = Integer.MIN_VALUE;
+
+    /**
+     * The max integer value.
+     */
+    private int m_maxIntegerValue = Integer.MAX_VALUE;
+
+    /**
+     * The default integer value.
+     */
+    private int m_defaultIntegerValue = 0;
+
+    /**
+     * The min long value.
+     */
+    private long m_minLongValue = Long.MIN_VALUE;
+
+    /**
+     * The max long value.
+     */
+    private long m_maxLongValue = Long.MAX_VALUE;
+
+    /**
+     * The default long value.
+     */
+    private long m_defaultLongValue = 0L;
+
+    /**
+     * The min float value.
+     */
+    private float m_minFloatValue = Float.MIN_VALUE;
+
+    /**
+     * The max float value.
+     */
+    private float m_maxFloatValue = Float.MAX_VALUE;
+
+    /**
+     * The default float value.
+     */
+    private float m_defaultFloatValue = 0.0F;
+
+    /**
+     * The min double value.
+     */
+    private double m_minDoubleValue = Double.MIN_VALUE;
+
+    /**
+     * The max double value.
+     */
+    private double m_maxDoubleValue = Double.MAX_VALUE;
+
+    /**
+     * The default double value.
+     */
+    private double m_defaultDoubleValue = 0.0D;
+
+
+    /**
+     * Constructor, define the class type of the field.
+     */
+    public TypeSafeVerifier(Class clsType)
+    {
+        m_classType = clsType;
+    }
+
+
+    /**
+     * Verify the component and return true in order to allow focus to progress
+     * to the next component or false to block the user inside this component
+     * until a valid input is entered.
+     * <p>
+     * @param input         The component to verify.
+     * <p>
+     * @return              true/false.
+     */
+    public boolean verify(JComponent input)
+    {
+        JTextComponent tx = null;
+        String text = "";
+
+        /* supported JComponents */
+        if( input instanceof JTextComponent )
+        {
+            tx = (JTextComponent) input;
+            text = tx.getText();
+
+            // trim spaces
+            if( m_trimSpaces )
+            {
+                tx.setText( text.trim() );
+                text = tx.getText();
+            }
+        }
+        else
+        {
+            System.err.println("TypeSafeVerifier: unsupported JComponent(" +
+                    input + ")");
+            // don't care for other types of JComponent!
+            return( true );
+        }
+
+        /* supported object types */
+        if( m_classType.equals(String.class) )
+        {
+            return( check_string(text) );
+        }
+        if( m_classType.equals(java.util.Date.class) )
+        {
+            return( check_date(text, tx) );
+        }
+        else if( m_classType.equals(Byte.class) )
+        {
+            return( check_byte(text, tx) );
+        }
+        else if( m_classType.equals(Short.class) )
+        {
+            return( check_short(text, tx) );
+        }
+        else if( m_classType.equals(Integer.class) )
+        {
+            return( check_int(text, tx) );
+        }
+        else if( m_classType.equals(Long.class) )
+        {
+            return( check_long(text, tx) );
+        }
+        else if( m_classType.equals(Float.class) )
+        {
+            return( check_float(text, tx) );
+        }
+        else if( m_classType.equals(Double.class) )
+        {
+            return( check_double(text, tx) );
+        }
+
+        System.err.println("TypeSafeVerifier: unsupported classType(" +
+                m_classType + ")");
+        // on any other case the JComponent should function without blocking!
+        return( true );
+    }
+
+
+    //--- ACCESS METHODS ---
+
+
+    /**
+     * Gets the class type.
+     * <b>no setXXX() method for this one,
+     * only set it through the constructor.</b>
+     * <p>
+     * @return      classType.
+     */
+    public Class getVerifierClassType()
+    {
+        return( m_classType );
+    }
+
+
+    /**
+     * Gets defaultsOnError status.
+     * <p>
+     * @return      true/false.
+     */
+    public boolean getDefaultsOnError()
+    {
+        return( m_defaultsOnError );
+    }
+
+
+    /**
+     * Sets defaultsOnError status.
+     * <p>
+     * @param f     true/false.
+     */
+    public void setDefaultsOnError(boolean f)
+    {
+        m_defaultsOnError = f;
+    }
+
+
+    /**
+     * Gets trimspaces status.
+     * <p>
+     * @return      true/false.
+     */
+    public boolean getTrimSpaces()
+    {
+        return( m_trimSpaces );
+    }
+
+
+    /**
+     * Sets trimspaces status.
+     * <p>
+     * @param f     true/false.
+     */
+    public void setTrimSpaces(boolean f)
+    {
+        m_trimSpaces = f;
+    }
+
+
+    /**
+     * Gets min characters allowed.
+     * <p>
+     * @return      minChars.
+     */
+    public int getMinChars()
+    {
+        return( m_minChars );
+    }
+
+
+    /**
+     * Sets min characters allowed.
+     * <p>
+     * @param v     minChars.
+     */
+    public void setMinChars(int v)
+    {
+        if( v >= 0 && v <= TypeSafeTextDocumentFilter.DEFAULT_MAXCHARS )
+        {
+            m_minChars = v;
+        }
+        else
+        {
+            System.err.println("TypeSafeVerifier: invalid minChars(" +
+                    v + "), reverting to default(" + DEFAULT_MINCHARS + ")");
+            m_minChars = DEFAULT_MINCHARS;
+        }
+    }
+
+
+    /**
+     * Gets the date pattern.
+     * <p>
+     * @return      datePattern.
+     */
+    public String getDatePattern()
+    {
+        return( m_datePattern );
+    }
+
+
+    /**
+     * Sets the date pattern.
+     * <p>
+     * @param v     datePattern.
+     */
+    public void setDatePattern(String v)
+    {
+        m_datePattern = v;
+    }
+
+
+    /**
+     * Gets the default date value.
+     * <p>
+     * @return      defaultDateValue.
+     */
+    public java.util.Date getDefaultDateValue()
+    {
+        return( m_defaultDateValue );
+    }
+
+
+    /**
+     * Sets the default date value.
+     * <p>
+     * @param v     defaultDateValue.
+     */
+    public void setDefaultDateValue(java.util.Date v)
+    {
+        m_defaultDateValue = v;
+    }
+
+
+    /**
+     * Gets the min byte value.
+     * <p>
+     * @return      minByteValue.
+     */
+    public byte getMinByteValue()
+    {
+        return( m_minByteValue );
+    }
+
+
+    /**
+     * Sets the min byte value.
+     * <p>
+     * @param v     minByteValue.
+     */
+    public void setMinByteValue(byte v)
+    {
+        m_minByteValue = v;
+    }
+
+
+    /**
+     * Gets the max byte value.
+     * <p>
+     * @return      maxByteValue.
+     */
+    public byte getMaxByteValue()
+    {
+        return( m_maxByteValue );
+    }
+
+
+    /**
+     * Sets the max byte value.
+     * <p>
+     * @param v     maxByteValue.
+     */
+    public void setMaxByteValue(byte v)
+    {
+        m_maxByteValue = v;
+    }
+
+
+    /**
+     * Gets the default byte value.
+     * <p>
+     * @return      defaultByteValue.
+     */
+    public byte getDefaultByteValue()
+    {
+        return( m_defaultByteValue );
+    }
+
+
+    /**
+     * Sets the default byte value.
+     * <p>
+     * @param v     defaultByteValue.
+     */
+    public void setDefaultByteValue(byte v)
+    {
+        m_defaultByteValue = v;
+    }
+
+
+    /**
+     * Gets the min short value.
+     * <p>
+     * @return      minShortValue.
+     */
+    public short getMinShortValue()
+    {
+        return( m_minShortValue );
+    }
+
+
+    /**
+     * Sets the min short value.
+     * <p>
+     * @param v     minShortValue.
+     */
+    public void setMinShortValue(short v)
+    {
+        m_minShortValue = v;
+    }
+
+
+    /**
+     * Gets the max short value.
+     * <p>
+     * @return      maxShortValue.
+     */
+    public short getMaxShortValue()
+    {
+        return( m_maxShortValue );
+    }
+
+
+    /**
+     * Sets the max short value.
+     * <p>
+     * @param v     maxShortValue.
+     */
+    public void setMaxShortValue(short v)
+    {
+        m_maxShortValue = v;
+    }
+
+
+    /**
+     * Gets the default short value.
+     * <p>
+     * @return      defaultShortValue.
+     */
+    public short getDefaultShortValue()
+    {
+        return( m_defaultShortValue );
+    }
+
+
+    /**
+     * Sets the default short value.
+     * <p>
+     * @param v     defaultShortValue.
+     */
+    public void setDefaultShortValue(short v)
+    {
+        m_defaultShortValue = v;
+    }
+
+
+    /**
+     * Gets the min integer value.
+     * <p>
+     * @return      minIntegerValue.
+     */
+    public int getMinIntegerValue()
+    {
+        return( m_minIntegerValue );
+    }
+
+
+    /**
+     * Sets the min integer value.
+     * <p>
+     * @param v     minIntegerValue.
+     */
+    public void setMinIntegerValue(int v)
+    {
+        m_minIntegerValue = v;
+    }
+
+
+    /**
+     * Gets the max integer value.
+     * <p>
+     * @return      maxIntegerValue.
+     */
+    public int getMaxIntegerValue()
+    {
+        return( m_maxIntegerValue );
+    }
+
+
+    /**
+     * Sets the max integer value.
+     * <p>
+     * @param v     maxIntegerValue.
+     */
+    public void setMaxIntegerValue(int v)
+    {
+        m_maxIntegerValue = v;
+    }
+
+
+    /**
+     * Gets the default integer value.
+     * <p>
+     * @return      defaultIntegerValue.
+     */
+    public int getDefaultIntegerValue()
+    {
+        return( m_defaultIntegerValue );
+    }
+
+
+    /**
+     * Sets the default integer value.
+     * <p>
+     * @param v     defaultIntegerValue.
+     */
+    public void setDefaultIntegerValue(int v)
+    {
+        m_defaultIntegerValue = v;
+    }
+
+
+    /**
+     * Gets the min long value.
+     * <p>
+     * @return      minLongValue.
+     */
+    public long getMinLongValue()
+    {
+        return( m_minLongValue );
+    }
+
+
+    /**
+     * Sets the min long value.
+     * <p>
+     * @param v     minLongValue.
+     */
+    public void setMinLongValue(long v)
+    {
+        m_minLongValue = v;
+    }
+
+
+    /**
+     * Gets the max long value.
+     * <p>
+     * @return      maxLongValue.
+     */
+    public long getMaxLongValue()
+    {
+        return( m_maxLongValue );
+    }
+
+
+    /**
+     * Sets the max long value.
+     * <p>
+     * @param v     maxLongValue.
+     */
+    public void setMaxLongValue(long v)
+    {
+        m_maxLongValue = v;
+    }
+
+
+    /**
+     * Gets the default long value.
+     * <p>
+     * @return      defaultLongValue.
+     */
+    public long getDefaultLongValue()
+    {
+        return( m_defaultLongValue );
+    }
+
+
+    /**
+     * Sets the default long value.
+     * <p>
+     * @param v     defaultLongValue.
+     */
+    public void setDefaultLongValue(long v)
+    {
+        m_defaultLongValue = v;
+    }
+
+
+    /**
+     * Gets the min float value.
+     * <p>
+     * @return      minFloatValue.
+     */
+    public float getMinFloatValue()
+    {
+        return( m_minFloatValue );
+    }
+
+
+    /**
+     * Sets the min float value.
+     * <p>
+     * @param v     minFloatValue.
+     */
+    public void setMinFloatValue(float v)
+    {
+        m_minFloatValue = v;
+    }
+
+
+    /**
+     * Gets the max float value.
+     * <p>
+     * @return      maxFloatValue.
+     */
+    public float getMaxFloatValue()
+    {
+        return( m_maxFloatValue );
+    }
+
+
+    /**
+     * Sets the max float value.
+     * <p>
+     * @param v     maxFloatValue.
+     */
+    public void setMaxFloatValue(float v)
+    {
+        m_maxFloatValue = v;
+    }
+
+
+    /**
+     * Gets the default float value.
+     * <p>
+     * @return      defaultFloatValue.
+     */
+    public float getDefaultFloatValue()
+    {
+        return( m_defaultFloatValue );
+    }
+
+
+    /**
+     * Sets the default float value.
+     * <p>
+     * @param v     defaultFloatValue.
+     */
+    public void setDefaultFloatValue(float v)
+    {
+        m_defaultFloatValue = v;
+    }
+
+
+    /**
+     * Gets the min double value.
+     * <p>
+     * @return      minDoubleValue.
+     */
+    public double getMinDoubleValue()
+    {
+        return( m_minDoubleValue );
+    }
+
+
+    /**
+     * Sets the min double value.
+     * <p>
+     * @param v     m_minDoubleValue.
+     */
+    public void setMinDoubleValue(double v)
+    {
+        m_minDoubleValue = v;
+    }
+
+
+    /**
+     * Gets the max double value.
+     * <p>
+     * @return      maxDoubleValue.
+     */
+    public double getMaxDoubleValue()
+    {
+        return( m_maxDoubleValue );
+    }
+
+
+    /**
+     * Sets the max double value.
+     * <p>
+     * @param v     maxDoubleValue.
+     */
+    public void setMaxDoubleValue(double v)
+    {
+        m_maxDoubleValue = v;
+    }
+
+
+    /**
+     * Gets the default double value.
+     * <p>
+     * @return      defaultDoubleValue.
+     */
+    public double getDefaultDoubleValue()
+    {
+        return( m_defaultDoubleValue );
+    }
+
+
+    /**
+     * Sets the default double value.
+     * <p>
+     * @param v     defaultDoubleValue.
+     */
+    public void setDefaultDoubleValue(double v)
+    {
+        m_defaultDoubleValue = v;
+    }
+
+
+    //--- PRIVATE HELPER METHODS ---
+
+
+    private boolean check_string(String text)
+    {
+        // min chars
+        if( text.length() >= m_minChars )
+        {
+            return( true );
+        }
+        else
+        {
+            return( false );
+        }
+    }
+
+
+    private boolean check_date(String text, JTextComponent tx)
+    {
+        SimpleDateFormat frm = null;
+        try
+        {
+            frm = new SimpleDateFormat( m_datePattern );
+            java.util.Date dt = frm.parse( text );
+            return( true );
+        }
+        catch(Exception e)
+        {
+            String s = "";
+            try
+            {
+                s = (frm!=null) ? frm.format( m_defaultDateValue ) : "";
+            }
+            catch(Exception ex)
+            {
+                System.err.println("TypeSafeVerifier: invalid datePattern(" +
+                        m_datePattern + ")");
+                s = "";
+            }
+            return( print_default(tx, (s!=null) ? s : "") );
+        }
+    }
+
+
+    private boolean check_byte(String text, JTextComponent tx)
+    {
+        try
+        {
+            Byte num = new Byte( Byte.parseByte(text) );
+            byte val = num.byteValue();
+
+            // check max, min values
+            if( val >= m_minByteValue && val <= m_maxByteValue )
+            {
+                return( true );
+            }
+            else
+            {
+                return( print_default(tx, String.valueOf(m_defaultByteValue)) );
+            }
+        }
+        catch(Exception e)
+        {
+            return( print_default(tx, String.valueOf(m_defaultByteValue)) );
+        }
+    }
+
+
+    private boolean check_short(String text, JTextComponent tx)
+    {
+        try
+        {
+            Short num = new Short( Short.parseShort(text) );
+            short val = num.shortValue();
+
+            // check max, min values
+            if( val >= m_minShortValue && val <= m_maxShortValue )
+            {
+                return( true );
+            }
+            else
+            {
+                return( print_default(tx,
+                            String.valueOf(m_defaultShortValue)) );
+            }
+        }
+        catch(Exception e)
+        {
+            return( print_default(tx, String.valueOf(m_defaultShortValue)) );
+        }
+    }
+
+
+    private boolean check_int(String text, JTextComponent tx)
+    {
+        try
+        {
+            Integer num = new Integer( Integer.parseInt(text) );
+            int val = num.intValue();
+
+            // check max, min values
+            if( val >= m_minIntegerValue && val <= m_maxIntegerValue )
+            {
+                return( true );
+            }
+            else
+            {
+                return( print_default(tx,
+                            String.valueOf(m_defaultIntegerValue)) );
+            }
+        }
+        catch(Exception e)
+        {
+            return( print_default(tx, String.valueOf(m_defaultIntegerValue)) );
+        }
+    }
+
+
+    private boolean check_long(String text, JTextComponent tx)
+    {
+        try
+        {
+            Long num = new Long( Long.parseLong(text) );
+            long val = num.longValue();
+
+            // check max, min values
+            if( val >= m_minLongValue && val <= m_maxLongValue )
+            {
+                return( true );
+            }
+            else
+            {
+                return( print_default(tx, String.valueOf(m_defaultLongValue)) );
+            }
+        }
+        catch(Exception e)
+        {
+            return( print_default(tx, String.valueOf(m_defaultLongValue)) );
+        }
+    }
+
+
+    private boolean check_float(String text, JTextComponent tx)
+    {
+        try
+        {
+            Float num = new Float( Float.parseFloat(text) );
+            float val = num.floatValue();
+
+            // check max, min values
+            if( val >= m_minFloatValue && val <= m_maxFloatValue )
+            {
+                return( true );
+            }
+            else
+            {
+                return( print_default(tx,
+                            String.valueOf(m_defaultFloatValue)) );
+            }
+        }
+        catch(Exception e)
+        {
+            return( print_default(tx, String.valueOf(m_defaultFloatValue)) );
+        }
+    }
+
+
+    private boolean check_double(String text, JTextComponent tx)
+    {
+        try
+        {
+            Double num = new Double( Double.parseDouble(text) );
+            double val = num.doubleValue();
+
+            // check max, min values
+            if( val >= m_minDoubleValue && val <= m_maxDoubleValue )
+            {
+                return( true );
+            }
+            else
+            {
+                return( print_default(tx,
+                            String.valueOf(m_defaultDoubleValue)) );
+            }
+        }
+        catch(Exception e)
+        {
+            return( print_default(tx, String.valueOf(m_defaultDoubleValue)) );
+        }
+    }
+
+
+    private boolean print_default(JTextComponent tx, String val)
+    {
+        if( !m_defaultsOnError )
+        {
+            return( false );
+        }
+
+        tx.setText( val );
+
+        return( true );
+    }
+
+}
diff --git a/src/gr/zeus/util/CurrentDateHelper.java b/src/gr/zeus/util/CurrentDateHelper.java
new file mode 100644
index 0000000..976f0a9
--- /dev/null
+++ b/src/gr/zeus/util/CurrentDateHelper.java
@@ -0,0 +1,121 @@
+/*
+ * CurrentDateHelper.java
+ *
+ * Copyright (c) 2004-2011 Gregory Kotsaftis
+ * gregkotsaftis at yahoo.com
+ * http://zeus-jscl.sourceforge.net/
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+package gr.zeus.util;
+
+import java.util.Calendar;
+
+/**
+ * Helper methods for current date and time.
+ * <p>
+ * @author Gregory Kotsaftis
+ * @since 1.0
+ */
+public final class CurrentDateHelper {
+
+    /**
+     * Gets the current date.
+     * <p>
+     * @return  The current date in <code>java.util.Date</code> object.
+     */
+    public static java.util.Date getCurrentDate()
+    {
+        return( Calendar.getInstance().getTime() );
+    }
+
+
+    /**
+     * Gets the current date in long number format.
+     * <p>
+     * @return  The current date in long number format.
+     */
+    public static long getCurrentDateLong()
+    {
+        return( Calendar.getInstance().getTimeInMillis() );
+    }
+
+
+    /**
+     * Gets the current year, e.g. 2004.
+     * <p>
+     * @return  The current year.
+     */
+    public static int getCurrentYear()
+    {
+        return( Calendar.getInstance().get(Calendar.YEAR) );
+    }
+
+
+    /**
+     * Gets the current month, JANUARY = 1,......,DECEMBER = 12.
+     * <p>
+     * @return  The current month.
+     */
+    public static int getCurrentMonth()
+    {
+        return( Calendar.getInstance().get(Calendar.MONTH) + 1 );
+    }
+
+
+    /**
+     * Gets the current day in the month (1...31).
+     * <p>
+     * @return  The current day in a month.
+     */
+    public static int getCurrentDay()
+    {
+        return( Calendar.getInstance().get(Calendar.DAY_OF_MONTH) );
+    }
+
+
+    /**
+     * Gets the current hour in 24 hours format.
+     * <p>
+     * @return  The current hour in 24 hours format.
+     */
+    public static int getCurrentHour()
+    {
+        return( Calendar.getInstance().get(Calendar.HOUR_OF_DAY) );
+    }
+
+
+    /**
+     * Gets the current minutes in hour.
+     * <p>
+     * @return  The current minutes in hour.
+     */
+    public static int getCurrentMinutes()
+    {
+        return( Calendar.getInstance().get(Calendar.MINUTE) );
+    }
+
+
+    /**
+     * Gets the current seconds in hour.
+     * <p>
+     * @return  The current seconds in hour.
+     */
+    public static int getCurrentSeconds()
+    {
+        return( Calendar.getInstance().get(Calendar.SECOND) );
+    }
+
+}
diff --git a/src/gr/zeus/util/DateHelper.java b/src/gr/zeus/util/DateHelper.java
new file mode 100644
index 0000000..065025a
--- /dev/null
+++ b/src/gr/zeus/util/DateHelper.java
@@ -0,0 +1,365 @@
+/*
+ * DateHelper.java
+ *
+ * Copyright (c) 2004-2011 Gregory Kotsaftis
+ * gregkotsaftis at yahoo.com
+ * http://zeus-jscl.sourceforge.net/
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+package gr.zeus.util;
+
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+
+/**
+ * Helper methods for <code>java.util.Date</code>
+ * <p>
+ * @author Gregory Kotsaftis
+ * @since 1.05
+ */
+public final class DateHelper {
+
+    /**
+     * Subtracts 'days' from a calendar taking into consideration
+     * the month, year and leap years change as well.
+     * <p>
+     * @param cal   The <code>Calendar</code>.
+     * @param days  The number of days.
+     */
+    public static void subDaysFromDate(Calendar cal, int days)
+    {
+        if( cal == null )
+            return;
+
+        while( days > 0 )
+        {
+            int day_of_year = cal.get(Calendar.DAY_OF_YEAR);
+            if( day_of_year==1 )
+            {
+                cal.roll(Calendar.YEAR, false);
+            }
+
+            cal.roll(Calendar.DAY_OF_YEAR, false);
+            days--;
+        }
+    }
+
+
+    /**
+     * Adds 'days' to a calendar taking into consideration
+     * the month, year and leap years change as well.
+     * <p>
+     * @param cal   The <code>Calendar</code>.
+     * @param days  The number of days.
+     */
+    public static void addDaysToDate(Calendar cal, int days)
+    {
+        if( cal == null )
+            return;
+
+        while( days > 0 )
+        {
+            int day_of_year = cal.get(Calendar.DAY_OF_YEAR);
+
+            int days_in_year = 365;
+            if( isLeapYear(cal.get(Calendar.YEAR)) )
+            {
+                days_in_year = 366;
+            }
+
+            if( day_of_year == days_in_year )
+            {
+                cal.roll(Calendar.YEAR, true);
+            }
+
+            cal.roll(Calendar.DAY_OF_YEAR, true);
+            days--;
+        }
+    }
+
+
+    /**
+     * Leap years occur in years exactly divisible by four,
+     * <i>except</i> those years ending in 00 are leap years
+     * only if they are divisible by 400.
+     * <p>
+     * @param year  The year number.
+     * <p>
+     * @return      <code>true</code> if it is a leap year.
+     */
+    public static boolean isLeapYear(int year)
+    {
+        boolean isLeapYear = false;
+
+        if( year > 0 && (year % 4) == 0 )
+        {
+            isLeapYear = true;
+
+            if( (year % 1000) == 0 ) // year is '00
+            {
+                if( (year % 400) != 0 )
+                {
+                    isLeapYear = false;
+                }
+            }
+        }
+
+        return( isLeapYear );
+    }
+
+
+    /**
+     * Parses a string into a date. String should be in
+     * <code>SimpleDateFormat</code> format.
+     * e.g. <code>java.util.Date d = parseDate(myDate, "dd/MM/yyyy");</code>
+     * <p>
+     * @param myDate    The date string.
+     * @param pattern   The pattern to use.
+     * <p>
+     * @return          The <code>Date</code>.
+     * <p>
+     * @throws ParseException
+     */
+    public static java.util.Date parseDate(String myDate, String pattern)
+        throws ParseException
+    {
+        if( myDate==null || pattern==null )
+            throw new ParseException("Null arguments!", 0);
+
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat( pattern );
+        java.util.Date uDate = simpleDateFormat.parse( myDate );
+
+        return( uDate );
+    }
+
+
+    /**
+     * Converts a date to a string based on a
+     * <code>SimpleDateFormat</code> pattern.
+     * e.g. <code>String s = dateToString(uDate, "dd/MM/yyyy");</code>
+     * <p>
+     * @param uDate     The date string.
+     * @param pattern   The pattern to use.
+     * <p>
+     * @return          The string of the date or <code>null</code> on error.
+     */
+    public static String dateToString(java.util.Date uDate, String pattern)
+    {
+        if( uDate==null || pattern==null )
+          return( null );
+
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat( pattern );
+        String myDate = simpleDateFormat.format( uDate );
+
+        return( myDate );
+    }
+
+
+    /**
+     * Checks a string to see if it contains a valid date in
+     * <code>SimpleDateFormat</code>.
+     * <p>
+     * @param dateToCheck   The date string to check.
+     * @param pattern       The pattern to use.
+     * <p>
+     * @return              <code>true</code> if it contains a valid date in
+     *                      <code>SimpleDateFormat</code>.
+     */
+    public static boolean isDateValid(String dateToCheck, String pattern)
+    {
+        if( dateToCheck==null || pattern==null )
+          return( false );
+
+        boolean result = false;
+        try
+        {
+            java.util.Date in = parseDate(dateToCheck, pattern);
+            String out = dateToString(in, pattern);
+            if( dateToCheck.compareTo(out) == 0 )
+            {
+                result = true;
+            }
+        }
+        catch(Exception e)
+        {
+            // result is already false
+        }
+
+        return( result );
+    }
+
+
+    /**
+     * Parses a string into a date. String should be in
+     * <code>SimpleDateFormat</code> format. Returns only the year of the date
+     * or -1 on error.
+     * <p>
+     * <b>NOTE:</b> only 'yyyy' is supported!
+     * <p>
+     * @param dateToCheck   The date string to check.
+     * @param pattern the   The pattern to use.
+     * <p>
+     * @return              The date or -1 on error.
+     */
+    public static int getYearForDate(String dateToCheck, String pattern)
+    {
+        if( isDateValid(dateToCheck, pattern) &&
+            dateToCheck.length()==pattern.length() )
+        {
+            int index = pattern.indexOf("yyyy"); // only "yyyy" is supported
+            if( index==-1 )
+            {
+                return( -1 );
+            }
+
+            String year_str = dateToCheck.substring(index, index+4);
+            int year = -1;
+            try
+            {
+                Integer i = new Integer( year_str );
+                year = i.intValue();
+            }
+            catch(Exception e)
+            {
+                // year is already -1
+            }
+
+            return( year );
+        }
+        else
+        {
+            return( -1 );
+        }
+    }
+
+
+    /**
+     * Parses a string into a date. String should be in
+     * <code>SimpleDateFormat</code> format. Returns only the month of the date
+     * or -1 on error.
+     * <p>
+     * <b>NOTE:</b> only 'MM' is supported!
+     * <p>
+     * @param dateToCheck   The date string to check.
+     * @param pattern       The pattern to use.
+     * <p>
+     * @return              The date or -1 on error.
+     */
+    public static int getMonthForDate(String dateToCheck, String pattern)
+    {
+        if( isDateValid(dateToCheck, pattern) &&
+            dateToCheck.length()==pattern.length() )
+        {
+            int index = pattern.indexOf("MM"); // only "MM" is supported
+            if( index==-1 )
+            {
+                return( -1 );
+            }
+
+            String month_str = dateToCheck.substring(index, index+2);
+            int month = -1;
+            try
+            {
+                Integer i = new Integer( month_str );
+                month = i.intValue();
+
+                // month starts from 0...11
+                month--;
+            }
+            catch(Exception e)
+            {
+                // month is already -1
+            }
+
+            return( month );
+        }
+        else
+        {
+            return( -1 );
+        }
+    }
+
+
+    /**
+     * Parses a string into a date. String should be in
+     * <code>SimpleDateFormat</code> format. Returns only the day of the date
+     * or -1 on error.
+     * <p>
+     * <b>NOTE:</b> only 'dd' is supported!
+     * <p>
+     * @param dateToCheck   The date string to check.
+     * @param pattern       The pattern to use.
+     * <p>
+     * @return              The day for the date or -1 on error.
+     */
+    public static int getDayForDate(String dateToCheck, String pattern)
+    {
+        if( isDateValid(dateToCheck, pattern) &&
+            dateToCheck.length()==pattern.length() )
+        {
+            int index = pattern.indexOf("dd"); // only "dd" is supported
+            if( index==-1 )
+            {
+                return( -1 );
+            }
+
+            String day_str = dateToCheck.substring(index, index+2);
+            int day = -1;
+            try
+            {
+                Integer i = new Integer( day_str );
+                day = i.intValue();
+            }
+            catch(Exception e)
+            {
+                // day is already -1
+            }
+
+            return( day );
+        }
+        else
+        {
+            return( -1 );
+        }
+    }
+
+
+    /**
+     * Gets the name of a day based on a date and current locale.
+     * <p>
+     * @param dt        The date.
+     * @param fullname  Fetch complete day's name or the short one.
+     * <p>
+     * @return          A string with the name of the day.
+     */
+    public static String getDayNameForDate(java.util.Date dt, boolean fullname)
+    {
+        // For formatting, if the number of pattern letters is 4 or more,
+        // the full form is used; otherwise a short or abbreviated form is used
+        // if available. (extracted from Sun's Javadoc)
+        final String fullFormat = "EEEE";
+        final String smallFormat = "EEE";
+
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat(
+                fullname ? fullFormat : smallFormat );
+
+        String dayName = simpleDateFormat.format( dt );
+
+        return( dayName );
+    }
+
+}
diff --git a/src/gr/zeus/util/GUIUtils.java b/src/gr/zeus/util/GUIUtils.java
new file mode 100644
index 0000000..d507efe
--- /dev/null
+++ b/src/gr/zeus/util/GUIUtils.java
@@ -0,0 +1,118 @@
+/*
+ * GUIUtils.java
+ *
+ * Copyright (c) 2004-2011 Gregory Kotsaftis
+ * gregkotsaftis at yahoo.com
+ * http://zeus-jscl.sourceforge.net/
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+package gr.zeus.util;
+
+import java.awt.Dimension;
+import java.awt.EventQueue;
+import java.awt.Frame;
+import java.awt.Toolkit;
+import java.awt.Window;
+import javax.swing.JFrame;
+import javax.swing.table.TableColumn;
+
+/**
+ * GUI Helper class, contains static methods that are used all the time.
+ * <p>
+ * @author Gregory Kotsaftis
+ * @since 1.0
+ */
+public final class GUIUtils {
+
+    /**
+     * Execute a task on EDT and block's it, until the task is finished.
+     * If there is an exception, it is converted to a RuntimeException.
+     *
+     * @param task The process to run.
+     */
+    public static void invokeAndWait(final Runnable task)
+    {
+        if( EventQueue.isDispatchThread() )
+        {
+            task.run();
+        }
+        else
+        {
+            try
+            {
+                EventQueue.invokeAndWait( task );
+            }
+            catch(Exception ex)
+            {
+                throw new RuntimeException(ex.getMessage(), ex);
+            }
+        }
+    }
+
+    /**
+     * Centers a window on screen.
+     * <p>
+     * @param w     The window to center.
+     */
+    public static void centerOnScreen(Window w)
+    {
+        Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
+        Dimension splashSize = w.getPreferredSize();
+        w.setLocation(screenSize.width / 2 - (splashSize.width / 2),
+                      screenSize.height / 2 - (splashSize.height / 2));
+    }
+
+
+    /**
+     * Maximizes a JFrame, just like the 'maximize window' button does.
+     * <p>
+     * @param f     The frame to maximize.
+     */
+    public static void maximizeJFrame(JFrame f)
+    {
+        f.setExtendedState( Frame.MAXIMIZED_BOTH );
+    }
+
+
+    /**
+     * Locks a Jtable's column width with 'pixels' size.
+     * <p>
+     * @param tc    	The table column.
+     * @param pixels 	The desired pixels.
+     */
+    public static void lockJTableColumnWidth(TableColumn tc, int pixels)
+    {
+        if( tc!=null )
+        {
+            tc.setMinWidth( pixels );
+            tc.setMaxWidth( pixels );
+            tc.setPreferredWidth( pixels );
+            tc.setResizable( false );
+        }
+    }
+
+
+    /**
+     * Hides a specific column of a JTable.
+     * <p>
+     * @param tc    	The table column.
+     */
+    public static void hideJTableColumn(TableColumn tc)
+    {
+        lockJTableColumnWidth(tc, 0);
+    }
+
+}
diff --git a/src/gr/zeus/util/IOHelper.java b/src/gr/zeus/util/IOHelper.java
new file mode 100644
index 0000000..b6194aa
--- /dev/null
+++ b/src/gr/zeus/util/IOHelper.java
@@ -0,0 +1,562 @@
+/*
+ * IOHelper.java
+ *
+ * Copyright (c) 2004-2011 Gregory Kotsaftis
+ * gregkotsaftis at yahoo.com
+ * http://zeus-jscl.sourceforge.net/
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+package gr.zeus.util;
+
+import java.io.BufferedReader;
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.FileReader;
+import java.io.FileWriter;
+import java.io.IOException;
+
+/**
+ * IO helper methods.
+ * <p>
+ * @author Gregory Kotsaftis
+ * @since 1.0
+ */
+public final class IOHelper {
+
+    /**
+     * Buffer size.
+     */
+    private static final int IO_BUF_SIZE = 1024 * 32;
+
+    /**
+     * Path separator for Windows OS.
+     */
+    private static final String BACKSLASH = "\\";
+
+    /**
+     * Path separator for Unix OS.
+     */
+    private static final String SLASH = "/";
+
+
+    /**
+     * Creates the complete directory structure for a complete
+     * <b>FOLDER</b> pathname.
+     * <p>
+     * @param folder    The folder pathname.
+     * <p>
+     * @return          The folder pathname.
+     * <p>
+     * @throws IOException
+     */
+    public static String createDirectoryTreeForFolder(String folder)
+        throws IOException
+    {
+        if( folder==null )
+        {
+            throw new IOException("The requested folder is null!");
+        }
+
+        if( !folder.endsWith( BACKSLASH ) && !folder.endsWith( SLASH ) )
+        {
+            folder += SLASH;
+        }
+
+        File f = new File( folder );
+        if( !f.exists() )
+        {
+            boolean result = f.mkdirs(); // build all required directories!
+            if( result==false )
+            {
+                throw new IOException("Cannot create folder structure for: " +
+                    folder);
+            }
+        }
+        else if( !f.isDirectory() )
+        {
+            throw new IOException(
+                "Invalid directory/Cannot create directory: " + folder);
+        }
+        else
+        {
+            /* the folder already exists */
+        }
+
+        return( folder );
+    }
+
+
+    /**
+     * Creates the complete directory structure for a complete
+     * <b>FILE</b> pathname.
+     * <p>
+     * @param file  The file pathname.
+     * <p>
+     * @throws IOException
+     */
+    public static void createDirectoryTreeForFile(String file)
+        throws IOException
+    {
+        if( file==null )
+        {
+            throw new IOException("null file requested!");
+        }
+
+        String path = null;
+        int sep1 = file.lastIndexOf( BACKSLASH );
+        int sep2 = file.lastIndexOf( SLASH );
+        if( sep1==-1 && sep2==-1 )
+        {
+            path = file;
+        }
+        else if( sep1!=-1 )
+        {
+            path = file.substring(0, sep1);
+        }
+        else if( sep2!=-1 )
+        {
+            path = file.substring(0, sep2);
+        }
+        else
+        {
+            // impossible
+            throw new IOException("Cannot create folder structure for: " +
+                file);
+        }
+
+        createDirectoryTreeForFolder( path );
+    }
+
+
+    /**
+     * Determines if two filename paths refer to the same file.
+     * <p>
+     * @param pathname1     The first pathname.
+     * @param pathname2     The second pathname.
+     * <p>
+     * @return              <code>true</code> if two filename paths refer
+     *                      to the same file.
+     * <p>
+     * @throws IOException
+     * <p>
+     * @see <a href="http://javaalmanac.com/egs/java.io/Canonical.html">
+     * http://javaalmanac.com/egs/java.io/Canonical.html</a>
+     */
+    public static boolean isTheSameFile(String pathname1, String pathname2)
+        throws IOException
+    {
+        File file1 = new File( pathname1 );
+        File file2 = new File( pathname2 );
+
+        // Normalize the paths
+        file1 = file1.getCanonicalFile();
+        file2 = file2.getCanonicalFile();
+
+        return( file1.equals(file2) );
+    }
+
+
+    /**
+     * Determines if a file or directory exists.
+     * <p>
+     * @param pathname  The file or directory pathname.
+     * <p>
+     * @return          <code>true</code> if it exists.
+     */
+    public static boolean fileOrDirectoryExists(String pathname)
+    {
+        File f = new File(pathname);
+        return( f.exists() );
+    }
+
+
+    /**
+     * Determines if a file exists.
+     * <p>
+     * @param pathname  The file to check.
+     * <p>
+     * @return          <code>true</code> if it exists.
+     */
+    public static boolean isFile(String pathname)
+    {
+        File f = new File( pathname );
+        return( f.isFile() );
+    }
+
+
+    /**
+     * Determines if a directory exists.
+     * <p>
+     * @param pathname  The directory pathname.
+     * <p>
+     * @return          <code>true</code> if it exists.
+     */
+    public static boolean isDirectory(String pathname)
+    {
+        File f = new File( pathname );
+        return( f.isDirectory() );
+    }
+
+
+    /**
+     * Saves a string to a text file.
+     * <p>
+     * @param pathname  The pathname to the file.
+     * @param data      The string to be saved.
+     * @param append    <code>true</code> if the string is to be appended
+     *                  to the end of existing text.
+     * <p>
+     * @throws IOException
+     */
+    public static void saveTxtFile(String pathname, String data, boolean append)
+        throws IOException
+    {
+        saveTxtFile(new File(pathname), data, append);
+    }
+
+
+    /**
+     * Saves a string to a text file.
+     * <p>
+     * @param f         The file.
+     * @param data      The string to save.
+     * @param append    <code>true</code> if the string is to be appended
+     *                  to the end of existing text.
+     * <p>
+     * @throws IOException
+     */
+    public static void saveTxtFile(File f, String data, boolean append)
+        throws IOException
+    {
+        BufferedWriter out = null;
+
+        try
+        {
+            out = new BufferedWriter( new FileWriter(f, append) );
+            out.write( data );
+        }
+        catch(IOException e)
+        {
+            throw( e );
+        }
+        finally
+        {
+            if( out!=null )
+            {
+                try
+                {
+                    out.close();
+                }
+                catch(IOException ex)
+                {
+                    //throw( ex );
+                    ex.printStackTrace();
+                }
+            }
+        }
+    }
+
+
+    /**
+     * Reads a text file into a string.
+     * <p>
+     * @param pathname  The path to the text file.
+     * <p>
+     * @return          The text in the file.
+     * <p>
+     * @throws IOException
+     */
+    public static String readTxtFile(String pathname)
+        throws IOException
+    {
+        return( readTxtFile( new File(pathname) ) );
+    }
+
+
+    /**
+     * Reads a text file into a string.
+     * <p>
+     * @param f     The file.
+     * <p>
+     * @return      The text in the file.
+     * <p>
+     * @throws IOException
+     */
+    public static String readTxtFile(File f)
+        throws IOException
+    {
+        BufferedReader in = null;
+        StringBuilder strBuf = new StringBuilder();
+        try
+        {
+            in = new BufferedReader( new FileReader(f) );
+            String str = null;
+            while( (str = in.readLine()) != null )
+            {
+                strBuf.append( str );
+                strBuf.append( "\n" );
+            }
+        }
+        catch(IOException e)
+        {
+            throw( e );
+        }
+        finally
+        {
+            if( in!=null )
+            {
+                try
+                {
+                    in.close();
+                }
+                catch(IOException ex)
+                {
+                    //throw( ex );
+                    ex.printStackTrace();
+                }
+            }
+        }
+
+        return( strBuf.toString() );
+    }
+
+
+    /**
+     * Deletes all files and subdirectories under <i>dir</i>.
+     * Returns <code>true</code> if all deletions were successful.
+     * If a deletion fails, the method stops attempting
+     * to delete and returns <code>false</code>.
+     * <p>
+     * @param dir   The directory to delete from.
+     * <p>
+     * @return      <code>true</code> if all deletions were successful.
+     */
+    public static boolean deleteDirectory(File dir)
+    {
+        if( dir.isDirectory() )
+        {
+            String[] children = dir.list();
+            for(int i=0; i<children.length; i++)
+            {
+                boolean success = deleteDirectory( new File(dir, children[i]) );
+                if( !success )
+                {
+                    return( false );
+                }
+            }
+        }
+
+        // This is a file or an empty directory, so just delete it
+        return( dir.delete() );
+    }
+
+
+    /**
+     * Deletes all files and subdirectories under <i>dir</i>.
+     * Returns <code>true</code> if all deletions were successful.
+     * If a deletion fails, the method stops attempting
+     * to delete and returns <code>false</code>.
+     * <p>
+     * @param pathname  The path to the directory.
+     * <p>
+     * @return          <code>true</code> if all deletions were successful.
+     */
+    public static boolean deleteDirectory(String pathname)
+    {
+        return( deleteDirectory( new File(pathname) ) );
+    }
+
+
+    /**
+     * Deletes a file.
+     * <p>
+     * @param pathname  The pathname to the file.
+     * <p>
+     * @return          <code>true</code> if successful.
+     */
+    public static boolean deleteFile(String pathname)
+    {
+        File f = new File( pathname );
+        return( f.delete() );
+    }
+
+
+    /**
+     * Copies a file to another location/file.
+     * <p>
+     * @param fromName      The file to copy from.
+     * @param toName        The file to copy to.
+     * @param overwrite     <code>true</code> to overwrite if the file already
+     *                      exists.
+     * <p>
+     * @return              <code>true</code> if file copied or
+     *                      <code>false</code> if not (possibly the file existed
+     *                      and 'overwrite' was not set).
+     * <p>
+     * @throws IOException
+     */
+    public static boolean copyFile(String fromName, String toName,
+            boolean overwrite)
+        throws IOException
+    {
+        if( fromName==null )
+            throw new IOException("source filename is null!");
+
+        if( toName==null )
+            throw new IOException("destination filename is null!");
+
+        File fromFile = new File(fromName);
+        File toFile = new File(toName);
+
+        return( copyFile(fromFile, toFile, overwrite) );
+    }
+
+
+    /**
+     * Copies a file to another location/file.
+     * <p>
+     * @param fromFile      The file to copy from.
+     * @param toFile        The file to copy to.
+     * @param overwrite     <code>true</code> to overwrite if the file already
+     *                      exists.
+     * <p>
+     * @return              <code>true</code> if file copied or
+     *                      <code>false</code> if not (possibly the file existed
+     *                      and 'overwrite' was not set).
+     * <p>
+     * @throws IOException
+     */
+    public static boolean copyFile(File fromFile, File toFile,
+            boolean overwrite)
+        throws IOException
+    {
+        if( fromFile==null )
+            throw new IOException("source file is null!");
+
+        if( toFile==null )
+            throw new IOException("destination file is null!");
+
+        // make sure that source file exists
+        if( !fromFile.exists() )
+            throw new IOException("no such source file: " +
+                fromFile.getAbsoluteFile());
+
+        if( !fromFile.isFile() )
+            throw new IOException("can't copy directory: " +
+                fromFile.getAbsoluteFile());
+
+        if( !fromFile.canRead() )
+            throw new IOException("source file is unreadable: " +
+                fromFile.getAbsoluteFile());
+
+        if( toFile.isDirectory() )
+            toFile = new File(toFile, fromFile.getName());
+
+        if( toFile.exists() )
+        {
+            if( !toFile.canWrite() )
+                throw new IOException("destination file is unwriteable: " +
+                    toFile.getAbsoluteFile());
+
+            // check if we should overwrite it
+            if( !overwrite )
+            {
+            	  return( false );
+            }
+        }
+        else
+        {
+            // if the file dosn't exist, check if the directory exists and is
+            // writeable. If getParent() returns null, then the directory is the
+            // current dir. so look up the user.dir system property to find out
+            // what that is.
+            String parent = toFile.getParent(); // the destination dir
+            if( parent==null ) // if none use the current dir
+                parent = System.getProperty("user.dir");
+
+            File dir = new File( parent ); // convert it to a file
+            if( !dir.exists() )
+                throw new IOException("destination directory doesn't exist: "
+                    + parent);
+
+            if( dir.isFile() )
+                throw new IOException("destination is not a directory: "
+                    + parent);
+
+            if( !dir.canWrite() )
+                throw new IOException("destination directory is unwritable: "
+                    + parent);
+        }
+
+        // if we've gotten this far then everything is ok
+        // so we copy the file one buffer of bytes at a time
+        FileInputStream from = null; // Stream to read from source
+        FileOutputStream to = null; // Stream to write to destination
+        try
+        {
+            from = new FileInputStream(fromFile); // Create input stream
+            to = new FileOutputStream(toFile); // Create output stream
+            byte[] buffer = new byte[IO_BUF_SIZE]; // to hold file data
+            int bytesRead;
+
+            // read a chunk of bytes into the buffer then write them out
+            // looping until we reach the EOF (when read() returns -1)
+            // Note the combination of assignment and comparison in this
+            // while loop. This is a common I/O programming idiom.
+            while( (bytesRead = from.read(buffer)) != -1 ) // read until EOF
+            {
+                to.write(buffer, 0, bytesRead); // write
+            }
+        }
+        catch(IOException e)
+        {
+            throw( e );
+        }
+        finally
+        {
+            if( from!=null )
+            {
+                try
+                {
+                    from.close();
+                }
+                catch(IOException ex)
+                {
+                    //throw( ex );
+                    ex.printStackTrace();
+                }
+            }
+
+            if( to!=null )
+            {
+                try
+                {
+                    to.close();
+                }
+                catch(IOException ex)
+                {
+                    //throw( ex );
+                    ex.printStackTrace();
+                }
+            }
+        }
+
+        return( true );
+    }
+
+}
diff --git a/src/gr/zeus/util/SimpleTimerMillis.java b/src/gr/zeus/util/SimpleTimerMillis.java
new file mode 100644
index 0000000..5592fa8
--- /dev/null
+++ b/src/gr/zeus/util/SimpleTimerMillis.java
@@ -0,0 +1,91 @@
+/*
+ * SimpleTimerMillis.java
+ *
+ * Copyright (c) 2004-2011 Gregory Kotsaftis
+ * gregkotsaftis at yahoo.com
+ * http://zeus-jscl.sourceforge.net/
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+package gr.zeus.util;
+
+/**
+ * A very simple timer for timing java method calls and other processes.
+ * Millisecond precision.
+ * <p>
+ * @author Gregory Kotsaftis
+ * @since 1.05
+ */
+public final class SimpleTimerMillis {
+
+    /**
+     * Used to time the calls.
+     */
+    private long m_millis = 0L;
+
+
+    /**
+     * Constructor.
+     */
+    public SimpleTimerMillis()
+    {
+    }
+
+
+    /**
+     * Resets the timer.
+     */
+    public synchronized void reset()
+    {
+        m_millis = 0L;
+    }
+
+
+    /**
+     * Starts timing a job.
+     */
+    public synchronized void start()
+    {
+        // Get current time in milliseconds
+        m_millis = System.currentTimeMillis();
+    }
+
+
+    /**
+     * Get elapsed time in milliseconds.
+     * <p>
+     * @return  The elapsed time in milliseconds.
+     */
+    public long elapsedMillis()
+    {
+        // Get elapsed time in milliseconds
+        long elapsed = System.currentTimeMillis() - m_millis;
+        return( elapsed );
+    }
+
+
+    /**
+     * Get elapsed time in seconds.
+     * <p>
+     * @return  The elapsed time in seconds.
+     */
+    public double elapsedSeconds()
+    {
+        // Get elapsed time in seconds
+        double elapsed = (double) elapsedMillis() / 1000.0;
+        return( elapsed );
+    }
+
+}
diff --git a/src/gr/zeus/util/SimpleTimerNanos.java b/src/gr/zeus/util/SimpleTimerNanos.java
new file mode 100644
index 0000000..d0a7aa0
--- /dev/null
+++ b/src/gr/zeus/util/SimpleTimerNanos.java
@@ -0,0 +1,103 @@
+/*
+ * SimpleTimerNanos.java
+ *
+ * Copyright (c) 2004-2011 Gregory Kotsaftis
+ * gregkotsaftis at yahoo.com
+ * http://zeus-jscl.sourceforge.net/
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+package gr.zeus.util;
+
+/**
+ * A very simple timer for timing java method calls and other processes
+ * (JDK 5, nanos implementation).
+ * <p>
+ * @author Gregory Kotsaftis
+ * @since 1.06
+ */
+public final class SimpleTimerNanos {
+
+    /**
+     * Used to get the call time.
+     */
+    private long m_nanos = 0L;
+
+
+    /**
+     * Constructor.
+     */
+    public SimpleTimerNanos()
+    {
+    }
+
+
+    /**
+     * Resets the timer.
+     */
+    public synchronized void reset()
+    {
+        m_nanos = 0L;
+    }
+
+
+    /**
+     * Starts timing a job.
+     */
+    public synchronized void start()
+    {
+        // Get current time in milliseconds
+        m_nanos = System.nanoTime();
+    }
+
+
+    /**
+     * Gets elapsed time in nanoseconds.
+     * <p>
+     * @return  The elapsed time in nanoseconds.
+     */
+    public long elapsedNanos()
+    {
+        // Get elapsed time in nanoseconds
+        long elapsed = System.nanoTime() - m_nanos;
+        return( elapsed );
+    }
+
+
+    /**
+     * Gets elapsed time in milliseconds.
+     * <p>
+     * @return  The elapsed time in milliseconds.
+     */
+    public double elapsedMillis()
+    {
+        double elapsed = (double) elapsedNanos() / 1000000.0;
+        return( elapsed );
+    }
+
+
+    /**
+     * Gets elapsed time in seconds.
+     * <p>
+     * @return  The elapsed time in seconds.
+     */
+    public double elapsedSeconds()
+    {
+        // Get elapsed time in seconds
+        double elapsed = elapsedMillis() / 1000.0;
+        return( elapsed );
+    }
+
+}
diff --git a/src/gr/zeus/util/SimpleUIDGenerator.java b/src/gr/zeus/util/SimpleUIDGenerator.java
new file mode 100644
index 0000000..69cd737
--- /dev/null
+++ b/src/gr/zeus/util/SimpleUIDGenerator.java
@@ -0,0 +1,50 @@
+/*
+ * SimpleUIDGenerator.java
+ *
+ * Copyright (c) 2004-2011 Gregory Kotsaftis
+ * gregkotsaftis at yahoo.com
+ * http://zeus-jscl.sourceforge.net/
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+package gr.zeus.util;
+
+/**
+ * Generates unique ID's within this JVM.
+ * <p>
+ * @author Gregory Kotsaftis
+ * @since 1.0
+ */
+public final class SimpleUIDGenerator {
+
+    /**
+     * Used to generate the unique ID.
+     */
+    private static long m_nextUID = 0;
+
+
+    /**
+     * Always returns a unique number > 0 for the existing VM.
+     * This method IS thread safe.
+     * <p>
+     * @return  A unique number > 0 for the existing VM.
+     */
+    public static synchronized long getNextUID()
+    {
+        m_nextUID++;
+        return( m_nextUID );
+    }
+
+}
diff --git a/test/console.bat b/test/console.bat
new file mode 100644
index 0000000..aea3133
--- /dev/null
+++ b/test/console.bat
@@ -0,0 +1,6 @@
+ at echo off
+cls
+
+java -cp zeus-jscl-test.jar gr.zeus.tests.JConsoleTester
+
+pause
diff --git a/test/console_panel.bat b/test/console_panel.bat
new file mode 100644
index 0000000..95c5b81
--- /dev/null
+++ b/test/console_panel.bat
@@ -0,0 +1,6 @@
+ at echo off
+cls
+
+java -cp zeus-jscl-test.jar gr.zeus.tests.JConsolePaneTester
+
+pause
diff --git a/test/messages.bat b/test/messages.bat
new file mode 100644
index 0000000..517f100
--- /dev/null
+++ b/test/messages.bat
@@ -0,0 +1,6 @@
+ at echo off
+cls
+
+java -cp zeus-jscl-test.jar gr.zeus.tests.JMessageTester
+
+pause
diff --git a/test/mygui.properties b/test/mygui.properties
new file mode 100644
index 0000000..6e2723c
--- /dev/null
+++ b/test/mygui.properties
@@ -0,0 +1,76 @@
+# global parameter
+customfocustraversalpolicy=true
+simpletextareatraversal=true
+simpletextpanetraversal=true
+simpleeditorpanetraversal=true
+
+
+### ALL POSSIBLE TAGS ###
+#tagname.selectall=
+#tagname.classtype=
+#tagname.trimspaces=
+#tagname.uppercase=
+#tagname.lowercase=
+#tagname.maxchars=
+#tagname.minchars=
+#tagname.validchars=
+#tagname.invalidchars=
+#tagname.replacablechars=
+#tagname.replacedchars=
+#tagname.defaultsonerror=
+#tagname.defaultnum=
+#tagname.minnum=
+#tagname.maxnum=
+#tagname.datepattern=
+#tagname.defaultdate=
+###
+
+
+# name_field
+name_field.selectall=true
+name_field.classtype=java.lang.String
+name_field.trimspaces=true
+name_field.uppercase=true
+name_field.maxchars=16
+name_field.minchars=0
+name_field.invalidchars=1234567890`~!@#$%^&*()-_=+[{]};:'",<.>/?
+name_field.defaultsonerror=false
+
+
+# date_field
+date_field.classtype=java.util.Date
+date_field.defaultsonerror=true
+date_field.datepattern=dd/MM/yyyy
+
+
+# age_field
+age_field.classtype=java.lang.Integer
+age_field.trimspaces=true
+age_field.validchars=1234567890
+age_field.defaultsonerror=true
+age_field.defaultnum=32
+age_field.minnum=16
+age_field.maxnum=95
+
+
+# real_number
+real_number.classtype=java.lang.Float
+real_number.trimspaces=true
+real_number.validchars=1234567890.,
+real_number.replacablechars=,
+real_number.replacedchars=.
+real_number.defaultsonerror=true
+real_number.defaultnum=0.0
+
+
+# general_text
+general_text.selectall=false
+general_text.classtype=java.lang.String
+general_text.trimspaces=true
+general_text.lowercase=false
+general_text.maxchars=256
+general_text.minchars=0
+general_text.validchars=
+general_text.invalidchars=
+general_text.replacablechars=1234567890
+general_text.replacedchars=qwertyuiop
diff --git a/test/outlook_toolbar.bat b/test/outlook_toolbar.bat
new file mode 100644
index 0000000..080fcbc
--- /dev/null
+++ b/test/outlook_toolbar.bat
@@ -0,0 +1,6 @@
+ at echo off
+cls
+
+java -cp zeus-jscl-test.jar gr.zeus.tests.JToolBarTester
+
+pause
diff --git a/test/splash.bat b/test/splash.bat
new file mode 100644
index 0000000..b0a093f
--- /dev/null
+++ b/test/splash.bat
@@ -0,0 +1,6 @@
+ at echo off
+cls
+
+java -cp zeus-jscl-test.jar gr.zeus.tests.JSplashTester
+
+pause
diff --git a/test/table.bat b/test/table.bat
new file mode 100644
index 0000000..0c6d994
--- /dev/null
+++ b/test/table.bat
@@ -0,0 +1,6 @@
+ at echo off
+cls
+
+java -cp zeus-jscl-test.jar gr.zeus.tests.JTableTester
+
+pause
diff --git a/test/test.bat b/test/test.bat
new file mode 100644
index 0000000..aceb684
--- /dev/null
+++ b/test/test.bat
@@ -0,0 +1,6 @@
+ at echo off
+cls
+
+java -jar zeus-jscl-test.jar
+
+pause
diff --git a/test/type_safe.bat b/test/type_safe.bat
new file mode 100644
index 0000000..ae2d94c
--- /dev/null
+++ b/test/type_safe.bat
@@ -0,0 +1,6 @@
+ at echo off
+cls
+
+java -cp zeus-jscl-test.jar gr.zeus.tests.JTypeSafeTester
+
+pause
diff --git a/test/window_manager.bat b/test/window_manager.bat
new file mode 100644
index 0000000..d86a91d
--- /dev/null
+++ b/test/window_manager.bat
@@ -0,0 +1,6 @@
+ at echo off
+cls
+
+java -cp zeus-jscl-test.jar gr.zeus.tests.JDesktopTester
+
+pause
diff --git a/test/zeus-jscl-test.jar b/test/zeus-jscl-test.jar
new file mode 100644
index 0000000..18e4699
Binary files /dev/null and b/test/zeus-jscl-test.jar differ
diff --git a/todo.txt b/todo.txt
new file mode 100644
index 0000000..359431c
--- /dev/null
+++ b/todo.txt
@@ -0,0 +1,43 @@
+General
+-------
+
+- change license to LGPLv3
+- right click menu for basic textcomponents actions, e.g. copy/cut/paste
+- New SwingWorker
+- Binding helper
+- web site for zeus
+
+
+TypeSafe
+--------
+
+- tooltips for textfields...
+- examples for editable JComboboxes e.g. (JTextField) comboBox.getEditor().getEditorComponent()
+
+
+AutoResizeTableColumns
+----------------------
+
+- option to take into consideration the header ico if any
+- BUG: model.fireTableDataChanged(), should be fired each time we add or remove rows
+      (strange bug with single row tables; don't know if it occurs always!).
+
+
+JSplash
+-------
+
+- add more methods for image loading e.g. from file
+- change colors for progress bar
+
+
+WindowManager
+-------------
+
+- internalazation
+- find free icons to use
+
+
+JMessage
+--------
+
+- change arrow icon

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-java/libzeus-jscl-java.git



More information about the pkg-java-commits mailing list