From: rnayabed Date: Thu, 18 Mar 2021 18:00:47 +0530 Subject: More work on the new Icon System --- More work on the new Icon System --- --- 'a/src/main/java/com/stream_pi/server/connection/ClientConnection.java' +++ b/src/main/java/com/stream_pi/server/connection/ClientConnection.java @@ -8,6 +8,7 @@ import com.stream_pi.action_api.actionpr import com.stream_pi.action_api.actionproperty.property.Property; import com.stream_pi.action_api.actionproperty.property.Type; import com.stream_pi.action_api.normalaction.NormalAction; +import com.stream_pi.action_api.normalaction.ToggleAction; import com.stream_pi.server.action.NormalActionPlugins; import com.stream_pi.server.client.Client; import com.stream_pi.server.client.ClientProfile; @@ -715,10 +716,11 @@ public class ClientConnection extends Th String profileID = r[0]; String actionID = r[1]; + boolean toggle = r[2].equals("true"); Action action = client.getProfileByID(profileID).getActionByID(actionID); - if(action.getActionType() == ActionType.NORMAL) + if(action.getActionType() == ActionType.NORMAL || action.getActionType() == ActionType.TOGGLE) { NormalAction original = NormalActionPlugins.getInstance().getPluginByModuleName( action.getModuleName() @@ -750,10 +752,22 @@ public class ClientConnection extends Th { System.out.println("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2 "+normalAction.getDelayBeforeExecuting()); Thread.sleep(normalAction.getDelayBeforeExecuting()); - boolean result = serverListener.onNormalActionClicked(normalAction); - if(!result) + + if(normalAction instanceof ToggleAction) + { + boolean result = serverListener.onToggleActionClicked((ToggleAction) normalAction, toggle); + if(!result) + { + sendActionFailed(profileID, actionID); + } + } + else { - sendActionFailed(profileID, actionID); + boolean result = serverListener.onNormalActionClicked(normalAction); + if(!result) + { + sendActionFailed(profileID, actionID); + } } } catch (SevereException e) --- 'a/src/main/java/com/stream_pi/server/connection/ServerListener.java' +++ b/src/main/java/com/stream_pi/server/connection/ServerListener.java @@ -1,10 +1,13 @@ package com.stream_pi.server.connection; import com.stream_pi.action_api.normalaction.NormalAction; +import com.stream_pi.action_api.normalaction.ToggleAction; import com.stream_pi.util.exception.SevereException; -public interface ServerListener { +public interface ServerListener +{ boolean onNormalActionClicked(NormalAction action); + boolean onToggleActionClicked(ToggleAction action, boolean toggle); void clearTemp(); --- 'a/src/main/java/com/stream_pi/server/controller/Controller.java' +++ b/src/main/java/com/stream_pi/server/controller/Controller.java @@ -3,6 +3,7 @@ package com.stream_pi.server.controller; import com.stream_pi.action_api.action.ServerConnection; import com.stream_pi.action_api.action.PropertySaver; import com.stream_pi.action_api.normalaction.NormalAction; +import com.stream_pi.action_api.normalaction.ToggleAction; import com.stream_pi.server.Main; import com.stream_pi.server.action.NormalActionPlugins; import com.stream_pi.server.connection.ClientConnections; @@ -518,6 +519,44 @@ public class Controller extends Base imp } @Override + public boolean onToggleActionClicked(ToggleAction action, boolean toggle) { + try{ + getLogger().info("action "+action.getID()+" clicked!"); + + if(toggle) + { + action.onToggleOn(); + } + else + { + action.onToggleOff(); + } + return true; + } + catch (Exception e) + { + //check if its windows UAC related + if(e.getMessage().contains("operation requires elevation")) + { + handleMinorException(new MinorException( + "Action Execution Failed!", + "Error running action at ["+action.getLocation().getRow()+","+action.getLocation().getCol()+"] ("+action.getDisplayText()+")\n"+ + "This action requires higher UAC privileges. Re-launch Stream-Pi Server with 'Administrator Privileges' in order to run this command.") + ); + } + else + { + handleMinorException(new MinorException( + "Action Execution Failed!", + "Error running action at ["+action.getLocation().getRow()+","+action.getLocation().getCol()+"] ("+action.getDisplayText()+")\n"+ + "Check stacktrace/log to know what exactly happened\n\nMessage : \n"+e.getMessage() ) + ); + } + return false; + } + } + + @Override public void clearTemp() { Platform.runLater(() -> { getDashboardPane().getClientDetailsPane().refresh(); @@ -542,6 +581,11 @@ public class Controller extends Base imp } @Override + public void saveClientIcons() { + + } + + @Override public com.stream_pi.util.platform.Platform getPlatform() { return ServerInfo.getInstance().getPlatform(); } --- 'a/src/main/java/com/stream_pi/server/window/dashboard/actiongridpane/ActionBox.java' +++ b/src/main/java/com/stream_pi/server/window/dashboard/actiongridpane/ActionBox.java @@ -63,6 +63,7 @@ public class ActionBox extends StackPane setAction(null); getStyleClass().clear(); setBackground(Background.EMPTY); + removeFontIcon(); getChildren().clear(); baseInit(); } @@ -266,6 +267,8 @@ public class ActionBox extends StackPane public void setIcon(byte[] iconByteArray) { + removeFontIcon(); + if(iconByteArray == null) { getStyleClass().remove("action_box_icon_present"); @@ -291,7 +294,6 @@ public class ActionBox extends StackPane public void setDefaultToggleIcon(boolean isToggleOn) { - setBackground(null); String styleClass; @@ -304,11 +306,28 @@ public class ActionBox extends StackPane styleClass = "action_box_toggle_off"; } - FontIcon fontIcon = new FontIcon(); + setBackground(null); + removeFontIcon(); + + fontIcon = new FontIcon(); fontIcon.getStyleClass().add(styleClass); fontIcon.setIconSize((int) (size * 0.8)); + + getChildren().add(fontIcon); + fontIcon.toBack(); } + public void removeFontIcon() + { + if(fontIcon!=null) + { + getChildren().remove(fontIcon); + fontIcon = null; + } + } + + FontIcon fontIcon = null; + private Action action = null; private ExceptionAndAlertHandler exceptionAndAlertHandler;