From: Debayan Sutradhar Date: Thu, 27 May 2021 21:56:26 +0530 Subject: Added context menu, warning before deleting action --- Added context menu, warning before deleting action --- --- 'a/src/main/java/com/stream_pi/server/window/dashboard/actiondetailpane/ActionDetailsPane.java' +++ b/src/main/java/com/stream_pi/server/window/dashboard/actiondetailpane/ActionDetailsPane.java @@ -21,6 +21,9 @@ import com.stream_pi.server.window.dashb import com.stream_pi.server.window.ExceptionAndAlertHandler; import com.stream_pi.server.controller.ActionDataFormats; import com.stream_pi.server.window.dashboard.actiongridpane.ActionGridPaneListener; +import com.stream_pi.util.alert.StreamPiAlert; +import com.stream_pi.util.alert.StreamPiAlertListener; +import com.stream_pi.util.alert.StreamPiAlertType; import com.stream_pi.util.exception.MinorException; import com.stream_pi.util.exception.SevereException; import com.stream_pi.util.uihelper.HBoxInputBox; @@ -1126,17 +1129,41 @@ public class ActionDetailsPane extends V } } + @Override public void onDeleteButtonClicked() { - new OnDeleteActionTask( - ClientConnections.getInstance().getClientConnectionBySocketAddress( - getClient().getRemoteSocketAddress() - ), - action, - isCombineChild(), - getCombineActionPropertiesPane(), - clientProfile, actionBox, this, exceptionAndAlertHandler, - !isCombineChild + StreamPiAlert streamPiAlert = new StreamPiAlert( + "Warning", + "Are you sure you want to delete the action?", + StreamPiAlertType.WARNING ); + + String optionYes = "Yes"; + String optionNo = "No"; + + streamPiAlert.setButtons(optionYes, optionNo); + + ActionDetailsPane actionDetailsPane = this; + + streamPiAlert.setOnClicked(new StreamPiAlertListener() { + @Override + public void onClick(String s) { + if(s.equals(optionYes)) + { + new OnDeleteActionTask( + ClientConnections.getInstance().getClientConnectionBySocketAddress( + getClient().getRemoteSocketAddress() + ), + action, + isCombineChild(), + getCombineActionPropertiesPane(), + clientProfile, actionBox, actionDetailsPane, exceptionAndAlertHandler, + !isCombineChild + ); + } + } + }); + + streamPiAlert.show(); } } \ No newline at end of file --- 'a/src/main/java/com/stream_pi/server/window/dashboard/actiondetailpane/ActionDetailsPaneListener.java' +++ b/src/main/java/com/stream_pi/server/window/dashboard/actiondetailpane/ActionDetailsPaneListener.java @@ -24,4 +24,6 @@ public interface ActionDetailsPaneListen Window getCurrentWindow(); void refresh(); + + void onDeleteButtonClicked(); } --- '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 @@ -16,6 +16,7 @@ import javafx.geometry.Pos; import javafx.scene.CacheHint; import javafx.scene.control.ContextMenu; import javafx.scene.control.Label; +import javafx.scene.control.Menu; import javafx.scene.control.MenuItem; import javafx.scene.image.Image; import javafx.scene.input.ClipboardContent; @@ -251,53 +252,59 @@ public class ActionBox extends StackPane setOnMouseClicked(mouseEvent -> { if(action != null) { - if(mouseEvent.getButton().equals(MouseButton.PRIMARY)) + if(mouseEvent.getClickCount() == 2 && getAction().getActionType() == ActionType.FOLDER) { - if(mouseEvent.getClickCount() == 2 && getAction().getActionType() == ActionType.FOLDER) + getActionDetailsPaneListener().onOpenFolderButtonClicked(); + } + else + { + try { - getActionDetailsPaneListener().onOpenFolderButtonClicked(); + actionDetailsPaneListener.onActionClicked(action, this); } - else + catch (MinorException e) { - try - { - actionDetailsPaneListener.onActionClicked(action, this); - } - catch (MinorException e) - { - exceptionAndAlertHandler.handleMinorException(e); - e.printStackTrace(); - } + exceptionAndAlertHandler.handleMinorException(e); + e.printStackTrace(); } } - else if(mouseEvent.getButton().equals(MouseButton.SECONDARY)) + + if(mouseEvent.getButton().equals(MouseButton.SECONDARY)) { - if(getAction().getActionType() == ActionType.TOGGLE) - { - toggleStateContextMenu.show(this, mouseEvent.getScreenX(), - mouseEvent.getScreenY()); - } + actionContextMenu.show(this, mouseEvent.getScreenX(), + mouseEvent.getScreenY()); } } }); - toggleStateContextMenu = new ContextMenu(); + actionContextMenu = new ContextMenu(); - MenuItem showToggleOffMenuItem = new MenuItem("Show Toggle OFF"); + MenuItem deleteActionMenuItem = new MenuItem("Delete Action"); + deleteActionMenuItem.setOnAction(event-> deleteAction()); + + showToggleOffMenuItem = new MenuItem("Show Toggle OFF"); showToggleOffMenuItem.setOnAction(event-> fakeToggle(false)); - MenuItem showToggleOnMenuItem = new MenuItem("Show Toggle ON"); + showToggleOnMenuItem = new MenuItem("Show Toggle ON"); showToggleOnMenuItem.setOnAction(event-> fakeToggle(true)); - toggleStateContextMenu.getItems().addAll(showToggleOffMenuItem, showToggleOnMenuItem); + actionContextMenu.getItems().addAll(deleteActionMenuItem, showToggleOffMenuItem, showToggleOnMenuItem); setCache(true); setCacheHint(CacheHint.QUALITY); } - ContextMenu toggleStateContextMenu; + private MenuItem showToggleOffMenuItem; + private MenuItem showToggleOnMenuItem; + + private void deleteAction() + { + actionDetailsPaneListener.onDeleteButtonClicked(); + } + + ContextMenu actionContextMenu; public void setInvalid(boolean invalid) { @@ -462,6 +469,9 @@ public class ActionBox extends StackPane setBackground(null); setStyle(null); + showToggleOffMenuItem.setVisible(getAction().getActionType() == ActionType.TOGGLE); + showToggleOnMenuItem.setVisible(getAction().getActionType() == ActionType.TOGGLE); + if(getAction().isShowDisplayText()) setDisplayTextLabel(getAction().getDisplayText()); else