CHANGES 2.3 2013-09-26 * update JTcl version to 2.6.0 * Fixed MrPerister DbObjBuilder for mapping BLOB types to byte[] * Fixed ImageReference object to construct an object from an java.awt.Image object * Documentation updates 2.2 2012-10-17 * Updated JTcl version to 2.4.0 * Updated H2 version to 1.3.168 * Updated MrPersister library to 3.8.4, fixed mapping problem for SQL datatype BOOLEAN type to object Boolean. 2.1 2012-02-27 * Updated JTcl version to 2.2.0 2.0 2011-12-20 * JTcl replaces Jacl as the Tcl interpreter (http://jtcl.kenai.com). JTcl provides nearly full compatibility with Tcl 8.4, and includes Tcllib. Due to JTcl requirements, Aejaks now requires Java 1.5 **INCOMPATIBILE WITH PREVIOUS VERSION** * Echo2 and Echopoint libraries now built from github community sources, includes a number of fixes including IE 9 compatibility fix. * MrPersister library updated to 3.8.3, fixed 'updateOptimistic'. * Window object method 'getClientProperties' returns a list of browser-dependent property names and values. Example: array set props [. getClientProperties] log "display size: $props(-screenWidth)x$props(-screenHeight)" Note that client properties are browser dependent. * H2 database upgraded to 1.3.162 **INCOMPATIBILE WITH PREVIOUS VERSION** The H2 database format has been changed from the prior included H2 version (1.1.111), so a database upgrade is required. If you do not have any production data in the default 'test' database, simply remove the existing database: rm ~/test.*.db (Unix/Linux/MacOSX) del "%HOMEPATH%\test.*.db" (Windows) To upgrade the 'test' database and any of your production H2 databases, see: http://h2database.com/html/tutorial.html#upgrade_backup_restore For example, using the h2.jar from Aejaks-1.3, make a sql script dump of your existing databse with the previous H2 jar: java -cp aejaks-1.3/h2/h2.jar org.h2.tools.Script -url jdbc:h2:~/test -user sa -script test.sql Remove the old database: rm ~/test.*.db (Unix/Linux/MacOSX) del "%HOMEPATH%\test.*.db" (Windows) Now restore the database using the new h2.jar: java -cp aejaks-2.0/h2/h2.jar org.h2.tools.RunScript -url jdbc:h2:~/test -user sa -script test.sql If you do not wish to upgrade the H2 database engine, simple copy h2.jar from the aejaks-1.3 distribution: cp aejaks-1.3/h2/h2.jar aejaks-2.0/h2/h2.jar (Unix/Linux/MacOSX) copy aejaks-1.3\h2\h2.jar aejaks-2.0\h2\h2.jar (Windows) 1.3 2010-10-06 * Added {get,set}TitleForeground and {set,set}TitleBackground for the ExpandableSection widget, along with corresponding properties. * WarMachine now can include JAR files in application war. Fix bug when running in 'remote' mode when going to a previous wizard panel. * . exitApp added '-server' and '-app' optional arguments to exit using a separate servlet. * Include AejaksLogoutServlet to invalidate an existing session, as an alternate means of exiting a script. Include servlet definition in web.xml and warMachine.tcl. * Fix typos in hyde.tcl. * Fix EchopointNG ComboBox java code to avoid backslash quoting whitespace. * aejaks_entryBox library proc changed to pass the name of the button pressed along with the entry value **INCOMPATIBILE WITH PREVIOUS VERSION** * Current version of Echo2 compiled from Echo2 SVN sources. 1.2 2009-04-22 * Fixed aejaks_console.tcl: puts and flush now work with real files, added font selection menu. * Log message if interp cannot be created (patch by Matt Avery) * Table cell/header renderers now use their own interp eval TclEvent to avoid grabbing the interp resultObject. * MrPersister package now includes 'updateOptimistic' method, use getColumnLabel() instead of getColumnName() for Generic and Map, bump version of mrpersister package to 1.1, library to 3.8.2. DbObjForm option '-dbAction updateOptimistic' added; view mode displays a TextField instead of a SelectField. Timestamp or datetime SQL types are now mapped into java.sql.Timestamp objects for DbObjBuilder and DbObjForm. * Updated Echo2 to version 2.1.1+ (latest from SVN), removed TextComponent patch (fixed in upstream code.) * Updated H2 to version 1.1.111. * Tcljava reflectobject path tries to not leak objects anymore, pending official patch. Add patch to dispose of TclClassLoader references. * Better cleanup when application is exited and session timeout. Jacl interp is disposed in a cleaner manner, reducing dangling references to other objects. * Fix 'Pack slaves' and 'Pack children' for root window queries. * aejaks_messageBox now includes option -msgType DirectHtml * warMachine now allows static web content to be included in a War. 1.1 2008-09-23 * Fixed Janino so that empyty directories reported by Java's "java.ext.dirs" property don't cause a NPE in Janino. This fix allows Hyde and MrPersister to function in Java 1.6, which reports non-existent directories as the ext paths. * Fixed 'update' and 'updatePrepared' methods in MrPersister objects PersistenceManager and JdbcDao. * Remove old hydecache.tcl and hyde compile directories on startup. * Force run.sh to output Jetty stdout to the current tty 1.0 2008-09-15 * Eliminate interp lock, all interp access goes through the Jacl Notifier. This avoids lock contention completely, applications should have better response. * Implement Apache Log4J logging system, replacing simple console output logging. Runtime property AEJAKS_DEBUG is replaced with AEJAKS_LOG_CONFIG_FILE to specify a Log4J XML configuration file. Thanks to Matt Avery and Dennis Lima for initial patches. * Added Window method 'log', so that applications can log to the Log4J logger, and as 'Log' command. * Added aejaks library procedures: aejaks_messageBox, aejaks_entryBox, aejaks_chooseColor, aejaks_chooseDate, aejaks_getFile. These are modal dialog boxes for common uses. * Converted all Nuvola icons from 32bit RGBA to 8bit RGBA. This change allows IE6 to display the icons with transparency, and reduces the overall size of the aejaks.war by 30%. tools/mkpng8.sh script does all the work, with 'pngquant' from: http://www.libpng.org/pub/png/apps/pngquant.html * Cleaned up widget_tour demo, each widget demo is now in a separate file in samles/widget.d, other tweaks. * Pack 'destroy' command now removes and destroys child widgets, removes the destroyed widget from its parent container. Pack 'destroywindow' is a special command that destroys child widgets, but does not remove from the parent containe, primarily used by the Echo2 window close event. * Pack 'slaves' command now returns only children that are currently packed in the parent, Pack 'children' command returns all child widgets (as previous Pack slave command did.) (POTENTIAL INCOMPATIBILITY) * Pack now checks that layout data options are valid for the parent container, and raises error when options are not valid for the parent container type. * Refresh Echo2 and Echo2Extras from latest SVN sources, 2.1RC5 as of 2008-08-31 * Jacl patches applied: remove Interp finalizer, allow resource files to be opened as a channel when prefixed with 'resource:/', Notifier stability patch, re-create java object patch. * Echo2 patch applied: Allow pasting into TextComponents to be recognized without subsequent keystrokes. * Copied icons used by library commands into private directory, allows images/icons to be removed if desired. * mkAppWar.sh now replaced by Jacl script, callable either via Unix shell or Windows batch command, or as an Aejaks applications in local or remote mode. Aejaks mode warMachineGui.tcl uses sample wizard controller. * Standard bgerror dialog, displays error and stack trace info. Window object now has methods to get script filename and bgerror display flag. * ContainerEx now uses literal values for -position, -mouseCursor, and -scrollBarPolicy. (POTENTIAL INCOMPATIBILITY) * Added RichTextArea widget, with additional -editToolBar property to turn tool bar on/off. Sample added to widget_tour. * Added 'hyde' library packages. Allows easy integration` with Java. Compiles Java classes on-the-fly and loads them into the JVM. * Added 'mrpersister' library packages. Allows easy database access and interfacing with Java. MrPersister library jar added, based on version 3.8.1. mrpersister package can build data transfer objects, and display standard forms for select/insert/update/delete. Uses 'hyde' to build database objects based on table definitions. * Ported TclTutor program from Tcl/Tk to Aejaks. * Include H2 lightweight database engine for use with sample programs; can also be used for general development/production. H2 Client jar file included in library. * Added 'Aejaks Rolodex' sample program to demostrae use of MrPersister package. * Added 'greenscreen' style for a nice green-on-black retro look. ------------------------------------------------------------------------------- 0.7 2008-02-22 * Widgets from EchopointNG ContainerEx (allows absolute positioning) ContentPaneEx ( " " " ) Strut (simple spacer component) DisplayLayoutData (positioning info) ScrollableDisplayLayoutData ( " " ) * Table header and cell renderers, allow custom widgets to be defined for headers and cells. Tables now expand gracefully with null data when -rows or -columns are increased. * Strip leading "::" from widget names during Pack. Pack updated for new container widgets and layout data. * SplitPaneLayoutData -overflow option now takes a symbolic name instead of integer (POTENTIAL INCOMPATIBILITY) * Added ". setFocusedComponent $wid" to Window object, allows focus to be set on a widget. * Added "BrowserCommand setwaitms $ms" to set the interval before displaying the "Please wait" message box. * New widget_tour.tcl demos for Table renderers, absolute positioning for new containers. Check out the "analog clock" in the 'ContainersEx' demo!! * Updated docs. * Updated Echo2, Extras, EchopointNG libraries to latest versions. ------------------------------------------------------------------------------- 0.6 2007-09-25 * Widgets from EchopointNG AbleProperties ComboBox (includes type-ahead autocomplete) DirectHtml (arbitrary HTML in a DIV) ExpandableSection GroupBox ProgressBar Slider TextFieldEx (includes client-side regexp validation) * Pack destroy "." - will now exit application * Pack now sets a default renderId if not already set. This is helpful in indentifing widgets at runtime for Selenium, etc. * Top Window "." now has -content property, make sure contentobject is valid before setting the window _obj_, setContent now derefs its arg * New BrowserCommand options: javascript eval, javascript include, print from EchopointNG * Updated widget_tour for new widgets, re-organized some existing widgets into existing categories. * Download command delete option is now a real flag (-delete), not a boolean positional parameter (POTENTIAL INCOMPATIBILITY) * Fix bug in Extent, % now properly recognized as an Extent unit * tools/mkAejak.tcl - re-organization of widget customization code. mkAejakCustom.tcl is broken apart from one massive file into separate files for each widget * Added EchopointNG javadocs * Docs for new widgets, doc updates * Added Clock and NumberGuess sample apps by Geoffrey Wu, and include Echo2 Tutorial java application 'NumberGuess' to compare * Overhaul aejaks_console app, replace output listbox with a TextArea widget, splitpane now resizes output and input areas, SelectField to limit output lines in console, checkbox to turn server output logging on/off, puts during eval now goes to a buffer and is flushed on eval complete to reduce processing time on each line. * Jacl updated to 1.4.1 release * Rebuild Echo2 from lastest SVN Rev 863 * EchopointNG from lastest CVS soruces, apply manual patch to echopointng so that ProgressBar property -progressStringPainted does not throw exception * Java runtime code make sure exitApp and sessionDestroyed only get run once move listener element before servlet to avoid cranky parser validation messages ignore possible null pointer in interpDispose, interp may have already exited. * Packaging - include jetty servlet jar in -src distribution, so that 'ant' will rebuild without having to download any extra libs. ------------------------------------------------------------------------------- 0.5 2007-07-06 * Widgets from Echo2 Extras library CalendarSelect ColorSelect DropDownMenu Menu UploadSelect AccordionPane BorderPane DragSource MenuBarPane TabPane TransitionPane * Widget from Echo2 FileTransfer library UploadSelect Download comamnd * Widget from Echo2 Chart library ChartDisplay * Nuvola icon set (3,700+ icons !!!!) 200+ action icons in 16x16, 22x22, 32x32, and 48x48 250+ app icons in 16x16, 22x22, 32x32, 48x48, 64x64, and 128x128 40+ device icons in 16x16, 22x22, 32x32, 48x48, 64x64, and 128x128 60+ filesystem icons in 16x16, 22x22, 32x32, 48x48, 64x64, and 128x128 110+ mimetype icons in 16x16, 22x22, 32x32, 48x48, 64x64, and 128x128 These icons add about 15mb to the war file, worth it in my opinion. David Vignoni is the artist. The Nuvola icon set is released as LGPL. * TaskQueue command - asynch windowing updates * BrowserCommand command - redirect, open new window, set cookies * Pack command - added 'destroy' and 'parent' sub commands. * argv - now has access to cookies, context path, request uri, servlet name, request parameters * widget_tour.tcl - demos for new widgets * aejaks_console.tcl - localhost also recognized if in IPv6, smarter use of 'puts' command. * updated Echo2, Jacl libraries from source repositories * recompile everthing with Java 1.4 * AEJAKS_SYSTEM_ENCODING property - used to specify a system encoding, if needed for localized string literals in scripts * mkAppWar.sh - script to build a standalone war file, with embedded script(s). * New distribution file AejaksDemo.war has widget_tour.tcl built-in, just drop in your servlet engine deploy directory and access http://localhost/AejaksDemo/ * Java runtime code Access to interpreter now done through a lock, due to the fact that Echo2 components cannot be updated in Jacl's event processing thread. Tcl 'after' events are processed in the Jacl event service thread, while Echo2 callback's are handled in the servlet thread. Doug Lea's concurrent classes are used. Script file(s) now can run from the war file, prefix the AEJAKS_LIB_PATH with 'resource:/app/' Potential security bug fixed, AEJAKS_SCRIPT_NAME is now stripped of any path components. File upload & download support. Drag and drop support. TaskQueue support - to process Tcl 'after' commands that modify Echo2 components. Additional info made available in argv: cookies name-value list, request parameters name-value list, context, request uri. * Docs/website added 'note' to some object references. Up-to-date docs on all widgets, functionality. * Other Removed clcms source, which was GPL. This just helps to make the Aejaks distribution cleaner by not having any GPL taint. clcms was never used in Aejaks, but only used to generated the website. run.sh - document all runtime parameters. src/deploy/web.xml - move AEJAKS_SCRIPT_NAME as a child of the servlet element. ------------------------------------------------------------------------------- 0.4 2007-01-01 * Initial public release