|
Components |
|
| |||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
com.sas.graphics.components.waterfallchart.WaterfallChart
public class WaterfallChart
The WaterfallChart component is a Swing component that produces waterfall charts that support the visualization of multiple response variables. Waterfall charts represent a requested statistic based on the values of one or more variables. They are useful for tracking dependencies between the charted values and compairing their magnitudes.
Note. This class can be used to render client-side graphs in Java applications or applets. The com.sas.servlet.tbeans.graphics.html.WaterfallChart class can be used to render server-side graphs in Java servlets or JavaServer Pages (JSP). Both classes use the models in the com.sas.graphics.components package.
Graph
,
GraphModel
,
GraphStyle
,
NoteModel
,
WaterfallChartModel
,
WaterfallChartDataModel
,
WaterfallChartTableDataModel
,
WaterfallChartOLAPDataModel
,
Serialized FormField Summary | |
---|---|
static java.lang.String |
RB_KEY
|
protected java.awt.event.MouseListener |
scrollBarListener
|
Fields inherited from class com.sas.graphics.components.Graph |
---|
footnoteContainer, titleContainer |
Constructor Summary | |
---|---|
WaterfallChart()
Construct a WaterfallChart applying the default GraphStyle (GraphStyle.STYLE_CONVENTION). |
|
WaterfallChart(WaterfallChartDataModel waterfallChartDataModel)
Construct a WaterfallChart attaching the WaterfallChartDataModel. |
|
WaterfallChart(WaterfallChartDataModel waterfallChartDataModel,
GraphStyle defaultGraphStyle)
Construct a WaterfallChart attaching the WaterfallChartDataModel and applying GraphStyle to the WaterfallChart's WaterfallChartModel. |
Method Summary | |
---|---|
void |
applyColorScheme(ColorScheme scheme)
Apply a color scheme to this graph's display attributes. |
protected void |
applyDataModel()
Intended for internalUse only |
protected void |
applyGraphModel()
For internal use only. |
void |
applyGraphStyle(GraphStyle graphStyle)
Apply GraphStyle properties onto the graph. |
WaterfallChartDataModel |
getDataModel()
Returns the WaterfallChartDataModel
which provides a handle to the data and associated
graph mapping properties. |
static com.sas.beans.ExtendedBeanInfo |
getExtendedBeanInfo()
Returns information used by the com.sas.beans.Introspector to
augment the automatically introspected information about this WaterfallChart. |
WaterfallChartModel |
getGraphModel()
Returns the WaterfallChartModel that encapsulates most of the WaterfallChart's display properties. |
ChartImageMapInfo |
getImageMapInfo()
The ChartImageMapInfo class encapsulates the mapping of regions associated with data elements, labels (for both axes and legends) and values (for both axes and legends) as projected onto the display area along with their associated data. |
boolean |
isAnimationEnabled()
|
boolean |
isAutoRepaintEnabled()
Returns whether or not the graph automatically repaints when any of its properties (contained in associated models GraphModel, DataModel, NoteModel, etc) has changed. |
void |
prepareToPaint()
Notify this component that an application is about to call paint directly. |
protected void |
selectionChanged()
Internal use only. |
void |
setAnimationEnabled(boolean enabled)
|
void |
setAutoRepaintEnabled(boolean b)
Sets whether or not the graph automatically repaints when any of its properties (contained in associated models GraphModel, DataModel, NoteModel, etc) has changed. |
void |
setDataModel(WaterfallChartDataModel newDataModel)
The number and arrangement of bar elements, axes and legend is determined by the WaterfallChart 's
dataModel property (a WaterfallChartDataModel |
void |
setDisplayPolicy(int newDisplayPolicy)
Set how the graph is to utilize the display area. |
void |
setGraphModel(WaterfallChartModel newWaterfallChartModel)
Sets a WaterfallChartModel encapsulating most
of the bar chart's display properties. |
void |
setLocale(java.util.Locale locale)
Sets the locale of this component. |
protected void |
updateDataModelListeners()
Internal use only. |
Field Detail |
---|
public static final java.lang.String RB_KEY
protected java.awt.event.MouseListener scrollBarListener
Constructor Detail |
---|
public WaterfallChart()
GraphStyle
public WaterfallChart(WaterfallChartDataModel waterfallChartDataModel)
Passing in a null WaterfallChartDataModel is equivalent to calling the default constructor.
waterfallChartDataModel
- the data to be used by this graphGraphStyle
,
WaterfallChartTableDataModel
,
WaterfallChartOLAPDataModel
public WaterfallChart(WaterfallChartDataModel waterfallChartDataModel, GraphStyle defaultGraphStyle)
Passing in a null WaterfallChartDataModel or GraphStyle is acceptable. If a null GraphStyle is passed in the WaterfallChart will apply the default GraphStyle (GraphStyle.STYLE_CONVENTION).
waterfallChartDataModel
- the data to be used by this graphdefaultGraphStyle
- the set of graph display propertiesNoteModel
,
WaterfallChartModel
,
WaterfallChartTableDataModel
,
WaterfallChartOLAPDataModel
Method Detail |
---|
public void setAnimationEnabled(boolean enabled)
public boolean isAnimationEnabled()
public void setDisplayPolicy(int newDisplayPolicy) throws java.lang.IllegalArgumentException
On the occasion when insufficient display area is available, the graph has to decide whether to use scroll bars and only display a portion of the graph or to draw the entire graph into the available space (shrinking and adjusting portions of the graph as best it can).
To allow scroll bars use the GraphConstants.DISPLAY_SCROLL_AS_NEEDED or specify GraphConstants.DISPLAY_FIT_TO_SCREEN to force the entire graph into the available display area. Specify GraphConstants.DISPLAY_SCROLL_ENABLED shows zoom scrollbars which appear when the display area is moused over and the chart is forced to show the entire graph in the available display area, however the use can then zoom and scroll to investigate the data further.
The default value is GraphConstants.DISPLAY_AUTOMATIC.
Valid values are:
GraphConstants.DISPLAY_FIT_TO_SCREEN
GraphConstants.DISPLAY_SCROLL_AS_NEEDED
GraphConstants.DISPLAY_SCROLL_ENABLED:
GraphConstants.DISPLAY_AUTOMATIC:
setDisplayPolicy
in class Graph
newDisplayPolicy
- how the Graph should utilize the dislay area
java.lang.IllegalArgumentException
- if newDisplayPolicy is invalid.Graph.getDisplayPolicy()
public void prepareToPaint()
As per java standard practices; "paint" should never be called directly by an application. However if it is necessary to render the Graph directly then the use of paintAll(Graphics) or printAll(Graphics) is acceptable.
Graphs asynchronously update to keep their view in sync with their model properties (Graphmodel, DataModel, NoteModel etc.). A direct call to paintAll or printAll does not allow for the graph to asynchronously sync up with their model proeprties. prepareToPaint provides this synchronization point necessary for the Graphs to update their component structure as needed.
Note: Used in a headless environment, Graphs will never asynchronously update and therefore require a call to prepareToPaint to render into a GraphicsContext.
The headless and non-headless cases can be handled slightly differently. In the non-headless case the asynchronous updating needs to be halted. This is done by setting the "autoRepaintEnabled" property to false. The default for autoRepaintEnabled is true, allowing the graph to automatically resync and repaint as model properties are modified.
Example writing to an image. Note for readability exception handling has been ignored.
static public void main(String args[]) { BufferedImage bi = new BufferedImage(640,480,BufferedImage.TYPE_INT_RGB); Graphics ig = bi.createGraphics(); // Create Graph WaterfallChart graph = new WaterfallChart(); // This call is not necessary if you are running in a headless environment. graph.setAutoRepaintEnabled(false); // ... assign data and model properties here ... graph.setDataModel(newGraphData()); {// Render sequence graph.setBounds(0,0,bi.getWidth(null),bi.getHeight(null)); // Define the size of the Graph graph.addNotify(); // Makes the component displayable. graph.prepareToPaint(); // do property synchronization graph.paintAll(ig); // render into some graphics context } // Dispose of image graphics context ig.dispose(); // Save immage to disk File file = new File("graph.jpg"); try { ImageIO.write(bi, "jpg", file); } catch (IOException e) { System.out.println("ImageIO.write failed."); } }
prepareToPaint
in class Graph
public void setAutoRepaintEnabled(boolean b)
The setting of this property to false implies that the application will be responsible for synchronizing the graph with its models using the prepareToPaint method.
This method was added to support rendering into an off screen graphics context such as an image.
setAutoRepaintEnabled
in class Graph
b
- true means to automatically updateisAutoRepaintEnabled()
public boolean isAutoRepaintEnabled()
isAutoRepaintEnabled
in class Graph
setAutoRepaintEnabled(boolean)
public static com.sas.beans.ExtendedBeanInfo getExtendedBeanInfo()
com.sas.beans.Introspector
to
augment the automatically introspected information about this WaterfallChart.
public void setLocale(java.util.Locale locale)
setLocale
in class java.awt.Component
locale
- the locale to become this component's localeGraph.getLocale()
public void setGraphModel(WaterfallChartModel newWaterfallChartModel) throws java.lang.IllegalArgumentException
WaterfallChartModel
encapsulating most
of the bar chart's display properties. Modifying
any graph model property triggers the graph to asynchronously update.
The graph will always have a non-null graph model.
It is expected that for most situations this method will
never be called but rather the graph model's
properties will be modified. Note: applying a GraphStyle
via the applyGraphStyle
method will modify all appropriate
graph model properties.
newWaterfallChartModel
- a WaterfallChartModel
that encapsulates the WaterfallChart
's display properties
java.lang.IllegalArgumentException
- if newBarLineChartModel is null.getGraphModel()
,
applyGraphStyle(com.sas.graphics.components.GraphStyle)
public WaterfallChartModel getGraphModel()
setGraphModel(com.sas.graphics.components.waterfallchart.WaterfallChartModel)
public void setDataModel(WaterfallChartDataModel newDataModel)
WaterfallChart
's
dataModel
property (a WaterfallChartDataModel)
which provides a handle to the data and associated
graph mapping properties.
Any change in the data model properties will
cause the graph to asynchronously update.
Any data value changes detected will also trigger the
graph to asynchronously update to reflect the new data values.
Invalid data model properties:
Invalid data model properties are ignored. For instance:
using a WaterfallChartTableDataModel
, specifying
a responseVariable
property that designates
a non-existent data column would cause an error message to be
written to the error log and the responseVariable
property would not be used by the graph.
Minimum data requirements:
The WaterfallChart
requires that at a minimum there is some data
applicable to its category axis. For instance: using a
WaterfallChartTableDataModel
would require that the
categoryVariable
property identify a valid
data column in the TableModel
.
Automatic data selection:
If the required information is not specified the graph will
attempt to satify the minimum requirements through automatic
selection.
A null data model will cause the graph to not draw a graph.
- Parameters:
newDataModel
- provides a handle to the data along with any
necessary properties to describe how the data is to be mapped onto the graph.- See Also:
getDataModel()
,
WaterfallChartTableDataModel
,
WaterfallChartOLAPDataModel
public WaterfallChartDataModel getDataModel()
WaterfallChartDataModel
which provides a handle to the data and associated
graph mapping properties.
setDataModel(com.sas.graphics.components.waterfallchart.WaterfallChartDataModel)
,
WaterfallChartTableDataModel
,
WaterfallChartOLAPDataModel
protected void applyDataModel()
Graph
applyDataModel
in class Graph
protected void applyGraphModel()
applyGraphModel
in class Graph
public ChartImageMapInfo getImageMapInfo()
public void applyColorScheme(ColorScheme scheme)
applyColorScheme
in class Graph
scheme
- class containing a set of colors for the charts.public void applyGraphStyle(GraphStyle graphStyle)
GraphStyle
properties onto the graph.
The use of this method is a convenient way to quickly and easily affect
the graph's appearance. The graph model (a WaterfallChartModel
accessible via the getGraphModel
method) properties and
NoteModel properties (accessible via the getTitle
and getFootnote
methods) are modified by this method.
Note: The GraphStyle
class was designed to be a simpler way to
modify graph appearances. It enforces certain constraints that are not
enforced by the graph's display attribute models (WaterfallChartModel
and NoteModel
s). For instance the GraphStyle contains a single
value text color property whereas the BarLChartModel
contains several (to supports setting different value text colors on different axes
and/or legend). This greater level of control may be useful in some cases but
in many cases it may also prove to be quite tedious. Applying a GraphStyle
will cause all appropriate properties in the display models to be updated.
The graph does not retain a link to the GraphStyle
. Modifying any of
the GraphStyle
properties after this method has been called will have no
affect on the graph. Similarly modifying any of graph's display
properties after this method has been called will have no affect on the
GraphStyle
properties.
A PropertyChangeEvent is fired by this graph after the apply is made.
No action is taken if a null graphStyle parameteris passed.
applyGraphStyle
in class Graph
graphStyle
- the GraphStyle
whose properties are conveyed to the graphNoteModel
,
WaterfallChartModel
protected void selectionChanged()
selectionChanged
in class Graph
protected void updateDataModelListeners()
updateDataModelListeners
in class Graph
Graph.updateDataModelListeners(Object model, Object selectionModel)
|
Components |
|
| |||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |