Package org.jfree.data.xy
Class IntervalXYDelegate
- java.lang.Object
-
- org.jfree.data.xy.IntervalXYDelegate
-
- All Implemented Interfaces:
java.io.Serializable
,java.lang.Cloneable
,java.util.EventListener
,PublicCloneable
,DomainInfo
,DatasetChangeListener
public class IntervalXYDelegate extends java.lang.Object implements DatasetChangeListener, DomainInfo, java.io.Serializable, java.lang.Cloneable, PublicCloneable
A delegate that handles the specification or automatic calculation of the interval surrounding the x-values in a dataset. This is used to extend a regularXYDataset
to support theIntervalXYDataset
interface.The decorator pattern was not used because of the several possibly implemented interfaces of the decorated instance (e.g.
TableXYDataset
,RangeInfo
,DomainInfo
etc.).The width can be set manually or calculated automatically. The switch autoWidth allows to determine which behavior is used. The auto width calculation tries to find the smallest gap between two x-values in the dataset. If there is only one item in the series, the auto width calculation fails and falls back on the manually set interval width (which is itself defaulted to 1.0).
- See Also:
- Serialized Form
-
-
Field Summary
Fields Modifier and Type Field Description private double
autoIntervalWidth
The automatically calculated interval width.private boolean
autoWidth
A flag to indicate whether the width should be calculated automatically.private XYDataset
dataset
The dataset to enhance.private double
fixedIntervalWidth
The fixed interval width (defaults to 1.0).private double
intervalPositionFactor
A value between 0.0 and 1.0 that indicates the position of the x-value within the interval.private static long
serialVersionUID
For serialization.
-
Constructor Summary
Constructors Constructor Description IntervalXYDelegate(XYDataset dataset)
Creates a new delegate that.IntervalXYDelegate(XYDataset dataset, boolean autoWidth)
Creates a new delegate for the specified dataset.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description private double
calculateIntervalForSeries(int series)
Calculates the interval width for a given series.java.lang.Object
clone()
Returns a clone of the object.void
datasetChanged(DatasetChangeEvent e)
Handles events from the dataset by recalculating the interval if necessary.boolean
equals(java.lang.Object obj)
Tests the delegate for equality with an arbitrary object.Range
getDomainBounds(boolean includeInterval)
Returns the range of the values in the dataset's domain, including or excluding the interval around each x-value as specified.double
getDomainLowerBound(boolean includeInterval)
Returns the minimum x-value in the dataset.double
getDomainUpperBound(boolean includeInterval)
Returns the maximum x-value in the dataset.java.lang.Number
getEndX(int series, int item)
Returns the end value of the x-interval for an item within a series.double
getEndXValue(int series, int item)
Returns the end value of the x-interval for an item within a series.double
getFixedIntervalWidth()
Returns the fixed interval width.double
getIntervalPositionFactor()
Returns the interval position factor.double
getIntervalWidth()
Returns the interval width.java.lang.Number
getStartX(int series, int item)
Returns the start value of the x-interval for an item within a series.double
getStartXValue(int series, int item)
Returns the start value of the x-interval for an item within a series.int
hashCode()
Returns a hash code for this instance.boolean
isAutoWidth()
Returnstrue
if the interval width is automatically calculated, andfalse
otherwise.private double
recalculateInterval()
Recalculate the minimum width "from scratch".void
setAutoWidth(boolean b)
Sets the flag that indicates whether the interval width is automatically calculated.void
setFixedIntervalWidth(double w)
Sets the fixed interval width and, as a side effect, sets theautoWidth
flag tofalse
.void
setIntervalPositionFactor(double d)
Sets the interval position factor.
-
-
-
Field Detail
-
serialVersionUID
private static final long serialVersionUID
For serialization.- See Also:
- Constant Field Values
-
dataset
private XYDataset dataset
The dataset to enhance.
-
autoWidth
private boolean autoWidth
A flag to indicate whether the width should be calculated automatically.
-
intervalPositionFactor
private double intervalPositionFactor
A value between 0.0 and 1.0 that indicates the position of the x-value within the interval.
-
fixedIntervalWidth
private double fixedIntervalWidth
The fixed interval width (defaults to 1.0).
-
autoIntervalWidth
private double autoIntervalWidth
The automatically calculated interval width.
-
-
Constructor Detail
-
IntervalXYDelegate
public IntervalXYDelegate(XYDataset dataset)
Creates a new delegate that.- Parameters:
dataset
- the underlying dataset (null
not permitted).
-
IntervalXYDelegate
public IntervalXYDelegate(XYDataset dataset, boolean autoWidth)
Creates a new delegate for the specified dataset.- Parameters:
dataset
- the underlying dataset (null
not permitted).autoWidth
- a flag that controls whether the interval width is calculated automatically.
-
-
Method Detail
-
isAutoWidth
public boolean isAutoWidth()
Returnstrue
if the interval width is automatically calculated, andfalse
otherwise.- Returns:
- A boolean.
-
setAutoWidth
public void setAutoWidth(boolean b)
Sets the flag that indicates whether the interval width is automatically calculated. If the flag is set totrue
, the interval is recalculated.Note: recalculating the interval amounts to changing the data values represented by the dataset. The calling dataset must fire an appropriate
DatasetChangeEvent
.- Parameters:
b
- a boolean.
-
getIntervalPositionFactor
public double getIntervalPositionFactor()
Returns the interval position factor.- Returns:
- The interval position factor.
-
setIntervalPositionFactor
public void setIntervalPositionFactor(double d)
Sets the interval position factor. This controls how the interval is aligned to the x-value. For a value of 0.5, the interval is aligned with the x-value in the center. For a value of 0.0, the interval is aligned with the x-value at the lower end of the interval, and for a value of 1.0, the interval is aligned with the x-value at the upper end of the interval.
Note that changing the interval position factor amounts to changing the data values represented by the dataset. Therefore, the dataset that is using this delegate is responsible for generating the appropriateDatasetChangeEvent
.- Parameters:
d
- the new interval position factor (in the range0.0
to1.0
inclusive).
-
getFixedIntervalWidth
public double getFixedIntervalWidth()
Returns the fixed interval width.- Returns:
- The fixed interval width.
-
setFixedIntervalWidth
public void setFixedIntervalWidth(double w)
Sets the fixed interval width and, as a side effect, sets theautoWidth
flag tofalse
.
Note that changing the interval width amounts to changing the data values represented by the dataset. Therefore, the dataset that is using this delegate is responsible for generating the appropriateDatasetChangeEvent
.- Parameters:
w
- the width (negative values not permitted).
-
getIntervalWidth
public double getIntervalWidth()
Returns the interval width. This method will return either the auto calculated interval width or the manually specified interval width, depending on theisAutoWidth()
result.- Returns:
- The interval width to use.
-
getStartX
public java.lang.Number getStartX(int series, int item)
Returns the start value of the x-interval for an item within a series.- Parameters:
series
- the series index.item
- the item index.- Returns:
- The start value of the x-interval (possibly
null
). - See Also:
getStartXValue(int, int)
-
getStartXValue
public double getStartXValue(int series, int item)
Returns the start value of the x-interval for an item within a series.- Parameters:
series
- the series index.item
- the item index.- Returns:
- The start value of the x-interval.
- See Also:
getStartX(int, int)
-
getEndX
public java.lang.Number getEndX(int series, int item)
Returns the end value of the x-interval for an item within a series.- Parameters:
series
- the series index.item
- the item index.- Returns:
- The end value of the x-interval (possibly
null
). - See Also:
getEndXValue(int, int)
-
getEndXValue
public double getEndXValue(int series, int item)
Returns the end value of the x-interval for an item within a series.- Parameters:
series
- the series index.item
- the item index.- Returns:
- The end value of the x-interval.
- See Also:
getEndX(int, int)
-
getDomainLowerBound
public double getDomainLowerBound(boolean includeInterval)
Returns the minimum x-value in the dataset.- Specified by:
getDomainLowerBound
in interfaceDomainInfo
- Parameters:
includeInterval
- a flag that determines whether or not the x-interval is taken into account.- Returns:
- The minimum value.
-
getDomainUpperBound
public double getDomainUpperBound(boolean includeInterval)
Returns the maximum x-value in the dataset.- Specified by:
getDomainUpperBound
in interfaceDomainInfo
- Parameters:
includeInterval
- a flag that determines whether or not the x-interval is taken into account.- Returns:
- The maximum value.
-
getDomainBounds
public Range getDomainBounds(boolean includeInterval)
Returns the range of the values in the dataset's domain, including or excluding the interval around each x-value as specified.- Specified by:
getDomainBounds
in interfaceDomainInfo
- Parameters:
includeInterval
- a flag that determines whether or not the x-interval should be taken into account.- Returns:
- The range.
-
datasetChanged
public void datasetChanged(DatasetChangeEvent e)
Handles events from the dataset by recalculating the interval if necessary.- Specified by:
datasetChanged
in interfaceDatasetChangeListener
- Parameters:
e
- the event.
-
recalculateInterval
private double recalculateInterval()
Recalculate the minimum width "from scratch".- Returns:
- The minimum width.
-
calculateIntervalForSeries
private double calculateIntervalForSeries(int series)
Calculates the interval width for a given series.- Parameters:
series
- the series index.- Returns:
- The interval width.
-
equals
public boolean equals(java.lang.Object obj)
Tests the delegate for equality with an arbitrary object. The equality test considers two delegates to be equal if they would calculate the same intervals for any given dataset (for this reason, the dataset itself is NOT included in the equality test, because it is just a reference back to the current 'owner' of the delegate).- Overrides:
equals
in classjava.lang.Object
- Parameters:
obj
- the object (null
permitted).- Returns:
- A boolean.
-
clone
public java.lang.Object clone() throws java.lang.CloneNotSupportedException
Description copied from interface:PublicCloneable
Returns a clone of the object.- Specified by:
clone
in interfacePublicCloneable
- Overrides:
clone
in classjava.lang.Object
- Returns:
- A clone of this delegate.
- Throws:
java.lang.CloneNotSupportedException
- if the object cannot be cloned.
-
hashCode
public int hashCode()
Returns a hash code for this instance.- Overrides:
hashCode
in classjava.lang.Object
- Returns:
- A hash code.
-
-