From 5e4a93af7c7ca115c4b29448863716d7fe7ad99c Mon Sep 17 00:00:00 2001 From: Dmitry Isaenko Date: Tue, 19 Mar 2019 05:06:18 +0300 Subject: [PATCH] v0.3 UI updates. It's nightmare.. --- src/main/java/nsusbloader/AppPreferences.java | 40 +++++++- .../Controllers/NSLMainController.java | 35 ++++--- .../Controllers/SettingsController.java | 96 +++++++++++++++++-- src/main/java/nsusbloader/ServiceWindow.java | 4 +- src/main/resources/NSLMain.fxml | 2 +- src/main/resources/SettingsTab.fxml | 6 +- src/main/resources/locale.properties | 2 + src/main/resources/locale_fra.properties | 2 + src/main/resources/locale_rus.properties | 2 + src/main/resources/locale_ukr.properties | 4 +- src/main/resources/res/app_dark.css | 1 + 11 files changed, 160 insertions(+), 34 deletions(-) diff --git a/src/main/java/nsusbloader/AppPreferences.java b/src/main/java/nsusbloader/AppPreferences.java index fafb377..d833114 100644 --- a/src/main/java/nsusbloader/AppPreferences.java +++ b/src/main/java/nsusbloader/AppPreferences.java @@ -10,6 +10,33 @@ public class AppPreferences { private AppPreferences(){ preferences = Preferences.userRoot().node("NS-USBloader"); } + public void setAll( + String Protocol, + String PreviouslyOpened, + String NetUsb, + String NsIp, + boolean NsIpValidate, + boolean ExpertMode, + boolean AutoIp, + boolean RandPort, + boolean NotServe, + String HostIp, + String HostPort, + String HostExtra + ){ + setProtocol(Protocol); + setRecent(PreviouslyOpened); + setNetUsb(NetUsb); + setNsIp(NsIp); + setNsIpValidationNeeded(NsIpValidate); + setExpertMode(ExpertMode); + setAutoDetectIp(AutoIp); + setRandPort(RandPort); + setNotServeRequests(NotServe); + setHostIp(HostIp); + setHostPort(HostPort); + setHostExtra(HostExtra); + } public String getTheme(){ String theme = preferences.get("THEME", "/res/app_dark.css"); // Don't let user to change settings manually if (!theme.matches("(^/res/app_dark.css$)|(^/res/app_light.css$)")) @@ -56,9 +83,16 @@ public class AppPreferences { public String getHostIp(){ return preferences.get("HOSTIP", "0.0.0.0");} public void setHostIp(String ip){preferences.put("HOSTIP", ip);} - public String getHostPort(){ return preferences.get("HOSTPORT", "6042");} + public String getHostPort(){ + String value = preferences.get("HOSTPORT", "6042"); + if (!value.matches("^[0-9]{1,5}$")) + return "6042"; + if ((Integer.parseInt(value) > 65535) || (Integer.parseInt(value) < 1)) + return "6042"; + return value; + } public void setHostPort(String port){preferences.put("HOSTPORT", port);} - public String getHostPostfix(){ return preferences.get("HOSTPOSTFIX", "");} - public void setHostPostfix(String postfix){preferences.put("HOSTPOSTFIX", postfix);} + public String getHostExtra(){ return preferences.get("HOSTEXTRA", "");} + public void setHostExtra(String postfix){preferences.put("HOSTEXTRA", postfix);} } diff --git a/src/main/java/nsusbloader/Controllers/NSLMainController.java b/src/main/java/nsusbloader/Controllers/NSLMainController.java index cb34835..1d966aa 100644 --- a/src/main/java/nsusbloader/Controllers/NSLMainController.java +++ b/src/main/java/nsusbloader/Controllers/NSLMainController.java @@ -13,19 +13,16 @@ import javafx.stage.FileChooser; import nsusbloader.AppPreferences; import nsusbloader.MediatorControl; import nsusbloader.NET.NETCommunications; -import nsusbloader.NET.NETPacket; import nsusbloader.NSLMain; import nsusbloader.ServiceWindow; import nsusbloader.USB.UsbCommunications; import java.io.File; import java.net.URL; -import java.time.LocalDateTime; -import java.time.ZoneOffset; -import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.List; import java.util.ResourceBundle; +import java.util.function.UnaryOperator; public class NSLMainController implements Initializable { @@ -129,7 +126,12 @@ public class NSLMainController implements Initializable { nsIpLbl.setVisible(true); nsIpTextField.setVisible(true); } - + nsIpTextField.setTextFormatter(new TextFormatter<>(change -> { + if (change.getControlNewText().contains(" ") | change.getControlNewText().contains("\t")) + return null; + else + return change; + })); this.previouslyOpenedPath = null; Region btnSwitchImage = new Region(); @@ -314,13 +316,20 @@ public class NSLMainController implements Initializable { /** * Save preferences before exit * */ - public void exit(){ - AppPreferences.getInstance().setProtocol(choiceProtocol.getSelectionModel().getSelectedItem()); - AppPreferences.getInstance().setRecent(previouslyOpenedPath); - AppPreferences.getInstance().setNetUsb(choiceNetUsb.getSelectionModel().getSelectedItem()); - AppPreferences.getInstance().setNsIp(nsIpTextField.getText().trim()); - - AppPreferences.getInstance().setNsIpValidationNeeded(SettingsTabController.isNsIpValidate()); - AppPreferences.getInstance().setExpertMode(SettingsTabController.getExpertModeSelected()); + public void exit(){ // TODO: add method to set all in AppPreferences + AppPreferences.getInstance().setAll( + choiceProtocol.getSelectionModel().getSelectedItem(), + previouslyOpenedPath, + choiceNetUsb.getSelectionModel().getSelectedItem(), + nsIpTextField.getText().trim(), + SettingsTabController.isNsIpValidate(), + SettingsTabController.getExpertModeSelected(), + SettingsTabController.getAutoIpSelected(), + SettingsTabController.getRandPortSelected(), + SettingsTabController.getNotServeSelected(), + SettingsTabController.getHostIp(), + SettingsTabController.getHostPort(), + SettingsTabController.getHostExtra() + ); } } diff --git a/src/main/java/nsusbloader/Controllers/SettingsController.java b/src/main/java/nsusbloader/Controllers/SettingsController.java index 02fab64..876498a 100644 --- a/src/main/java/nsusbloader/Controllers/SettingsController.java +++ b/src/main/java/nsusbloader/Controllers/SettingsController.java @@ -4,12 +4,15 @@ import javafx.fxml.FXML; import javafx.fxml.Initializable; import javafx.scene.control.CheckBox; import javafx.scene.control.TextField; +import javafx.scene.control.TextFormatter; import javafx.scene.layout.VBox; import nsusbloader.AppPreferences; +import nsusbloader.ServiceWindow; import java.net.URL; import java.util.ResourceBundle; +import java.util.function.UnaryOperator; public class SettingsController implements Initializable { @@ -27,7 +30,7 @@ public class SettingsController implements Initializable { @FXML private TextField pcPortTextField; @FXML - private TextField pcPostfixTextField; + private TextField pcExtraTextField; @FXML private CheckBox dontServeCb; @@ -43,23 +46,96 @@ public class SettingsController implements Initializable { expertModeCb.setSelected(AppPreferences.getInstance().getExpertMode()); expertModeCb.setOnAction(e->{ - if (expertModeCb.isSelected()) - expertSettingsVBox.setDisable(false); - else - expertSettingsVBox.setDisable(true); + expertSettingsVBox.setDisable(!expertModeCb.isSelected()); }); + autoDetectIpCb.setSelected(AppPreferences.getInstance().getAutoDetectIp()); + pcIpTextField.setDisable(AppPreferences.getInstance().getAutoDetectIp()); + autoDetectIpCb.setOnAction(e->{ + pcIpTextField.setDisable(autoDetectIpCb.isSelected()); + }); randPortCb.setSelected(AppPreferences.getInstance().getRandPort()); + pcPortTextField.setDisable(AppPreferences.getInstance().getRandPort()); + randPortCb.setOnAction(e->{ + pcPortTextField.setDisable(randPortCb.isSelected()); + }); + if (AppPreferences.getInstance().getNotServeRequests()){ + dontServeCb.setSelected(true); + autoDetectIpCb.setSelected(false); + autoDetectIpCb.setDisable(true); + pcIpTextField.setDisable(false); - dontServeCb.setSelected(AppPreferences.getInstance().getNotServeRequests()); + randPortCb.setSelected(false); + randPortCb.setDisable(true); + pcPortTextField.setDisable(false); + } + pcExtraTextField.setDisable(!AppPreferences.getInstance().getNotServeRequests()); + + dontServeCb.setOnAction(e->{ + if (dontServeCb.isSelected()){ + autoDetectIpCb.setSelected(false); + autoDetectIpCb.setDisable(true); + pcIpTextField.setDisable(false); + + randPortCb.setSelected(false); + randPortCb.setDisable(true); + pcPortTextField.setDisable(false); + + pcExtraTextField.setDisable(false); + } + else { + autoDetectIpCb.setDisable(false); + autoDetectIpCb.setSelected(true); + pcIpTextField.setDisable(true); + + randPortCb.setDisable(false); + randPortCb.setSelected(true); + pcPortTextField.setDisable(true); + + pcExtraTextField.setDisable(true); + } + }); + + pcIpTextField.setText(AppPreferences.getInstance().getHostIp()); + pcPortTextField.setText(AppPreferences.getInstance().getHostPort()); + pcExtraTextField.setText(AppPreferences.getInstance().getHostExtra()); + + pcIpTextField.setTextFormatter(new TextFormatter<>(change -> { + if (change.getControlNewText().contains(" ") | change.getControlNewText().contains("\t")) + return null; + else + return change; + })); + pcPortTextField.setTextFormatter(new TextFormatter(change -> { + if (change.getControlNewText().matches("^[0-9]{0,5}$")) { + if ((Integer.parseInt(change.getControlNewText()) > 65535) || (Integer.parseInt(change.getControlNewText()) == 0)) { + ServiceWindow.getErrorNotification(resourceBundle.getString("windowTitleErrorPort"), resourceBundle.getString("windowBodyErrorPort")); + return null; + } + return change; + } + else + return null; + })); + pcExtraTextField.setTextFormatter(new TextFormatter<>(change -> { + if (change.getControlNewText().contains(" ") | change.getControlNewText().contains("\t")) + return null; + else + return change; + })); } - public boolean getExpertModeSelected(){ - return expertModeCb.isSelected(); - } + public boolean getExpertModeSelected(){ return expertModeCb.isSelected(); } + public boolean getAutoIpSelected(){ return autoDetectIpCb.isSelected(); } + public boolean getRandPortSelected(){ return randPortCb.isSelected(); } + public boolean getNotServeSelected(){ return dontServeCb.isSelected(); } public boolean isNsIpValidate(){ return validateNSHostNameCb.isSelected(); } -} + + public String getHostIp(){ return pcIpTextField.getText(); } + public String getHostPort(){ return pcPortTextField.getText(); } + public String getHostExtra(){ return pcExtraTextField.getText(); } +} \ No newline at end of file diff --git a/src/main/java/nsusbloader/ServiceWindow.java b/src/main/java/nsusbloader/ServiceWindow.java index 2982201..dfc2b47 100644 --- a/src/main/java/nsusbloader/ServiceWindow.java +++ b/src/main/java/nsusbloader/ServiceWindow.java @@ -10,7 +10,6 @@ public class ServiceWindow { /** * Create window with notification * */ - /* // not used public static void getErrorNotification(String title, String body){ Alert alertBox = new Alert(Alert.AlertType.ERROR); alertBox.setTitle(title); @@ -20,10 +19,9 @@ public class ServiceWindow { alertBox.getDialogPane().setMinHeight(Region.USE_PREF_SIZE); alertBox.setResizable(true); // Java bug workaround for JDR11/OpenJFX. TODO: nothing. really. alertBox.setResizable(false); - alertBox.getDialogPane().getStylesheets().add("/res/app.css"); + alertBox.getDialogPane().getStylesheets().add(AppPreferences.getInstance().getTheme()); alertBox.show(); } - */ /** * Create notification window with confirm/deny * */ diff --git a/src/main/resources/NSLMain.fxml b/src/main/resources/NSLMain.fxml index 8fd1b10..2b42726 100644 --- a/src/main/resources/NSLMain.fxml +++ b/src/main/resources/NSLMain.fxml @@ -34,7 +34,7 @@