Citra Technologies

Citra Table change log

7/6/2017 - version 4.13

-Fixed some issues with FilterTableModel not updating itself correctly when a TableDataChanged event is issued and allowFilter is false.

2/6/2017 - version 4.12

-Fixed a bug with FilterTableModel not showing new row additions when a TableDataChanged event is issued and allowFilter is false.

25/5/2017 - version 4.11

-Fixed a bug with SortTableModel throwing an IndexOutOfBounds exception when a new set of rows is assigned and FilterTableModel is not present.
-FilterTableModel now does not show all rows when the underlying model fires a TableDataChanged event and allowFilter is false.
-Fixed a bug with incremental sorting.

12/5/2017 - version 4.10

-Added FreezableScrollPane for defining a freezable area for any JComponent being viewed from the scrollpane.
-The size of PopupFilterHeaderModel's filter popup menu is now adjusted to the preferred size of the contents of its values.
-Added ability in PopupFilterHeaderModel to assign user defined filter items that are hooked to specific TableFilter actions.

10/5/2017 - version 4.9.3

-Changed FilterHeaderModel's internal behaviour.
-The filter for blank values can now be specified globally for FilterHeaderModel.

4/5/2017 - version 4.9.2

-Filter for blank values now accepts objects whose toString() method is empty.

4/5/2017 - version 4.9.1

-The column dialog now appears with respect to the popup menu's location. There is also the ability to change the default position, by overriding the TableAssistant#getColumnDialogPosition method.
-Supresses an IllegalComponentStateException from being thrown from within the TreeTable.

10/4/2017 - version 4.9

-Introduced LockedJTextField, an editor suitable for locked rows and columns.
-AdvancedJTable now assigns suitable editors for locked rows and columns, by default.
-TreeTable no longer needs its own StyleModel (DefaultTreeStyleModel), the style is applied internally from within the table.

5/4/2017 - version 4.8.6

-Fixed some mouse issues with editors under locked columns.

20/3/2017 - version 4.8.5

-Added a vertical line before the filter icon in DefaultFilterRenderer, in inline mode.

14/3/2017 - version 4.8.4

-The background selection color of ListRowHeader can now be changed.

9/3/2017 - version 4.8.3

-Fixed a bug with DefaultSortTreeTableModel throwing an exception when the structure of a node changes.

3/3/2017 - version 4.8.2

-Fixed a bug with DefaultSortTreeTableModel throwing an exception when the root node changes.

1/3/2017 - version 4.8.1

-Fixed a bug with ListRowHeader not adding mouse handlers.

22/2/2017 - version 4.8

-Fixed a bug with AdvancedJTable not giving the focus to a jcombox editor while editing.

14/2/2017 - version 4.7

-Added option in ListRowHeader to extend table column selection to all columns when a row is selected in the list.
-SortTableModel now notifies SorterListeners whenever the sort states change, sorting is about to start or has ended.

27/1/2017 - version 4.6

-ListRowHeader is now synchronized with the table, highlighting rows that are selected.

20/1/2017 - version 4.5

-Further optimized sorting and filtering.

22/12/2016 - version 4.4

-Fixed a painting issue when moving a grouped column that cannot be moved.
-Optimized performance of sorting and filtering for very large number of rows.

6/12/2016 - version 4.3

-Fixed a bug with FilterHeaderModel not applying custom filters correctly.
-DefaultFilterTreeRenderer can now use JTableHeader's default renderer for drawing the filter arrow.
-Fixed some scrolling issues with AdvancedJScrollPane.
-DefaultListRowHeaderRenderer can now use the TableCellRenderer of a JTableHeader for cell painting.
-Fixed some issues with TableCellResizer.

2/12/2016 - version 4.2.9

-Fixed a bug with AdvancedJScrollPane having trouble scrolling to the last column when left columns are set.
-Added ability in SortTableDefaultRenderer to change the sort icons and customize their painting position.

1/12/2016 - version 4.2.8

-Added SortTableDefaultRenderer, a SortTableRenderer implementation that uses JTableHeader's default renderer for drawing the sorting columns.
-DefaultFilterRenderer can now use JTableHeader's default renderer for drawing the filter arrow.
-Fixed a number of bugs when dragging group columns and locked columns are used.

21/11/2016 - version 4.2.6

-Fixed a bug with FilterHeaderModel not applying filters correctly in some cases.
-AdvancedJTable now never scrolls to the last dummy column.

18/11/2016 - version 4.2.5

-"Custom" option is now available for "free selections" in PopupFilterHeaderModel.
-AdvancedJScrollPane now paints faster when locked columns/rows are in place.
-Fixed some painting bugs with AdvancedJScrollPane when used with locked columns/rows.
-Prevented IllegalComponentStateException from being thrown from within the GUI classes.
-Fixed a bug in AdvancedJTable with the mouse behaving erratically when dragging cells and locked columns are present.
-Fixed some scrolling issues with TableReorder and subclasses.
-Fixed a bug with DefaultSortTreeTableModel throwing an exception when a row is being shown, after it has been updated while hidden.

11/8/2016 - version 4.2.4

-Added option in PopupFilterHeaderModel for selecting any filter value in the popup menu for multiple selections.

13/7/2016 - version 4.2.3

-Added methods in SortTableModel and FilterTableModel for controlling whether incremental sorting and filtering will be used.

8/7/2016 - version 4.2.2

-Optimized SortTableModel with incremental sorting.

27/6/2016 - version 4.2.1

-Optimized FilterTableModel by implementing incremental filtering, where appropriate.

27/5/2016 - version 4.2

-Optimized PopupFilterHeaderModel for a large number of filter data.
-Painting of the remaining space in the viewport, according to its color.

21/2/2016 - version 4.1.59

-Added option in TableAssistant to not resize columns if their width is already zero.
-Fixed a bug with TableCellResizer not resetting the cursor when the mouse leaves the table.
-ViewableResizer optimizations.
-Better handling of column additions in TreeColumnNodeMask.
-Added methods for showing/hiding a column in TreeTableHeader, by setting their width to zero.

2/2/2016 - version 4.1.58

-Improved resetColumns method of TableAssistant, so that it takes into account group columns as well.

13/1/2016 - version 4.1.57

-Mouse event absolute coordinates are now not changed during translations due to locked rows/columns.

4/1/2016 - version 4.1.56

-Fixed a bug with TableComboBoxEditor not displaying the popup in the correct position when locked rows/columns are in place.
-Optimized AdvancedJScrollPane's painting routines.
-Added method resetColumns to TableAssistant to synchronize the columns of the column model with the selection popup and dialog.

16/6/2015 - version 4.1.55

-Optimized painting behaviour of AdvancedJScrollPane, when locked rows/columns are in use.
-Optimized drawing of spanned cells.

20/3/2015 - version 4.1.54

-Fixed a bug with PopupFilterHeaderModel not running properly under java 1.4.
-Fixed a bug with TableAssistant clearing all columns from the column popup, when the same table model is assigned twice.

10/3/2015 - version 4.1.53

-Fixed a bug with PopupFilterHeaderModel not releasing the filter button after a custom filter is selected.

3/3/2015 - version 4.1.52

-Fixed a bug with PopupFilterHeaderModel not correctly capturing mouse events on the filter popup, in some jvms.

10/1/2015 - version 4.1.51

-Fixed a bug with ColumnFilterHeaderModel not showing the filter control under some columns.

9/1/2015 - version 4.1.50

-Added method in PopupFilterHeaderModel to control the minimum width of the filter popup menu.
-Added controls in PagingPanel to change the page size and current page number.

18/12/2014 - version 4.1.49

-Added an implementation for page navigation inside a table.

3/11/2014 - version 4.1.48

-Fixed a bug with the table not being painted properly after a sort event and when row heights are changed.

3/10/2014 - version 4.1.47

-Improved performance of PopupFilterHeaderModel when a filter popup opens, containing a large number of entries.

29/9/2014 - version 4.1.46

-TableAssistant now keeps the 'show children' property of group columns when these are hidden from the view.

