diff --git a/PlayWallPlugins/PlayWallPluginWebAPI/src/main/java/de/tobias/playpad/plugin/api/client/WebApiRemoteConnectionStateListener.java b/PlayWallPlugins/PlayWallPluginWebAPI/src/main/java/de/tobias/playpad/plugin/api/client/WebApiRemoteConnectionStateListener.java index 20756ec1df83ec7c0d199c8c7b3ee2003878e66b..1c095abf9a2849879931caa7e3a9fb70565a4ca1 100644 --- a/PlayWallPlugins/PlayWallPluginWebAPI/src/main/java/de/tobias/playpad/plugin/api/client/WebApiRemoteConnectionStateListener.java +++ b/PlayWallPlugins/PlayWallPluginWebAPI/src/main/java/de/tobias/playpad/plugin/api/client/WebApiRemoteConnectionStateListener.java @@ -34,6 +34,8 @@ public class WebApiRemoteConnectionStateListener implements MainWindowListener { connectionStateIcon = new FontIcon(FontAwesomeType.CLOUD); connectionStateIcon.setSize(20); + connectionStateIcon.setOnMouseClicked(this::onIconClicked); + connectedProperty = new SimpleIntegerProperty(0); connectedProperty.addListener((observable, oldValue, newValue) -> { Platform.runLater(() -> { @@ -70,6 +72,19 @@ public class WebApiRemoteConnectionStateListener implements MainWindowListener { ); } + private void onIconClicked(MouseEvent event) { + WebApiPlugin$.MODULE$.connections().values().stream() + .filter(client -> client.getPlayPadConnectionState() != WebSocketState.OPEN) + .forEach(client -> Worker.runLater(() -> { + try { + client.disconnect(); + client.connect(1); + } catch (IOException | WebSocketException e) { + Logger.error(e); + } + })); + } + @Override public void onInit(IMainViewController mainViewController) { mainViewController.performLayoutDependedAction((oldToolbar, newToolbar) -> {