6 lines
151 B
Groovy
Raw Normal View History

Finished version 2.1. Updated .gitignore, excluding vim temp filesn and build directories. Promoted version number in application.properties. Switched to SLF4J for logging from LOG4J. Switched to jdb-util SmartConfig for configuration from java.util.Properties Added plugin architecture: * Plugins implement com.jdbernard.timestamper.gui.plugin.TimestamperPlugin * Provides five hooks into the application: - onStartup: called as the aaplication is starting. - onExit: called as the application is exiting. - onTimelineLoad: called when the application loads a timeline. - onNewTask: called when the user creates a new task. - onDeleteTask: called when the user deletes a task. * Plugins must be on the classpath to be enabled. * A new timestamperrc property allows the user to specify a plugin directory. That directory and any JAR files in it will be added to the classpath used to load plugins. This property is 'plugin.dir' and may contain the path, If no directory exists at that path, one will be created. The default path is './plugins'. * A new timestamperrc property allows the user to specify which plugins to load when the application is started: 'plugin.classes'. It expects a comma-seperated list of plugin class names. The default value is ''. * Two default plugins have been created: - 'com.jdbernard.timestamper.gui.plugin.HookLogger'. This plugin logs an info message every time one of the plugin hooks is called. - 'com.jdbernard.timestamper.gui.plugin.XMPPStatusUpdater'. This plugin updates a user's XMPP (Jabber) presence with their current task each time a new task is entered. Various other changes on TimeStamperMainController: * Timeline loading is now broken out into a load() closure. * Plugin hooks described above added at appropriate places. * Added a general wrapPluginCall method to catch any exceptions from a plugin call and sanitize the return value. * The exitGracefully closure now hides the GUI before starting its shutdown sequence so the user and the OS are less likely to assume the app has hung. * Added the functionality for the 'persistOnUpdate' feature (introduced on TimelineProperties, below). Removed the automatically generated logging functions, traceIfEnabled and debugIfEnabled--which were redundant and pointless overhead. Added check box menu option on TimeStamperMainView for the 'persistOnUpdate' feature Changes on TimelineProperties: * Switched to using SmartConfig and renamed several properties: - remote.timeline.<name>.push -> remote.timeline.<name>.push? - remote.timeline.<name>.pull -> remote.timeline.<name>.pull? - remote.timeline.<name>.save-on-exit -> remote.timeline.<name>.syncOnExit? - remote.timeline.<name>.update-interval -> remote.timeline.<name>.updateInterval * Added a feature, 'persistOnUpdate'. If set to true, this signals the application that it should persist the Timeline on each update. * Added a property 'timeline.persistOnUpdate?'.
2011-01-22 20:45:08 -06:00
import org.slf4j.LoggerFactory
onNewInstance = { klass, type, instance ->
Finished version 2.1. Updated .gitignore, excluding vim temp filesn and build directories. Promoted version number in application.properties. Switched to SLF4J for logging from LOG4J. Switched to jdb-util SmartConfig for configuration from java.util.Properties Added plugin architecture: * Plugins implement com.jdbernard.timestamper.gui.plugin.TimestamperPlugin * Provides five hooks into the application: - onStartup: called as the aaplication is starting. - onExit: called as the application is exiting. - onTimelineLoad: called when the application loads a timeline. - onNewTask: called when the user creates a new task. - onDeleteTask: called when the user deletes a task. * Plugins must be on the classpath to be enabled. * A new timestamperrc property allows the user to specify a plugin directory. That directory and any JAR files in it will be added to the classpath used to load plugins. This property is 'plugin.dir' and may contain the path, If no directory exists at that path, one will be created. The default path is './plugins'. * A new timestamperrc property allows the user to specify which plugins to load when the application is started: 'plugin.classes'. It expects a comma-seperated list of plugin class names. The default value is ''. * Two default plugins have been created: - 'com.jdbernard.timestamper.gui.plugin.HookLogger'. This plugin logs an info message every time one of the plugin hooks is called. - 'com.jdbernard.timestamper.gui.plugin.XMPPStatusUpdater'. This plugin updates a user's XMPP (Jabber) presence with their current task each time a new task is entered. Various other changes on TimeStamperMainController: * Timeline loading is now broken out into a load() closure. * Plugin hooks described above added at appropriate places. * Added a general wrapPluginCall method to catch any exceptions from a plugin call and sanitize the return value. * The exitGracefully closure now hides the GUI before starting its shutdown sequence so the user and the OS are less likely to assume the app has hung. * Added the functionality for the 'persistOnUpdate' feature (introduced on TimelineProperties, below). Removed the automatically generated logging functions, traceIfEnabled and debugIfEnabled--which were redundant and pointless overhead. Added check box menu option on TimeStamperMainView for the 'persistOnUpdate' feature Changes on TimelineProperties: * Switched to using SmartConfig and renamed several properties: - remote.timeline.<name>.push -> remote.timeline.<name>.push? - remote.timeline.<name>.pull -> remote.timeline.<name>.pull? - remote.timeline.<name>.save-on-exit -> remote.timeline.<name>.syncOnExit? - remote.timeline.<name>.update-interval -> remote.timeline.<name>.updateInterval * Added a feature, 'persistOnUpdate'. If set to true, this signals the application that it should persist the Timeline on each update. * Added a property 'timeline.persistOnUpdate?'.
2011-01-22 20:45:08 -06:00
instance.metaClass.logger = LoggerFactory.getLogger(klass.name)
}