Armin Schrenk před 4 roky
rodič
revize
97afadd7b9

+ 24 - 0
main/ui/src/main/java/org/cryptomator/ui/mainwindow/VaultListController.java

@@ -11,7 +11,10 @@ import org.slf4j.LoggerFactory;
 import javax.inject.Inject;
 import javafx.beans.binding.Bindings;
 import javafx.beans.binding.BooleanBinding;
+import javafx.beans.property.BooleanProperty;
 import javafx.beans.property.ObjectProperty;
+import javafx.beans.property.SimpleBooleanProperty;
+import javafx.beans.value.ChangeListener;
 import javafx.beans.value.ObservableValue;
 import javafx.collections.ListChangeListener;
 import javafx.collections.ObservableList;
@@ -25,6 +28,7 @@ public class VaultListController implements FxController {
 
 	private final ObservableList<Vault> vaults;
 	private final ObjectProperty<Vault> selectedVault;
+	private final BooleanProperty selectedVaultRemovable;
 	private final VaultListCellFactory cellFactory;
 	private final AddVaultWizardComponent.Builder addVaultWizard;
 	private final RemoveVaultComponent.Builder removeVault;
@@ -41,6 +45,7 @@ public class VaultListController implements FxController {
 		this.removeVault = removeVault;
 		this.noVaultSelected = selectedVault.isNull();
 		this.emptyVaultList = Bindings.isEmpty(vaults);
+		this.selectedVaultRemovable = new SimpleBooleanProperty(false);
 		selectedVault.addListener(this::selectedVaultDidChange);
 	}
 
@@ -59,12 +64,22 @@ public class VaultListController implements FxController {
 	}
 
 	private void selectedVaultDidChange(@SuppressWarnings("unused") ObservableValue<? extends Vault> observableValue, @SuppressWarnings("unused") Vault oldValue, Vault newValue) {
+		if(oldValue != null){
+			oldValue.lockedProperty().removeListener((ChangeListener<? super Boolean>) this::updateSelectedVaultRemovable);
+		}
 		if (newValue == null) {
 			return;
 		}
 		VaultListManager.redetermineVaultState(newValue);
+		selectedVaultRemovable.setValue(newValue.isLocked());
+		newValue.lockedProperty().addListener((ChangeListener<? super Boolean>) this::updateSelectedVaultRemovable);
+	}
+
+	private void updateSelectedVaultRemovable(ObservableValue<? extends Boolean> observableValue, Boolean oldVal, Boolean newVal) {
+		selectedVaultRemovable.setValue(newVal);
 	}
 
+
 	@FXML
 	public void didClickAddVault() {
 		addVaultWizard.build().showAddVaultWizard();
@@ -97,4 +112,13 @@ public class VaultListController implements FxController {
 	public boolean isNoVaultSelected() {
 		return noVaultSelected.get();
 	}
+
+	public BooleanProperty selectedVaultRemovableProperty() {
+		return selectedVaultRemovable;
+	}
+
+	public boolean isSelectedVaultRemovable() {
+		return selectedVaultRemovable.get();
+	}
+
 }

+ 1 - 1
main/ui/src/main/resources/fxml/vault_list.fxml

@@ -19,7 +19,7 @@
 			<contextMenu>
 				<ContextMenu>
 					<items>
-						<MenuItem text="%main.vaultlist.contextMenu.remove" onAction="#didClickRemoveVault" disable="${controller.noVaultSelected}"/>
+						<MenuItem text="%main.vaultlist.contextMenu.remove" onAction="#didClickRemoveVault" disable="${!controller.selectedVaultRemovable}"/>
 					</items>
 				</ContextMenu>
 			</contextMenu>