This commit is contained in:
Armin Schrenk
2021-03-19 17:28:58 +01:00
parent 31e938de6a
commit 97afadd7b9
2 changed files with 25 additions and 1 deletions

View File

@@ -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();
}
}

View File

@@ -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>