================================================================================

  Zeus (zeus-jscl), a free Java Swing Components Library

  Version 1.70

  by Gregory Kotsaftis
  gregkotsaftis@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@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.
