package floatyfield;
import java.util.List;
import javafx.animation.KeyFrame;
import javafx.animation.Timeline;
import javafx.beans.property.StringProperty;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.util.Duration;
public class TextRewinder {
private final Timeline rewinder;
public TextRewinder(final List<StringProperty> strings) {
rewinder = new Timeline(new KeyFrame(Duration.millis(10), new RewindHandler(strings)));
rewinder.setCycleCount(Timeline.INDEFINITE);
}
public void rewind() {
rewinder.play();
}
private class RewindHandler implements EventHandler<ActionEvent> {
private final List<StringProperty> strings;
private RewindHandler(List<StringProperty> strings) {
this.strings = strings;
}
public void handle(ActionEvent event) {
boolean allEmpty = false;
for (StringProperty stringProperty : strings) {
String text = stringProperty.get();
int len = text.length();
if(len > 0) {
stringProperty.set(text.substring(0, len - 1));
allEmpty = true;
}
}
if(allEmpty == false) {
rewinder.stop();
}
}
}
}