11/2/2008 - version 3.6.5.13 ------------------------------- -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 3.6.5.2 ------------------------------- -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 3.6.4.2 ------------------------------- -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 3.4.7.14 ------------------------------- -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 3.4.7.12 ------------------------------- -Fixed a bug in PopupFilterHeaderModel throwing a null pointer exception when the headermodel was removed from the table. 24/7/2007 - version 3.4.7.11 ------------------------------- -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 3.4.7.5 ------------------------------- -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 3.4.7.4 ------------------------------- -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 3.4.7.2 ------------------------------- -Added highlight feature in search panel. 13/6/2007 - version 3.4.7 ------------------------------- -Introduced the com.sciapp.table.search 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 3.4.5.8 ------------------------------- -Added a method in JDateChooser for assigning the default time when the chooser first appears (setDefaultTime). 17/4/2007 - version 3.4.5.7 ------------------------------- -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 3.4.5.6 ------------------------------- -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 3.4.5.4 ------------------------------- -Fixed a bug with DistinctDatabaseTableModel not correctly returning the row count when null values are present. 29/3/2007 - version 3.4.5.3 ------------------------------- -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 3.4.5.1 ------------------------------- -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 3.4.4.3 ------------------------------- -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 com.sciapp.table.group package that allow the filtering of table columns via a drop down button that is installed on each column. 21/11/2006 - version 3.4.2.1 ------------------------------- -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 3.4.0.1 ------------------------------- -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 3.3.5.7 ------------------------------- -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 3.3.5.6 ------------------------------- -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 3.3.5.4 ------------------------------- -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 TableLibraryBundle.properties that identifies the text to display when creating a group column at runtime. 21/7/2006 - version 3.3.5.2 ------------------------------- -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 3.3.5.1 ------------------------------- -Modified the com.sciapp.filter and com.sciapp.filter.auto 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 2.4.1.1 ------------------------------- -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 l2fprod.com 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.