VERSION CHANGES

Changes from 2.0.3 to 2.0.4:
- fixed a bug where a set locale was not applied for the output dates

Changes from 2.0.2 to 2.0.3:
- added possibility to run JavaScript void() operator from applet
- added possibility to run built-in JavaScript functions from applet
- Added exportData(int width, int height, char separator, boolean header) and getExportData(char separator, boolean header) methods that makes it possible to export data with header
- added resetRow(int) and resetAllRows() methods that make it possible to reset row paramters (font, background, foreground, url, cell images...)
- fixed a bug where fieldSeparator were not applied to the value set by filterValueSeparator
- fixed a bug where the rows were not sorted on reload when the updateData was called
- fixed a bug where the filterWildCard could not be read from the data file
- fixed a bug where the decimal separator in filter were not locale-dependent for the columns of type NUMBER

Changes from 2.0.1 to 2.0.2:
- added possibility to filter rows by typing in multiple words in the filter field
- added public loadData(url, progressIndicatorOn)
- added public containsRow(rowIndex)
- added protected methods getCellLabel(), getRowHeight(), compareRows(), and paintCellLink() for better subclass control
- a URL link can now be opened by hitting enter, in addition to mouse clicks
- the column collapse arrows were moved to the left edge of each column header field
- fixed a bug where showStatus() failed if the table was used within another applet
- fixed a bug where URL links would not work if the table was used within another applet
- fixed a bug where a URL link could not be removed once set
- fixed a bug where javascript URL links did not work when using Sun Java within Internet Explorer
- fixed a bug in which non-western encoded data could not be loaded from a URL
- fixed a bug which caused incorrect sorting of empty cells
- fixed a security exception if the table was used in IE with very large resolutions
- fixed a performance problem caused by excessive repainting of the table on mouse-move

Changes from 2.0 to 2.0.1:
- added <param name=locale value="XX,eu"> to display euro for currency columns
- fixed a bug which caused problems with column adjusting using JDK 1.4.1
- fixed a bug with IP address parsing, causing invalid sorting of IP columns
- fixed a bug which caused problems if the last field of a row was empty
- fixed a bug with double-click column auto-adjust if the number of rows was small
- fixed a bug with removeAll() which could cause invalid return from getColumnTotal()
- fixed a memory leak if animated gif images were used

Table 2.0 feature summary
- Added methods to export data
- Added possibility to load data from a URL
- Added possibility to display message and progress while loading data
- Added possibility to update the applet data at runtime using F5
- Added possibility to set header fonts
- Added multiline header labels
- Added possibility to set the header field background colors
- Added possibility to set row fonts, default and individual rows
- Added possibility to set alternating row background color
- Added header and filter tooltip labels
- Added header, column, and cell images
- Added date type column
- Added IP address column type
- Added possibility to get the cells of a column
- Added a sort order indicator
- Added possibility to configure default column sort order
- Added possibility to sort a column on initial applet loading
- Made the filter bar look like a text field
- Added more filter operators
- Changed to left click to type and search, and right click or enter to toggle filter
- Added possibility to set filter bar position
- Added possibility to set filter bar colors
- Added possibility to set filter field values
- Added possibility to set initial filter field values when the applet loads
- Added possibility to set initial filter activation when the applet loads
- Added possibility to use applet inside other applets
- Added functionallity to use java arrays in javascript
- Added possibility to call javascript methods on url links
- Added possiblity to add links directly in rows like this "<url:http://www.host.com/page.html>row data"
- Added a noline style for the URLs
- Added new table events; right click, data loaded, sort, filter, search, scroll
- Added mouse position to row selection events
- Added multiple selection using shift
- Added possibility to configure selection colors
- Added possibility to collapse individual columns at runtime
- Added possibility to display hidden cells on mouseovers
- A column is now auto-adjusted to the widest label if you double click the header edge
- Better applet loading performance using rowCellParameters
- Better memory usage by adding configurable label cache
- Added possibility to control the thousands delimiter
- Rewrote the entire protected Table API to make it more extensible by subclasses
- Better runtime performance, row navigation, searching, and filtering

