Release Notes

JViews Charts Release Notes

This document describes the main changes that have been made to JViews Charts since version 8.0.

Incompatibilities
Charts Symbols Palette
Interactors Source Code
Stacked Charts
Stacked Charts with Negative Values
Radar Charts
Labels of Category Scales
Performance: Batching of Events
Performance: CSS Styling
Performance: Labels
Performance: Repainting
Interactor Precedence
Interactions
Printing
PDF Generation
Sorting a Data Set
Legend Items API
Marker API
Model Sorting API
Model Adapters API
Internationalization
Eclipse/RCP Support
Applet Support
Other Changes in Charts Classes
Other Changes in DHTML JavaServer Faces Components
Other Changes in Utility Classes
Example Changes


Incompatibilities


Charts Symbols Palette

A charts palette is shipped with JViews Diagrammer. It provides an easy way to integrate charts into dashboards. See the "Using the Dashboard Editor" documentation in JViews Diagrammer for details.

Interactors Source Code

Interactors are now provided with source code. This makes it easier for you to adapt and extend JViews Charts interactors. See the sample interactors for details.

Stacked Charts

Stacked charts where different data sets have different sets of x values are now displayed correctly. If your application was relying on the old (incorrect) rendering, you can enforce this old rendering mode by calling setStackedByIndex(true).

Modified Classes

ilog.views.chart.renderer.IlvBarChartRenderer

ilog.views.chart.renderer.IlvPolylineChartRenderer


Stacked Charts with Negative Values

A new type of bar charts has been added, "stacked diverging". It provides a clear display of negative values in stacked charts. See method setDiverging for details.

Modified Classes

ilog.views.chart.IlvChartRenderer

ilog.views.chart.renderer.IlvBarChartRenderer


Radar Charts

In radar charts, the shape of distorted bars can be specified as either exact, polygon, or quadrilateral. The choice of the shape represents a compromise between drawing quality and drawing speed.

ilog.views.chart.renderer.IlvBarChartRenderer

ilog.views.chart.renderer.IlvSingleBarRenderer


Labels of Category Scales

In a scale with a non-numerical (category) axis, the labels can now be positioned between categories instead of at each category.

Modified Classes

ilog.views.chart.IlvCategoryStepsDefinition


Performance: Batching of Events

Batching of events in the data sets has been changed. Now it is guaranteed that batching events will not hurt the performance: it will always improve the performance or have no effect on speed.

In JViews 8.0 batching of changes at the data set level (see startBatched, endBatched, isBatched) had the effect to combine several data set events at the data set already. Now, instances of DataSetListener receive these events separately, preceded by an event of type BATCH_BEGIN and followed by an event of type BATCH_END. Please review all your implementations of DataSetListener to make sure that they support the BATCH_BEGIN and BATCH_END event types. There are three ways of doing so; they differ in the resulting performance:

New Interfaces and Classes

ilog.views.chart.event.IlvBatchingDataSetListener

This class is a data set listener that wraps a data set listener and performs batching of events.

Modified Classes

ilog.views.chart.event.DataSetContentsEvent

ilog.views.chart.data.IlvFilterDataSet


Performance: CSS Styling

The performance of CSS styling has been increased:

Performance: Labels

The label renderer is now faster when drawing the same label repeatedly.

Modified Classes

ilog.views.chart.IlvLabelRenderer


Performance: Repainting

Panels that have expensive drawing and a frequent update of minor parts of the view can be slow.

Expensive drawing here means that the time to redraw the entire panel can be large, due to a large number of data points or annotations, or rendering with high graphic quality (anti-aliasing, gradients, text or similar).

Frequent update here means around 10 updates per second or more.

In this situation, the slowness can come from the default Swing RepaintManager. By default, it will combine the regions to be updated, preferring an update of a large rectangle to two separate updates of small rectangles. While this is a useful heuristic in a GUI that redraws itself quickly, it can be a performance bottleneck in combination with JViews.

JViews provides a substitute RepaintManager in the class IlvExpensiveDrawingRepaintManager. It can greatly reduce the time needed for a redraw, by applying more advanced heuristics regarding which area to redraw.

New Interfaces and Classes

ilog.views.util.swing.IlvExpensiveDrawingRepaintManager

A repaint manager optimized for expensive drawing.


Interactor Precedence

When several interactors are attached to a chart, and none of the interactors is "active" (i.e. processing the current interaction), and a new event arrives, this event will be dispatched to the interactors in order of decreasing priority. The priority can now be specified for each interactor.

ilog.views.chart.IlvChartInteractor


Interactions

New API has been added to allow all data points or series to be determined at the location where the user clicked. Previously, the API allowed only to retrieve one of these data points or series.

Modified Classes

ilog.views.chart.IlvChart

ilog.views.chart.IlvChartRenderer


Printing

The background color of a printed chart may now be specified to be different from the background color on screen. Usually, you will want to specify a white background for printing.

Modified Classes

ilog.views.chart.IlvChartPrintContext

ilog.views.chart.print.IlvChartPrintableDocument


PDF Generation

When generating a PDF output containing a chart, it is now possible to specify a different background color than the one appearing on the screen. Often you will want to specify white as the background color for PDF.

Modified Classes

ilog.views.chart.IlvChart


Sorting a Data Set

A new utility class has been added that takes a data set with (x,y) points in arbitrary order and produces a data set with the same points, sorted in ascending x order.

