< prev index next >
modules/controls/src/main/java/javafx/scene/chart/BarChart.java
Print this page
rev 9945 : 8089755: AreaChart area color change when series is removed
@@ -52,10 +52,11 @@
import javafx.css.StyleableDoubleProperty;
import javafx.css.CssMetaData;
import javafx.css.PseudoClass;
import javafx.css.converter.SizeConverter;
+import javafx.collections.ListChangeListener;
import javafx.css.Styleable;
import javafx.css.StyleableProperty;
/**
@@ -265,10 +266,23 @@
// instead of removing it; when going from negative to positive
item.getNode().getStyleClass().remove(NEGATIVE_STYLE);
}
}
+ @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);
+ }
+ }
+ }
+
@Override protected void seriesAdded(Series<X,Y> series, int seriesIndex) {
// handle any data already in series
// create entry in the map
Map<String, Data<X,Y>> categoryMap = new HashMap<String, Data<X,Y>>();
for (int j=0; j<series.getData().size(); j++) {
@@ -295,11 +309,10 @@
}
if (categoryMap.size() > 0) seriesCategoryMap.put(series, categoryMap);
}
@Override protected void seriesRemoved(final Series<X,Y> series) {
- updateDefaultColorIndex(series);
// remove all symbol nodes
if (shouldAnimate()) {
pt = new ParallelTransition();
pt.setOnFinished(event -> {
removeSeriesFromDisplay(series);
@@ -539,30 +552,20 @@
pt.stop();
removeSeriesFromDisplay(series);
}
}
- private void updateDefaultColorIndex(final Series<X,Y> series) {
- int clearIndex = seriesColorMap.get(series);
- for (Data<X,Y> d : series.getData()) {
- final Node bar = d.getNode();
- if (bar != null) {
- bar.getStyleClass().remove(DEFAULT_COLOR+clearIndex);
- }
- }
- }
-
private Node createBar(Series<X,Y> series, int seriesIndex, final Data<X,Y> item, int itemIndex) {
Node bar = item.getNode();
if (bar == null) {
bar = new StackPane();
bar.setAccessibleRole(AccessibleRole.TEXT);
bar.setAccessibleRoleDescription("Bar");
bar.focusTraversableProperty().bind(Platform.accessibilityActiveProperty());
item.setNode(bar);
}
- bar.getStyleClass().addAll("chart-bar", "series" + seriesIndex, "data" + itemIndex,series.defaultColorStyleClass);
+ bar.getStyleClass().setAll("chart-bar", "series" + seriesIndex, "data" + itemIndex,series.defaultColorStyleClass);
return bar;
}
private Data<X,Y> getDataItem(Series<X,Y> series, int seriesIndex, int itemIndex, String category) {
Map<String, Data<X,Y>> catmap = seriesCategoryMap.get(series);
< prev index next >