diff --git a/client/src/main/java/ctbrec/ui/RecordedModelsTab.java b/client/src/main/java/ctbrec/ui/RecordedModelsTab.java index e03695eb..ae41af76 100644 --- a/client/src/main/java/ctbrec/ui/RecordedModelsTab.java +++ b/client/src/main/java/ctbrec/ui/RecordedModelsTab.java @@ -8,13 +8,10 @@ import java.util.Collections; import java.util.Iterator; import java.util.List; import java.util.Objects; -import java.util.concurrent.BlockingQueue; import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; -import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.ThreadFactory; -import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; import java.util.function.Function; import java.util.stream.Collectors; @@ -30,11 +27,10 @@ import ctbrec.recorder.Recorder; import ctbrec.sites.Site; import ctbrec.ui.action.FollowAction; import ctbrec.ui.action.PauseAction; +import ctbrec.ui.action.PlayAction; import ctbrec.ui.action.ResumeAction; import ctbrec.ui.action.StopRecordingAction; import ctbrec.ui.controls.AutoFillTextField; -import ctbrec.ui.controls.Toast; -import javafx.application.Platform; import javafx.beans.property.SimpleStringProperty; import javafx.collections.FXCollections; import javafx.collections.ObservableList; @@ -42,7 +38,6 @@ import javafx.concurrent.ScheduledService; import javafx.concurrent.Task; import javafx.event.ActionEvent; import javafx.geometry.Insets; -import javafx.scene.Cursor; import javafx.scene.control.Alert; import javafx.scene.control.Button; import javafx.scene.control.ContextMenu; @@ -72,9 +67,6 @@ import javafx.util.Duration; public class RecordedModelsTab extends Tab implements TabSelectionListener { private static final transient Logger LOG = LoggerFactory.getLogger(RecordedModelsTab.class); - static BlockingQueue queue = new LinkedBlockingQueue<>(); - static ExecutorService threadPool = new ThreadPoolExecutor(2, 2, 10, TimeUnit.MINUTES, queue); - private ScheduledService> updateService; private Recorder recorder; private List sites; @@ -445,16 +437,7 @@ public class RecordedModelsTab extends Tab implements TabSelectionListener { } private void openInPlayer(JavaFxModel selectedModel) { - table.setCursor(Cursor.WAIT); - new Thread(() -> { - boolean started = Player.play(selectedModel); - Platform.runLater(() -> { - if (started && Config.getInstance().getSettings().showPlayerStarting) { - Toast.makeText(getTabPane().getScene(), "Starting Player", 2000, 500, 500); - } - table.setCursor(Cursor.DEFAULT); - }); - }).start(); + new PlayAction(getTabPane(), selectedModel).execute(); } private void switchStreamSource(JavaFxModel fxModel) { diff --git a/client/src/main/java/ctbrec/ui/ThumbCell.java b/client/src/main/java/ctbrec/ui/ThumbCell.java index 914f2916..215559e5 100644 --- a/client/src/main/java/ctbrec/ui/ThumbCell.java +++ b/client/src/main/java/ctbrec/ui/ThumbCell.java @@ -21,7 +21,7 @@ import ctbrec.Config; import ctbrec.Model; import ctbrec.io.HttpException; import ctbrec.recorder.Recorder; -import ctbrec.ui.controls.Toast; +import ctbrec.ui.action.PlayAction; import javafx.animation.FadeTransition; import javafx.animation.FillTransition; import javafx.animation.ParallelTransition; @@ -341,16 +341,7 @@ public class ThumbCell extends StackPane { } void startPlayer() { - setCursor(Cursor.WAIT); - new Thread(() -> { - boolean started = Player.play(model); - Platform.runLater(() -> { - setCursor(Cursor.DEFAULT); - if (started && Config.getInstance().getSettings().showPlayerStarting) { - Toast.makeText(getScene(), "Starting Player", 2000, 500, 500); - } - }); - }).start(); + new PlayAction(this, model).execute(); } private void setRecording(boolean recording) { diff --git a/client/src/main/java/ctbrec/ui/action/PlayAction.java b/client/src/main/java/ctbrec/ui/action/PlayAction.java new file mode 100644 index 00000000..06f9cc6b --- /dev/null +++ b/client/src/main/java/ctbrec/ui/action/PlayAction.java @@ -0,0 +1,33 @@ +package ctbrec.ui.action; + +import ctbrec.Config; +import ctbrec.Model; +import ctbrec.ui.Player; +import ctbrec.ui.controls.Toast; +import javafx.application.Platform; +import javafx.scene.Cursor; +import javafx.scene.Node; + +public class PlayAction { + + private Model selectedModel; + private Node source; + + public PlayAction(Node source, Model selectedModel) { + this.source = source; + this.selectedModel = selectedModel; + } + + public void execute() { + source.setCursor(Cursor.WAIT); + new Thread(() -> { + boolean started = Player.play(selectedModel); + Platform.runLater(() -> { + if (started && Config.getInstance().getSettings().showPlayerStarting) { + Toast.makeText(source.getScene(), "Starting Player", 2000, 500, 500); + } + source.setCursor(Cursor.DEFAULT); + }); + }).start(); + } +} diff --git a/client/src/main/java/ctbrec/ui/controls/SearchPopoverTreeList.java b/client/src/main/java/ctbrec/ui/controls/SearchPopoverTreeList.java index 5b58e3a4..6cda44a6 100644 --- a/client/src/main/java/ctbrec/ui/controls/SearchPopoverTreeList.java +++ b/client/src/main/java/ctbrec/ui/controls/SearchPopoverTreeList.java @@ -38,10 +38,9 @@ import java.util.Optional; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import ctbrec.Config; import ctbrec.Model; import ctbrec.recorder.Recorder; -import ctbrec.ui.Player; +import ctbrec.ui.action.PlayAction; import javafx.application.Platform; import javafx.concurrent.Task; import javafx.event.EventHandler; @@ -83,16 +82,7 @@ public class SearchPopoverTreeList extends PopoverTreeList implements Pop return; } - setCursor(Cursor.WAIT); - new Thread(() -> { - Platform.runLater(() -> { - boolean started = Player.play(model); - if(started && Config.getInstance().getSettings().showPlayerStarting) { - Toast.makeText(getScene(), "Starting Player", 2000, 500, 500); - } - setCursor(Cursor.DEFAULT); - }); - }).start(); + new PlayAction(this, model).execute(); } @Override diff --git a/client/src/main/java/ctbrec/ui/sites/myfreecams/MyFreeCamsTableTab.java b/client/src/main/java/ctbrec/ui/sites/myfreecams/MyFreeCamsTableTab.java index b83b8551..9a1501f0 100644 --- a/client/src/main/java/ctbrec/ui/sites/myfreecams/MyFreeCamsTableTab.java +++ b/client/src/main/java/ctbrec/ui/sites/myfreecams/MyFreeCamsTableTab.java @@ -22,13 +22,11 @@ import ctbrec.sites.mfc.MyFreeCams; import ctbrec.sites.mfc.MyFreeCamsModel; import ctbrec.sites.mfc.SessionState; import ctbrec.ui.DesktopIntegration; -import ctbrec.ui.Player; import ctbrec.ui.TabSelectionListener; import ctbrec.ui.action.FollowAction; +import ctbrec.ui.action.PlayAction; import ctbrec.ui.action.StartRecordingAction; import ctbrec.ui.controls.SearchBox; -import ctbrec.ui.controls.Toast; -import javafx.application.Platform; import javafx.beans.property.DoubleProperty; import javafx.beans.property.SimpleDoubleProperty; import javafx.beans.property.SimpleStringProperty; @@ -42,7 +40,6 @@ import javafx.event.ActionEvent; import javafx.geometry.Insets; import javafx.geometry.Point2D; import javafx.geometry.Pos; -import javafx.scene.Cursor; import javafx.scene.control.Button; import javafx.scene.control.CheckMenuItem; import javafx.scene.control.ContextMenu; @@ -291,16 +288,7 @@ public class MyFreeCamsTableTab extends Tab implements TabSelectionListener { } private void openInPlayer(Model selectedModel) { - table.setCursor(Cursor.WAIT); - new Thread(() -> { - boolean started = Player.play(selectedModel); - Platform.runLater(() -> { - if (started && Config.getInstance().getSettings().showPlayerStarting) { - Toast.makeText(getTabPane().getScene(), "Starting Player", 2000, 500, 500); - } - table.setCursor(Cursor.DEFAULT); - }); - }).start(); + new PlayAction(getTabPane(), selectedModel).execute(); } private void addTableColumnIfEnabled(TableColumn tc) {