New Interfaces and Classes

ilog.views.chart.data.IlvXSortedDataSet

This class encapsulates a data set and sorts its data points so that the X values are in ascending order.


Legend Items API

The legend items API has been made customizable: You can now create your own subclasses of IlvLegendItem.

Modified Classes

ilog.views.chart.IlvLegendItem

ilog.views.chart.IlvIconLegendItem

ilog.views.chart.IlvRendererLegendItem


Marker API

The constants that stand for specific marker have been moved from the interface IlvMarker to the class IlvMarkerFactory.

Modified Classes

ilog.views.chart.graphic.IlvMarkerFactory


Model Sorting API

The sorting criterion stored in an IlvTreeTableDataSource can now be represented by a model independent object.

New Classes

ilog.views.chart.datax.adapter.sort.IlvComparatorFactory

This interface allows you to create a Comparator for the objects in a given object model.

ilog.views.chart.datax.adapter.sort.IlvConstantComparatorFactory

This class represents a comparison that does not depend on the model being sorted.

ilog.views.chart.datax.adapter.sort.IlvLexicographicComparatorFactory

This class represents a comparison based on multiple comparison criteria, also known as "lexicographic" sorting.

ilog.views.chart.datax.adapter.sort.IlvColumnValueComparatorFactory

This class represents a comparison between model objects that is based on the values of the object in a given column.

Modified Classes

ilog.views.chart.data.IlvTreeTableDataSource


Model Adapters API

The ilog.views.chart.datax.adapter.IlvDataSourceToFlatTableModel class can now create table columns containing the labels of the data sets.

ilog.views.chart.datax.adapter.IlvDataSourceToFlatTableModel


Internationalization

When exporting a Chart data model to an XML file, the resulting file can be specified to be specific to a given locale. By default, a locale-independent file is written, that can be read in any locale.

ilog.views.chart.data.xml.IlvXMLDataWriter


Eclipse/RCP Support

Eclipse/RCP applications have to deal with class loaders: Every Eclipse plugin has its own class loader, and the access to classes and resources is restricted to those defined by the plugin or its dependencies.

JViews applications may need to use resources coming from different, unrelated plugins. You can register the class loaders of these plugins in the class IlvClassLoaderUtil, to ensure JViews will find them, despite the fact they are not all reachable from a single class loader.

New Interfaces and Classes

ilog.views.util.IlvClassLoaderUtil

This class contains utility functions for registering class loaders and for looking up classes and resources.


Applet Support

All resource bundles of JViews are now loaded through the IlvResourceUtil class. This class allows you to configure applets so that they no longer attempt to load resources unsuccessfully over the net for locale bundles that do not exist. This speeds up the startup time of applets that run in browsers with a different locale than the locales provided by the applet.

New Interfaces and Classes

ilog.views.util.IlvResourceUtil

Utilities for resource bundles.


Other Changes in Charts Classes

Modified Classes

ilog.views.chart.IlvAxis

ilog.views.chart.IlvChart.Area

ilog.views.chart.IlvChartDecoration

ilog.views.chart.graphic.IlvDataIndicator

ilog.views.chart.IlvChartInteractor

ilog.views.chart.IlvChartRenderer

ilog.views.chart.IlvDoublePoints

ilog.views.chart.IlvLabelRenderer

ilog.views.chart.IlvCategoryStepsDefinition

ilog.views.chart.data.IlvAbstractDataSet

ilog.views.chart.data.IlvDataPoints

ilog.views.chart.data.IlvDefaultDataSet

ilog.views.chart.data.IlvDefaultDataSource

ilog.views.chart.data.IlvSwingTableDataSource

ilog.views.chart.data.lod.IlvDataTile

ilog.views.chart.data.lod.IlvLODDataSet

ilog.views.chart.renderer.IlvPieChartRenderer

ilog.views.chart.renderer.IlvTreemapChartRenderer


Other Changes in DHTML JavaServer Faces Components

Modified Classes

ilog.views.chart.faces.dhtml.component.IlvChartDHTMLView

ilog.views.chart.servlet.IlvChartServletSupport

ilog.views.chart.servlet.IlvIMapArea


Other Changes in Utility Classes

New Interfaces and Classes

ilog.views.util.IlvRuntimeException

IlvRuntimeException is a simple RuntimeException extension that allows a checked exception to be wrapped and rethrown as an unchecked exception.

ilog.views.util.collections.IlvBreadthFirstIterator

IlvBreadthFirstIterator is an abstract class that provides traversal over a generic tree structure of objects in breadth first order.

ilog.views.util.data.IlvCSVTableModel

This class represents a table model as returned by the IlvCSVReader.

ilog.views.util.swing.IlvEventUtil

Utilities for event masks.

ilog.views.util.swing.IlvJSplitPane

This class is a variant of the Swing JSplitPane for which the setDividerLocation call has an effect even if called early, before the component is validated.

ilog.views.util.swing.layout.IlvGridFlowLayout

IlvGridFlowLayout is an extension of GridLayout that lays out the components of a container in a rectangular grid.

Modified Classes

ilog.views.chart.swing.IlvDoubleSlider

ilog.views.util.styling.IlvMutableStyleSheet

ilog.views.util.swing.IlvSwingUtil

ilog.views.util.swing.SwingFactories


Example Changes