From eb1db87e8268a6a59e91a4ec1a9ab933d74163cf Mon Sep 17 00:00:00 2001 From: 0xb00bface <0xboobface@gmail.com> Date: Sat, 21 Nov 2020 18:43:57 +0100 Subject: [PATCH] Improve recording PausedIndicator Make the whole area clickable and not only the painted area --- .../{PauseIndicator.java => PauseIcon.java} | 4 +-- .../ctbrec/ui/controls/PausedIndicator.java | 36 +++++++++++++++++++ .../main/java/ctbrec/ui/tabs/ThumbCell.java | 10 ++---- 3 files changed, 41 insertions(+), 9 deletions(-) rename client/src/main/java/ctbrec/ui/{PauseIndicator.java => PauseIcon.java} (81%) create mode 100644 client/src/main/java/ctbrec/ui/controls/PausedIndicator.java diff --git a/client/src/main/java/ctbrec/ui/PauseIndicator.java b/client/src/main/java/ctbrec/ui/PauseIcon.java similarity index 81% rename from client/src/main/java/ctbrec/ui/PauseIndicator.java rename to client/src/main/java/ctbrec/ui/PauseIcon.java index b7834c3e..30a1ff24 100644 --- a/client/src/main/java/ctbrec/ui/PauseIndicator.java +++ b/client/src/main/java/ctbrec/ui/PauseIcon.java @@ -4,9 +4,9 @@ package ctbrec.ui; import javafx.scene.paint.Color; import javafx.scene.shape.Polygon; -public class PauseIndicator extends Polygon { +public class PauseIcon extends Polygon { - public PauseIndicator(Color color, int size) { + public PauseIcon(Color color, int size) { super( 0, size, 0, 0, diff --git a/client/src/main/java/ctbrec/ui/controls/PausedIndicator.java b/client/src/main/java/ctbrec/ui/controls/PausedIndicator.java new file mode 100644 index 00000000..8483e3d9 --- /dev/null +++ b/client/src/main/java/ctbrec/ui/controls/PausedIndicator.java @@ -0,0 +1,36 @@ +package ctbrec.ui.controls; + +import ctbrec.ui.PauseIcon; +import javafx.geometry.Insets; +import javafx.geometry.Pos; +import javafx.scene.Cursor; +import javafx.scene.layout.StackPane; +import javafx.scene.paint.Color; +import javafx.scene.paint.Paint; +import javafx.scene.shape.Rectangle; + +public class PausedIndicator extends StackPane { + + private PauseIcon pausedIcon; + private Rectangle clickPanel; + + public PausedIndicator(int size, Color color) { + pausedIcon = new PauseIcon(color, size); + pausedIcon.setVisible(false); + clickPanel = new Rectangle(size, size); + clickPanel.setCursor(Cursor.HAND); + clickPanel.setFill(Paint.valueOf("#00000000")); + getChildren().add(pausedIcon); + getChildren().add(clickPanel); + + StackPane.setMargin(pausedIcon, new Insets(3)); + StackPane.setAlignment(pausedIcon, Pos.TOP_LEFT); + StackPane.setMargin(clickPanel, new Insets(3)); + StackPane.setAlignment(clickPanel, Pos.TOP_LEFT); + + pausedIcon.visibleProperty().bindBidirectional(visibleProperty()); + pausedIcon.onMouseClickedProperty().bindBidirectional(onMouseClickedProperty()); + clickPanel.onMouseClickedProperty().bindBidirectional(onMouseClickedProperty()); + } +} + diff --git a/client/src/main/java/ctbrec/ui/tabs/ThumbCell.java b/client/src/main/java/ctbrec/ui/tabs/ThumbCell.java index e7fe9a60..fdb7cea8 100644 --- a/client/src/main/java/ctbrec/ui/tabs/ThumbCell.java +++ b/client/src/main/java/ctbrec/ui/tabs/ThumbCell.java @@ -27,10 +27,10 @@ import ctbrec.io.HttpException; import ctbrec.recorder.Recorder; import ctbrec.ui.AutosizeAlert; import ctbrec.ui.CamrecApplication; -import ctbrec.ui.PauseIndicator; import ctbrec.ui.SiteUiFactory; import ctbrec.ui.StreamSourceSelectionDialog; import ctbrec.ui.action.PlayAction; +import ctbrec.ui.controls.PausedIndicator; import ctbrec.ui.controls.StreamPreview; import javafx.animation.FadeTransition; import javafx.animation.FillTransition; @@ -85,7 +85,7 @@ public class ThumbCell extends StackPane { private Text resolutionTag; private Recorder recorder; private Circle recordingIndicator; - private PauseIndicator pausedIndicator; + private PausedIndicator pausedIndicator; private int index = 0; ContextMenu popup; private static final Color colorNormal = Color.BLACK; @@ -183,12 +183,8 @@ public class ThumbCell extends StackPane { StackPane.setAlignment(recordingIndicator, Pos.TOP_LEFT); getChildren().add(recordingIndicator); - pausedIndicator = new PauseIndicator(colorRecording, 16); - pausedIndicator.setVisible(false); - pausedIndicator.setCursor(Cursor.HAND); + pausedIndicator = new PausedIndicator(16, colorRecording); pausedIndicator.setOnMouseClicked(e -> pauseResumeAction(false)); - StackPane.setMargin(pausedIndicator, new Insets(3)); - StackPane.setAlignment(pausedIndicator, Pos.TOP_LEFT); getChildren().add(pausedIndicator); if (Config.getInstance().getSettings().livePreviews) {