changelog for de.jaret.util.ui.timebars

Note for Swing users

The SWT Version is leading. However the the swing version has caught up to provide nearly the same features.

Keep updated: the timebars on Twitter

If you want to know about new versions you can follow the timebars on twitter:

2013-09-17 version 1.49

  • Switched the build to maven 3 (looks good so far)
  • Removed some forgotten (ouch!) System.out.println statements (Sorry!)
  • Swing: corrected clipping width/height for gap rendering (Thx Chris!)
  • Swing+SWT: Corrected gap rendering (Thx Chris!)
  • Swing: DefaultHeaderRenderer now features configurable width (Chris)
  • Swing: The inner JComponent used for rendering is now accessible (_tbv._diagram) - this allows adding listeners directly to the component getting the events (Hi Jordan!)
  • Swing: configurable mousewheel scrolling: see setAllowMouseWheelXAxisScrolling, setAllowMouseWheelYAxisScrolling
  • When using millisecond accuracy there is now a scaling for the time scrollbar in place thus the limit that has been imposed on scrolling with millisecond accuracy is gone (Limit has been imposed by the int value of the scrollbar handle).

2012-02-09 version 1.48

  • Swing: Fixed another clipping issue that caused out of bounds drawing of the row header (Thx William)

2012-02-08 version 1.47

  • Swing: Fixed a clipping issue that caused out of bounds drawing of intervals (Thx William)
  • Swing: fixed title renderer paint problem (Thx Chris)

2011-11-06 version 1.46

  • Fixed NullPointerException when setting row height before setting a model (Thx Patrick)
  • SWT: fixed call to super.dispose() in onDipose (thx Chris)

2011-10-04 version 1.45

  • IMPORTANT: Since Eclipse 3.7 introduced getOrientation in the component I had to refactor the old set/getOrientation methods to set/getTBOrientation This change has to be reflected in the timebars addon -> check the update if you need the addons.
  • Swing: improved scroll units (Thx Chris)
  • Swing: included a fix (Thx Chris) making the distribution of intervals better when using uniform height.
  • Fixed an issue that caused an incorrect behavior when applying a filter to a scrolled viewer using variable row heights (Exception) (Thx Chris)
  • Fixed exception when using dragging of row heights/lines and no rows present (Thx Chris)
  • Swing: Fixed a drawing bug that caused drawing of the last row on top of the first row (variable row heights only) (Thx Chris)
  • Swing: Fixed a rendering bug for the title renderer component when using other layout mangers than border layout or box layout (Thx Chris)
  • Fixed a quite obvious bug in delegate.getRowBounds that caused the height of the returned rectangle to be to large when using horizontal orientation (Thx Chris)
  • Fixed Delegate.yForRow to handle variableHeights+no rows displayed correctly (Thx Chris)
  • Swing: fixed Pop-Up handling on Linux (Thx Patrick!)
  • Swing: Fixed a clipping bug that caused huge intervals to be rendered outside the viewer (OSX, Linux)
  • Swing: Fixed a clipping bug that caused caused a minor glitch when scrolling "under" the header (Thx Chris)
  • SWT: New combining TimeScaleRenderer that allows the use of two time scale renderers. New simple DateStripRenderer that can be used to maintain a steady view of the starting date. TimeScaleRenderer interface has a new simple to implement method: supportsOptimizedScrolling - check the JavaDoc.
  • Swing: (Thx David): Fixed SWT import
  • Exposed scrollXXXtoVisible methods in the viewers (check the delegate if something is missing)

2010-08-18 version 1.44

  • Fixed a glitch in edge dragging: coordniates used for drag detection differed from the coordinates th euser pressed the button. This lead to strange behaviour: cursor indicates edge drag, press, nothing happens.
  • Swing: (Thx Chris): Fix a problem where rows would sometimes not be drawn when scrolling
  • Right click/PopUp behaviour: if interval right clicked on is not already selected use this as the only selected one (-> Context menu works properly) (Thx Chris)

