1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215
|
================================================================================
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.
|