31/7/2014 - version 4.1.45

-Fixed an issue with AdvancedJScrollPane not scrolling to the correct cell when locked columns are in place and a new row has been added.

30/7/2014 - version 4.1.43

-Fixed sorting with the keyboard for grouped columns.

1/7/2014 - version 4.1.42

-Fixed an issue with AdvancedJScrollPane not scrolling to the correct cell when locked columns are in place.

4/6/2014 - version 4.1.41

-SortTableModel can now be sorted using the space key, when a column is in focus. Having the ctrl key also pressed, adds a sorting column, whereas holding the shift down, releases it from sorting.

2/6/2014 - version 4.1.40

-PopupFilterHeaderModel now shows columns that are in focus.
-The filter popup menu of PopupFilterHeaderModel is now displayed when the down arrow key is pressed inside a focused column, and can be navigated with the left and right arrow keys.
-Optimized painting of moving grouped columns.
-SortTableRenderer now shows focused columns.

27/5/2014 - version 4.1.39

-The filter popup menu of PopupFilterHeaderModel can now be navigated with the arrow keys.
-Fixed an issue where the popup menu of PopupFilterHeaderModel was wrongly assigned as the first focusable component of an AdvancedJTable.
-CheckComboBox's items can now be selected with the 'space' key.
-AdvancedTableHeader can now show which columns are in focus.

23/5/2014 - version 4.1.38

-Fixed an issue where some components were not updated properly after the UI had changed.
-Added method shouldShowFilter to PopupTreeFilterHeaderModel for determining when a filter indicator should be shown on the column header.

21/5/2014 - version 4.1.37

-PopupTreeFilterHeaderModel now uses a single instance of a FilterTreeRenderer to paint the filterable header component.
-GroupTableHeader now uses a row index of -1 for its header component, when a column is not grouped.

13/5/2014 - version 4.1.36

-Fixed a bug with the combobox editor not being cleared properly when using spanned cells.
-DefaultSortTreeTableModel now clears affected cells only, after a tree structure change event.

12/5/2014 - version 4.1.35