2010-06-14 version 1.43

  • Fixed a printing bug: grid has only be printed for the range currently displayed. There might still exist a problem with printing when the timescale renderer is not the ITickProvider used (not very probable).
  • Fixed a bug that occurred when resizing the component without rows in the model (thx Chris)
  • Fixed popup (right click behaviour) (thx Chris)
  • Swing: added the possibility to use a title renderer directly as a component (not just painting; see scheduling example)

2009-12-31 version 1.42

  • Added a new Swing example: the SchedulingExample.
  • Internal, unpublished

2009-11-13 version 1.41

  • Did some small changes to setLastRow and the component resize behaviour since there have been problems using the Swing version. If you rely on this (i.e. vertical autoscroll) please check carefully.
  • Removed two forgotten System.outs (Ughh!)
  • Fixed a possible NPE in Swing(Headertooltip)

2009-11-02 version 1.40

  • Fixed resizing behavior when the component exposes space below the last row the space will be used rendering more rows from above
  • Did another small fix correcting setLastRow
  • Fixed a bug that sets the minimum gridsnap for dragging and moving intervals to 1 second preventing clean operation at millisecond accuracy. This fix may surprise you if you have not setup an IIntervalModificator and you are using the DefaultIntervalModificator. You may need to set the gridsnap to 1 second explicitly.
  • Fixed some problems that may arise if non default TimeScaleRenderers are used without non default GridRenderers (Swing and SWT): Since the DefaultGridRenderers will use the the ticks of the TimeScaleRenderes if the the TimeScaleRenderer implements the ITickProvider interface to synchronize the ticks, it had to be informed properly when another TimeScaleRenderer has been set that does not supply ticks or when the time scale should not be shown.

2009-10-08 version 1.39

  • Added the possibility to do a DST correction in the time scale renderers (Default and Box: btsr.setCorrectDST). This is a fix for shifted ticks in the time scale around the DST switches in spring and autumn.
  • Added the method getPopUpInformation() that supplies the row and date corresponding to the coordinate a popup menu will be displayed.

2009-09-23 version 1.38

  • Fixed: NPE in Swing version if a no context menu has been defined for an interval type
  • Fixed: Bug in scrollRowToVisible when using variable row heights (prevented the vertical autoscroll sample code to work with variable row heights)
  • Fixed: Swing context menus using mac OS X (weird: "In Mac OS X, the pop-up trigger is set on MOUSE_PRESSED. In Windows it is set on MOUSE_RELEASED. For portability, both cases should be considered.")
  • Swing: added support for drawing outside the interval bounds for the TimeBarRenderer (see getPreferredDrawingBounds). This has been around for SWT before ... an example for Swing is the SwingEventExample (TBD for SWT, the feature is implemented for SWT: see the FancyExample). The feature is still in development (as is the example). The changed interface will cause Swing users the inconvenience to implement the method ... which is trivial as can be seen in the DefaultTimeBarRenderer.
  • Swing: the scroll bars are now placed on panels that are accessible by getters (getHorizontalScrollPanel, getVerticalScrollPanel). This allows special extension to be placed in the scroll bar area.
  • The new interface IIntervalModificator provides a small extension over the existing IntervalModificator allowing control of the grid snap for single intervals.

2009-09-03 version 1.37

  • IMPORTANT: This is an SWT only version since there are some open ends in the swing version
  • Fixed: setSecondsDisplayed will now work with vertical orientation
  • Fixed: vertical autoscroll sample code in SwtOverlapExample: +-1 problem -> could not scroll to the last row

2009-08-17 version 1.36

  • IMPORTANT: This is an SWT only version since there are some open ends in the swing version
  • Swing: removed renderer delegation from the DefaultRenderer (not necessary - register your renderers with the viewer directly)
  • Added better control for the displayed rows: setLastRow. This is in conjunction with a bugfix in scrollRowToVisible and a possible vertical autoscroll solution for drag+drop (can be found in the swt overlap example)
  • When dragging an interval the bounds are now set in a sequence that ensures that end will always be > begin
  • setSecondsDisplayed is now safe to be used even when the viewer has not been painted. The calculations will be deferred until the component is painted. Additional parameters (centering, centerDate) will be ignored in this case, since the calculations are not possible.
  • Fixed a weird NPE occurring with Swing/GTK during construction of the timebar viewer

