From: Debayan Sutradhar Date: Fri, 11 Jun 2021 20:55:23 +0530 Subject: Refactored UI --- Refactored UI --- --- '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 @@ -5,10 +5,7 @@ import com.stream_pi.action_api.action.A import com.stream_pi.action_api.action.DisplayTextAlignment; import com.stream_pi.action_api.action.Location; import com.stream_pi.action_api.actionproperty.ClientProperties; -import com.stream_pi.action_api.actionproperty.property.ControlType; -import com.stream_pi.action_api.actionproperty.property.FileExtensionFilter; -import com.stream_pi.action_api.actionproperty.property.Property; -import com.stream_pi.action_api.actionproperty.property.Type; +import com.stream_pi.action_api.actionproperty.property.*; import com.stream_pi.action_api.externalplugin.ExternalPlugin; import com.stream_pi.action_api.otheractions.CombineAction; import com.stream_pi.action_api.otheractions.FolderAction; @@ -21,6 +18,7 @@ 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.server.window.helper.Helper; import com.stream_pi.util.alert.StreamPiAlert; import com.stream_pi.util.alert.StreamPiAlertListener; import com.stream_pi.util.alert.StreamPiAlertType; @@ -28,6 +26,7 @@ import com.stream_pi.util.exception.Mino import com.stream_pi.util.exception.SevereException; import com.stream_pi.util.uihelper.HBoxInputBox; import com.stream_pi.util.uihelper.HBoxInputBoxWithFileChooser; +import com.stream_pi.util.uihelper.HBoxWithSpaceBetween; import com.stream_pi.util.uihelper.SpaceFiller; import javafx.application.HostServices; import javafx.collections.FXCollections; @@ -332,7 +331,9 @@ public class ActionDetailsPane extends V clearIconHBox.setAlignment(Pos.CENTER_RIGHT); HBox.setMargin(hideDisplayTextCheckBox, new Insets(0, 0, 0, 45)); - displayTextFieldHBox = new HBox(new HBoxInputBox("Display Name", displayNameTextField), hideDisplayTextCheckBox); + HBoxInputBox s = new HBoxInputBox("Display Name", displayNameTextField); + HBox.setHgrow(s, Priority.ALWAYS); + displayTextFieldHBox = new HBox(s, hideDisplayTextCheckBox); HBox alignmentHBox = new HBox(new Label("Alignment"), SpaceFiller.horizontal(), @@ -873,131 +874,16 @@ public class ActionDetailsPane extends V Label label = new Label(eachProperty.getDisplayName()); - HBox hBox = new HBox(label); - hBox.setSpacing(5.0); - hBox.setAlignment(Pos.CENTER_LEFT); - - Node controlNode = null; - - if(eachProperty.getHelpLink() != null) - { - Button helpButton = new Button(); - FontIcon questionIcon = new FontIcon("fas-question"); - helpButton.setGraphic(questionIcon); - - helpButton.setOnAction(event -> { - hostServices.showDocument(eachProperty.getHelpLink()); - }); - - hBox.getChildren().add(helpButton); - - hBox.getChildren().add(controlNode); - } - - hBox.getChildren().add(SpaceFiller.horizontal()); - - - if(eachProperty.getControlType() == ControlType.COMBO_BOX) - { - ComboBox comboBox = new ComboBox<>(); - comboBox.getItems().addAll(eachProperty.getListValue()); - comboBox.getSelectionModel().select(eachProperty.getSelectedIndex()); - - - controlNode = comboBox; - - hBox.getChildren().add(controlNode); - } - else if(eachProperty.getControlType() == ControlType.FILE_PATH) - { - TextField textField = new TextField(eachProperty.getRawValue()); - - FileExtensionFilter[] fileExtensionFilters = eachProperty.getExtensionFilters(); - FileChooser.ExtensionFilter[] extensionFilters = new FileChooser.ExtensionFilter[fileExtensionFilters.length]; - - for(int x = 0;x { - if(t1) - toggleButton.setText("ON"); - else - toggleButton.setText("OFF"); - }); - - controlNode = toggleButton; - - hBox.getChildren().add(controlNode); - } - else if(eachProperty.getControlType() == ControlType.SLIDER_DOUBLE) - { - Slider slider = new Slider(); - slider.setValue(eachProperty.getDoubleValue()); - slider.setMax(eachProperty.getMaxDoubleValue()); - slider.setMin(eachProperty.getMinDoubleValue()); - - controlNode = slider; - - hBox.getChildren().add(controlNode); - } - else if(eachProperty.getControlType() == ControlType.SLIDER_INTEGER) - { - Slider slider = new Slider(); - slider.setValue(eachProperty.getIntValue()); - - slider.setMax(eachProperty.getMaxIntValue()); - slider.setMin(eachProperty.getMinIntValue()); - slider.setBlockIncrement(1.0); - slider.setSnapToTicks(true); - - controlNode = slider; - - hBox.getChildren().add(controlNode); - } - + Node controlNode = Helper.getControlNode(eachProperty); + HBoxWithSpaceBetween hBoxWithSpaceBetween = new HBoxWithSpaceBetween(label, controlNode); UIPropertyBox clientProperty = new UIPropertyBox(i, eachProperty.getDisplayName(), controlNode, eachProperty.getControlType(), eachProperty.getType(), eachProperty.isCanBeBlank()); actionClientProperties.add(clientProperty); - clientPropertiesVBox.getChildren().add(hBox); + clientPropertiesVBox.getChildren().add(hBoxWithSpaceBetween); } } --- /dev/null +++ b/src/main/java/com/stream_pi/server/window/helper/Helper.java @@ -0,0 +1,102 @@ +package com.stream_pi.server.window.helper; + +import com.stream_pi.action_api.actionproperty.property.ControlType; +import com.stream_pi.action_api.actionproperty.property.ListValue; +import com.stream_pi.action_api.actionproperty.property.Property; +import com.stream_pi.util.exception.MinorException; +import javafx.scene.Node; +import javafx.scene.control.*; +import javafx.util.Callback; + +public class Helper +{ + public static Node getControlNode(Property property) throws MinorException + { + if(property.getControlType() == ControlType.COMBO_BOX) + { + ComboBox comboBox = new ComboBox<>(); + comboBox.getItems().addAll(property.getListValue()); + + Callback, ListCell> clientsComboBoxFactory = new Callback<>() { + @Override + public ListCell call(ListView clientConnectionListView) { + + return new ListCell<>() { + @Override + protected void updateItem(ListValue listValue, boolean b) + { + super.updateItem(listValue, b); + + if(listValue == null) + { + setText("Choose value"); + } + else + { + setText(listValue.getDisplayName()); + } + } + }; + } + }; + comboBox.setCellFactory(clientsComboBoxFactory); + comboBox.setButtonCell(clientsComboBoxFactory.call(null)); + + comboBox.getSelectionModel().select(property.getSelectedIndex()); + return comboBox; + } + else if(property.getControlType() == ControlType.TEXT_FIELD) + { + return new TextField(property.getRawValue()); + } + else if(property.getControlType() == ControlType.TEXT_FIELD_MASKED) + { + PasswordField textField = new PasswordField(); + textField.setText(property.getRawValue()); + + return textField; + } + else if(property.getControlType() == ControlType.TOGGLE) + { + ToggleButton toggleButton = new ToggleButton(); + toggleButton.setSelected(property.getBoolValue()); + + if(property.getBoolValue()) + toggleButton.setText("ON"); + else + toggleButton.setText("OFF"); + + toggleButton.selectedProperty().addListener((observableValue, aBoolean, t1) -> { + if(t1) + toggleButton.setText("ON"); + else + toggleButton.setText("OFF"); + }); + + return toggleButton; + } + else if(property.getControlType() == ControlType.SLIDER_DOUBLE) + { + Slider slider = new Slider(); + slider.setValue(property.getDoubleValue()); + slider.setMax(property.getMaxDoubleValue()); + slider.setMin(property.getMinDoubleValue()); + + return slider; + } + else if(property.getControlType() == ControlType.SLIDER_INTEGER) + { + Slider slider = new Slider(); + slider.setValue(property.getIntValue()); + + slider.setMax(property.getMaxIntValue()); + slider.setMin(property.getMinIntValue()); + slider.setBlockIncrement(1.0); + slider.setSnapToTicks(true); + + return slider; + } + + return null; + } +} --- 'a/src/main/java/com/stream_pi/server/window/settings/PluginsSettings.java' +++ b/src/main/java/com/stream_pi/server/window/settings/PluginsSettings.java @@ -1,5 +1,6 @@ package com.stream_pi.server.window.settings; +import com.stream_pi.action_api.actionproperty.property.ListValue; import com.stream_pi.action_api.externalplugin.ExternalPlugin; import com.stream_pi.server.uipropertybox.UIPropertyBox; import com.stream_pi.action_api.actionproperty.property.ControlType; @@ -8,9 +9,12 @@ import com.stream_pi.action_api.actionpr import com.stream_pi.server.action.ExternalPlugins; import com.stream_pi.server.controller.ServerListener; import com.stream_pi.server.window.ExceptionAndAlertHandler; +import com.stream_pi.server.window.helper.Helper; import com.stream_pi.util.exception.MinorException; +import com.stream_pi.util.uihelper.HBoxWithSpaceBetween; import com.stream_pi.util.uihelper.SpaceFiller; +import javafx.util.Callback; import org.kordamp.ikonli.javafx.FontIcon; import javafx.application.HostServices; @@ -253,93 +257,15 @@ public class PluginsSettings extends VBo Label label = new Label(eachProperty.getDisplayName()); - Region region = new Region(); - HBox.setHgrow(region, Priority.ALWAYS); - - HBox hBox = new HBox(label, SpaceFiller.horizontal()); - //hBox.setId(j+""); - - Node controlNode = null; - - if(eachProperty.getControlType() == ControlType.COMBO_BOX) - { - ComboBox comboBox = new ComboBox<>(); - comboBox.getItems().addAll(eachProperty.getListValue()); - comboBox.getSelectionModel().select(eachProperty.getSelectedIndex()); - hBox.getChildren().add(comboBox); - - controlNode = comboBox; - } - else if(eachProperty.getControlType() == ControlType.TEXT_FIELD) - { - TextField textField = new TextField(eachProperty.getRawValue()); - - hBox.getChildren().add(textField); - - controlNode = textField; - } - else if(eachProperty.getControlType() == ControlType.TEXT_FIELD_MASKED) - { - PasswordField textField = new PasswordField(); - textField.setText(eachProperty.getRawValue()); - - controlNode= textField; - - hBox.getChildren().add(controlNode); - } - else if(eachProperty.getControlType() == ControlType.TOGGLE) - { - ToggleButton toggleButton = new ToggleButton(); - toggleButton.setSelected(eachProperty.getBoolValue()); - - if(eachProperty.getBoolValue()) - toggleButton.setText("ON"); - else - toggleButton.setText("OFF"); - - toggleButton.selectedProperty().addListener((observableValue, aBoolean, t1) -> { - if(t1) - toggleButton.setText("ON"); - else - toggleButton.setText("OFF"); - }); - - hBox.getChildren().add(toggleButton); - - controlNode = toggleButton; - } - else if(eachProperty.getControlType() == ControlType.SLIDER_DOUBLE) - { - Slider slider = new Slider(); - slider.setValue(eachProperty.getDoubleValue()); - slider.setMax(eachProperty.getMaxDoubleValue()); - slider.setMin(eachProperty.getMinDoubleValue()); - - hBox.getChildren().add(slider); - - controlNode = slider; - } - else if(eachProperty.getControlType() == ControlType.SLIDER_INTEGER) - { - Slider slider = new Slider(); - slider.setValue(eachProperty.getIntValue()); - - slider.setMax(eachProperty.getMaxIntValue()); - slider.setMin(eachProperty.getMinIntValue()); - slider.setBlockIncrement(1.0); - slider.setSnapToTicks(true); - - hBox.getChildren().add(slider); - - controlNode = slider; - } + Node controlNode = Helper.getControlNode(eachProperty); + HBoxWithSpaceBetween hBoxWithSpaceBetween = new HBoxWithSpaceBetween(label, controlNode); UIPropertyBox serverProperty = new UIPropertyBox(j, eachProperty.getDisplayName(), controlNode, eachProperty.getControlType(), eachProperty.getType(), eachProperty.isCanBeBlank()); serverPropertyArrayList.add(serverProperty); - serverPropertiesVBox.getChildren().add(hBox); + serverPropertiesVBox.getChildren().add(hBoxWithSpaceBetween); }