diff --git a/src/main/java/com/faforever/client/vault/replay/WatchButtonController.java b/src/main/java/com/faforever/client/vault/replay/WatchButtonController.java index 01bd5d3363..d6418de7b8 100644 --- a/src/main/java/com/faforever/client/vault/replay/WatchButtonController.java +++ b/src/main/java/com/faforever/client/vault/replay/WatchButtonController.java @@ -11,10 +11,8 @@ import javafx.animation.KeyFrame; import javafx.animation.Timeline; import javafx.scene.Node; -import javafx.scene.control.MenuButton; -import javafx.scene.control.MenuItem; +import javafx.scene.control.Button; import javafx.util.Duration; -import org.jetbrains.annotations.NotNull; import org.springframework.beans.factory.config.ConfigurableBeanFactory; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Component; @@ -22,9 +20,7 @@ import java.time.Instant; import java.util.Collection; -import java.util.List; import java.util.Optional; -import java.util.stream.Collectors; @Component @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE) @@ -34,7 +30,7 @@ public class WatchButtonController implements Controller { private final ClientProperties clientProperties; private final TimeService timeService; - public MenuButton watchButton; + public Button watchButton; private Game game; private I18n i18n; private Timeline delayTimeline; @@ -55,30 +51,25 @@ public void initialize() { delayTimeline.setCycleCount(Timeline.INDEFINITE); watchButton.setDisable(true); + watchButton.setOnAction(event -> { + getAnyPlayer(game) + .ifPresent(player -> replayService.runLiveReplay(game.getId(), player.getId())); + }); } - public void setGame(Game game) { - this.game = game; - Assert.notNull(game.getStartTime(), "The game's start must not be null: " + game); - - List menuItems = game.getTeams().values().stream() + private Optional getAnyPlayer(Game game) { + return game.getTeams().values().stream() .flatMap(Collection::stream) .map(playerService::getPlayerForUsername) .filter(Optional::isPresent) .map(Optional::get) - .map(player -> createMenuItem(game, player)) - .collect(Collectors.toList()); - - watchButton.getItems().setAll(menuItems); - delayTimeline.play(); + .findFirst(); } - @NotNull - private MenuItem createMenuItem(Game game, Player player) { - MenuItem menuItem = new MenuItem(player.getUsername()); - menuItem.setUserData(player.getId()); - menuItem.setOnAction(event -> replayService.runLiveReplay(game.getId(), player.getId())); - return menuItem; + public void setGame(Game game) { + this.game = game; + Assert.notNull(game.getStartTime(), "The game's start must not be null: " + game); + delayTimeline.play(); } private void updateWatchButtonTimer() { diff --git a/src/main/resources/theme/vault/replay/watch_button.fxml b/src/main/resources/theme/vault/replay/watch_button.fxml index 4e0b1e6b92..5640d3e499 100644 --- a/src/main/resources/theme/vault/replay/watch_button.fxml +++ b/src/main/resources/theme/vault/replay/watch_button.fxml @@ -1,5 +1,5 @@ - - + +