2009-06-23 version 1.35

  • SWT: Fixed a small bug in the RelationRenderer (NullPointer under rare conditions)
  • Added synchronization for the y axis width in the synchronizer

2009-05-20 version 1.34

  • SWT: Fixed a small bug that could happen when displaying a context menu

2009-05-07 version 1.33

  • Added a feature for setting the initial displayRange when the viewer is first displayed and the width of the widget is available. See setInitialDisplayRange
  • Fixed a bug in the DefaultTimeBarRowModel that prevented the correct update of the max date if an interval would change min AND max date.
  • Fixed a bug in the Swing DefaultTimeScaleRenderer (refactoring artefact, thanx Ravi).

2009-02-22 version 1.32

  • BoxTimeScaleRenderer now scales down from years to minutes/seconds/milliseconds
  • Swing and SWT: The DefaultTimeScaleRenderer has been replaced by a new one that scales from years to milliseconds. If your application needs the old default renderer you can set the old renderer explicitly (it is still in the distribution: OldDefaultTimeScaleRenderer).
  • Internal coordinate calculation will now always use milliseconds as the basis. This should not cause any problems. However, if you encounter problems, please report the bug.
  • Fixed a small bug in tooltip handling.
  • Swing: added the IMarkerRenderer for better control of how markers are painted.
  • Swing: added the IGlobalAssistantRenderer for misc rendering.
  • New methods for scaling: setSecondsDisplayed(...); the scaling can be centered around a date
  • GridRenderers now have to accept an ITickScalProvider to achieve a coupling between time scale renderers and the grid rendeering. The default grid renderer will use the supplied tick scale provider. The BoxTimeScaleRenderer and the DefaultTimeScaleRenderes do implement the ITickProvider interfaces.
  • Extended ITimeBarChangeListener: marker drags will be reported.
  • The variable x scale feature now supports "breaking" the timescale by marking pps intervals as breaks and defining a pixel width for the display. See the milli example for details (documentation follows).

2009-01-11 version 1.31

  • Fixed a bug in the overlap calculations that lead to intervals not properly rendered (rendered above the row) in some data constellations. (Thanks Daran!)
  • Clipping on Linux GTK seems to be implemented using only 16 bit integers. This results in random drawings if a high zoom factor is used in combination with long intervals or relations (the drawings are not really random, since they are just caused by overflowing 16 bit integers). Added a workaround in the relation renderer and the sum renderer of the swt hierarchy example.

