server

Clone or download

Implemented Toggle Action on ActionBox and ActionGridPane

Modified Files

--- '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
@@ -4,13 +4,16 @@ import com.stream_pi.action_api.action.A
import com.stream_pi.action_api.action.ActionType;
import com.stream_pi.action_api.action.DisplayTextAlignment;
import com.stream_pi.action_api.action.Location;
+import com.stream_pi.server.io.Config;
import com.stream_pi.server.window.ExceptionAndAlertHandler;
import com.stream_pi.server.window.dashboard.actiondetailpane.ActionDetailsPaneListener;
import com.stream_pi.util.exception.MinorException;
import javafx.application.Platform;
import javafx.geometry.Pos;
import javafx.scene.CacheHint;
+import javafx.scene.control.ContextMenu;
import javafx.scene.control.Label;
+import javafx.scene.control.MenuItem;
import javafx.scene.image.Image;
import javafx.scene.input.ClipboardContent;
import javafx.scene.input.Dragboard;
@@ -23,6 +26,7 @@ import javafx.scene.layout.BackgroundRep
import javafx.scene.layout.BackgroundSize;
import javafx.scene.layout.StackPane;
import javafx.scene.text.TextAlignment;
+import org.kordamp.ikonli.javafx.FontIcon;
import java.io.ByteArrayInputStream;
import java.io.ObjectInputStream;
@@ -161,31 +165,56 @@ public class ActionBox extends StackPane
});
setOnMouseClicked(mouseEvent -> {
- if(action != null && mouseEvent.getButton().equals(MouseButton.PRIMARY))
+ if(action != null)
{
- if(mouseEvent.getClickCount() == 2 && action.getActionType() == ActionType.FOLDER)
+ if(mouseEvent.getButton().equals(MouseButton.PRIMARY))
{
- getActionDetailsPaneListener().onOpenFolderButtonClicked();
- }
- else
- {
- try
+ if(mouseEvent.getClickCount() == 2 && action.getActionType() == ActionType.FOLDER)
+ {
+ getActionDetailsPaneListener().onOpenFolderButtonClicked();
+ }
+ else
{
- actionDetailsPaneListener.onActionClicked(action, this);
+ try
+ {
+ actionDetailsPaneListener.onActionClicked(action, this);
+ }
+ catch (MinorException e)
+ {
+ exceptionAndAlertHandler.handleMinorException(e);
+ e.printStackTrace();
+ }
}
- catch (MinorException e)
+ }
+ else if(mouseEvent.getButton().equals(MouseButton.SECONDARY))
+ {
+ if(action.getActionType() == ActionType.TOGGLE)
{
- exceptionAndAlertHandler.handleMinorException(e);
- e.printStackTrace();
+ toggleStateContextMenu.show(this, mouseEvent.getScreenX(),
+ mouseEvent.getScreenY());
}
}
}
+
});
+ toggleStateContextMenu = new ContextMenu();
+
+ MenuItem showToggleOffMenuItem = new MenuItem("Show Toggle OFF");
+ showToggleOffMenuItem.setOnAction(event-> fakeToggle(false));
+
+ MenuItem showToggleOnMenuItem = new MenuItem("Show Toggle ON");
+ showToggleOnMenuItem.setOnAction(event-> fakeToggle(true));
+
+ toggleStateContextMenu.getItems().addAll(showToggleOffMenuItem, showToggleOnMenuItem);
+
+
setCache(true);
setCacheHint(CacheHint.QUALITY);
}
+ ContextMenu toggleStateContextMenu;
+
public void setInvalid(boolean invalid)
{
if(invalid)
@@ -261,6 +290,26 @@ public class ActionBox extends StackPane
}
}
+ public void setDefaultToggleIcon(boolean isToggleOn)
+ {
+ setBackground(null);
+
+ String styleClass;
+
+ if(isToggleOn)
+ {
+ styleClass = "action_box_toggle_on";
+ }
+ else
+ {
+ styleClass = "action_box_toggle_off";
+ }
+
+ FontIcon fontIcon = new FontIcon();
+ fontIcon.getStyleClass().add(styleClass);
+ fontIcon.setIconSize((int) (size * 0.8));
+ }
+
private Action action = null;
private ExceptionAndAlertHandler exceptionAndAlertHandler;
@@ -307,15 +356,88 @@ public class ActionBox extends StackPane
setInvalid(action.isInvalid());
Platform.runLater(()->{
- if(action.isHasIcon() && action.isShowIcon())
+ try {
+ if(action.getActionType() == ActionType.TOGGLE)
+ {
+ fakeToggle(false);
+ }
+ else
+ {
+ if(action.isHasIcon() && action.isShowIcon())
+ {
+ setIcon(action.getDefaultIcon());
+ }
+ else
+ {
+ setIcon(null);
+ }
+ }
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ }
+ });
+ }
+
+ private void fakeToggle(boolean isON)
+ {
+ if(isON) // ON
+ {
+ if(action.isHasIcon())
{
- setIcon(action.getIconAsByteArray());
+ boolean isToggleOnPresent = action.getIcons().containsKey("toggle_on");
+ boolean isToggleOnHidden = action.getCurrentIconState().contains("toggle_on");
+
+ if(isToggleOnPresent)
+ {
+ if(isToggleOnHidden)
+ {
+ setDefaultToggleIcon(true);
+ }
+ else
+ {
+ setIcon(action.getIcons().get("toggle_on"));
+ }
+ }
+ else
+ {
+ setDefaultToggleIcon(true);
+ }
}
else
{
- setIcon(null);
+ setDefaultToggleIcon(true);
}
- });
+ }
+ else // OFF
+ {
+ if(action.isHasIcon())
+ {
+ boolean isToggleOffPresent = action.getIcons().containsKey("toggle_off");
+ boolean isToggleOffHidden = action.getCurrentIconState().contains("toggle_off");
+
+ if(isToggleOffPresent)
+ {
+ if(isToggleOffHidden)
+ {
+ setDefaultToggleIcon(false);
+ }
+ else
+ {
+ setIcon(action.getIcons().get("toggle_off"));
+ }
+ }
+ else
+ {
+ setDefaultToggleIcon(false);
+ }
+ }
+ else
+ {
+ setDefaultToggleIcon(false);
+ }
+ }
}
public void setDisplayTextLabel(String text)
@@ -343,7 +465,7 @@ public class ActionBox extends StackPane
public void setBackgroundColour(String colour)
{
System.out.println("COLOr : "+colour);
- if(!colour.isEmpty() && action.getIconAsByteArray() == null)
+ if(!colour.isEmpty())
setStyle("-fx-background-color : "+colour);
}
}
--- 'a/src/main/java/com/stream_pi/server/window/dashboard/actiongridpane/ActionGridPane.java'
+++ b/src/main/java/com/stream_pi/server/window/dashboard/actiongridpane/ActionGridPane.java
@@ -102,7 +102,7 @@ public class ActionGridPane extends Scro
FontIcon fontIcon = new FontIcon("fas-chevron-left");
fontIcon.getStyleClass().add("folder_action_back_button_icon");
- fontIcon.setIconSize(Config.getInstance().getActionGridActionSize() - 30);
+ fontIcon.setIconSize((int) (Config.getInstance().getActionGridActionSize() * 0.8));
stackPane.setAlignment(Pos.CENTER);
stackPane.getChildren().add(fontIcon);