All Downloads are FREE. Search and download functionalities are using the official Maven repository.

de.gsi.chart.plugins.XRangeIndicator Maven / Gradle / Ivy

Go to download

This charting library ${project.artifactId}- is an extension in the spirit of Oracle's XYChart and performance/time-proven JDataViewer charting functionalities. Emphasis was put on plotting performance for both large number of data points and real-time displays, as well as scientific accuracies leading to error bar/surface plots, and other scientific plotting features (parameter measurements, fitting, multiple axes, zoom, ...).

There is a newer version: 11.2.7
Show newest version
package de.gsi.chart.plugins;

import de.gsi.chart.axes.Axis;
import javafx.geometry.BoundingBox;
import javafx.geometry.Bounds;

/**
 * A rectangle drawn on the plot area, covering specified range of X values, with an optional {@link #textProperty()
 * text label} describing the range.
 * 

* Style Classes (from least to most specific): *

    *
  • Label: {@code range-indicator-label, x-range-indicator-label, x-range-indicator-label[index]}
  • *
  • Rectangle: {@code range-indicator-rect, x-range-indicator-rect, x-range-indicator-rect[index]}
  • *
* where {@code [index]} corresponds to the index (zero based) of this indicator instance added to the * {@code XYChartPane}. For example class {@code x-range-indicator-label1} can be used to style label of the second * instance of this indicator added to the chart pane. * * @author mhrabia */ public class XRangeIndicator extends AbstractRangeValueIndicator { /** * Creates a new instance of the indicator. * * @param axis the axis this indicator is associated with * @param lowerBound lower bound (min value) of the range * @param upperBound upper bound (max value) of the range */ public XRangeIndicator(Axis axis, final double lowerBound, final double upperBound) { this(axis, lowerBound, upperBound, null); } /** * Creates a new instance of the indicator. * * @param axis the axis this indicator is associated with * @param lowerBound lower bound (min value) of the range * @param upperBound upper bound (max value) of the range * @param text the text to be shown by the label. Value of {@link #textProperty()}. */ public XRangeIndicator(Axis axis, final double lowerBound, final double upperBound, final String text) { super(axis, lowerBound, upperBound, text); } @Override void updateStyleClass() { setStyleClasses(label, "x-", AbstractRangeValueIndicator.STYLE_CLASS_LABEL); setStyleClasses(rectangle, "x-", AbstractRangeValueIndicator.STYLE_CLASS_RECT); } @Override public void layoutChildren() { if (getChart() == null) { return; } final Bounds plotAreaBounds = getChart().getCanvas().getBoundsInLocal(); final double minX = plotAreaBounds.getMinX(); final double maxX = plotAreaBounds.getMaxX(); final double minY = plotAreaBounds.getMinY(); final double maxY = plotAreaBounds.getMaxY(); final Axis xAxis = getNumericAxis(); final double startX = Math.max(minX, minX + xAxis.getDisplayPosition(getLowerBound())); final double endX = Math.min(maxX, minX + xAxis.getDisplayPosition(getUpperBound())); layout(new BoundingBox(startX, minY, endX - startX, maxY - minY)); } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy