|
@@ -22,7 +22,13 @@ import java.util.List;
|
|
import java.util.stream.Collectors;
|
|
import java.util.stream.Collectors;
|
|
import java.util.stream.Stream;
|
|
import java.util.stream.Stream;
|
|
|
|
|
|
|
|
+/**
|
|
|
|
+ * This is the implementation of the {@code Skin} associated with every {@code MFXProgressSpinner}.
|
|
|
|
+ */
|
|
public class MFXProgressSpinnerSkin extends SkinBase<MFXProgressSpinner> {
|
|
public class MFXProgressSpinnerSkin extends SkinBase<MFXProgressSpinner> {
|
|
|
|
+ //================================================================================
|
|
|
|
+ // Properties
|
|
|
|
+ //================================================================================
|
|
private boolean isValid = false;
|
|
private boolean isValid = false;
|
|
private boolean wasIndeterminate = false;
|
|
private boolean wasIndeterminate = false;
|
|
private double arcLength = -1;
|
|
private double arcLength = -1;
|
|
@@ -40,6 +46,9 @@ public class MFXProgressSpinnerSkin extends SkinBase<MFXProgressSpinner> {
|
|
|
|
|
|
private Timeline timeline;
|
|
private Timeline timeline;
|
|
|
|
|
|
|
|
+ //================================================================================
|
|
|
|
+ // Constructors
|
|
|
|
+ //================================================================================
|
|
public MFXProgressSpinnerSkin(MFXProgressSpinner spinner) {
|
|
public MFXProgressSpinnerSkin(MFXProgressSpinner spinner) {
|
|
super(spinner);
|
|
super(spinner);
|
|
|
|
|
|
@@ -80,6 +89,13 @@ public class MFXProgressSpinnerSkin extends SkinBase<MFXProgressSpinner> {
|
|
setListeners();
|
|
setListeners();
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ //================================================================================
|
|
|
|
+ // Methods
|
|
|
|
+ //================================================================================
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * Adds listeners to: indeterminate, progress, visible, parent and scene properties.
|
|
|
|
+ */
|
|
private void setListeners() {
|
|
private void setListeners() {
|
|
MFXProgressSpinner spinner = getSkinnable();
|
|
MFXProgressSpinner spinner = getSkinnable();
|
|
|
|
|
|
@@ -90,6 +106,9 @@ public class MFXProgressSpinnerSkin extends SkinBase<MFXProgressSpinner> {
|
|
spinner.sceneProperty().addListener((observable, oldValue, newValue) -> updateAnimation());
|
|
spinner.sceneProperty().addListener((observable, oldValue, newValue) -> updateAnimation());
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
+ * Updates the progress.
|
|
|
|
+ */
|
|
protected void updateProgress() {
|
|
protected void updateProgress() {
|
|
MFXProgressSpinner spinner = getSkinnable();
|
|
MFXProgressSpinner spinner = getSkinnable();
|
|
|
|
|
|
@@ -101,6 +120,9 @@ public class MFXProgressSpinnerSkin extends SkinBase<MFXProgressSpinner> {
|
|
wasIndeterminate = isIndeterminate;
|
|
wasIndeterminate = isIndeterminate;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
+ * Resets the spinner animation.
|
|
|
|
+ */
|
|
private void reset() {
|
|
private void reset() {
|
|
MFXProgressSpinner spinner = getSkinnable();
|
|
MFXProgressSpinner spinner = getSkinnable();
|
|
|
|
|
|
@@ -116,6 +138,9 @@ public class MFXProgressSpinnerSkin extends SkinBase<MFXProgressSpinner> {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
+ * Clears the animation.
|
|
|
|
+ */
|
|
private void clearAnimation() {
|
|
private void clearAnimation() {
|
|
if (timeline != null) {
|
|
if (timeline != null) {
|
|
timeline.stop();
|
|
timeline.stop();
|
|
@@ -124,6 +149,9 @@ public class MFXProgressSpinnerSkin extends SkinBase<MFXProgressSpinner> {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
+ * Updates the animation.
|
|
|
|
+ */
|
|
private void updateAnimation() {
|
|
private void updateAnimation() {
|
|
MFXProgressSpinner spinner = getSkinnable();
|
|
MFXProgressSpinner spinner = getSkinnable();
|
|
|
|
|
|
@@ -137,6 +165,9 @@ public class MFXProgressSpinnerSkin extends SkinBase<MFXProgressSpinner> {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
+ * Creates the animation.
|
|
|
|
+ */
|
|
private void createTransition() {
|
|
private void createTransition() {
|
|
MFXProgressSpinner spinner = getSkinnable();
|
|
MFXProgressSpinner spinner = getSkinnable();
|
|
|
|
|
|
@@ -169,6 +200,9 @@ public class MFXProgressSpinnerSkin extends SkinBase<MFXProgressSpinner> {
|
|
timeline.playFromStart();
|
|
timeline.playFromStart();
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
+ * Pauses the animation
|
|
|
|
+ */
|
|
private void pauseTimeline(boolean pause) {
|
|
private void pauseTimeline(boolean pause) {
|
|
MFXProgressSpinner spinner = getSkinnable();
|
|
MFXProgressSpinner spinner = getSkinnable();
|
|
|
|
|
|
@@ -184,6 +218,9 @@ public class MFXProgressSpinnerSkin extends SkinBase<MFXProgressSpinner> {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
+ * Creates the needed key frames for the animation.
|
|
|
|
+ */
|
|
private List<KeyFrame> getKeyFrames(double angle, double duration, Paint color) {
|
|
private List<KeyFrame> getKeyFrames(double angle, double duration, Paint color) {
|
|
MFXProgressSpinner spinner = getSkinnable();
|
|
MFXProgressSpinner spinner = getSkinnable();
|
|
|
|
|
|
@@ -207,6 +244,9 @@ public class MFXProgressSpinnerSkin extends SkinBase<MFXProgressSpinner> {
|
|
return List.of(kf1, kf2, kf3, kf4);
|
|
return List.of(kf1, kf2, kf3, kf4);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
+ * Updates the arc.
|
|
|
|
+ */
|
|
private void updateArcLayout(double radius, double arcSize) {
|
|
private void updateArcLayout(double radius, double arcSize) {
|
|
arc.setRadiusX(radius);
|
|
arc.setRadiusX(radius);
|
|
arc.setRadiusY(radius);
|
|
arc.setRadiusY(radius);
|
|
@@ -220,6 +260,9 @@ public class MFXProgressSpinnerSkin extends SkinBase<MFXProgressSpinner> {
|
|
track.setStrokeWidth(arc.getStrokeWidth());
|
|
track.setStrokeWidth(arc.getStrokeWidth());
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ //================================================================================
|
|
|
|
+ // Override Methods
|
|
|
|
+ //================================================================================
|
|
@Override
|
|
@Override
|
|
protected double computeMaxHeight(double width, double topInset, double rightInset, double bottomInset, double leftInset) {
|
|
protected double computeMaxHeight(double width, double topInset, double rightInset, double bottomInset, double leftInset) {
|
|
MFXProgressSpinner spinner = getSkinnable();
|
|
MFXProgressSpinner spinner = getSkinnable();
|