Fixes #1267 by binding the settings.preferredVolumeImpl to VolumeImpl.WEBDAV, if preferredVolimeImpl isn't available

This commit is contained in:
Martin Beyer
2020-07-22 15:26:21 +02:00
parent 4ab7bfaa20
commit 0091c401df
2 changed files with 10 additions and 5 deletions

View File

@@ -3,6 +3,7 @@ package org.cryptomator.ui.preferences;
import javafx.beans.binding.Bindings;
import javafx.beans.binding.BooleanBinding;
import javafx.beans.property.SimpleBooleanProperty;
import javafx.beans.property.SimpleObjectProperty;
import javafx.scene.control.Button;
import javafx.scene.control.ChoiceBox;
import javafx.scene.control.TextField;
@@ -25,7 +26,7 @@ public class VolumePreferencesController implements FxController {
private final Settings settings;
private final BooleanBinding showWebDavSettings;
private final BooleanBinding showWebDavScheme;
public ChoiceBox<VolumeImpl> volumeTypeChoicBox;
public ChoiceBox<VolumeImpl> volumeTypeChoiceBox;
public TextField webDavPortField;
public Button changeWebDavPortButton;
public ChoiceBox<WebDavUrlScheme> webDavUrlSchemeChoiceBox;
@@ -38,9 +39,13 @@ public class VolumePreferencesController implements FxController {
}
public void initialize() {
volumeTypeChoicBox.getItems().addAll(Volume.getCurrentSupportedAdapters());
volumeTypeChoicBox.valueProperty().bindBidirectional(settings.preferredVolumeImpl());
volumeTypeChoicBox.setConverter(new VolumeImplConverter());
volumeTypeChoiceBox.getItems().addAll(Volume.getCurrentSupportedAdapters());
//If the in the settings specified preferredVolumeImplementation isn't available, overwrite the settings to use the default VolumeImpl.WEBDAV
if (!volumeTypeChoiceBox.getItems().contains(settings.preferredVolumeImpl().get())) {
settings.preferredVolumeImpl().bind(new SimpleObjectProperty<>(VolumeImpl.WEBDAV));
}
volumeTypeChoiceBox.valueProperty().bindBidirectional(settings.preferredVolumeImpl());
volumeTypeChoiceBox.setConverter(new VolumeImplConverter());
webDavPortField.setText(String.valueOf(settings.port().get()));
changeWebDavPortButton.visibleProperty().bind(settings.port().asString().isNotEqualTo(webDavPortField.textProperty()));

View File

@@ -17,7 +17,7 @@
<children>
<HBox spacing="6" alignment="CENTER_LEFT">
<Label text="%preferences.volume.type"/>
<ChoiceBox fx:id="volumeTypeChoicBox"/>
<ChoiceBox fx:id="volumeTypeChoiceBox"/>
</HBox>
<HBox spacing="6" alignment="CENTER_LEFT" visible="${controller.showWebDavSettings}">