From: Debayan Sutradhar Date: Thu, 29 Apr 2021 17:59:03 +0530 Subject: Auto reconnect, Refactored some messages, Added ready method --- Auto reconnect, Refactored some messages, Added ready method --- --- 'a/src/main/java/com/stream_pi/client/connection/Client.java' +++ b/src/main/java/com/stream_pi/client/connection/Client.java @@ -36,18 +36,21 @@ public class Client extends Thread private ObjectOutputStream oos; private ObjectInputStream ois; - private final AtomicBoolean stop = new AtomicBoolean(false); + private AtomicBoolean stop = new AtomicBoolean(false); - private final ClientListener clientListener; - private final ExceptionAndAlertHandler exceptionAndAlertHandler; + private ClientListener clientListener; + private ExceptionAndAlertHandler exceptionAndAlertHandler; - private final ClientInfo clientInfo; + private ClientInfo clientInfo; - private final String serverIP; - private final int serverPort; - private final Logger logger; + private String serverIP; + private int serverPort; + private Logger logger; - public Client(String serverIP, int serverPort, ClientListener clientListener, ExceptionAndAlertHandler exceptionAndAlertHandler) + private Runnable onConnectAndSetupToBeRun; + + public Client(String serverIP, int serverPort, ClientListener clientListener, + ExceptionAndAlertHandler exceptionAndAlertHandler, Runnable onConnectAndSetupToBeRun) { this.serverIP = serverIP; this.serverPort = serverPort; @@ -56,6 +59,8 @@ public class Client extends Thread this.clientInfo = ClientInfo.getInstance(); this.clientListener = clientListener; + this.onConnectAndSetupToBeRun = onConnectAndSetupToBeRun; + logger = Logger.getLogger(Client.class.getName()); new Thread(new Task() { @@ -93,6 +98,7 @@ public class Client extends Thread e.printStackTrace(); throw new MinorException("Unable to set up io Streams to server. Check connection and try again."); } + start(); } catch (MinorException e) { @@ -156,6 +162,9 @@ public class Client extends Thread switch (header) { + case "ready" : onServerReady(); + break; + case "action_icon" : onActionIconReceived(message); break; @@ -333,6 +342,15 @@ public class Client extends Thread } } + public void onServerReady() + { + if(onConnectAndSetupToBeRun!=null) + { + onConnectAndSetupToBeRun.run(); + onConnectAndSetupToBeRun = null; + } + } + public void sendThemesToServer() throws SevereException { Message message = new Message("themes"); @@ -394,13 +412,11 @@ public class Client extends Thread public void sendClientScreenDetails() throws SevereException { - String screenWidth = clientListener.getStageWidth() + ""; - String screenHeight = clientListener.getStageHeight() + ""; - Message toBeSent = new Message("client_screen_details"); - toBeSent.setStringArrValue( - screenWidth, - screenHeight + + toBeSent.setDoubleArrValue( + clientListener.getStageWidth(), + clientListener.getStageHeight() ); sendMessage(toBeSent); @@ -454,20 +470,23 @@ public class Client extends Thread String[] arr = new String[clientListener.getClientProfiles().getClientProfiles().size()]; + int totalActions = 0; + for(int i = 0;igetSettingsPane().setDisableStatus(true)); - client = new Client(getConfig().getSavedServerHostNameOrIP(), getConfig().getSavedServerPort(), this, this); + client = new Client(getConfig().getSavedServerHostNameOrIP(), getConfig().getSavedServerPort(), this, this, onConnect); } @Override --- 'a/src/main/java/com/stream_pi/client/window/dashboard/actiongridpane/ActionBox.java' +++ b/src/main/java/com/stream_pi/client/window/dashboard/actiongridpane/ActionBox.java @@ -3,8 +3,11 @@ package com.stream_pi.client.window.dash import com.stream_pi.action_api.action.Action; import com.stream_pi.action_api.action.ActionType; import com.stream_pi.action_api.action.DisplayTextAlignment; +import com.stream_pi.client.connection.ClientListener; +import com.stream_pi.client.io.Config; import com.stream_pi.client.window.ExceptionAndAlertHandler; import com.stream_pi.util.alert.StreamPiAlertType; +import com.stream_pi.util.exception.SevereException; import javafx.animation.Interpolator; import javafx.animation.KeyFrame; import javafx.animation.KeyValue; @@ -133,8 +136,22 @@ public class ActionBox extends StackPane { if(!getActionGridPaneListener().isConnected()) { - exceptionAndAlertHandler.onAlert("Not Connected", "Not Connected to any Server", StreamPiAlertType.ERROR); - return; + try + { + if(Config.getInstance().isTryConnectingWhenActionClicked()) + { + clientListener.setupClientConnection(this::actionClicked); + } + else + { + exceptionAndAlertHandler.onAlert("Not Connected", "Not Connected to any Server", StreamPiAlertType.ERROR); + } + return; + } + catch (SevereException e) + { + exceptionAndAlertHandler.handleSevereException(e); + } } @@ -173,14 +190,17 @@ public class ActionBox extends StackPane private int size; private ActionGridPaneListener actionGridPaneListener; + private ClientListener clientListener; - public ActionBox(int size, ExceptionAndAlertHandler exceptionAndAlertHandler, ActionGridPaneListener actionGridPaneListener, int row, int col) + public ActionBox(int size, ExceptionAndAlertHandler exceptionAndAlertHandler, + ClientListener clientListener, ActionGridPaneListener actionGridPaneListener, int row, int col) { this.actionGridPaneListener = actionGridPaneListener; this.exceptionAndAlertHandler = exceptionAndAlertHandler; this.size = size; this.row = row; this.col = col; + this.clientListener = clientListener; baseInit(); } @@ -242,8 +262,9 @@ public class ActionBox extends StackPane this.parent = parent; } + /* public ActionBox(int size, Action action, ExceptionAndAlertHandler exceptionAndAlertHandler, - ActionGridPaneListener actionGridPaneListener, int row, int col) + ClientListener clientListener, ActionGridPaneListener actionGridPaneListener, int row, int col) { this.actionGridPaneListener = actionGridPaneListener; this.exceptionAndAlertHandler = exceptionAndAlertHandler; @@ -257,7 +278,7 @@ public class ActionBox extends StackPane init(); - } + }*/ public void setAction(Action action) { --- 'a/src/main/java/com/stream_pi/client/window/dashboard/actiongridpane/ActionGridPane.java' +++ b/src/main/java/com/stream_pi/client/window/dashboard/actiongridpane/ActionGridPane.java @@ -263,7 +263,7 @@ public class ActionGridPane extends Grid public ActionBox addBlankActionBox(int col, int row) { - ActionBox actionBox = new ActionBox(getClientProfile().getActionSize(), exceptionAndAlertHandler, this, row, col); + ActionBox actionBox = new ActionBox(getClientProfile().getActionSize(), exceptionAndAlertHandler, clientListener, this, row, col); actionBox.setStreamPiParent(currentParent); --- 'a/src/main/java/com/stream_pi/client/window/settings/SettingsBase.java' +++ b/src/main/java/com/stream_pi/client/window/settings/SettingsBase.java @@ -55,6 +55,8 @@ public class SettingsBase extends VBox { private ToggleButton startOnBootToggleButton; + private ToggleButton tryConnectingToServerIfActionClickedToggleButton; + private ToggleButton connectOnStartupToggleButton; private ToggleButton vibrateOnActionPressToggleButton; @@ -124,6 +126,9 @@ public class SettingsBase extends VBox { startOnBootToggleButton = new ToggleButton("Start On Boot"); startOnBootToggleButton.managedProperty().bind(startOnBootToggleButton.visibleProperty()); + tryConnectingToServerIfActionClickedToggleButton = new ToggleButton("Try Connecting to Server If not connected on Action click"); + tryConnectingToServerIfActionClickedToggleButton.managedProperty().bind(tryConnectingToServerIfActionClickedToggleButton.visibleProperty()); + fullScreenModeToggleButton = new ToggleButton("Full Screen"); fullScreenModeToggleButton.managedProperty().bind(fullScreenModeToggleButton.visibleProperty()); @@ -223,6 +228,7 @@ public class SettingsBase extends VBox { vBox.getChildren().addAll( shutdownButton, + tryConnectingToServerIfActionClickedToggleButton, fullScreenModeToggleButton, connectOnStartupToggleButton, vibrateOnActionPressToggleButton, @@ -334,6 +340,11 @@ public class SettingsBase extends VBox { connectDisconnectButton.setDisable(status); } + public Button getConnectDisconnectButton() + { + return connectDisconnectButton; + } + public void onShutdownButtonClicked() { clientListener.onCloseRequest(); @@ -427,6 +438,7 @@ public class SettingsBase extends VBox { connectOnStartupToggleButton.setSelected(config.isConnectOnStartup()); vibrateOnActionPressToggleButton.setSelected(config.isVibrateOnActionClicked()); + tryConnectingToServerIfActionClickedToggleButton.setSelected(config.isTryConnectingWhenActionClicked()); } public void onSaveButtonClicked() @@ -512,6 +524,9 @@ public class SettingsBase extends VBox { + config.setTryConnectingWhenActionClicked(tryConnectingToServerIfActionClickedToggleButton.isSelected()); + + boolean startOnBoot = startOnBootToggleButton.isSelected(); --- 'a/src/main/resources/META-INF/native-image/serialization-config.json' +++ b/src/main/resources/META-INF/native-image/serialization-config.json @@ -2,5 +2,10 @@ {"name":"com.stream_pi.util.comms.Message"}, {"name": "java.lang.String"}, {"name": "java.lang.String[]"}, - {"name": "byte[]"} + {"name": "byte"}, + {"name": "byte[]"}, + {"name": "int"}, + {"name": "int[]"}, + {"name": "double"}, + {"name": "double[]"} ] \ No newline at end of file