< prev index next >

modules/controls/src/main/java/javafx/scene/chart/AreaChart.java

Print this page
rev 8907 : RT-46086: StackedAreaChart doesn't fade out removed series


 408         Path fillPath = (Path)((Group)series.getNode()).getChildren().get(0);
 409         if (seriesLine != null) {
 410             seriesLine.getStyleClass().remove(DEFAULT_COLOR+clearIndex);
 411         }
 412         if (fillPath != null) {
 413             fillPath.getStyleClass().remove(DEFAULT_COLOR+clearIndex);
 414         }
 415         for (int j=0; j < series.getData().size(); j++) {
 416             final Node node = series.getData().get(j).getNode();
 417             if(node!=null) {
 418                 node.getStyleClass().remove(DEFAULT_COLOR+clearIndex);
 419             }
 420         }
 421     }
 422     @Override protected  void seriesRemoved(final Series<X,Y> series) {
 423         updateDefaultColorIndex(series);
 424         // remove series Y multiplier
 425         seriesYMultiplierMap.remove(series);
 426         // remove all symbol nodes
 427         if (shouldAnimate()) {
 428             // create list of all nodes we need to fade out
 429             final List<Node> nodes = new ArrayList<Node>();
 430             nodes.add(series.getNode());
 431             if (getCreateSymbols()) { // RT-22124
 432                 // done need to fade the symbols if createSymbols is false
 433                 for (Data<X,Y> d: series.getData()) nodes.add(d.getNode());
 434             }
 435             // fade out old and symbols
 436             KeyValue[] startValues = new KeyValue[nodes.size()];
 437             KeyValue[] endValues = new KeyValue[nodes.size()];
 438             for (int j=0; j < nodes.size(); j++) {
 439                 startValues[j]   = new KeyValue(nodes.get(j).opacityProperty(),1);
 440                 endValues[j]       = new KeyValue(nodes.get(j).opacityProperty(),0);
 441             }
 442             Timeline tl = new Timeline();
 443             tl.getKeyFrames().addAll(
 444                 new KeyFrame(Duration.ZERO,startValues),
 445                 new KeyFrame(Duration.millis(400), actionEvent -> {
 446                     getPlotChildren().removeAll(nodes);
 447                     removeSeriesFromDisplay(series);
 448                 },endValues)
 449             );
 450             tl.play();
 451         } else {
 452             getPlotChildren().remove(series.getNode());
 453             for (Data<X,Y> d:series.getData()) getPlotChildren().remove(d.getNode());
 454             removeSeriesFromDisplay(series);
 455         }
 456     }
 457 
 458     /** @inheritDoc */
 459     @Override protected void layoutPlotChildren() {
 460         List<LineTo> constructedPath = new ArrayList<>(getDataSize());
 461         for (int seriesIndex=0; seriesIndex < getDataSize(); seriesIndex++) {
 462             Series<X, Y> series = getData().get(seriesIndex);
 463             DoubleProperty seriesYAnimMultiplier = seriesYMultiplierMap.get(series);
 464             double lastX = 0;
 465             final ObservableList<Node> children = ((Group) series.getNode()).getChildren();
 466             ObservableList<PathElement> seriesLine = ((Path) children.get(1)).getElements();
 467             ObservableList<PathElement> fillPath = ((Path) children.get(0)).getElements();
 468             seriesLine.clear();
 469             fillPath.clear();




 408         Path fillPath = (Path)((Group)series.getNode()).getChildren().get(0);
 409         if (seriesLine != null) {
 410             seriesLine.getStyleClass().remove(DEFAULT_COLOR+clearIndex);
 411         }
 412         if (fillPath != null) {
 413             fillPath.getStyleClass().remove(DEFAULT_COLOR+clearIndex);
 414         }
 415         for (int j=0; j < series.getData().size(); j++) {
 416             final Node node = series.getData().get(j).getNode();
 417             if(node!=null) {
 418                 node.getStyleClass().remove(DEFAULT_COLOR+clearIndex);
 419             }
 420         }
 421     }
 422     @Override protected  void seriesRemoved(final Series<X,Y> series) {
 423         updateDefaultColorIndex(series);
 424         // remove series Y multiplier
 425         seriesYMultiplierMap.remove(series);
 426         // remove all symbol nodes
 427         if (shouldAnimate()) {
 428             Timeline tl = new Timeline(createSeriesRemoveTimeLine(series, 400));





















 429             tl.play();
 430         } else {
 431             getPlotChildren().remove(series.getNode());
 432             for (Data<X,Y> d:series.getData()) getPlotChildren().remove(d.getNode());
 433             removeSeriesFromDisplay(series);
 434         }
 435     }
 436 
 437     /** @inheritDoc */
 438     @Override protected void layoutPlotChildren() {
 439         List<LineTo> constructedPath = new ArrayList<>(getDataSize());
 440         for (int seriesIndex=0; seriesIndex < getDataSize(); seriesIndex++) {
 441             Series<X, Y> series = getData().get(seriesIndex);
 442             DoubleProperty seriesYAnimMultiplier = seriesYMultiplierMap.get(series);
 443             double lastX = 0;
 444             final ObservableList<Node> children = ((Group) series.getNode()).getChildren();
 445             ObservableList<PathElement> seriesLine = ((Path) children.get(1)).getElements();
 446             ObservableList<PathElement> fillPath = ((Path) children.get(0)).getElements();
 447             seriesLine.clear();
 448             fillPath.clear();


< prev index next >