Changes from 2.0pre5 to 2.0:
- added <param name=dataInterval value="20"> to refresh the data at specified intervals
- added setHeaderImage(int column, Image image)
- added <param name=headerImage_N value=image>
- added getImageName(int column, int row)
- added setFilterEnabled(int column, boolean enabled)
- added <param name=filterEnabled value="0,2,3">
- added setMouseOverCellOn(boolean on) displaying hidden parts of cells on mouseovers
- added <param name=mouseOverCellOn value="true">
- paintCell(...) now calls paintCellBackground(...) and paintCellForeground(...) for better subclass control
- columns with cell images but no labels are now sorted by the image file names
- the total row now displays #filtered/#total rows for TOTAL_COUNT type columns if the filter bar is enabled
- optimized data loading and parameter setting (half the time of prior version)
- fixed a bug which caused some columns to be sorted very slowly
- fixed a bug with getColumnValues() that could cause an incorrect number of values to be returned
- fixed a bug with events originating from the table where the event source was incorrect
- fixed a problem with absolute row URLs if the applet was opened from a file

Changes from 2.0pre4 to 2.0pre5:
- added getExportData(char separator)
- added exportData(int width, int height, char separator)
- added <param name=exportFrameIcon value=image> and setExportFrameIcon(Image)
- added <param name=columnCollapsable value="0,2" and setColumnCollapsable(0, true)
- added <param name=columnCollapsed value="2" and setColumnCollapsed(2, true)
- added <param name=thousandsDelimiter value=character> and setThousandsDelimiter()
- added <param name=dateFormat value="format string"> in addition to dateFormat_N
- added <param name=dateFormatInput value="format string"> in addition to dateFormatInput_N
- added <param name=selectionBackground value="#7f0000"> and setSelectionBackground(color);
- added <param name=selectionForeground value="yellow"> and setSelectionForeground(color);
- added <param name=selectionCellBackground value="#7f7f00"> and setSelectionCellBackground(color);
- added !=, !* and = to the filter operators
- changed name of setHeader(int column, String label) to setHeaderLabel(int column, String label)
- changed name of Table.getHeader(int column) to getHeaderLabel(int column)
- added protected getNumericalValue(fields, column, type)
- added protected getFormattedNumber(number, decimals, columnType)
- added protected getTotalType(columnType)
- added protected getSortType(columnType)
- added protected matchesFilter(row, rowIndex)
- added protected getColumnTotalLabel(column)
- added protected calculateViewPorts()
- added protected calculateHeaderViewPort(viewport)
- added protected calculateVerticalScrollbarViewPort(viewport)
- added protected calculateHorizontalScrollbarViewPort(viewport)
- added protected calculateFilterViewPort(viewport)
- added protected calculateTotalRowViewPort(viewport)
- added protected calculateRowViewPort(viewport)
- added protected calculateColumnViewPort(column, viewport)
- added protected calculateLabelBounds(label, cellviewport, ...)
- added protected calculateMultiLineLabelSize(label, metrics)
- added protected calculateCellInfo(xpos, ypos, row_col_pos)
- added protected render(graphics)
- added protected paintLoadingDataMessage(graphics, viewport)
- added protected paintTable(graphics)
- added protected paintRows(graphics, rowViewport)
- added protected paintRowBackground(graphics, rowViewport, rowPosition)
- added protected paintRowSelection(graphics, rowViewport, rowIndex)
- added protected paintColumn(graphics, colViewport, colIndex)
- added protected paintCell(graphics, cellViewport, label, labelBounds, image, rowIndex, colIndex)
- added protected paintMultiLineLabel(graphics, bounds, label, alignment)
- added protected paintGrid(graphics, rowViewport)
- added protected paintHeader(graphics, headerViewport)
- added protected paintTotalRow(graphics, totalRowViewport)
- added protected paintFilterBar(graphics, filterBarViewport)
- added protected paintVerticalScrollbar(graphics, verticalScrollViewport)
- added protected paintHorizontalScrollbar(graphics, horizontalScrollViewport)
- added protected paintBorder(graphics, viewport)
- added protected paintTooltipLabel(graphics, label, xpos, ypos)
- added protected processNotifyListeners(tableEvent)
- added protected processEvent(event)
- added protected processMouseMoved(mouseEvent)
- added protected processMousePressed(mouseEvent)
- added protected processMouseDragged(mouseEvent)
- added protected processMouseReleased(mouseEvent)
- added protected processMouseClicked(mouseEvent)
- added protected processRowSelection(mouseEvent, rowIndex, colIndex, rowPos)
- added protected processVerticalScrollbar(mouseEvent)
- added protected processHorizontalScrollbar(mouseEvent)
- added protected processKeys(keyEvent)
- added protected processKeyRowNavigation(keyEvent)
- added protected processKeyFilterEdit(keyEvent)
- added an internal image cache for better memory usage and faster applet loading
- added more robust URL data loading with retries (5 times) if it fails for some reason
- fixed a bug with date filtering
- fixed a bug where the tooltipDelay and tooltipDelayHeader parameters were not read
- fixed a bug where ; could not be used at the end of javascript function calls
- fixed a potential problem with thread locking, also improving applet startup time
- fixed a bug where anchor URLs (#) did not work within the same page
- fixed a bug with multiple selections
- fixed some bugs with the date parsing
- fixed a bug with the label cache which caused it to cache labels it should not, using more memory than necessary

Changes from 2.0pre3 to 2.0pre4:
- added <param name=filterBarBackground> and setFilterBarBackground(Color color);
- added <param name=filterBarOnBackground> and setFilterBarOnBackground(Color color);
- added <param name=filterBarOnFontColor> and setFontColor("filterBarOnFontColor", Color color);
- added <param name=rowFont_N> and setRowFont(int row, Font font);
- added setFilterFields(Object[] fields);
- added isFilterOn(int index);
- added <param name=columnType value=ip> and setColumnType(column, Table.COLUMN_IP);
- added <param name=rowCellParameters value="none"> (for speedier startup)
- added <param name=rowCellParameters value="list of parameters to read">
- added <param name=labelCacheOn value=true> and setLabelCacheOn(true); (less memory)
- changed getColumn(index) to getColumn(index,start,count);
- added getColumnValues(index,start,count);
- added createArrayString(int[]);
- added <param name=loadingMessageOn value=true>
- changed updateData() to updateData(block);
- added getMaxVisibleRowCount();
- added getLastIndex();
- added TableEvent.getMousePosition();
- gotoRow(index) and gotoRowPosition(position) now returns true if the table scrolled
- added <param name=updateWhileLoadingURLData value=true>
- added callJavaScript(name);
- added <param name=columnOff value="1,3"> and setColumnOn(column, state);
- fixed a bug where javascript urls did not work on IE with Microsoft VM
- fixed a bug where only western characters could be typed in the filter bar
- fixed a bug with image alignment when center or right alignment was used
- fixed a bug where the table did not work properly with JDK 1.3/1.4
- fixed a bug which displayed an underline on cells with URLS and images, but no label
- fixed a bug with row insertion when the table was sorted
- fixed a bug where absolute url links did not work properly
- fixed a bug where the index or other rows changed when removing one row
- fixed a bug where decimals were displayed for 0 values

Changes from 2.0pre2 to 2.0pre3:
- added <param name=filterBarPosition value=top> and setFilterBarPosition(position);
- added <param name=filter value="value,value,value">
- added <param name=filterOn value="0,2">
- added <param name=tooltipFilter value="label"> and setTooltip("tooltipFilter", "label");
- added <param name=tooltipHeader value="label"> and setTooltip("tooltipHeader", "label");
- added <param name=tooltipDelay value=1000> and setTooltipDelay("tooltipDelay", 1000);
- added <param name=tooltipBackground value=color> and setTooltipBackground(Color.yellow);
- added <param name=defaultSortOrder value="asc,desc,asc"> and setDefaultSortOrder(column, SORT_DESCENDING);
- added <param name=sortedColumn value="3">
- added <param name=headerBackground value="gray"> and setHeaderBackground(0, Color.gray);
- added loadAppletParameters(paranmeters);
- added loadURLParameters(url, parameters);
- added setParentApplet(applet);
- added setParameterPrefix(label);
- added getColumn(column,start,count);
- added getRowPosition(index);
- added getFirstRowPosition();
- added getSortOrder(column);
- added getLastSortedColumn();
- changed update() to updateData();
- TableEvent.getSelectionType() deprecated and replaced by getType();
- added new table events (sorted,filtered,data_loaded,scrollerd,search)
- filter editing made easier and more efficient
- added a sort order indicator in the header fields
- added multiline labels in the header using \n
- added better row navigation with page up, page down, home, end, left, and right

Changes from 2.0pre1 to 2.0pre2:
- added <param name=image_0 value="image.gif"> and setImage(col, -1, image);
- added <param name=cellImage_0_0 value="image.gif"> and setImage(col, row, image);
- added <param name=columnType value="date"> and setColumnType(col, Table.COLUMN_DATE);
- added <param name=dateFormatInput_N value="date pattern">
- added <param name=dateFormatInputLocale value="country code">
- added <param name=dateFormat_N value="date pattern"> and setDateFormatter(0, formatter);
- added <param name=font value="Arial,plain,12"> and setFont(new Font("Arial", Font.PLAIN, 12));
- added <param name=headerFont value="Arial,plain,12"> and setFont("headerFont", new Font("Arial", Font.PLAIN, 12));
- added <param name=headerFontColor value="black"> and setFontColor("headerFontColor", Color.black);
- added <param name=rowFont value="Courier,bold,12"> and setFont("rowFont", new Font("Courier", Font.BOLD, 12));
- added <param name=rowFont_N value="Courier,bold,12"> and setRowFont(3, new Font("Courier", Font.BOLD, 12));
- added <param name=totalRowFont value="Arial,italic,12"> and setFont("totalRowFont", new Font("Arial", Font.ITALIC, 11));
- added <param name=totalRowFontColor value="black"> and setFontColor("totalRowFontColor", Color.red);
- added <param name=filterBarFont value="Arial,italic,12"> and setFont("filterBarFont", new Font("Arial", Font.ITALIC, 11));
- added <param name=filterBarFontColor value="black"> and setFontColor("filterBarFontColor", Color.red);
- added <param name=alternateRowBackground value="lightGray"> and setAlternateRowBackground(Color.gray, 2, 0);
- fixed a bug which did not remove the selection or foreground/background color when removing a row
- fixed a bug where a multiple word filter did not work when progressive filter was turned on

Changes from 1.2.4 to 2.0pre1:
- added <param name=data value=url.html>
- added setParameters(parameters);
- added <param name=loadingMessageOn value="true">
- added <param name=loadingDataMessage value="message">
- added update();
- added setHeader(index, label);
- added <param name=urlStyle value=noline>
- increased rendering performace by over 200%
- fixed a bug which caused the incorrect URL to be opened

Changes from 1.2.3 to 1.2.4:
- added gotoRow(index); and gotoRowPosition(position);
- added >, >=, <, <=, and <> operators for the filter bar
- added page scrolling when clicking above and below scroll slider
- fixed some bugs with the scrollbars
- fixed a bug where the row background color did not scroll
- fixed a bug where the row url link color did not work
- table now scrolls to the row found when searching using the filter bar

Changes from 1.2 to 1.2.3:
- added getLastSelectedCell();
- decreased the applet data loading time
- fixed a bug where selection was very slow
- fixed other bugs with selection
- fixed a bug in the removeRow() and removeAll() methods
- fixed a bug where upper and lowercase letters were not sorted correctly
- the total row foreground set to the default row foreground
- fixed a bug where the wrong URL was selected when clicking on a link

Changes from 1.1 to 1.2:
- added <param name=columnType value="currency"> and setColumnType(0, Table.COLUMN_CURRENCY);
- added setPreferredSize(width, height);
- added <param name=locale value="no,no"> and setLocale(locale);
- added <param name=headerOff value="0"> and setHeaderOn(state);
- added <param name=rowForeground_N value="red"> and setRowForeground(0, Color.red);
- added <param name=rowBackground_N value="yellow"> and setRowBackground(0, Color.yellow);

Changes from 1.0 to 1.1:
- added <param name=url_N value="http://objectplanet.com">
- added <param name=columnStretchOn value=true> and setColumnStretchOn(state);