< prev index next >
modules/controls/src/main/java/javafx/scene/chart/StackedBarChart.java
Print this page
rev 9945 : 8089755: AreaChart area color change when series is removed
@@ -68,12 +68,10 @@
new HashMap<Series, Map<String, List<Data<X, Y>>>>();
private Legend legend = new Legend();
private final Orientation orientation;
private CategoryAxis categoryAxis;
private ValueAxis valueAxis;
- private int seriesDefaultColorIndex = 0;
- private Map<Series<X, Y>, String> seriesDefaultColorMap = new HashMap<Series<X, Y>, String>();
// RT-23125 handling data removal when a category is removed.
private ListChangeListener<String> categoriesListener = new ListChangeListener<String>() {
@Override public void onChanged(ListChangeListener.Change<? extends String> c) {
while (c.next()) {
for(String cat : c.getRemoved()) {
@@ -286,15 +284,25 @@
new KeyFrame(Duration.millis(700), new KeyValue(currentDisplayedXValueProperty(item), item.getXValue(), Interpolator.EASE_BOTH)))
);
}
}
+ @Override protected void seriesChanged(ListChangeListener.Change<? extends Series> c) {
+ // Update style classes for all series lines and symbols
+ // Note: is there a more efficient way of doing this?
+ for (int i = 0; i < getDataSize(); i++) {
+ final Series<X,Y> series = getData().get(i);
+ for (int j=0; j<series.getData().size(); j++) {
+ Data<X,Y> item = series.getData().get(j);
+ Node bar = item.getNode();
+ bar.getStyleClass().setAll("chart-bar", "series" + i, "data" + j, series.defaultColorStyleClass);
+ }
+ }
+ }
+
/** @inheritDoc */
@Override protected void seriesAdded(Series<X, Y> series, int seriesIndex) {
- String defaultColorStyleClass = "default-color" + (seriesDefaultColorIndex % 8);
- seriesDefaultColorMap.put(series, defaultColorStyleClass);
- seriesDefaultColorIndex++;
// handle any data already in series
// create entry in the map
Map<String, List<Data<X, Y>>> categoryMap = new HashMap<String, List<Data<X, Y>>>();
for (int j = 0; j < series.getData().size(); j++) {
Data<X, Y> item = series.getData().get(j);
@@ -348,13 +356,10 @@
}
return t;
}
@Override protected void seriesRemoved(final Series<X, Y> series) {
- // Added for RT-40104
- seriesDefaultColorIndex--;
-
// remove all symbol nodes
if (shouldAnimate()) {
ParallelTransition pt = new ParallelTransition();
pt.setOnFinished(event -> {
removeSeriesFromDisplay(series);
@@ -511,13 +516,12 @@
legend.getItems().clear();
if (getData() != null) {
for (int seriesIndex = 0; seriesIndex < getData().size(); seriesIndex++) {
Series<X,Y> series = getData().get(seriesIndex);
Legend.LegendItem legenditem = new Legend.LegendItem(series.getName());
- String defaultColorStyleClass = seriesDefaultColorMap.get(series);
legenditem.getSymbol().getStyleClass().addAll("chart-bar", "series" + seriesIndex, "bar-legend-symbol",
- defaultColorStyleClass);
+ series.defaultColorStyleClass);
legend.getItems().add(legenditem);
}
}
if (legend.getItems().size() > 0) {
if (getLegend() == null) {
@@ -535,12 +539,11 @@
bar.setAccessibleRole(AccessibleRole.TEXT);
bar.setAccessibleRoleDescription("Bar");
bar.focusTraversableProperty().bind(Platform.accessibilityActiveProperty());
item.setNode(bar);
}
- String defaultColorStyleClass = seriesDefaultColorMap.get(series);
- bar.getStyleClass().setAll("chart-bar", "series" + seriesIndex, "data" + itemIndex, defaultColorStyleClass);
+ bar.getStyleClass().setAll("chart-bar", "series" + seriesIndex, "data" + itemIndex, series.defaultColorStyleClass);
return bar;
}
private List<Data<X, Y>> getDataItem(Series<X, Y> series, String category) {
Map<String, List<Data<X, Y>>> catmap = seriesCategoryMap.get(series);
< prev index next >