/
rgd045
/
crypt-file
Обзор
Документация
Войти
/
rgd045
/
crypt-file
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
develop
src/main/java/org/cryptomator/ui/preferences/PreferencesController.java
78 строк
2 KB
Sebastian Stenzel
moved interface settings to separate preferences tab
09 апр 2022, 16:13
Не верифицирован
09 апр 2022, 16:13
9b00cd9
Код
Авторство
О чём код?
package org.cryptomator.ui.preferences; import org.cryptomator.ui.common.FxController; import org.cryptomator.ui.fxapp.UpdateChecker; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import javax.inject.Inject; import javafx.beans.binding.BooleanBinding; import javafx.beans.property.ObjectProperty; import javafx.fxml.FXML; import javafx.scene.control.Tab; import javafx.scene.control.TabPane; import javafx.stage.Stage; import javafx.stage.WindowEvent; @PreferencesScoped public class PreferencesController implements FxController { private static final Logger LOG = LoggerFactory.getLogger(PreferencesController.class); private final Stage window; private final ObjectProperty<SelectedPreferencesTab> selectedTabProperty; private final BooleanBinding updateAvailable; public TabPane tabPane; public Tab generalTab; public Tab interfaceTab; public Tab volumeTab; public Tab updatesTab; public Tab contributeTab; public Tab aboutTab; @Inject public PreferencesController(@PreferencesWindow Stage window, ObjectProperty<SelectedPreferencesTab> selectedTabProperty, UpdateChecker updateChecker) { this.window = window; this.selectedTabProperty = selectedTabProperty; this.updateAvailable = updateChecker.latestVersionProperty().isNotNull(); } @FXML public void initialize() { window.setOnShowing(this::windowWillAppear); selectedTabProperty.addListener(observable -> this.selectChosenTab()); tabPane.getSelectionModel().selectedItemProperty().addListener(observable -> this.selectedTabChanged()); } private void selectChosenTab() { Tab toBeSelected = getTabToSelect(selectedTabProperty.get()); tabPane.getSelectionModel().select(toBeSelected); } private Tab getTabToSelect(SelectedPreferencesTab selectedTab) { return switch (selectedTab) { case GENERAL -> generalTab; case INTERFACE -> interfaceTab; case VOLUME -> volumeTab; case UPDATES -> updatesTab; case CONTRIBUTE -> contributeTab; case ABOUT -> aboutTab; case ANY -> updateAvailable.get() ? updatesTab : generalTab; }; } private void selectedTabChanged() { Tab selectedTab = tabPane.getSelectionModel().getSelectedItem(); try { SelectedPreferencesTab selectedPreferencesTab = SelectedPreferencesTab.valueOf(selectedTab.getId()); selectedTabProperty.set(selectedPreferencesTab); } catch (IllegalArgumentException e) { LOG.error("Unknown preferences tab id: {}", selectedTab.getId()); } } private void windowWillAppear(@SuppressWarnings("unused") WindowEvent windowEvent) { selectChosenTab(); } }