From 7d0971a054030ca0e38bba5a04020ef44be0f61b Mon Sep 17 00:00:00 2001 From: tobias <thinkdifferent055@gmail.com> Date: Sun, 21 Nov 2021 17:53:28 +0100 Subject: [PATCH] #174 - Hide client connection state icon if no connections are configured --- .../WebApiRemoteConnectionStateListener.java | 41 ++++++++++++------- 1 file changed, 27 insertions(+), 14 deletions(-) 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 1f1dc56f..20756ec1 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 @@ -1,6 +1,9 @@ package de.tobias.playpad.plugin.api.client; +import com.neovisionaries.ws.client.WebSocketException; import com.neovisionaries.ws.client.WebSocketState; +import de.thecodelabs.logger.Logger; +import de.thecodelabs.utils.threading.Worker; import de.thecodelabs.utils.ui.icon.FontAwesomeType; import de.thecodelabs.utils.ui.icon.FontIcon; import de.thecodelabs.utils.util.Localization; @@ -8,13 +11,18 @@ import de.tobias.playpad.api.PlayPadClient; import de.tobias.playpad.plugin.MainWindowListener; import de.tobias.playpad.plugin.api.WebApiPlugin$; import de.tobias.playpad.viewcontroller.main.IMainViewController; +import javafx.application.Platform; import javafx.beans.InvalidationListener; import javafx.beans.binding.Bindings; import javafx.beans.property.IntegerProperty; import javafx.beans.property.ObjectProperty; import javafx.beans.property.SimpleIntegerProperty; import javafx.scene.control.Tooltip; +import javafx.scene.input.MouseEvent; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; import java.util.stream.Collectors; public class WebApiRemoteConnectionStateListener implements MainWindowListener { @@ -28,22 +36,27 @@ public class WebApiRemoteConnectionStateListener implements MainWindowListener { connectedProperty = new SimpleIntegerProperty(0); connectedProperty.addListener((observable, oldValue, newValue) -> { - boolean allConnected = newValue.intValue() == 0; - - connectionStateIcon.setIcons(allConnected ? FontAwesomeType.CLOUD : FontAwesomeType.EXCLAMATION_CIRCLE); - if (!allConnected) { - final String disconnectedServers = WebApiPlugin$.MODULE$.connections().entrySet().stream() - .filter(entry -> entry.getValue().getPlayPadConnectionState() != WebSocketState.OPEN) - .map(entry -> entry.getKey().getName()).collect(Collectors.joining(", ")); - connectionStateIcon.setTooltip(new Tooltip(Localization.getString("webapi-settings.remote.state.tooltip", disconnectedServers))); - connectionStateIcon.setStyle("-fx-text-fill: red;"); - } else { - connectionStateIcon.setTooltip(null); - connectionStateIcon.setStyle(""); - } + Platform.runLater(() -> { + boolean allConnected = newValue.intValue() == 0; + connectionStateIcon.setIcons(allConnected ? FontAwesomeType.CLOUD : FontAwesomeType.EXCLAMATION_CIRCLE); + if (!allConnected) { + final String disconnectedServers = WebApiPlugin$.MODULE$.connections().entrySet().stream() + .filter(entry -> entry.getValue().getPlayPadConnectionState() != WebSocketState.OPEN) + .map(entry -> entry.getKey().getName()).collect(Collectors.joining(", ")); + connectionStateIcon.setTooltip(new Tooltip(Localization.getString("webapi-settings.remote.state.tooltip", disconnectedServers))); + connectionStateIcon.setStyle("-fx-text-fill: red;"); + } else { + connectionStateIcon.setTooltip(null); + connectionStateIcon.setStyle(""); + } + }); }); - WebApiPlugin$.MODULE$.connections().addListener((InvalidationListener) observable -> createConnectionStateBinding()); + WebApiPlugin$.MODULE$.connections().addListener((InvalidationListener) observable -> { + createConnectionStateBinding(); + connectionStateIcon.setVisible(!WebApiPlugin$.MODULE$.connections().isEmpty()); + }); + connectionStateIcon.setVisible(!WebApiPlugin$.MODULE$.connections().isEmpty()); createConnectionStateBinding(); } -- GitLab