Added Makefile, id_counter.erl, and yaws.conf.
Created ts_common module. Will contain common DB code. So far only list/3.
Created ts_timeline module. DB code for storing timeline entries.
Created ts_entry module, DB code for storing timelin entries.
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?'.
Description based category is now case-insensitive.
Fixed bug where description categories and plans were not agreeing on how
to categories items.
Updated startscript.groovy to be aware of new changes with events.
Update build script properties.
Added findEntriesToRecategorize() to CategorizationPlan
Refactored createNewCategory() to newCategory() on CategorizationPlan
Refactored Category to use CategorizationPlans
Created CatPlan for DescriptionBasedCategory
Made Event cloneable.
Refactored Category implementations to be aware of the single arg
Category constructor.
Created TwoLevelCategory, for entries which inherently have two levels
of categorization in them.
Created a CatPlan for TwoLevelCategory
Removed the specialization implementation, ITHelpCategory: the new
TwoLevelCategory is a more general version of the same.
Created CatPlan for TicketCategory
Fixed TicketCategory and TicketPlan to adjust for small difference between
the old behavour of ITHelpCategory and new TwoLevelCategory
Updated testing starter script.
Added FilteredCategory, filters by arbitrary CategoryFilters.
Started on Util class with code to create charts based on categories.
Fixed ITHelp ticket matching to swallow optional space after "ITHelp:"
Fixed TicketCategory to use it's own addEvent logic instead of inheriting the
default Category implementation.
Updated startscript.groovy to reflect test data for recent changes.
The jcalendar lib path in nbproject/project.properties was pointing to
the absolute path rather than a relative one.
committer: Jonathan Bernard <jdbernard@gmail.com>
Fixed edge cases in TimelineDayDisplay (first/last/no markers)
Fixed bug in PunchcardDisplayDialog - timeline not changed when loaded.
committer: Jonathan Bernard <jdbernard@gmail.com>
Refined snap behaviour to be more generic.
Snap functionality broken out as a seperate method.
NotesDialog uses snap method to snap to app frame and screen
committer: Jonathan Bernard <jdbernard@gmail.com>