/
rgd045
/
crypt-file
Обзор
Документация
Войти
/
rgd045
/
crypt-file
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
develop
src/main/java/org/cryptomator/ui/mainwindow/VaultDetailController.java
92 строки
3 KB
Sebastian Stenzel
bump OpenJFX to version 19
10 окт 2022, 11:24
Не верифицирован
10 окт 2022, 11:24
76e7a0a
Код
Авторство
О чём код?
package org.cryptomator.ui.mainwindow; import org.cryptomator.common.vaults.Vault; import org.cryptomator.common.vaults.VaultState; import org.cryptomator.ui.common.Animations; import org.cryptomator.ui.common.AutoAnimator; import org.cryptomator.ui.common.FxController; import org.cryptomator.ui.controls.FontAwesome5Icon; import org.cryptomator.ui.controls.FontAwesome5IconView; import javax.inject.Inject; import javafx.application.Application; import javafx.beans.binding.BooleanBinding; import javafx.beans.property.ObjectProperty; import javafx.beans.property.ReadOnlyObjectProperty; import javafx.beans.value.ObservableValue; import javafx.fxml.FXML; @MainWindowScoped public class VaultDetailController implements FxController { private final ReadOnlyObjectProperty<Vault> vault; private final Application application; private final ObservableValue<FontAwesome5Icon> glyph; private final BooleanBinding anyVaultSelected; private AutoAnimator spinAnimation; /* FXML */ public FontAwesome5IconView vaultStateView; @Inject VaultDetailController(ObjectProperty<Vault> vault, Application application) { this.vault = vault; this.application = application; this.glyph = vault.flatMap(Vault::stateProperty).map(this::getGlyphForVaultState); this.anyVaultSelected = vault.isNotNull(); } public void initialize() { this.spinAnimation = AutoAnimator.animate(Animations.createDiscrete360Rotation(vaultStateView)) // .onCondition(vault.flatMap(Vault::stateProperty).map(VaultState.Value.PROCESSING::equals).orElse(false)) // .afterStop(() -> vaultStateView.setRotate(0)) // .build(); } // TODO deduplicate w/ VaultListCellController private FontAwesome5Icon getGlyphForVaultState(VaultState.Value state) { if (state != null) { return switch (state) { case LOCKED -> FontAwesome5Icon.LOCK; case PROCESSING -> FontAwesome5Icon.SPINNER; case UNLOCKED -> FontAwesome5Icon.LOCK_OPEN; case NEEDS_MIGRATION, MISSING, ERROR -> FontAwesome5Icon.EXCLAMATION_TRIANGLE; }; } else { return FontAwesome5Icon.EXCLAMATION_TRIANGLE; } } @FXML public void revealStorageLocation() { application.getHostServices().showDocument(vault.get().getPath().toUri().toString()); } /* Observable Properties */ public ReadOnlyObjectProperty<Vault> vaultProperty() { return vault; } public Vault getVault() { return vault.get(); } public ObservableValue<FontAwesome5Icon> glyphProperty() { return glyph; } public FontAwesome5Icon getGlyph() { return glyph.getValue(); } public BooleanBinding anyVaultSelectedProperty() { return anyVaultSelected; } public boolean isAnyVaultSelected() { return anyVaultSelected.get(); } }