Skip to content

Instantly share code, notes, and snippets.

@kevinsdooapp
kevinsdooapp / IllegalLogarithmicRangeException.java
Created August 1, 2012 14:23
IllegalLogarithmicRangeException
/**
* Exception to be thrown when a bound value isn't supported by the logarithmic axis<br>
* <br>
*
* @author Kevin Senechal mailto: kevin.senechal@dooapp.com
*
*/
public class IllegalLogarithmicRangeException extends Exception {
/**
@kevinsdooapp
kevinsdooapp / LogarithmicAxis.java
Created August 1, 2012 14:16
LogarithmicAxis full implementation
import java.text.NumberFormat;
import java.util.ArrayList;
import java.util.List;
import javafx.animation.KeyFrame;
import javafx.animation.KeyValue;
import javafx.animation.Timeline;
import javafx.beans.binding.DoubleBinding;
import javafx.beans.property.DoubleProperty;
@kevinsdooapp
kevinsdooapp / LogarithmicAxis.java
Created August 1, 2012 13:02
data and displayPosition matching
@Override
public Number getValueForDisplay(double displayPosition) {
double delta = logUpperBound.get() - logLowerBound.get();
if (getSide().isVertical()) {
return Math.pow(10, (((displayPosition - getHeight()) / -getHeight()) * delta) + logLowerBound.get());
} else {
return Math.pow(10, (((displayPosition / getWidth()) * delta) + logLowerBound.get()));
}
}
@kevinsdooapp
kevinsdooapp / LogarithmicAxis.java
Created August 1, 2012 12:55
setRange animation required properties
/**
* The time of animation in ms
*/
private static final double ANIMATION_TIME = 2000;
private final Timeline lowerRangeTimeline = new Timeline();
private final Timeline upperRangeTimeline = new Timeline();
@kevinsdooapp
kevinsdooapp / LogarithmicAxis.java
Created August 1, 2012 12:52
setRange implementation for logarithmic axis
/**
* {@inheritDoc}
*/
@Override
protected void setRange(Object range, boolean animate) {
if (range != null) {
Number lowerBound = ((Number[]) range)[0];
Number upperBound = ((Number[]) range)[1];
try {
validateBounds(lowerBound.doubleValue(), upperBound.doubleValue());
@kevinsdooapp
kevinsdooapp / LogarithmicAxis.java
Created August 1, 2012 12:47
setRange implementation for logarithmic axis
/**
* {@inheritDoc}
*/
@Override
protected void setRange(Object range, boolean animate) {
if (range != null) {
Number lowerBound = ((Number[]) range)[0];
Number upperBound = ((Number[]) range)[1];
try {
validateBounds(lowerBound.doubleValue(), upperBound.doubleValue());
@kevinsdooapp
kevinsdooapp / LogarithmicAxis.java
Created August 1, 2012 12:43
calculateTickValues implementation for logarithmic axis
/**
* {@inheritDoc}
*/
@Override
protected List<Number> calculateTickValues(double length, Object range) {
List<Number> tickPositions = new ArrayList<Number>();
if (range != null) {
Number lowerBound = ((Number[]) range)[0];
Number upperBound = ((Number[]) range)[1];
double logLowerBound = Math.log10(lowerBound.doubleValue());
@kevinsdooapp
kevinsdooapp / LogarithmicAxis.java
Created August 1, 2012 12:39
calculateMinorTickMarks implementation for logarithmic axis
/**
* {@inheritDoc}
*/
@Override
protected List<Number> calculateMinorTickMarks() {
Number[] range = getRange();
List<Number> minorTickMarksPositions = new ArrayList<Number>();
if (range != null) {
Number upperBound = range[1];
@kevinsdooapp
kevinsdooapp / LogarithmicAxis.java
Created August 1, 2012 10:06
Implementation of the logarithmic axis (step 1)
import javafx.scene.chart.ValueAxis;
/**
* A logarithmic axis implementation for JavaFX 2 charts<br>
* <br>
*
* @author Kevin Senechal
*
*/
public class LogarithmicAxis extends ValueAxis<Number> {
@kevinsdooapp
kevinsdooapp / getRange
Created July 31, 2012 16:52
getRange implementation for javafx 2 logarithmic axis
@Override
protected Object getRange() {
return new Number[] { lowerBoundProperty().get(), upperBoundProperty().get() };
}