< prev index next >

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

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


 431             }
 432         }
 433         if (shouldAnimate()) animate(keyFrames.toArray(new KeyFrame[keyFrames.size()]));
 434     }
 435     private void updateDefaultColorIndex(final Series<X,Y> series) {
 436         int clearIndex = seriesColorMap.get(series);
 437         series.getNode().getStyleClass().remove(DEFAULT_COLOR+clearIndex);
 438         for (int j=0; j < series.getData().size(); j++) {
 439             final Node node = series.getData().get(j).getNode();
 440             if(node!=null) {
 441                 node.getStyleClass().remove(DEFAULT_COLOR+clearIndex);
 442             }
 443         }
 444     }
 445 
 446     @Override protected  void seriesRemoved(final Series<X,Y> series) {
 447         updateDefaultColorIndex(series);
 448         // remove all symbol nodes
 449         seriesYMultiplierMap.remove(series);
 450         if (shouldAnimate()) {
 451             // create list of all nodes we need to fade out
 452             final List<Node> nodes = new ArrayList<Node>();
 453             nodes.add(series.getNode());
 454             if (getCreateSymbols()) { // RT-22124 
 455                 // done need to fade the symbols if createSymbols is false
 456                 for (Data<X,Y> d: series.getData()) nodes.add(d.getNode());
 457             }
 458             // fade out old and symbols
 459             KeyValue[] startValues = new KeyValue[nodes.size()];
 460             KeyValue[] endValues = new KeyValue[nodes.size()];
 461             for (int j=0; j < nodes.size(); j++) {
 462                 startValues[j]   = new KeyValue(nodes.get(j).opacityProperty(),1);
 463                 endValues[j]       = new KeyValue(nodes.get(j).opacityProperty(),0);
 464             }
 465             seriesRemoveTimeline = new Timeline();
 466             seriesRemoveTimeline.getKeyFrames().addAll(
 467                 new KeyFrame(Duration.ZERO,startValues),
 468                 new KeyFrame(Duration.millis(900), actionEvent -> {
 469                     getPlotChildren().removeAll(nodes);
 470                     removeSeriesFromDisplay(series);
 471                 },endValues)
 472             );
 473             seriesRemoveTimeline.play();
 474         } else {
 475             getPlotChildren().remove(series.getNode());
 476             for (Data<X,Y> d:series.getData()) getPlotChildren().remove(d.getNode());
 477             removeSeriesFromDisplay(series);
 478         }
 479     }
 480 
 481     /** @inheritDoc */
 482     @Override protected void layoutPlotChildren() {
 483         List<LineTo> constructedPath = new ArrayList<>(getDataSize());
 484         for (int seriesIndex=0; seriesIndex < getDataSize(); seriesIndex++) {
 485             Series<X,Y> series = getData().get(seriesIndex);
 486             final DoubleProperty seriesYAnimMultiplier = seriesYMultiplierMap.get(series);
 487             if(series.getNode() instanceof  Path) {
 488                 final ObservableList<PathElement> seriesLine = ((Path)series.getNode()).getElements();
 489                 seriesLine.clear();
 490                 constructedPath.clear();
 491                 for (Iterator<Data<X, Y>> it = getDisplayedDataIterator(series); it.hasNext(); ) {
 492                     Data<X, Y> item = it.next();




 431             }
 432         }
 433         if (shouldAnimate()) animate(keyFrames.toArray(new KeyFrame[keyFrames.size()]));
 434     }
 435     private void updateDefaultColorIndex(final Series<X,Y> series) {
 436         int clearIndex = seriesColorMap.get(series);
 437         series.getNode().getStyleClass().remove(DEFAULT_COLOR+clearIndex);
 438         for (int j=0; j < series.getData().size(); j++) {
 439             final Node node = series.getData().get(j).getNode();
 440             if(node!=null) {
 441                 node.getStyleClass().remove(DEFAULT_COLOR+clearIndex);
 442             }
 443         }
 444     }
 445 
 446     @Override protected  void seriesRemoved(final Series<X,Y> series) {
 447         updateDefaultColorIndex(series);
 448         // remove all symbol nodes
 449         seriesYMultiplierMap.remove(series);
 450         if (shouldAnimate()) {
 451             seriesRemoveTimeline = new Timeline(createSeriesRemoveTimeLine(series, 900));





















 452             seriesRemoveTimeline.play();
 453         } else {
 454             getPlotChildren().remove(series.getNode());
 455             for (Data<X,Y> d:series.getData()) getPlotChildren().remove(d.getNode());
 456             removeSeriesFromDisplay(series);
 457         }
 458     }
 459 
 460     /** @inheritDoc */
 461     @Override protected void layoutPlotChildren() {
 462         List<LineTo> constructedPath = new ArrayList<>(getDataSize());
 463         for (int seriesIndex=0; seriesIndex < getDataSize(); seriesIndex++) {
 464             Series<X,Y> series = getData().get(seriesIndex);
 465             final DoubleProperty seriesYAnimMultiplier = seriesYMultiplierMap.get(series);
 466             if(series.getNode() instanceof  Path) {
 467                 final ObservableList<PathElement> seriesLine = ((Path)series.getNode()).getElements();
 468                 seriesLine.clear();
 469                 constructedPath.clear();
 470                 for (Iterator<Data<X, Y>> it = getDisplayedDataIterator(series); it.hasNext(); ) {
 471                     Data<X, Y> item = it.next();


< prev index next >