2009-01-01 version 1.30

  • SWING: Did a lot of corrections and additions for the swing component so that it nearly catches up to the SWT variant:
    • Ported the BoxTimeScaleRenderer to Swing
    • New Swing example: EventMonitorExample demonstrating some of the new features mentioned below.
    • Added the title renderer for swing and supplied a simple default title renderer.
    • Added relation rendering in the swing world (ported over the relation renderer from SWT).
    • Added the context menu support.
    • Fixed several minor bugs.
  • Introduced findbugs in the maven build (surprisingly low number of issues) and fixed some more important issues reported (nothing really serious).
  • Introduced the region selection: a selection that is tied to time and rows that stays present and can be used for several purposes. The functionality has to be enabled (setRegionRectEnable). Region selections can be done with shift+click+drag. The region selection will persist until it is cleared (clearRegionRect) or replaced by the next selection. As an example a simple zoom action has been implemented in the EventMonitorExample (Swing) and the SwtHierarchy example.
  • Introduced a new listener for listening to the selection rect/region selection allowing online information about ongoing rectangle selections: (ISelectionRectListener)
  • Introduced the IMiscRenderer (Swing and SWT) that will collect rendering routines for some elements/parts in the timebar viewers (to be extended over time).
  • Added the possibility to hide the root node when using a hierarchical model (setHideRoot).
  • Added the possibility to draw intervals overlapping in selected rows (ITimeBarViewState.setDrawOverlapping(row)).
  • Added the option to allow dragging of markers not only in the time scale area (setMarkerDraggingInDiagramArea.
  • Fixed: when using vertical orientation, optimized scrolling and timescaleposition = bottom the scale would not be scrolled.
  • Attention:(SWT) Removed the deprecated stuff (registering further renderers) from the default renderer. You can easily register specialized renderes with the TimeBarViewer directly.
  • Added the possibility to enforce uniform heights/widths for intervals drawn non overlapping in the same row (see setUseUniformHeight).

2008-11-08 version 1.29

  • New methods to easy scrolling to elements: void setFirstRow(TimeBarRow row) scrolls to a row without requiring its index. void scrollIntervalToVisible(Interval interval, double horizontalRatio, double verticalRatio) scrolls an interval to a position in the viewable area.
  • Fixed a bug in AbstractGridRenderer (static reference to a Color that got disposed); Thanks Thomas

2008-09-20 version 1.28

  • Behaviour on focussing/selecting an interval: was scroll begin to visible: this is now refined to scroll only when no part of the interval is visible. Scrolling on focus change can be disabled completely (setScrollOnfocus).
  • improved printing when using linux: swt printer devices running on linux seem to always report 72x72dpi which resulted in bad output when using the standard renderers. The RendererBase now contains the method getDefaultLineWidth to get a corrected line width that will work with low resolutions.

2008-08-19 version 1.27 (not published)

  • Behaviour on focussing/selecting an interval: was scroll begin to visible; now configurable if scrolling should occur (setScrollOnfocus). Maybe this will be replaced by a strategy if necessary.

2008-06-22 version 1.26

  • Fixed: Before the first paint (sometimes) NullPointerExceptions could happen because of uninitialized layout
  • Fixed: NullPointer in getTooltipText (sometimes)
  • Fixed: Relation rendering: arrows when using end_end.

2008-05-29 version 1.251

  • Just added a new example: The linechart example: check the screenshots.

2008-05-04 version 1.25

  • introduced relations between intervals and relation rendering and selecting. (IRelationalInterval, IIntervalRelation, IRelationRenderer, implementations thereof). There is a default implementation of the IRelationRenderer that is not setup by default (RelationRenderer). Changes have been made to the selection model (can now contain selected IIntervalRelations) and the selection provider (can now have relations in the structured selection). Unless you use relations you will not have to make changes to existing code. The default relation renderer does not support vertical orientation. The usage can be studied in the SwtHierarchyExample. The relations are observables but have not been added to be observed by the viewer (this would have introduced major API changes), so for now a redraw has to be triggered when the relation itself changes (this is most probably a rare case).
  • fixed a small bug in the box time scale renderer (week label included first day of the next week). Bug has been fixed in the jaret utils package (Thanx Thomas)

2008-04-25 version 1.24

  • added some changes to the row selection behaviour (shift-click range select, toggle mode for row selections that can be set on the selection model for simulating check box selections). Check box selections and the toggle mode can be seen in the swt overlap example (activate in the control panel).
  • the rendering of row selection and highlighting has been moved to the grid renderer (so it is better customizable). This obviously breaks the API. For a quick fix reserving the current behaviour just extend AbstractGridRenderer when you have your implemented own. The grid renderer interface will be a bit more extended in future versions to support some other things that have not been easy customizable. The getters/setters for highlight color etc. in the timebarviewer have been deprecated but will still work with the every extension of the abstract grid renderer.
  • the grid rederer now supports an alpha setting for the row selection

2008-04-17 version 1.23

  • made the timebarviewer friendlier to GUI-Designers (will hopefully not throw exceptions without a model)

2008-04-12 version 1.22

  • Removed a dependency on Java 6 in the DefaultOverlapStrategy (Thanks Maarten)

2008-04-06 version 1.21

  • Fixed a bug that have been introduced with the autoscroll improvements: When using the grid snap dragging an interval has not been working.
  • Th egrid snap provided by the IntervalModificators is now applied specifically: the first modificator that claims to be applicable will provide the grid snap. That makes it possible to use different grid snaps for different types of intervals.

2008-03-30 version 1.20

  • Improved the resize detection/beviour: increasing the size of an interval has sometimes behaved unexpected, since the cursor had to be inside the interval.
  • Autoscrolling has been quite fast (since it was accellerating with the scrolling). This has been fixed. It is now possible to set the autoscrollDelta (in pixel) to ensure a controllable drag.
  • The timebar viewer will now drag all selected intervals if an interval is dragged and the option is enabled. Autoscrolling is focussed on the actual interval that is beeing dragged. If one of the intervals is not allowed to move to the new position, the whole drag is stopped. This behaviour can be enabled by setting setDragAllSelectedIntervals(true).

2008-03-22 version 1.19

  • Improved calendar example to show whole day appointments in header area.
  • Thanks go to Mathias Kurth for supplying an improved overlap calculation drastically decreasing the time needed. This is especially helpful when handling huge quantities of intervals. (Added a link to his work on the usage page)
  • Added a method to access the delegate in the viewers. Please note that the direct use of the delegate ist not ecouraged unless it is absolutely necessary.
  • Added the RelationRenderer to render intervals having a relation (IRelationalInterval). The relation rendering is work in progress.

2007-12-27 version 1.18

  • Internal version distributed with the jare calendar plugin
  • Bugfix: Interval modification failed in some special cases when using more than one IntervalModificator.

2007-12-22 version 1.17

  • Bugfix: (non variable time scale) Scroll bounds have not been correct (small difference) corresponding to the model
  • Bugfix: just another small scrolling bug (using page steps with optimized scrolling)
  • Small change in the IntervalModificator interface (Sorry for that!) allowing better differentiation when using heterogenous models. (new Method isApplicable(...) to check whether the modificator is responsible -> just return true to preserve current behaviour.)

2007-11-20 version 1.16

  • Bugfix: Scrolling with the time scroll bar using page steps failed when using optimized scrolling.
  • Bugfix: Single selections have been disabled by the selection behaviour if other intervals have been selected ... corrected

2007-11-03 version 1.15

  • Small improvements for scroll bars (right sized from the first appearance, max data check corrected)
  • Fixed several bugs when adding/removing nodes in a hierarchical model. (For test purposes the SWT Hierarchical example can now be switched to support drag and drop. Check the source code for the flag)
  • The default hierarchy renderer can now handle different label providers for different row/node implementations
  • Improved selection behaviour: when doing a multiselection the next single selecting click did reset the multi selection. This has been changed to do the single select on mouse release when intervals are selected. Thanks to Martin Schmidt for pointing that out.
  • Added a new example showing events in a timeline fashion (s. screenshots). This has been inspired by the simile timeline for html pages (
  • Externalized the strategy for calculating the overlap information. This allows implementing strategies that can support lareg numbers of massively overlapping intervals without beeing too slow. See the timeline example for a sample of an alternative implementation.
  • BoxTimeScaleRenderer improved to handle variable scaling by adapting the scale
  • Improved TimeScaleDragSupport to allow listening on diagram drags for scrolling
  • Some small API extensions (non breaking)

2007-09-22 version 1.14

  • Fixed "row selection not working"-Bug
  • Fixed some Tooltip-Bugs (vertical).

2007-09-16 version 1.13

  • Fixed a small bug that lead to a paint error for partly painted intervals when using variable scale
  • The BoxTimeScaleRenderer now supports vertical orientation (might be time consuming since vertical oriented text is)
  • SWT: rendering outside the bounds given by the interval is now supported. See the extended renderer interface TimeBarRenderer2 for details on how to do this from your renederer. This has a little impact on rendering optimizations so it can be turend off. See TimeBarViewer#setStrictClipTimeCheck for details.
  • SWT: Added an example doing some more fancy drawing. Demonstrating the new feature of drawing outside the core interval space (FancyExample).
  • Added a linking exception to the GPL license that allows linking to other freely available software (source code freely available)

2007-08-19 version 1.12

  • Added variable row heights/widths including the possibility to change the height/width of a row by dragging or the use of a calculation strategy (see ITimeBarViewstate).
  • fixed some ends concerning vertical orientation (still the interface might be quite irritating when thinking vertical)
  • SWT: printing fixed for windows, horizontal orientation, including support for variable row heights

2007-07-18 version 1.11

  • Fixed a bug that prevented the SWT version from drawing overlapped intervals without height correction.
  • Added a listener that is informed while intervals are modified by the users (ITimeBarChangeListener).
  • Began a list of known usages of the timebars component (see usages)

2007-06-05 version 1.10

  • This version incorporates some bigger changes. Please regard it as a snapshot! Bug reports welcome.
  • introduced vertical orientation. Modifications have been done carefully, the semantics of some API calls changed organically (rows now can be columns depending on the orientation ...). Support for vertical rendering has been added to most of the default renderers (Swing and SWT). (Some examples allow switching orientation; a special example has been added: the calendar example, see screenshots). Note: Hierachy renderers have not yet been enhanced to support vertical orientation --> so dont use a hierarchical viewer with vertical orientation by now.
  • added support for internal row (column) scaling: if set the viewer adapts the row height to always display a fixed number of rows (columns) (see setAutoRowScaling)
  • Scrolling optimizations fixed for SWT (tested Win, Linux/GTK, OSX/Intel). Scrolling optimizations are now ENABLED by default. If you experience any artefacts when scrolling, disable scroll optimizations (setOptimizedScrolling(false).)
  • By mistake and stupidness the TimeBarViewerDelegate referenced SWT classes rendering it unusable for Swing. Fixed that (Thanks Tim!)

2007-05-01 version 1.02

  • SWT&Swing: Introduced scrolling optimizations (copying previously drawn areas). The behaviour is switchable (setOptimizedScrolling) and defaults to false, since I noticed problems using SWT on Linux/GTK and OSX/Intel. However the performance gain on Windows XP is quite big if a lot or fancy diagrams are drawn. For Swing the optimizations do work on all of the platforms. The scroling optimizations can not be used together with a variable x scale.
  • Added a method to the DefaultTimeBarRowModel that allows addition of more than one interval at a time. (Please. note that the default implementation is an implementation that can easyly - and sometimes should - be tailored for the needs of the concrete application). Also added methods for removal of more than one interval at a time.
  • Fixed issues with non overlapped drawing and the dynamic use of an interval filter.
  • Enhanced non overlapped drawing: in some cases the the result wasted some place.
  • Fine tuned interaction between model and selection: Intervals removed from the mdoel will be removed from the selection. (This is not implemented for removeing lots of intervals at once, sice it would sacrify the peformance gained by removing all intervals at once)
  • Fixed a small bug that occured when an interval was selected (apparent only on large scales, caused scrolling the viewer without need).
  • Fixed updating of the vertical scroll bar (to short in some situations)
  • introduced the timebars.addon package

2007-03-12 version 1.01

  • small correction to the default hierarchy renderer and the title renderer so that it accepts image descriptors instead of ressource paths
  • a bug in the DefaultTimeScaleRenderer fixed (drawing was not complete)
  • fixed a bug that prevented all intervals from beeing drawn when showing a long period of time (small pps)

2007-02-18 version 1.0

  • Finally reached 1.0! Swing version is behind but the SWT version matters.
  • Wrote overview documentation to get users of the component started.
  • Did testing using Linux/GTK and Mac OS X 10.4.5/Intel: Works, improved performance
  • Added the renderer selection for different interval implementations to the core viewers (SWT and Swing)
  • SWT: Added improved TimeScaleRenderer: The BoxTimeScaleRenderer is easy to modify and clear in appearance.
  • SWT: revisited the printing support and did a lot of corrections, checked printing capability of the default renderers (added two PDF printouts to the screen shot page)
  • Swing: added support for non-overlapping drawing of intervals
  • Swing: added SwingOverlapExample
  • Cleaned the example code from old rubbish (some code has never been touched since 2004)
  • Added millisecond accuracy to the interface (x scroll bar using milliseconds)
  • Added interface for variable x scale to the main interface.
  • Removed the obsolete setMajor/MinorTickMinutes methods from the viewers
  • SWT: moved the gap renderer from the PDI example to main package as a default gap renderer (that has to be set if needed).
  • fixed small bug: x scroll disappeared when scale has been changed on scrolled viewer making it impossible to scroll back to the beginning (only relevat when scaling changed)

version 0.991

  • Version 0.991 has been an internal evaluation version
  • Did some work on the variable scale feature.
  • Added millisecond accuracy (SWT)

2007-01-25 version 0.99

  • Added support for drawing "ghosted" intervals and rows to the timebar viewer to support visual drag and drop.
  • Colors for highlighting, row selection and row grid lines now configurable. Use alpha blending for highlighting resulting in smoother appearance.
  • Selection delta for detecting marker selection/drag and interval edge detecting now configurable.
  • Fixed some unclean behaviour when resizing intervals that resulted in the experience that in some cases the selection seemed a bit unsharp (selection for resizing: cursor has been set to resize cursor outside the interval).
  • Internal drag operations can now be canceled with ESC
  • Improved the default title render: now supports a background image.
  • Improved the default hierarchy render: now supports images as symbols.
  • Further improvements of the documentation (Still some work to do)
  • Improved SwtOverlapExample to support and demonstrate possible variant of implementing drag&drop
  • Improved SwtHierarchyExample: added more options to play with and demonstrate images in the hierarchy renderer
  • The DefaultRenderer for intervals now checks the registered renderers by interfaces and superclasses eliminating the need to use concrete classes for matching special renderers
  • The limiting lines determing the width of the hierarchy area and the width of the header area (y axis) can now be dragged by the user. This behaviour can be disabled.
  • Fixed some minor bugs (probably never noticed by anyone):
    • selection using space did not work on SWT version
    • printing without time scale caused NPE
    • printing missed the title
  • Added some methods to the DefaultTimeBarModel making it easier to modify data therein.
  • Updated status page

2007-01-06 version 0.982

  • Version 0.982 is another snapshot on the way to the Version 1.0 release, this is almost feature complete
  • Corrected bug: When rows have been added to an AddingTimeBarRow that did not contain any intervals this has been handled incorrectly. Improved that class in some aspects. (Thanks to Shahar Maoz for pointing out the bug)
  • Corrected bug: In some cases with high pixel per second setting the drawing failed until the scrollbar has been moved (Thanks to Shahar Maoz for pointing out the bug)
  • Corrected the project path and plugin name: de.jaret.util.ui.timebars
  • Made the TimeBarIntervalFilter a PropertyObservable. Introduced AbstractTimeBarFilter.
  • Further improvements of the documentation
  • Included the experimental feature of different scalings on the xaxis for dedicated intervals. See the swthierarchy example for a usage example.

2006-08-22 version 0.981

  • Version 0.981 is another snapshot on the way to the Version 1.0 release, this is almost feature complete
  • Documentation: Improved parts of the javadoc, added a brief overview describing the examples, added a document describing the architecture and containing some little howtos.

2006-05-03 version 0.98

  • Version 0.98 is another snapshot on the way to the Version 1.0 release, this is almost feature complete
  • SWT: fixed some bugs in handling the rendering and dragging of multiple overlapping intervals.
  • fixed some bugs that were introduced with the soft scrolling, causing selection by click to fail in some cases (hope I got them all by now)
  • SWT: enhanced hierarchy handling (togglingArea, row selection in hierachy, label from label provider will be rendererd by DefaultHierarchyRenderer)
  • SWT: added a global renderer allowing the rendering of elements in between the individual intervals (e.g. relations); see the SwtHierarchy example.
  • SWT: added zoom in/out using ctrl+mousewheeel
  • SWT: refactored support for standard actions to be in util.actions (the handling of predefined actions may change in future versions)
  • did some code cleanup and optimizations

2006-02-17 version 0.97

  • Version 0.97 is another snapshot on the way to the Version 1.0 release - it may contain some open ends.
  • SWT: introduced focus handling: a focus mark can be moved by the cursor keys if the viewer has the focus. Keyboard control: shift+left/right=grow left/right, alt+left/right=schrink left/right, ctrl+left/right=move left/right, SPACE=select, ctrl+SPACE=select multiple.
  • SWT: TimeBarViewer now implements ISelectionProvider for better RCP/JFace integration
  • SWT: Introduced TBViewer as extension of JFace.StructuredViewer for better JFace integration (experimental)
  • changed build to maven2
  • TimeBarRowSorters and -filters are now PropertyObservables. (Quick fix for existing Filters and Sorters: extend PropertyObservableBase!)

2005-10-03 version 0.96

  • Version 0.96 is a snapshot on the way to the Version 1.0 release - it may contain some open ends.
  • SWT: Introduced a title renderer.
  • SWT: changed the rendering subsystem (sorry: includes the renderers) to support printing with a minimal effort. Enabled the default renderers for printing. Use the TimeBarPrinter to print the graph.
  • SWT: introduced context menu handling
  • SWT + Swing: introduced smooth scrolling (showign a clipped row as the top row)
  • SWT: introduced rendering of a title
  • Cleaned the TimebarMarker interface.
  • SWT: introduced the TimebarMarkerRenderer for rendering of markers.
  • SWT: improved hierarchy renderer
  • SWT: added the dispose() method to all renderers to support disposal of resources.
  • Improved default timescale and grid renderers (scaling, labelling). SWT versions now support marking of weekends and holidays (with a HolidayEnumerator, see jaretutil package)
  • Separated the view state of the hierarchical model (expanded/collapsed) from the model itself thus allowing different views on the same hierarchical model. This refactoring did cause some major changes. The introduced HierarchicalViewState does not support view states identified by a path. This causes the state of equal nodes in a model to be the same.
  • Removed the accessor for the delegate. Maybe there are still some methods missing -> report.
  • Switched to SWT 3.1 Release
  • SWT: forceFocus() on click -> mouse wheel will scroll vertically

2005-06-04 version 0.95

  • Corrected some bugs ;-)
  • Introduced AddingTimeBarRow and AddingTimeBarNode for hierachical view (see hierarchy example)
  • Default renderers for TimeBars now support registration for additional renderers for easy differentiated rendering of different intervals
  • Cleaned and enhanced handling of the scrollbars (page increment etc.)
  • Enhanced default timescalerenderer and default gridrenderer to scale. The TimeScaleRenderer now supports top and bottom placement.
  • Added autoscrolling for visual editing and markers.
  • Corrected tooltip behaviour (toooltips will show up for swt version after clicking the mouse), timebar markers will show their description as the tooltip.

2005-05-07 version 0.94

  • refactorings (JDK 1.5, ++)
  • changed build process to maven
  • introduced an interface for the row header (will force changes in existing applications)
  • added support for a hierarchical model as an extension to the flat list of rows
  • added support for changing intervals (drag an interval inside its row, resize an interval), controlled by IntervalModificators that allow/disallow changes

2004-12-23 version 0.92

  • changed the JaretDate/JaretDateFormatter to use a single JaretDateFormatter for all JaretDates. This change decreases the memory usage but restricts applications to one Formatter.

2004-12-21 version 0.91

  • first public release
  • some minor bug fixes and refactoring
  • refactoring of the class JaretDate: i8n, introduced a localized JaretDateFormatter as a delegate to do convenient textual output
  • correction of the Swing DefaultGridRenderer: minor ticks were not painted up to the first major tick.
  • the delegate is still accessible; the most common methods can now be called on the viewers itself.
  • added some documentation
  • included (bad) example code in the distribution

2004-11-09 version 0.90

  • non-public pre release