-Fixed a bug with TableAssistant not being cleared properly after the structure of the table has been changed.
-Fixed a bug with DefaultSortTreeTableModel not refreshing its indices after its structure has changed.
-Added method to SortTableModel (#setReturnToStringComparator) for determining whether a Comparator that compares strings is returned for objects that do not implement the comparable interface.
-Made the popup menu of a cell's combobox editor to be displayed after a different cell in the same column is being edited.

8/5/2014 - version 4.1.34

-Improved painting for TableComboBoxEditor.
-Added GenericEditor for validating edited cell values before committing them.
-Added method setDefaultEditors to AdvancedJScrollPane that assigns editors for use with locked columns.

7/5/2014 - version 4.1.33

-Fixed a painting issue when a JCombobox is used as an editor, in combination with locked columns.

1/5/2014 - version 4.1.32

-Fixed an issue with JCombobox editor stopping editing, when the editing column is inside a locked column.

24/4/2014 - version 4.1.31

-Fixed some painting issues with TreeTable.
-Fixed a bug with TableAssistant displaying duplicate columns when the table's data model is reassigned.

25/3/2014 - version 4.1.30

-AdvancedTableHeader now clears columns of any listeners, when its table is set to null.

11/3/2014 - version 4.1.29

-Fixed a bug in TableAssistant not showing group columns after these had been hidden.

6/3/2014 - version 4.1.28

-Added method in TableAssistant for checking whether a column is hidden from the view or it does not exist at all in the table model.

17/2/2014 - version 4.1.27

-The filter popup menu is now reduced in size, when a column's width is very large.
-The filter popup menu now displays properly for non-frozen columns.
-Added option to DefaultFilterTreeTableModel to assign the maximum number of entries that the model can present as its filter values.

14/2/2014 - version 4.1.26

-Fixed a bug with DynamicTreeTableModel erroneously creating an ungrouped row when a comparator's setAlwaysCreategroup variable is set to false.

7/2/2014 - version 4.1.25

-Fixed a bug with TableAssistant not creating the column popup menu properly after a column has been removed or added, and there were deselected columns in the model.

5/1/2014 - version 4.1.24

-Fixed a bug with a null pointer exception being thrown from PopupFilterHeaderModel in some extreme cases.

9/12/2013 - version 4.1.23

-Fixed a bug with converting filters between different library versions.

27/11/2013 - version 4.1.21

-SortTableModel and FilterTableModel now return an iterable list of rows.

16/9/2013 - version 4.1.19

-Changed GroupingPanel and NodeGroupingPanel so that developer can define the columns and order that grouping is provided.

29/8/2013 - version 4.1.17

-DefaultSortTreeTableModel can now accept user's SortTableModel for custom node sorting.

21/8/2013 - version 4.1.16

-SortTableModel can now be set whether to sort null values in a general way or delegate null-value sorting to the comparators.

12/7/2013 - version 4.1.15

-Fixed a bug with SortTableModel and FilterTableModel, when searching their list of objects.

1/7/2013 - version 4.1.14

-Changed the way dragged group columns are painted.
-Fixed a bug with the column chooser dialog, when selecting multiple columns holding the CTRL key.

13/6/2013 - version 4.1.13

-Fixed a bug with DynamicTreeTableModel not creating nodes properly when a custom comparator is used.

22/5/2013 - version 4.1.12

-Added a property change listener to the view of an AdvancedJScrollPane that gets notified every time a bound property changes.

20/5/2013 - version 4.1.11

-Fixed a bug in GroupTableHeader that didn't allow the moving of group columns in some cases.
-Fixed a bug in the filtering of columns that showed the dummy column as a valid choice.

18/4/2013 - version 4.1.10

-Fixed a bug in TableAssistant that wrongly deselects a group column that shares the same name with another one.

6/3/2013 - version 4.1.9

-Added option in SortTableModel for specifying the position of null values, beginning or end, during sorting.

27/2/2013 - version 4.1.8

-Added option in DefaultFilterRenderer for showing the filter icon inline in the header, instead of using a separate component.
-TreeTableModelAdapter now updates a single row, instead of the whole table, when a treeNodesChanged is received from the TreeTableModel.

29/1/2013 - version 4.1.7

-Fixed a bug with TableAssistant not being able to discriminate between group columns sharing the same header value.

24/1/2013 - version 4.1.6

-Fixed a problem with GroupTableHeader throwing a NullPointerException when the table argument to the getTableCellRendererComponent method of a TableCellRenderer is null.

22/1/2013 - version 4.1.5

-Fixed a problem with AdvancedTableHeader not setting header renderers correctly.

21/1/2013 - version 4.1.4

-Added methods to FilterHeaderModel for assigning and retrieving filters.

15/1/2013 - version 4.1.3

-AbstractTreeTableModel now makes sure to notify JTree's UI listeners first before anything else, after a model update.
-Improved AdvancedJScrollPane's painting performance when columns are being added or removed to the table.
-FilterHeaderModel is now repainted after a filter is added or removed from a column.
-A filter event is now propagated to listeners when a filter is removed from FilterHeaderModel.

9/1/2013 - version 4.1.2

-Fixed a bug in FilterHeaderModel throwing an exception when a filter is added to a column that does not have a filter installed.

7/1/2013 - version 4.1.1

-Added SingleTreeTableModel for easily displaying a treetable with a single column.
-ListRowHeader's updateUI method is now only called when the L&F changes.
-Fixed a bug with the table not being repainted correctly when the column selection changes in some cases where right fixed columns are used.
-Renamed DefaultPivotTableModel in the com.citra.table.db package to DefaultCrosstabTableModel, so that the names do not clash with classes from the pivot library.

21/12/2012 - version 4.1

-Removed the need for components modifying a table header, like FilterHeaderModel, TreeTableHeader, ViewableResizer, to use a renderer on each column. TableCellRenderers are now provided by specialized factory classes. This mechanism improves on memory, speed, manageability and simplicity.
-ListRowHeader's UI is now refreshed when the applications UI is updated, if the component is not visible.
-Improved performance of creating the column popup when a popup order of VIEW_ORDER is used.
-AdvancedJScrollPane now paints faster when locked rows/columns are used.

7/12/2012 - version 4.0.42

-Added methods to GroupTableColumnModelListener for notifying listeners when a group column's structure has changed.
-Fixed a bug with CheckBoxTreeSelectionModel not correctly adding selection paths when partial selection is enabled.

7/12/2012 - version 4.0.41

-Added method in DefaultTreeTableHeaderRenderer for returning the icon to be used at a given node in the header.
-TreeTableColumnModelMap now correctly invalidates the previous column count when an event is received from the underlying model.
-TreeTableModelMask now re-evaluates the root node when this changes from the underlying model.

3/12/2012 - version 4.0.40

-Improved performance of CheckBoxTree when partial selection is enabled.

19/11/2012 - version 4.0.39

-Buttons in TableAssistant's column dialog are resized to their preferred widths.
-Ensured that TableAssistant's column dialog always has the application frame as owner.

16/11/2012 - version 4.0.38

-Removed flicker from AdvancedJScrollPane when a fixed column exists on the right of the table and columns are added, removed or moved.
-ListRowHeader now starts counting from one, instead of zero.
-Fixed a bug with TreeModelMaps not correctly assigning a new underlying TreeModel.

13/11/2012 - version 4.0.37

-Fixed a bug with TableAssistant not correctly processing columns visibility if they share the same name with their group column parents.

12/11/2012 - version 4.0.36

-CheckComboBox's real renderer now changes whenever a new renderer is assigned.

10/11/2012 - version 4.0.35

-Removed reference to demo classes from the library, added by mistake.

6/11/2012 - version 4.0.34

-Improved performance of CheckComboBox.
-Fixed a bug with PopupFilterHeaderModel's filter popup not being displayed after the ok and cancel buttons were clicked.

20/10/2012 - version 4.0.33

-SortTableModel now by default uses a Comparator that compares objects according to their string values, if the objects do not implement the Comparable interface.

19/10/2012 - version 4.0.32

-Fixed a bug with AdvancedJScrollPane not respecting the ALWAYS horizontal scrollbar policy.

16/10/2012 - version 4.0.31

-Fixed a bug with LevelColumnFilterHeaderModel not correctly applying filters at the root level.

10/10/2012 - version 4.0.30

-TableAssistant's column dialog is now disposed for it to be garbage collected.

3/10/2012 - version 4.0.29

-Added support for converting filters from older table versions to the current one, as well as from .sciapp package filters to .citra (see FilterHeaderModel.convertFilterState).

28/9/2012 - version 4.0.28

-Added CheckComboBox, a combobox with checkboxes for selecting multiple values.
-Fixed a bug with TableAssistant reverting the widths of visible columns when another column was hidden and subsequently shown.

22/9/2012 - version 4.0.27

-Improved scrolling performance of the table header.

3/9/2012 - version 4.0.26

-Fixed a bug with the table state not being applied properly when the column dialog has not yet been initialized.

24/8/2012 - version 4.0.25

-TreeNodeComparator can now be serialized.
-Fixed a problem with NodeGroupingPanel not correctly synching with the model.
-Modified TreeFilterHeaderModel to use columns' model index parameter instead of the view index.
-Added support in TreeFilterHeaderModel for having filter controls in group columns as well.
-Added feature to TreeTableHeader that controls a parent's column visibility when this is expanded (see TreeTableHeader.setHideColumnOnExpansion).

29/7/2012 - version 4.0.24

-Fixed a bug with TableAssistant not behaving correctly when showing columns under a column group.

11/7/2012 - version 4.0.22

-Fixed a bug with the binary distribution throwing a NullPointerException when a PopuFilterHeaderModel is used.

6/7/2012 - version 4.0.21

-Fixed a bug with the mutiple selection filter in PopupFilterHeaderModel not showing correctly in some older java versions.

4/7/2012 - version 4.0.20

-Added a property in CheckBoxTree for notifying when the checkboxtree selection model changes.
-The buttons in TableAssistant's column chooser now always get updated whenever the table's row selection changes, no matter if the table has the focus.

2/7/2012 - version 4.0.19

-Improved performance of TreeTableHeader when synchronizing level and node filters.

29/6/2012 - version 4.0.18

-Level and node filters for the columns of a TreeTableHeader are now synchronized with each other.

25/6/2012 - version 4.0.17

-Fixed a bug in SpanDrawer when using a cellspan with a row or column span of ALL_ROWS or ALL_COLUMNS respectively, and the spanned row or column is not 0.

21/6/2012 - version 4.0.16

-Introduced ColumnNodeFilterMapper for filtering the nodes of a treetable column model at each node.

20/6/2012 - version 4.0.15

-Improved the performance of PopupFilterHeaderModel's multiple selection filter.

19/6/2012 - version 4.0.14

-Fixed a problem with FilterTableModel not behaving properly under java 1.7.

16/6/2012 - version 4.0.13

-Fixed a bug with LevelColumnFilterHeaderModel throwing an exception when the column levels is one.
-Added TableColumnFilter for filtering the table columns based on their model index attribute.

6/6/2012 - version 4.0.12

-Added method for loading and saving the filter state of a DefaultFilterTreeTableModel.
-The filters of a PopupTreeFilterHeaderModel can now be easily saved and restored by using the above DefaultFilterTreeTableModel methods.

31/5/2012 - version 4.0.11

-Fixed a bug with the table state not being applied properly when a TreeTableHeader is used.
-Fixed a bug with SortTableModel throwing a null pointer exception in some extreme cases.

20/4/2012 - version 4.0.10

-Fixed a bug with TreeTable not expanding and selecting nodes properly after a model update, if the root is shown.

13/4/2012 - version 4.0.9

-Fixed a bug in SortTableModel entering a loop when a DefaultSortTreeTableModel is used and the table's columns are being reconstructed due to an event.

29/3/2012 - version 4.0.8

-You can now assign a table header in SortTableModel at any given point.

16/3/2012 - version 4.0.7

-Fixed a bug with numerical filters not filtering out null values.

20/2/2012 - version 4.0.6

-Fixed a bug in SortTableModel and FilterTableModel not sorting/filtering correctly when they are in a not-allow sort/filter state respectively.

25/1/2012 - version 4.0.5

-PopupFilterHeaderModel now allows the selection of multiple filter values via a checkbox popup filter.
-Added options "is in" and "is not in" to the visual filters for selecting multiple filter values.
-Removed deprecated methods and variables from JAutoFilter and PopupFilterHeaderModel.
-Fixed a bug in AdvancedJTable with tooltips not displaying properly when the table's model changes and the tooltip is about to show.

19/1/2012 - version 4.0.4

-Added option in VisualFilters for having a text or a combo box as input for the filter values.
-Custom AutoFilterPanels can now be assigned without the need for subclassing JAutoFilter.
-Added options "is empty" and "is not empty" to the visual filters.
-Added GenericVisualFilter that is used by GenericAutoFilterPanel for filtering objects other than strings, dates, booleans or numbers.
-Added method in CustomPopupFilterHeaderModel for installing custom filters programmatically.
-Improved AutoFilterPanels by copying instead of assigning the various Filter objects.
-Custom filter selection in the autofilter dialog is cancelled, and not removed, when the custom filter dialog is closed by clicking on the 'X' top right close button.
-VisualFilters are now not applied when the filter value is empty. The options "is empty" and "is not empty" can be used instead.
-Fixed a bug with ListRowHeader not correctly displaying tooltips.
-Added a few modifications to the Demo classes.

14/1/2012 - version 4.0.3

-TristateCheckBox is now enabled only with the left mouse button.
-The order of both visible and invisible columns is now persisted when saving and restoring the table state of an AdvancedJTable.
-Added modes in ListRowHeader so that the preferred width is calculated, according to the first, last or all of its rows.
-Added a checkbox in the column dialog of TableAssistant, for selecting/deselecting all columns with one click.
-Fixed some issues in the column dialog regarding the key search functionality.
-The buttons in the column dialog are now updated only when the user finalizes the column selection.
-Fixed a bug in TableAssistant not correctly building the column popup menu, when a mode of PUSH_INVISIBLE_TO_END is used.
-The group column state can now be saved and restored in GroupTableHeader.

12/1/2012 - version 4.0.2

-PopupFilterHeaderModel can now be garbage collected without the need for calling the removeFromTable() method.
-Fixed a bug in SortTableModel and FilterTableModel not working properly when assigning a new underlying model.
-When removing sort columns in SortTableModel by holding down the Alt key, menus in the application frame do not become selected.
-When hiding columns using the column dialog, TableAssistant makes sure that at least one column will be visible, no matter if the last column is present.
-When hiding the only visible column using the column dialog, that column remains visible, instead of showing the first one in the table.

10/1/2012 - version 4.0.1

-Fixed a bug with SpanDrawer not taking into account the updateSelections flag when selecting merged cells.

8/1/2012 - version 4.0

-Renamed packages from com.sciapp. to com.citra.

25/11/2011 - version 3.9.55

-AdvancedJTable now correctly repaints the selections when using merged cells.
-Added method to TableAssistant for repositioning the columns in the column dialog according to the order in the column popup (TableAssistant#orderDialogToPopup)

22/11/2011 - version 3.9.54

-Fixed a bug in DefaultSortTreeTableModel and DefaultFilterTreeTableModel throwing an exception when the underlying models are updated and the affected nodes are not visible.
-Added GenericAutoFilterPanel for filtering objects other than strings, dates, boolean and numbers. This panel uses a java.text.Format in order to convert the filterable objects to strings and vice-versa.
-Updated StringFilter to keep the object assigned as the filter pattern, instead of converting it to a string.

26/9/2011 - version 3.9.53

-Fixed a bug with GroupTableHeader not updating columns correctly when they are moved programmatically.

6/9/2011 - version 3.9.52

-Fixed a bug with TreeTable not updating correctly when a tree node is removed from an expanded node.

5/9/2011 - version 3.9.51

-Fixed a bug in SortTableModel and FilterTableModel throwing an exception when a ListTableModelWrapper is used as the underlying model.
-Fixed a bug in DefaultFilterTreeTableModel throwing an exception when a child is inserted to a node that is not visible.

25/8/2011 - version 3.9.49

-Fixed crash in AdvancedJScrollPane in jre 1.7.
-Improved searching by adding the ability to search for values other than the ones returned from the table (e.g. values in renderer).

18/8/2011 - version 3.9.48

-Fixed notifications sent from underlying TreeTableModels in TreeTableModelMasks, when the notification is a node changed event.

21/7/2011 - version 3.9.47

-Fixed a bug with JTable crashing when a row is removed and the row height is being changed for the first time.

20/7/2011 - version 3.9.46

-Created ColumnChooser class that contains the dialog for managing the columns of a table.
-The column dialog is now properly resized.
-Key presses on the table of the column dialog will now find the next possible column name match.

21/6/2011 - version 3.9.45

-Previously expanded nodes and cell selections are now restored in a TreeTable, after a model update.

17/6/2011 - version 3.9.44

-After cell editing, the edited cell is now selected.
-Fixed a bug in TreeTable not repainted correctly after a data update.

18/4/2011 - version 3.9.43

-Dialog in CustomPopupFilterHeaderModel is now disposed after being closed, so that it can be garbage collected.

5/4/2011 - version 3.9.42

-Added method to CheckBoxTree to determine whether the checkbox of a given tree path can be selected/deselected from the UI.

15/3/2011 - version 3.9.41

-Optimized table painting routines when the table's selection changes.

28/2/2011 - version 3.9.40

-Fixed a bug in TableAssistant not correctly populating the column dialog when group columns are defined.

17/2/2011 - version 3.9.39

-DefaultSortTreeTableModel and DefaultFilterTreeTableModel now send a more indicative tree model event, when nodes have been removed.

15/2/2011 - version 3.9.38

-Fixed a bug with moving a column at the beginning, when AdvancedJTable has the first column fixed.
-TableCellResizer and TableAssistant now take into consideration the cell spans when auto-resizing columns.
-When the treetable is expanded, selections are disabled until the mouse is released.
-Fixed a bug with the COMMIT_EDIT mode of the table, that was causing duplicate calls to setValueAt.

13/2/2011 - version 3.9.37

-Optimized cell rendering when a viewable resizer is in use.
-Optimized cell rendering when merged cells are present.

1/2/2011 - version 3.9.35

-Defined editing behaviour in AdvancedJTable when the table is editing and its data model changes. Default behaviour is to discard any changes made.

15/12/2010 - version 3.9.32

-Fixed a bug with columns not being correctly moved, added or removed in a TreeTableHeader.

11/12/2010 - version 3.9.31

-Updated some javadoc comments.
-Added method in TableAssistant for recreating the column popup and dialog.
-Fixed a few bugs with the acceptNull property of Filters.
-CustomPopupFilterHeaderModel is initialized with the filter currently assigned.

17/11/2010 - version 3.9.26

-Added method for invalidating the columns of a TreeTableColumnModel.
-The component of DndSupport can now be changed anytime.

11/11/2010 - version 3.9.25

-Some minor improvements regarding spanned cell rendering.

26/10/2010 - version 3.9.24

-Included an option to SpanDrawer to make it make the table's cell grid lines itself, instead of the table (see setBorderPainted).

19/10/2010 - version 3.9.23

-Improved the rendering of TreeTableHeader.

14/10/2010 - version 3.9.18

-Now able to get the height of a group column as it appears in the header.
-Added method groupLevelAtPoint in GroupTableHeader, to get the level of the group column at a specified point.
-Reorganized classes in the package.
-Fixed an issue with eclipse hanging when using the library in design time.

8/10/2010 - version 3.9.15

-CheckBoxTree now uses a WrapperCellRendererPane instead of a JPanel for its renderer.
-Fixed a bug in TreeColumnModelMask when the underlying's model root is changed.

6/10/2010 - version 3.9.14

-Added method in DefaultFilterTreeTableModel for clearing the filtering states.
-Added option in NodeTreeTableModelMap to show the node's children.

30/09/2010 - version 3.9.13

-Added column listener to ViewableResizer for attaching it to columns that have been added.
-Improved the design of the TreeHeaderControl, so that events are processed by the renderers.

23/09/2010 - version 3.9.11

-Fixed a problem with setting a new style to TableStyleSelector.

22/09/2010 - version 3.9.10

-Implemented 'column mode' search for the search panel.

13/09/2010 - version 3.9.9

-Added option to SearchPanel to control whether the search should be reset when the search text changes.

7/09/2010 - version 3.9.8

-TreeTable now repaints itself appropriately when the icons of the tree cellrenderer change.

6/09/2010 - version 3.9.7

-TableAssistant: the column header's value is now not casted into String.
-SortTableModel: added method for setting the SortTableModel's renderer.

1/09/2010 - version 3.9.6

-DefaultVetoableColumnModel now uses the columns's model listenerlist for the vetoable column model listeners.
-CheckBoxTree repaints itself when the partial selection mode changes.

31/08/2010 - version 3.9.5

-The TreeTable tree's UI now remains unchanged after the tree is made visible.

26/08/2010 - version 3.9.3

-Fixed a bug with ListRowHeader not registering with the table's datamodel, if this has been changed.
-Modified SortTableModel so that developers can have control before/after a mouse is clicked on the sortable header.
-Fixed a bug in TableAssistant not behaving correctly when two or more columns have the same name.
-The LockedTableModelEvent now includes the previous amount of fixed rows/columns in use.
-Modified SearchPanel's behaviour so that a match is found when there is a single match in the table.

25/08/2010 - version 3.9.2

-Added methods for converting row indexes between the model and the view for TableModels that are wrapped with a SortTableModel and/or a FilterTableModel (TableUtils).
-Fixed a bug with the 'alt' key not being passed to the mouse event on the header in some cases, when fixed columns are in place.
-Fixed a bug with the column popup not being updated correctly when reordering group columns with the mouse.

10/08/2010 - version 3.9.1

-Added option for 'not equal' for comparison filters.
-The box for the custom filters is now limited to 200 pixels in width.
-Fixed a bug with GroupTableHeader throwing a null pointer exception when it is removed from the view.

18/06/2010 - version 3.9

-Organized imports in source code classes.

17/06/2010 - version 3.8.47

-Added method in WrapperCellRendererPane for getting the wrapped component.

16/06/2010 - version 3.8.46

-Sorting with SortTableModel is now not invoked if the user clicks on the group of a sortable column.
-The expanded nodes in the column dialog of TableAssistant are now maintained when the user clicks on the 'ok' button.
-Groups in the column dialog of TableAssistant can now be created even for single columns.
-Users can now reorder group columns in a GroupTableHeader with the mouse.

19/5/2010 - version 3.8.45

-PopupFilterHeaderModel now uses a separate renderer in order to layout the filterable header component.

17/5/2010 - version 3.8.44

-Added methods to PopupFilterHeaderModel for setting/getting the filtered/unfiltered color to use for the filter arrow.
-Added method to TreeTable for evaluating the amount to displace the editing component of a cell by, due to the presence of the tree icon.

20/4/2010 - version 3.8.43

-Added string for defining the text of the 'Clear' button in
-If TableResourceManager cannot find a string translation, it returns the default value
-The dialog for the date chooser panel now uses the CLEAR_BUTTON string in
-Added methods to DateEditor and DateVisualFilter for controlling whether the current system date should be displayed, if the selected date is null.
-Added methods to JDateChooser for controlling whether the selected date should be kept, as the user changes the month or year.
-Added method to AdvancedJTable and AdvancedTableHeader for handling mouse events, before they are passed to any mouse listeners.
-The rendering and control of TreeTableHeader's expandable columns is now being delegated to a TreeHeaderControl.

16/4/2010 - version 3.8.42

-Made appropriate changes to the library so that it will work with the pivot table api.

10/4/2010 - version 3.8.41

-Certain SortTableButtonRenderer's optimizations.
-Added option to DefaultTreeTableHeaderRenderer to control whether a separate component is used to layout the tree's expansion control on the header.

8/4/2010 - version 3.8.40

-Fixed a bug with the custom dialog throwing a NullPointerException when the sources were compiled with jdk 1.5 or higher.
-Added IF_LARGER_RESIZE resize mode to TableAssistant that resizes columns only if the calculated size is larger than then current one.

26/3/2010 - version 3.8.39

-Modified TableAssistant so that if all columns under a group column are made hidden, a subsequent showing of the hidden column group will make all columns visible under that group column.

24/3/2010 - version 3.8.38

-Fixed some issues with TableAssistant's behaviour when making columns under a group column visible/invisible.
-TableAssistant's column dialog now uses a partial CheckBoxTree to display the visibility status of a TableColumn.

23/3/2010 - version 3.8.36

-Fixed a bug with AdvancedTableHeader's getComponentAtPoint method.
-NumericalVisualFilter now uses a NumberFormat in order to display numbers in its textbox.
-JDateChooser now updates the months when the system locale is changed.
-Filter values of the custom filter dialog are now loaded faster.

08/3/2010 - version 3.8.35

-TableAssistant now does not update the ui after a change in the more column dialog.

04/3/2010 - version 3.8.34

-Custom filters on a CustomPopupFilterHeaderModel are now not applied to the header, if the filter is invalid.
-Fixed a bug in AdvancedJTable when the getColumnName method is called on a column representing the dummy column.
-Fixed a bug in GroupTableHeader when the group table column model is changed.
-ViewableResizer now behaves correctly when the header's group table column model is changed.
-Fixed a rendering error when using ViewableResizer.

02/2/2010 - version 3.8.33

-Fixed table key navigation with merged cells and when the table uses a single selection mode.

01/2/2010 - version 3.8.32

-Fixed an issue with AdvancedJScrollPane not painting correctly when columns are being resized.
-SpanDrawer now correctly paints merged cells when the table uses a single selection mode.

27/1/2010 - version 3.8.31

-Fixed a bug with the table's merged cells not being repainted correctly after a selection event.

25/1/2010 - version 3.8.29

-Fixed a bug with TableAssistant throwing a NullPointerException when moving colums and a TreeTableHeader is used.

23/1/2010 - version 3.8.28

-Removed deprecated methods and classes.
-Setting the table state now works even if group columns are present.
-TableAssistant now won't allow removal of all columns either from the column popup or the dialog.
-Added methods to CheckBoxTree that allow to control the checkbox displayed at each path.

14/12/2009 - version 3.8.26

-Fixed a bug with group columns not painting correctly when they are part of locked columns.

05/12/2009 - version 3.8.25

-Added option to ListRowHeader to select whether automatic resizing is enabled.
-Optimized drawing of spanned cells while dragging a column with the mouse.

04/12/2009 - version 3.8.24

-Fixed a bug with ViewableResizer setting its opaque property to false, having as result background colors not being painted.

03/12/2009 - version 3.8.23

-TableAssistant will now revert changes made to the column positions using the column dialog, if the new positions cannot be applied (e.g. due to the presence of a VetoableTableColumnModel)

01/12/2009 - version 3.8.22

-Added option to TreeTable for assigning a different column for the tree, other than the first.
-Added DynamicTreeMapReorder that is suitable when using DefaultSortTreeTableModel with a DynamicTreeTableModel.
-Added reset button to the column dialog, for undoing changes such as grouping, renaming etc.
-ListRowHeader now automatically resizes to its contents.
-Fixed a minor paint issue in AdvancedJScrollPane when locked columns are in place.
-Added methods to TableAssistant for defining the order in which the columns appear in the column popup.

24/11/2009 - version 3.8.20

-Added method in DefaultSortTreeTableModel for clearing the sorting states.

20/11/2009 - version 3.8.19

-Exceptions (if any) are now being printed out, when FilterHeaderModel loads or saves the filter state.
-The limitation for having the default cursor on the header has now been lifted.

16/11/2009 - version 3.8.17

-Fixed a bug with the column's renderer background color not being applied.

10/11/2009 - version 3.8.16

-Certain AdvancedJScrollPane optimizations.
-SortTableModel getDefaultComparator method now scans super interface hierarchy if supplied class is an interface.
-Added methods to TableCellResizer to determine whether a cell is resizable.
-Added method to TableAssistant to determine whether columns in the column dialog are reorderable.
-Made ViewableResizer work for locked columns/rows.
-Added method to SpanDrawer that determines whether the table uses a fixed row height, in which drawing is faster.
-Refactored remove method of com.sciapp.table.cache.Cache to return the object that was removed from the cache.
-Added class TreeTableModelMask that enables a TreeTableModel to be constructed, based on an underlying TreeTableModel instance.
-Fixed a bug with DynamicTreeTableModel not resetting the value of the root node after a table structure event.
-Fixed a few bugs in TreeTableHeader, relating to the structure of a node in the model having changed.
-Added class TreeTableColumnModelMask that wraps around any TreeTableModel in order to provide for a TreeTableColumnModel.
-Introduced caching of column count and column enumeration in DefaultTreeTableColumnModelAdapter for faster drawing.

06/10/2009 - version 3.8.4

-Fixed a bug with FilterTreeTableModel throwing an exception when a node's value is changed.
-Optimized TreeTableHeader.
-Fixed a bug with TreeTableHeader not expanding nodes via the header, when a ViewableResizer is in use.

22/9/2009 - version 3.8

-Table cells and header columns can now be resized to their viewable dimensions while being painted, via a ViewableResizer.
-Fixed a bug with TreeTable not working properly when the tree's root is visible.
-Table Assistant can now be released from a previously assigned JTable.

13/8/2009 - version 3.7

-TableAssistant now exposes methods used to calculate the cell's preferred width.
-AdvancedJTable now contains method for assigning your own TableAssistant object.
-The 'More' column dialog now does not include reorder buttons if the table header is not reorderable.
-Fixed a bug with SortTableModel converting underlying model's structure change events to data changed events.
-Fixed a bug with TreeTable consuming key events when a row is not selected.
-Fixed a bug with TreeTableModelAdapter firing invalid inserted and deleted table model events when a node is expanded/collapsed respectively and the node does not have any children.

23/6/2009 - version

-Fixed a bug with JDateChooser not updating the calendar panel to the correct year when the year is entered by hand and the year text field loses focus.
-AdvancedJScrollPane now displays locked columns even if the dummy column is not present.
-Fixed a bug with AdvancedJScrollPane sometimes painting 'bogus' data outside the painting region in Java 1.5.

15/5/2009 - version

-Fixed a problem with the internal list returned from TableModel and TreeTableModel wrappers, such as SortTableModel, ComparableTreeTableModel etc.
-Improved GroupTableHeader rendering.
-Fixed a bug with GroupTableHeader when moving a group column within a group.
-Added method isReorderingAllowed(Point) to AdvancedTableHeader, to decide whether reordering of a column should be initiated.

7/5/2009 - version

-Fixed a bug with FilterTableModel and TreeTableModelAdapter giving out an exception when inserting new rows to the table.

6/5/2009 - version 3.6.9

-Fixed an issue that appeared recently in Java 1.6.10, causing AdvancedJScrollPane to keep a high CPU usage.
-Optimizations in ComparableTreeTableModel.
-Fixed a bug in TableAssistant's more dialog, that was causing inconsistencies between the dialog and the table view, when making columns invisible.
-Added option to TableAssistant to resize a column using both its cell and header contents.

23/3/2009 - version 3.6.6

-Made most classes serializable.
-TreeTableModelAdapter now fires more indicative TableModelEvents upon tree expansions or model changes, instead of a general update.
-Fixed a bug with TableAssistant's column dialog not applying the column width when the 'Enter' key is pressed.

11/12/2008 - version

-Added option to turn on/off column renaming in the 'more...' dialog of the column popup.
-Optimized FilterTableModel and SortTableModel.
-Fixed a bug in AdvancedJTable with setting the column table state.
-Fixed a bug in TableReorder when reselecting rows and columns after a model refresh.
-Fixed a bug in AdvancedJScrollPane to correctly convert the y-ordinates when locked rows are used.
-DynamicTreeTableModel now takes the alwayscreategroup value of a TreeTableComparator into account.

28/7/2008 - version

-Fixed tooltip in column header not appearing when a PopuFilterHeaderModel is used.
-Made available the ok and cancel buttons in AutoFilterDialog.
-Fixed a bug where a table search ended up in an endless loop.
-Updated com.sciapp.tree.TreeTable to incorporate the latest changes in cell spanning.
-Added AggregateTreeTableModel and TreeNodeAggregator in the com.sciapp.treetable package that provides an easy way to evaluate aggregates in a treetable.
-Fixed a memory leak bug in SortTableModel.
-Fixed a bug in TableAssistant not showing a group column that was removed via the column popup and subsequently added.
-Fixed table scrolling when locked cells are in place.
-Fixed bug in AdvancedJScrollPane not showing correctly when it is inside an InternalFrame.

2/4/2008 - version

-Fixed a bug with reselecting the checkboxes of a CheckBoxTree inside a TreeTable when the underlying model changes and the CheckBoxTree has partial selection set to true.
-Greatly improved the cell spanning drawing performance.
-Fixed a bug in AdvancedJScrollPane not correctly painting the viewport when locked rows/columns are in place.
-Improved FilterTableModel's performance and added a flag to determine whether the model will assume that all data have changed when a fireTableDataChanged event has been issued from the underlying model (see setClearOnDataChanged method).
-Added methods in SortTableModel for comparing the rows of the underlying TableModel.

3/3/2008 - version 3.6.3

-Fixed a bug with reselecting the checkboxes of a CheckBoxTree inside a TreeTable when the underlying model changes.
-Fixed a bug with RowHeader not resizing its cells when the row heights change.
-Fixed a bug with TableCellResizer allowing to resize cells that are part of a cell span.

29/2/2008 - version 3.6.2

-Optimized span drawing painting.
-Fixed a problem with AdvancedJTable showing tooltips at a displaced location when locked columns/rows are used.
-Added the ability to apply filters by pressing the 'enter' key on the custom filter dialog.

4/1/2008 - version 3.6

-Added TristateCheckBox that adds a 'partial-selection' state to JCheckBox.
-CheckBoxTree now uses a TristateCheckBox for showing partial node selections. The mode can be controlled with the setPartialSelection method.
-Added TableCellResizer, a class used to resize rows and columns of a table by dragging the mouse over a cell border.
-Added NonContiguousSelectionModel, a class that enables non-contiguous cell selection for a JTable.
-Added ListRowHeader which is a replacement for JTableRowHeader.
-Incorporated NonContiguousSelectionModel and TableCellResizer into AdvancedJTable and its subclass, TreeTable.
-Corrected a bug with AdvancedJScrollPane not correctly converting the x-coordinates of mouse events when a row header is present.

14/12/2007 - version 3.5

-Added methods to GroupTableColumnModel for easily interrogating a group column structure.
-Reshaped GroupTableColumnModelEvent and GroupTableColumnModelListener in order to get more information about group column changes.
-Implemented the required methods of GroupTableColumnModel in DefaultGroupTableColumnModel.
-AdvancedJTable now also converts the y-ordinate of mouse events when locked columns/rows are used.
-Added method canMove to AdvancedTableHeader and made it implement VetoableTableColumnModelListener in order to be able to easily
prevent the moving of columns.
-Optimized GroupTableHeader's drawing routines and added the ability for group columns to use their own TableCellRenderer.
-Optimized TreeTableHeader's drawing routines and added the ability for expandable columns to use their own renderer, ie TreeTableHeaderRenderer.
-Added an abstract TreeTableColumnModelAdapter implementation to serve as a basis for implementing a column model for a TreeTableHeader.
-Optimized PopupFilterHeaderModel drawing routines.
-Removed methods and classes with deprecated warnings.

11/12/2007 - version 3.4.8

-Fixed tooltips not showing when using spanned cells.
-Fixed mouse and keyboard navigation for locked rows/columns.

25/9/2007 - version

-Fixed a bug in AdvancedJTable cancelling the editing of a cell, when it received a tableChanged event.
-Improved SearchTablePanel by using different background/foreground colors when the search text is not found and by setting the focus to the requesting search field.

8/8/2007 - version

-Fixed a bug in PopupFilterHeaderModel throwing a null pointer exception when the headermodel was removed from the table.

24/7/2007 - version

-Fixed a few bugs with TableSearch.
-SearchPanel is now able to track changes to a TableModel upon which search highlight actions are initiated (see SearchPanel.register).
-The checkboxtree's selections of a dynamic treetablemodel are now restored after the model changes.
-Added refreshPopup() method in TableAssistant for reinitializing the column popup with values from the column model.

10/7/2007 - version

-Fixed a bug with SortTableModel not generating a TableModelEvent properly.
-Fixed the search style so that it is correctly updated when columns are moved inside the table.
-The table is now updated when selections are made with CheckBoxTree programmatically.
-The CheckBoxTree now clears its selections when the tree structure is updated.

3/7/2007 - version

-Fixed a bug with the DOES NOT END WITH option of a string filter.
-Made AdvancedJScrollPane accept a JPanel as the row or column header.
-Fixed a few bugs with SortTableModel and FilterTableModel.
-Made DefaultFilterTreeTableModel and DefaultSortTreeTableModel to behave properly when getAllowFilter/getAllowSort is false respectively.
-TableStyleSelector's style is only applied for cells that are highlighted.
-The search panel's string filter can now discern between strings, dates and booleans so that it can filter values appropriately.
-The cell selection after a sucessfull search now stops at the first cell found.
-Fixed a bug with TableStyleSelector looping indefinitely on some occasions.

15/6/2007 - version

-Added highlight feature in search panel.

13/6/2007 - version 3.4.7

-Introduced the package for searching the rows of a JTable.
-Fixed some issues with AdvancedJScrollPane not painting properly if locked columns are installed and the row/column headers are not JTableHeaders.

15/5/2007 - version 3.4.6

-Declared public method for showing the more panel in TableAssistant.
-Improved SortTableModel.

23/4/2007 - version

-Added a method in JDateChooser for assigning the default time when the chooser first appears (setDefaultTime).

17/4/2007 - version

-SortTableModel and FilterTableModel now leave the modified sort/filter indexes intact when the underlying model changes completely and getAllowSort/getAllowFilter is false.

13/4/2007 - version

-Fixed a bug with AdvancedJTable not correctly assigning the auto resize mode when the last column is not visible in the table.
-Fixed a bug with AdvancedJTable not removing the first column when this is fixed.

11/4/2007 - version

-Fixed a bug with DistinctDatabaseTableModel not correctly returning the row count when null values are present.

29/3/2007 - version

-Added DistinctDatabaseTableModel for retrieving the unique values from a database into a table model.
-Fixed a bug with AdvancedJScrollPane not correctly converting x-ordinates when locked columns are present.
-Updated FilterHeaderModel so that it is now possible to install table filters for columns that are not visible in the table.
-Updated JDateChooser to optionally show the seconds in the time box.

19/3/2007 - version

-Added syncWithModel method in DatabaseGroupingPanel for synchronizing the model with the panel.

13/3/2007 - version 3.4.5

-Added methods in VisualFilter subclasses for retrieving the various UI components used.
-Fixed some drawing bugs with FilterHeaderModel.
-Fixed a bug with DefaultSortTreeTableModel raising an ArrayIndexOutOfBounds exception when the underlying model changes.

1/3/2007 - version

-Fixed a bug with DefaultDatabaseTreeTableModel not using filters correctly.
-Fixed a bug with DirectoryTreeTable not initializing.
-Improved GroupTableHeader to make the paint procedure more optimized and to accept a JPanel as a TableCellRenderer.
-The components that make use of the resource bundle can now be re-initialized with new property values, when their UI is updated, without having to reload the application.

28/12/2006 - version 3.4.4

-Added a method to FilterHeaderModel in order to iterate over the installed filters.
-Changed the TreeTableColumnModelAdapter class to an interface.
-Fixed a bug with the TableAssistant's select method.
-Added ListTableModelWrapper for providing sorting/filtering capabilities to a TableModel that does not implement the ListTableModel interface.

1/12/2006 - version 3.4.3

-Fixed a bug with TableReorder throwing an exception when trying to select rows in the table that do not exist.
-Added an option in TreeFilterHeaderModel to define whether a filter on a column will be removed if the column is no longer visible in the table.
-Added options in PopupTreeFilterHeaderModel for the arrow button's color and position.
-Improved the design of ColumnFilterMapper.
-Improved DefaultFilterTreeTableModel so that it updates only nodes whose filter is changed.
-Added NodeTreeTableModelMap for showing a single branch of a TreeTableModel.
-Added UniqueTreeTableModel for building a set of unique tree nodes at each tree level.
-Fixed some issues with TreeTableHeader not correctly displaying columns when the underlying TreeTableColumnModel changes.
-Added TreeTableColumnModelMap for wrapping around a TreeTableColumnModel in order to provide sorting and filtering capabilities.
-Added PopupTreeFilterHeaderModel suclasses in the package that allow the filtering of table columns via a drop down button that is installed on each column.

21/11/2006 - version

-Fixed an issue with TreeTableModelAdapter throwing an exception if the root node is null.
-Fixed a repaint issue in TreeTable with a CheckBoxTree if non-scrollable columns are in use.

20/11/2006 - version 3.4.2

-Introduced TreeFilterHeaderModel and associated classes for providing a filterable column header component for TreeTableModels.
-Introduced CheckBoxTree, a JTree subclass that shows a checkbox for every node in the tree.
-Improved the design of TreeTable and TreeTableModelAdapter so that any JTree can be assigned to a TreeTable, such as a CheckBoxTree.
-Added an option in PopupFilterHeaderModel to show or hide the popup menu after a value selection is made.
-Added ListTableFilter and ValuesTableFilter for filtering the rows of a TableModel based on a list of rows and values respectively.
-Fixed a bug with TreeTable not setting a new TableReorder correctly.
-Fixed some issues with DefaultSortTreeTableModel and DefaultFilterTreeTableModel crashing when the underlying data model changed.
-Added methods in FilterTreeTableModel for allowing the assignment of TableFilters at each node or tree level.
-Added TreeNodeEnumeration and LevelNodeEnumeration for enumerating through the nodes of a TreeModel.
-Implemented the new methods specified by FilterTreeTableModel in DefaultFilterTreeTableModel.

30/10/2006 - version 3.4.1

-Fixes a bug with TreeTable not expanding/collapsing rows when locked columns are used.
-Added setRows method to ObjectTableModel.
-Fixed a bug with SortTableModel and FilterTableModel throwing an IndexOutOfBoundsException in some cases.
-SortTableModel and FilterTableModel now override the tableChanged method instead of fireTableChanged.

27/10/2006 - version

-Fixed a bug with AdvancedJScrollPane not locking the right portion of fixed columns correctly.
-Fixed a rendering bug in TreeTableHeader when columns at higher tree levels were added.
-Included updated manual covering TreeTableHeader and VetoableColumnModel in release.

26/10/2006 - version 3.4

-Introduced TreeTableHeader, a JTableHeader subclass capable of displaying table columns in a hierarchical structure.
-Introduced VetoableTableColumnModel, a TableColumnModel which can 'veto' (prevent) table columns from being added, removed or moved.
-Tooltips are now visible on the first column of a treetable.
-Included an option to enable/disable column grouping from TableAssistant's column dialog.
-Column width, visibility and moving of columns in the column dialog can now occur for multiple selections.
-Added a method to TableAssistant to make the column dialog visible programmatically.

4/10/2006 - version

-Fixes a bug with SortTableModel not sorting null values properly.
-DateFilter can now be serialized.
-TreeTable's selections are now preserved when a node is expanded.
-Added key navigation for the TreeTable.
-TreeTable's selections are preserved when the expand/collapse icon is clicked with the mouse.
-DefaultFilterTreeTableModel and DefaultSortTreeTableModel now correctly update themselves when the underlying model changes.
-Added shouldFilter and shouldSort methods in DefaultFilterTreeTableModel and DefaultSortTreeTableModel respectively to allow the behaviour of the filtering and sorting to be easily modified.

27/9/2006 - version

-Fixed a bug in ArrowButton not setting the correct color in the constuctor
-Added methods in TableAssistant to select the resizing function to perform when the user double-clicks on a column border.
-Fixed a bug in CachedTableModel not correctly setting the cache store.
-Added method in AbstractTreeTableModel that assigns the root node.
-Fixed a bug in TreeTableModelMap returning null instead of the node's value in some cases.

8/9/2006 - version

-DefaultMutableTreeTableModel is now editable (via the setEditable(boolean) method).
-TableReorder now also restores column selections.
-Added ListTreeTableModel.
-Fixed a bug with scrolling the table while having frozen columns.
-Added the ability to SortTableModel and FilterTableModel to specify whether sorting and filtering respectively should be performed when the underlying data changes.
-Fixed a bug with moving group columns with the mouse.
-Added methods to TableAssistant for resizing the columns to the header or column contents.
-Addded TABLE_ASSISTANT_GROUP_NAME key in that identifies the text to display when creating a group column at runtime.

21/7/2006 - version

-GroupTableColumns can now be reordered with the mouse.
-FilterTableModel and SortTableModel now behave properly after the underlying model has been updated.
-Fixed some paint bugs regarding AdvancedJScrollPane and locked rows/columns.
-ObjectTableModel now implements ReorderModel for sending a map of how the rows have changed after an update, in case this is not possible with any of AbstractTableModel's fire methods (like the removal of non-consecutive rows).
-Added methods in ObjectTableModel for inserting rows to the model.

10/7/2006 - version

-Modified the com.sciapp.filter and packages in order to make available the combo box instances of the filter table panels.
-Added the feature to group/ungroup columns at runtime via TableAssistant's 'More' panel.

29/6/2006 - version 3.3.5

-TreeTable now does not allow cell editing in the first (tree) column if the user clicks with the mouse on the expand/collapse (+/-) icon.
-Fixes some paint problems with the GroupTableHeader.
-TableAssistant's 'More' panel has been extended to include setting the column width, showing/hiding the columns and changing their order and name.
-There is now the option in JDateChooser to hide/show the date and time selection panels.
-Added the moveNode method in MutableTreeTableModel that moves one or more nodes within the same node.
-Fixes a bug in SortTableModel that wasn't sorting properly when table columns were reordered.
-TreeTableModelMap overrides the isHeader,isFooter and isAggregate methods for delegating them to the underlying treetable model.

21/6/2006 - version 3.3.4

-DefaultFilterTreeTableModel and DefaultSortTreeTableModel can now wrap any TreeTableModel implementation.
-FilterTableModel and SortTableModel now convert the TableModelEvent received from the underlying TableModel according to the (row) transformation performed.
-Included the shouldToggleExpand method in TreeTable that defines when a node should be expanded/collapsed.

19/6/2006 - version 3.3.3b

-Added TableDefinition class for easy defining the structure of a table model.

30/5/2006 - version 3.3.3

-Added ExportManager for exporting the data of a tablemodel to an OutputStream.

25/5/2006 - version 3.3.1

-Improved the non-scrollable rows/columns framework (still experimental).

18/5/2006 - version 3.3

-DirectoryTreeTableModel now extends MutableTreeTableModel instead of AbstractTreeTableModel.
-Fixed a bug with TreeTableModelAdapter not expanding the root node when nodes are inserted.
-Added methods to MutableTreeTableModel for adding columns and defining their class.
-Introduced ComparableTreeTableModel, a MutableTreeTableModel subclass, whose tree structure is dictated by a set of TreeTableComparators.
-Added TreeNodeComparator for comparing the nodes of a treetable model.
-Added NodeGroupingPanel, a panel through which users can dynamically control the structure of a ComparableTreeTableModel.
-TreeTableComparator now defines if a group node should be created if there is only one child at its corresponding tree level.

4/5/2006 - version 3.2

-Modified Filters, SortTableModel and DynamicTreeTableModel so that it is possible to easily save and load their states.
-Added SizeRenderer which displays the length of a file on a table's cell.
-Made StatusPanel show text retrieved from the resource file.
-Added DirectoryTreeTableModel and related classes for displaying a directory structure.
-Added SortTreeTableModel, FilterTreeTableModel that provide a sortable and filterable representation of a treetable model respectively.
-Added MutableTreeTableModel for dynamically adding and removing tree nodes, independent of any underlying data.
-Added DefaultTreeTableReorder that takes care of row selections when the data of a treetable model are reordered in some way.
-Moved the methods of AggregateRow that deal with aggregate data to its superclass, TreeTableRow.
-Added the isRangedModel method to CacheableTableModel and CacheableTreeTableModel that determines whether data can be fetched in ranges.
-Added a special PivotTableModel implementation, MSAccessPivotTableModel, for dealing with pivot tables with Microsoft Access Databases.
-Modified SQLFilterConverter to be able to convert a BooleanFilter to an sql statement.

17/4/2006 - version 3.1

-Provided a fix for the time field of the JDateChooser by disabling the deletion keystrokes.
-Modified DateFilter to return the date comparator used when filtering
-Added ignore time option in DateVisualFilter.
-Modified DateVisualFilter to display the time as well, when the filter is set not to ignore time differences.
-Provided an experimental package for adding locked rows/columns (com.sciapp.table.locked).
-For a GroupTableHeader, made it possible to control the visibility of the columns underneath a group column.
-Modified TableAssistant to limit the number of columns in the column popup and to provide a dialog for more column options.
-Fixed a bug with SortTableModel not showing the data when it is initialized with a ListTableModel that contains some data.

3/4/2006 - version 3.0.1

-Fixed a bug with JDateChooser throwing a NullPointerException when resetting to a null value
-Fixed a bug with JTableRowHeader shifting rows one pixel to the right with Java 1.4
-Modified DefaultRemoteTableModel and DefaultRemoteTreeTableModel to return a Boolean pending value for Boolean values.
-DefaultDatabaseTableDefinition now includes a method for adding independent column definitions
-DefaultDatabaseTableModel and DefaultPivotTableModel are now able to do joined queries
-DefaultPivotTableModel is now able to evaluate a complex aggregate function from the database
-Added a demo for the database components

29/3/2006 - version 3.0

This is a major update:
-added a groupable table header.
-fixed some bugs with FilterHeaderModel throwing a NullPointerException in some extreme cases.
-FilterTableHeader now extends GroupTableHeader.
-fixed a bug with OrTableFilter.
-added a factory for creating TableCellRenderers.
-added a TableCellRenderWrapper class for encapsulating a TableCellRenderer.
-fixed a bug with AdvancedJTable throwing an exception when stopping the edition of a cell in some cases.
-table assistant was modified to make it work with a GroupTableHeader: The column popup now includes only top level group columns.
-better designed and modified the com.sciapp.table.cache package
-added RemoteTableModel and RemoteTreeTableModel that asynchronously retrieve data from a CacheableTableModel and CacheableTreeTableModel respectively.
-added a PivotTableModel, which displays cross-tab (pivot) database queries.
-provided a better design for a TreeTable and a TreeTableModel. The new classes now reside in the com.sciapp.treetable package.
-implemented a basic database-enabled TreeTableModel that is able to display data from a database in a tree-like structure.

10/2/2006 - version 2.5

-Introduced a caching mechanism for TableModels (com.sciapp.table.cache).
-Created DatabaseTableModel for fetching data from a database (com.sciapp.table.db).
-Added ThreadedListTableModel which can be used to make a ListTableModel 'thread safe'.
-Added internationalization support through resource bundles (TableResourceManager).

3/2/2006 - version

-Fixed a bug with SortTableModel throwing an exception when the table model's data is cleared.
-Fixed a bug with SpanDrawer not drawing correctly the spanned branch nodes.

17/1/2006 - version 2.4.1

-Added a table cell editor that provides multiple possible values for a cell through a combo box.
-Added a progress bar table cell renderer.
-Added interface FilterListModel which all table models that filter the data of a table must implement.
-Made SortTableModel remember the original ordering of the row data, after a sort has taken place.
-Redesigned the com.sciapp.table.span package. A SpanDrawer object is now used to draw the spanned cells of the table, while a SpanModel defines which cells will be spanned.

8/12/2005 - version 2.4

-Added ability to merge/split cells.
-Added a row table header.
-Introduced style objects for easy cell rendering.
-Added filtering support for Double, Long and Float objects.

18/11/2005 - version 2.3

-AdvancedTableHeader now has a method for querying whether a column can be reordered (with the mouse).
-FilterHeaderModel now updates itself correctly when the data model of the associated table is changed. Also,
it does not throw an exception when null cell values are present in a column.
-exposed private methods sortData and filterData, of SortTableModel and FilterTableModel respectively, to the API.
-Included a method to make the first column of the table not movable.
-Introduced fading in popup menus.
-the date editor can now accept null values without throwing an exception.

27/10/2005 - version 2.2

-Improved the header-filter by adding a dynamic custom filter.

19/10/2005 - version 2.1

-Implemented excel-like filtering using the columns of the table's header.
-Incorporated the skinnable look-and-feel library by

30/9/2005 - version 2.0

-Redesigned the com.sciapp.filter package.
-Greatly improved treetable component with multi-level trees, headers, footers and aggregate functions.
-Various improvements and optimizations.

16/6/2005 - version 1.1

First commercial version of the library.

Most important features:

-Multiple column sorting
-Row/column filtering
-Auto-adjustment of column widths
-Various visual enhancements
-Treetable component

14/2/2005 - version 1.0b

Beta version of the library.