From cf91a8b62c462fe606e7fa919e66b1cf37be2a73 Mon Sep 17 00:00:00 2001 From: Sebastian Stenzel Date: Wed, 14 Aug 2019 16:42:06 +0200 Subject: [PATCH] Moved volume type settings to custom preferences controller Added icons to preferences --- .../GeneralPreferencesController.java | 75 -------------- .../ui/preferences/PreferencesModule.java | 5 + .../VolumePreferencesController.java | 99 +++++++++++++++++++ .../src/main/resources/fxml/preferences.fxml | 15 +++ .../resources/fxml/preferences_general.fxml | 18 ---- .../resources/fxml/preferences_volume.fxml | 34 +++++++ .../main/resources/fxml/vault_options.fxml | 9 +- .../main/resources/i18n/strings.properties | 2 + .../main/resources/i18n/strings_en.properties | 3 +- 9 files changed, 165 insertions(+), 95 deletions(-) create mode 100644 main/ui/src/main/java/org/cryptomator/ui/preferences/VolumePreferencesController.java create mode 100644 main/ui/src/main/resources/fxml/preferences_volume.fxml diff --git a/main/ui/src/main/java/org/cryptomator/ui/preferences/GeneralPreferencesController.java b/main/ui/src/main/java/org/cryptomator/ui/preferences/GeneralPreferencesController.java index 3b3de258e..d03832358 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/preferences/GeneralPreferencesController.java +++ b/main/ui/src/main/java/org/cryptomator/ui/preferences/GeneralPreferencesController.java @@ -1,17 +1,10 @@ package org.cryptomator.ui.preferences; -import javafx.beans.binding.Bindings; -import javafx.beans.binding.BooleanBinding; -import javafx.scene.control.Button; import javafx.scene.control.CheckBox; import javafx.scene.control.ChoiceBox; -import javafx.scene.control.TextField; import javafx.util.StringConverter; import org.cryptomator.common.settings.Settings; import org.cryptomator.common.settings.UiTheme; -import org.cryptomator.common.settings.VolumeImpl; -import org.cryptomator.common.settings.WebDavUrlScheme; -import org.cryptomator.common.vaults.Volume; import org.cryptomator.ui.common.FxController; import javax.inject.Inject; @@ -20,19 +13,13 @@ import javax.inject.Inject; public class GeneralPreferencesController implements FxController { private final Settings settings; - private final BooleanBinding showWebDavSettings; public ChoiceBox themeChoiceBox; public CheckBox startHiddenCheckbox; public CheckBox debugModeCheckbox; - public ChoiceBox volumeTypeChoicBox; - public TextField webDavPortField; - public Button changeWebDavPortButton; - public ChoiceBox webDavUrlSchemeChoiceBox; @Inject GeneralPreferencesController(Settings settings) { this.settings = settings; - this.showWebDavSettings = Bindings.equal(settings.preferredVolumeImpl(), VolumeImpl.WEBDAV); } public void initialize() { @@ -43,42 +30,6 @@ public class GeneralPreferencesController implements FxController { startHiddenCheckbox.selectedProperty().bindBidirectional(settings.startHidden()); debugModeCheckbox.selectedProperty().bindBidirectional(settings.debugMode()); - - volumeTypeChoicBox.getItems().addAll(Volume.getCurrentSupportedAdapters()); - volumeTypeChoicBox.valueProperty().bindBidirectional(settings.preferredVolumeImpl()); - volumeTypeChoicBox.setConverter(new VolumeImplConverter()); - - webDavPortField.setText(String.valueOf(settings.port().get())); - changeWebDavPortButton.visibleProperty().bind(settings.port().asString().isNotEqualTo(webDavPortField.textProperty())); - changeWebDavPortButton.disableProperty().bind(Bindings.createBooleanBinding(this::validateWebDavPort, webDavPortField.textProperty()).not()); - - webDavUrlSchemeChoiceBox.getItems().addAll(WebDavUrlScheme.values()); - webDavUrlSchemeChoiceBox.valueProperty().bindBidirectional(settings.preferredGvfsScheme()); - webDavUrlSchemeChoiceBox.setConverter(new WebDavUrlSchemeConverter()); - } - - private boolean validateWebDavPort() { - try { - int port = Integer.parseInt(webDavPortField.getText()); - return port == 0 // choose port automatically - || port >= Settings.MIN_PORT && port <= Settings.MAX_PORT; // port within range - } catch (NumberFormatException e) { - return false; - } - } - - public void doChangeWebDavPort() { - settings.port().set(Integer.parseInt(webDavPortField.getText())); - } - - /* Property Getters */ - - public BooleanBinding showWebDavSettingsProperty() { - return showWebDavSettings; - } - - public Boolean getShowWebDavSettings() { - return showWebDavSettings.get(); } /* Helper classes */ @@ -96,30 +47,4 @@ public class GeneralPreferencesController implements FxController { } } - private static class WebDavUrlSchemeConverter extends StringConverter { - - @Override - public String toString(WebDavUrlScheme scheme) { - return scheme.getDisplayName(); - } - - @Override - public WebDavUrlScheme fromString(String string) { - throw new UnsupportedOperationException(); - } - } - - private static class VolumeImplConverter extends StringConverter { - - @Override - public String toString(VolumeImpl impl) { - return impl.getDisplayName(); - } - - @Override - public VolumeImpl fromString(String string) { - throw new UnsupportedOperationException(); - } - } - } diff --git a/main/ui/src/main/java/org/cryptomator/ui/preferences/PreferencesModule.java b/main/ui/src/main/java/org/cryptomator/ui/preferences/PreferencesModule.java index 1fe917684..c968ea230 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/preferences/PreferencesModule.java +++ b/main/ui/src/main/java/org/cryptomator/ui/preferences/PreferencesModule.java @@ -69,4 +69,9 @@ abstract class PreferencesModule { @FxControllerKey(UpdatesPreferencesController.class) abstract FxController bindUpdatesPreferencesController(UpdatesPreferencesController controller); + @Binds + @IntoMap + @FxControllerKey(VolumePreferencesController.class) + abstract FxController bindVolumePreferencesController(VolumePreferencesController controller); + } diff --git a/main/ui/src/main/java/org/cryptomator/ui/preferences/VolumePreferencesController.java b/main/ui/src/main/java/org/cryptomator/ui/preferences/VolumePreferencesController.java new file mode 100644 index 000000000..079727b29 --- /dev/null +++ b/main/ui/src/main/java/org/cryptomator/ui/preferences/VolumePreferencesController.java @@ -0,0 +1,99 @@ +package org.cryptomator.ui.preferences; + +import javafx.beans.binding.Bindings; +import javafx.beans.binding.BooleanBinding; +import javafx.scene.control.Button; +import javafx.scene.control.ChoiceBox; +import javafx.scene.control.TextField; +import javafx.util.StringConverter; +import org.cryptomator.common.settings.Settings; +import org.cryptomator.common.settings.VolumeImpl; +import org.cryptomator.common.settings.WebDavUrlScheme; +import org.cryptomator.common.vaults.Volume; +import org.cryptomator.ui.common.FxController; + +import javax.inject.Inject; + +@PreferencesScoped +public class VolumePreferencesController implements FxController { + + private final Settings settings; + private final BooleanBinding showWebDavSettings; + public ChoiceBox volumeTypeChoicBox; + public TextField webDavPortField; + public Button changeWebDavPortButton; + public ChoiceBox webDavUrlSchemeChoiceBox; + + @Inject + VolumePreferencesController(Settings settings) { + this.settings = settings; + this.showWebDavSettings = Bindings.equal(settings.preferredVolumeImpl(), VolumeImpl.WEBDAV); + } + + public void initialize() { + volumeTypeChoicBox.getItems().addAll(Volume.getCurrentSupportedAdapters()); + volumeTypeChoicBox.valueProperty().bindBidirectional(settings.preferredVolumeImpl()); + volumeTypeChoicBox.setConverter(new VolumeImplConverter()); + + webDavPortField.setText(String.valueOf(settings.port().get())); + changeWebDavPortButton.visibleProperty().bind(settings.port().asString().isNotEqualTo(webDavPortField.textProperty())); + changeWebDavPortButton.disableProperty().bind(Bindings.createBooleanBinding(this::validateWebDavPort, webDavPortField.textProperty()).not()); + + webDavUrlSchemeChoiceBox.getItems().addAll(WebDavUrlScheme.values()); + webDavUrlSchemeChoiceBox.valueProperty().bindBidirectional(settings.preferredGvfsScheme()); + webDavUrlSchemeChoiceBox.setConverter(new WebDavUrlSchemeConverter()); + } + + private boolean validateWebDavPort() { + try { + int port = Integer.parseInt(webDavPortField.getText()); + return port == 0 // choose port automatically + || port >= Settings.MIN_PORT && port <= Settings.MAX_PORT; // port within range + } catch (NumberFormatException e) { + return false; + } + } + + public void doChangeWebDavPort() { + settings.port().set(Integer.parseInt(webDavPortField.getText())); + } + + /* Property Getters */ + + public BooleanBinding showWebDavSettingsProperty() { + return showWebDavSettings; + } + + public Boolean getShowWebDavSettings() { + return showWebDavSettings.get(); + } + + /* Helper classes */ + + private static class WebDavUrlSchemeConverter extends StringConverter { + + @Override + public String toString(WebDavUrlScheme scheme) { + return scheme.getDisplayName(); + } + + @Override + public WebDavUrlScheme fromString(String string) { + throw new UnsupportedOperationException(); + } + } + + private static class VolumeImplConverter extends StringConverter { + + @Override + public String toString(VolumeImpl impl) { + return impl.getDisplayName(); + } + + @Override + public VolumeImpl fromString(String string) { + throw new UnsupportedOperationException(); + } + } + +} diff --git a/main/ui/src/main/resources/fxml/preferences.fxml b/main/ui/src/main/resources/fxml/preferences.fxml index 9bce7a697..61d4a82ca 100644 --- a/main/ui/src/main/resources/fxml/preferences.fxml +++ b/main/ui/src/main/resources/fxml/preferences.fxml @@ -2,6 +2,7 @@ + + + + + + + + + + + + + + + diff --git a/main/ui/src/main/resources/fxml/preferences_general.fxml b/main/ui/src/main/resources/fxml/preferences_general.fxml index 350260b38..91cc49325 100644 --- a/main/ui/src/main/resources/fxml/preferences_general.fxml +++ b/main/ui/src/main/resources/fxml/preferences_general.fxml @@ -1,13 +1,11 @@ - - - - - - - -