45 lines
1.4 KiB
Java
45 lines
1.4 KiB
Java
package ctbrec.ui.tabs;
|
|
|
|
import javafx.animation.Transition;
|
|
import javafx.scene.control.Tab;
|
|
import javafx.scene.paint.Color;
|
|
import javafx.util.Duration;
|
|
|
|
public class FollowTabBlinkTransition extends Transition {
|
|
|
|
private final String normalStyle;
|
|
private final Tab followedTab;
|
|
private final Color normal;
|
|
private final Color highlight;
|
|
|
|
FollowTabBlinkTransition(Tab followedTab) {
|
|
this.followedTab = followedTab;
|
|
normalStyle = followedTab.getStyle();
|
|
normal = Color.web("#f4f4f4");
|
|
highlight = Color.web("#2b8513");
|
|
|
|
setCycleDuration(Duration.millis(500));
|
|
setCycleCount(6);
|
|
setAutoReverse(true);
|
|
setOnFinished(evt -> followedTab.setStyle(normalStyle));
|
|
}
|
|
|
|
@Override
|
|
protected void interpolate(double fraction) {
|
|
double rh = highlight.getRed();
|
|
double rn = normal.getRed();
|
|
double diff = rh - rn;
|
|
double r = (rn + diff * fraction) * 255;
|
|
double gh = highlight.getGreen();
|
|
double gn = normal.getGreen();
|
|
diff = gh - gn;
|
|
double g = (gn + diff * fraction) * 255;
|
|
double bh = highlight.getBlue();
|
|
double bn = normal.getBlue();
|
|
diff = bh - bn;
|
|
double b = (bn + diff * fraction) * 255;
|
|
String style = "-fx-background-color: rgb(" + r + "," + g + "," + b + ")";
|
|
followedTab.setStyle(style);
|
|
}
|
|
}
|