client
Clone or download
Modified Files
package com.stream_pi.client.controller;
package com.stream_pi.client.controller;
import com.stream_pi.client.window.Base;
import com.stream_pi.client.window.Base;
import com.stream_pi.util.exception.SevereException;
import com.stream_pi.util.exception.SevereException;
import javafx.animation.*;
import javafx.animation.*;
import javafx.application.Platform;
import javafx.application.Platform;
import javafx.concurrent.Task;
import javafx.concurrent.Task;
import javafx.scene.Node;
import javafx.scene.Node;
import javafx.scene.layout.StackPane;
import javafx.scene.layout.StackPane;
import javafx.util.Duration;
import javafx.util.Duration;
import java.util.Timer;
import java.util.Timer;
import java.util.TimerTask;
import java.util.TimerTask;
public class ScreenSaver extends StackPane
public class ScreenSaver extends StackPane
{
{
private boolean isEnabled = false;
private boolean isEnabled = false;
private Timer timer;
private Timer timer;
private Timeline showScreenSaverTimeline;
private Timeline showScreenSaverTimeline;
private long timeout;
private long timeout;
public ScreenSaver(boolean isEnabled, Base base, int timeout)
public ScreenSaver(boolean isEnabled, Base base, int timeout)
{
{
this.isEnabled = isEnabled;
this.isEnabled = isEnabled;
this.timeout = timeout* 1000L;
this.timeout = timeout* 1000L;
setOpacity(0);
setOpacity(0);
getStyleClass().add("screensaver");
getStyleClass().add("screensaver");
if(isEnabled)
if(isEnabled)
{
{
showScreenSaverTimeline = new Timeline();
showScreenSaverTimeline = new Timeline();
showScreenSaverTimeline.setCycleCount(1);
showScreenSaverTimeline.setCycleCount(1);
showScreenSaverTimeline.getKeyFrames().addAll(
showScreenSaverTimeline.getKeyFrames().addAll(
new KeyFrame(Duration.millis(0.0D),
new KeyFrame(Duration.millis(0.0D),
new KeyValue(opacityProperty(),
new KeyValue(opacityProperty(),
0.0D, Interpolator.EASE_IN)),
0.0D, Interpolator.EASE_IN)),
new KeyFrame(Duration.seconds(15D),
new KeyFrame(Duration.seconds(15D),
new KeyValue(opacityProperty(),
new KeyValue(opacityProperty(),
1.0D, Interpolator.LINEAR))
1.0D, Interpolator.LINEAR))
);
);
startTimer();
startTimer();
base.setOnMouseClicked(mouseEvent -> {
base.setOnMouseClicked(mouseEvent -> {
close();
close();
restartTimer();
restartTimer();
});
});
}
}
}
}
public void stop()
public void stop()
{
{
stopTimer();
stopTimer();
setOpacity(0);
setOpacity(0);
toBack();
toBack();
}
}
public boolean isEnabled() {
public boolean isEnabled() {
return isEnabled;
return isEnabled;
}
}
private void show()
private void show()
{
{
Platform.runLater(()->{
Platform.runLater(()->{
setOpacity(0);
setOpacity(0);
toFront();
toFront();
showScreenSaverTimeline.play();
showScreenSaverTimeline.play();
});
});
}
}
private void close()
private void close()
{
{
Platform.runLater(()->{
Platform.runLater(()->{
if(showScreenSaverTimeline.getStatus() == Animation.Status.RUNNING)
if(showScreenSaverTimeline.getStatus() == Animation.Status.RUNNING)
{
{
showScreenSaverTimeline.stop();
showScreenSaverTimeline.stop();
}
}
setOpacity(0.0);
setOpacity(0.0);
toBack();
toBack();
});
});
restartTimer();
restartTimer();
}
}
public void setTimeout(long timeout)
public void setTimeout(int seconds)
{
{
this.timeout = timeout;
this.timeout = seconds* 1000L;
}
}
public void restartTimer()
public void restartTimer()
{
{
stopTimer();
stopTimer();
startTimer();
startTimer();
}
}
private void stopTimer()
private void stopTimer()
{
{
if(timer != null)
if(timer != null)
{
{
timer.cancel();
timer.cancel();
timer.purge();
timer.purge();
}
}
}
}
private void startTimer()
private void startTimer()
{
{
timer = new Timer();
timer = new Timer();
timer.schedule(new TimerTask() {
timer.schedule(new TimerTask() {
@Override
@Override
public void run() {
public void run() {
show();
show();
}
}
},timeout);
},timeout);
}
}
}
}