diff --git a/CHANGELOG.md b/CHANGELOG.md index cc6402c4c..bf1ec42fc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,7 +15,7 @@ Changes to prior versions can be found on the [Github release page](https://gith * Implemented Flatpak update mechanism * App notifications ([#4069](https://github.com/cryptomator/cryptomator/pull/4069)) * Mark files in-use for Hub vaults ([#4078](https://github.com/cryptomator/cryptomator/pull/4078)) -* Accessibility labels for GUI elements ([#4064](https://github.com/cryptomator/cryptomator/issues/4064), [#4066](https://github.com/cryptomator/cryptomator/pull/4066), [#4055](https://github.com/cryptomator/cryptomator/issues/4055)) +* Accessibility: Adjust app to be used with a screen reader ([#547](https://github.com/cryptomator/cryptomator/issues/547)) * Show Archived Vault Dialog on unlock when Hub returns 410 ([#4081](https://github.com/cryptomator/cryptomator/pull/4081)) ### Changed diff --git a/src/main/java/org/cryptomator/ui/controls/NotificationBar.java b/src/main/java/org/cryptomator/ui/controls/InfoBar.java similarity index 67% rename from src/main/java/org/cryptomator/ui/controls/NotificationBar.java rename to src/main/java/org/cryptomator/ui/controls/InfoBar.java index 64a08f220..02efa00f5 100644 --- a/src/main/java/org/cryptomator/ui/controls/NotificationBar.java +++ b/src/main/java/org/cryptomator/ui/controls/InfoBar.java @@ -4,24 +4,27 @@ import javafx.beans.property.BooleanProperty; import javafx.beans.property.SimpleBooleanProperty; import javafx.fxml.FXML; import javafx.geometry.Pos; +import javafx.scene.AccessibleRole; import javafx.scene.control.Button; +import javafx.scene.control.ContentDisplay; import javafx.scene.control.Label; import javafx.scene.layout.HBox; import javafx.scene.layout.Region; import javafx.scene.layout.VBox; +import java.util.ResourceBundle; -public class NotificationBar extends HBox { +public class InfoBar extends HBox { @FXML - private Label notificationLabel; + private Label infoMessage; private final BooleanProperty dismissable = new SimpleBooleanProperty(); private final BooleanProperty notify = new SimpleBooleanProperty(); - public NotificationBar() { + public InfoBar() { setAlignment(Pos.CENTER); - setStyle("-fx-alignment: center;"); + getStyleClass().addAll("info-bar"); Region spacer = new Region(); spacer.setMinWidth(40); @@ -36,14 +39,21 @@ public class NotificationBar extends HBox { vbox.setAlignment(Pos.CENTER); HBox.setHgrow(vbox, javafx.scene.layout.Priority.ALWAYS); - notificationLabel = new Label(); - notificationLabel.getStyleClass().add("notification-label"); - notificationLabel.setStyle("-fx-alignment: center;"); - vbox.getChildren().add(notificationLabel); + infoMessage = new Label(); + infoMessage.setFocusTraversable(true); + infoMessage.setAccessibleRole(AccessibleRole.BUTTON); + vbox.getChildren().add(infoMessage); - Button closeButton = new Button("X"); + var closeGraphic = new FontAwesome5IconView(); + closeGraphic.setGlyph(FontAwesome5Icon.TIMES); + closeGraphic.setGlyphSize(12); + closeGraphic.getStyleClass().add("glyph"); + + Button closeButton = new Button(); + closeButton.setGraphic(closeGraphic); + closeButton.setContentDisplay(ContentDisplay.GRAPHIC_ONLY); + closeButton.setAccessibleText(ResourceBundle.getBundle("i18n.strings").getString("main.notification.closeButton.tooltip")); closeButton.setMinWidth(40); - closeButton.setStyle("-fx-background-color: transparent; -fx-text-fill: white; -fx-font-weight: bold;"); closeButton.visibleProperty().bind(dismissable); closeButton.setOnAction(_ -> { @@ -61,11 +71,11 @@ public class NotificationBar extends HBox { } public String getText() { - return notificationLabel.getText(); + return infoMessage.getText(); } public void setText(String text) { - notificationLabel.setText(text); + infoMessage.setText(text); } public void setStyleClass(String styleClass) { diff --git a/src/main/java/org/cryptomator/ui/mainwindow/VaultListCellController.java b/src/main/java/org/cryptomator/ui/mainwindow/VaultListCellController.java index 9324c8c7b..845da328f 100644 --- a/src/main/java/org/cryptomator/ui/mainwindow/VaultListCellController.java +++ b/src/main/java/org/cryptomator/ui/mainwindow/VaultListCellController.java @@ -16,6 +16,7 @@ import javafx.beans.value.ObservableValue; import javafx.fxml.FXML; import javafx.geometry.Insets; import javafx.scene.layout.HBox; +import java.util.ResourceBundle; // unscoped because each cell needs its own controller public class VaultListCellController implements FxController { @@ -23,9 +24,12 @@ public class VaultListCellController implements FxController { private static final Insets COMPACT_INSETS = new Insets(6, 12, 6, 12); private static final Insets DEFAULT_INSETS = new Insets(12); + private final ResourceBundle resourceBundle; private final ObjectProperty vault = new SimpleObjectProperty<>(); + private final ObservableValue vaultState; private final ObservableValue glyph; private final ObservableValue compactMode; + private final ObservableValue accessibleText; private AutoAnimator spinAnimation; @@ -35,17 +39,21 @@ public class VaultListCellController implements FxController { public HBox vaultListCell; @Inject - VaultListCellController(Settings settings) { - this.glyph = vault.flatMap(Vault::stateProperty).map(this::getGlyphForVaultState); + VaultListCellController(Settings settings, ResourceBundle resourceBundle) { + this.resourceBundle = resourceBundle; + this.vaultState = vault.flatMap(Vault::stateProperty); + this.glyph = vaultState.map(this::getGlyphForVaultState); + this.accessibleText = vaultState.map(this::getAccessibleTextForVaultState); this.compactMode = settings.compactMode; } public void initialize() { this.spinAnimation = AutoAnimator.animate(Animations.createDiscrete360Rotation(vaultStateView)) // - .onCondition(vault.flatMap(Vault::stateProperty).map(VaultState.Value.PROCESSING::equals).orElse(false)) // + .onCondition(vaultState.map(VaultState.Value.PROCESSING::equals).orElse(false)) // .afterStop(() -> vaultStateView.setRotate(0)) // .build(); this.vaultListCell.paddingProperty().bind(compactMode.map(c -> c ? COMPACT_INSETS : DEFAULT_INSETS)); + this.vaultListCell.accessibleTextProperty().bind(accessibleText); } // TODO deduplicate w/ VaultDetailController @@ -62,6 +70,25 @@ public class VaultListCellController implements FxController { } } + private String getAccessibleTextForVaultState(VaultState.Value state) { + var v = vault.get(); + if (state != null && v != null) { + var translationKey = switch (state) { + case LOCKED -> "vault.state.locked"; + case PROCESSING -> "vault.state.processing"; + case UNLOCKED -> "vault.state.unlocked"; + case NEEDS_MIGRATION -> "vault.state.migrationNeeded"; + case MISSING -> "vault.state.missing"; + case VAULT_CONFIG_MISSING, ALL_MISSING, ERROR -> "vault.state.error"; + }; + + var localizedState = resourceBundle.getString(translationKey); + return resourceBundle.getString("main.vaultlist.listEntry").formatted(v.getDisplayName(), localizedState); + } else { + return ""; + } + } + /* Getter/Setter */ public ObservableValue glyphProperty() { diff --git a/src/main/resources/css/dark_theme.css b/src/main/resources/css/dark_theme.css index 5b8c717c1..bb23af18c 100644 --- a/src/main/resources/css/dark_theme.css +++ b/src/main/resources/css/dark_theme.css @@ -50,6 +50,7 @@ GREEN_5: PRIMARY; RED_5: #E74C3C; ORANGE_5: #E67E22; + YELLOW_4: #C19F0E; YELLOW_5: #F1C40F; MAIN_BG: GRAY_1; @@ -387,37 +388,62 @@ /******************************************************************************* * * - * NotificationBar * + * InfoBar * * * ******************************************************************************/ +.info-bar { + -fx-alignment: center; + -fx-min-height:24px; + -fx-max-height:24px; + -fx-background-color: -bar-bg; +} -.notification-label { - -fx-text-fill: white; +.info-bar--green { + -bar-bg: GREEN_5; + -button-bg: GREEN_5; + -button-bg-pressed: GREEN_3; +} + +.info-bar--yellow { + -bar-bg: YELLOW_5; + -button-bg: YELLOW_5; + -button-bg-pressed: YELLOW_4; +} + +.info-bar--red { + -bar-bg: RED_5; + -button-bg: RED_5; + -button-bg-pressed: RED_5; +} + +.info-bar .label { + -fx-text-fill: GRAY_9; -fx-font-weight: bold; } -.notification-debug { - -fx-min-height:24px; - -fx-max-height:24px; - -fx-background-color: RED_5; +.info-bar--yellow .label { + -fx-text-fill: GRAY_9; + -fx-font-weight: bold; + -fx-effect: dropshadow( gaussian , rgba(0,0,0,0.45) , 2 , 0 , 0 , 1 ); } -.notification-update { - -fx-min-height:24px; - -fx-max-height:24px; - -fx-background-color: YELLOW_5; +.info-bar .glyph { + -fx-fill: GRAY_9; } -.notification-support { - -fx-min-height:24px; - -fx-max-height:24px; - -fx-background-color: PRIMARY; +.info-bar:hover .label { + -fx-underline:true; } -.notification-debug:hover .notification-label, -.notification-update:hover .notification-label, -.notification-support:hover .notification-label { - -fx-underline:true; +.info-bar .button { + -fx-background-color: transparent; + -fx-border-color: transparent; + -fx-padding: 2 2 2 2; +} + +.info-bar .button:armed { + -fx-background-color: -button-bg-pressed; + -fx-background-radius: 8; } /******************************************************************************* diff --git a/src/main/resources/css/light_theme.css b/src/main/resources/css/light_theme.css index 38e476923..dcbee907f 100644 --- a/src/main/resources/css/light_theme.css +++ b/src/main/resources/css/light_theme.css @@ -50,6 +50,7 @@ GREEN_5: PRIMARY; RED_5: #E74C3C; ORANGE_5: #E67E22; + YELLOW_4: #C19F0E; YELLOW_5: #F1C40F; MAIN_BG: GRAY_9; @@ -387,39 +388,64 @@ /******************************************************************************* * * - * NotificationBar * + * InfoBar * * * ******************************************************************************/ +.info-bar { + -fx-alignment: center; + -fx-min-height:24px; + -fx-max-height:24px; + -fx-background-color: -bar-bg; +} -.notification-label { - -fx-text-fill: white; +.info-bar--green { + -bar-bg: GREEN_5; + -button-bg: GREEN_5; + -button-bg-pressed: GREEN_3; +} + +.info-bar--yellow { + -bar-bg: YELLOW_5; + -button-bg: YELLOW_5; + -button-bg-pressed: YELLOW_4; +} + +.info-bar--red { + -bar-bg: RED_5; + -button-bg: RED_5; + -button-bg-pressed: RED_5; +} + +.info-bar .label { + -fx-text-fill: GRAY_9; -fx-font-weight: bold; } -.notification-debug { - -fx-min-height:24px; - -fx-max-height:24px; - -fx-background-color: RED_5; +.info-bar--yellow .label { + -fx-text-fill: GRAY_9; + -fx-font-weight: bold; + -fx-effect: dropshadow( gaussian , rgba(0,0,0,0.45) , 2 , 0 , 0 , 1 ); } -.notification-update { - -fx-min-height:24px; - -fx-max-height:24px; - -fx-background-color: YELLOW_5; +.info-bar .glyph { + -fx-fill: GRAY_9; } -.notification-support { - -fx-min-height:24px; - -fx-max-height:24px; - -fx-background-color: PRIMARY; -} - -.notification-debug:hover .notification-label, -.notification-update:hover .notification-label, -.notification-support:hover .notification-label { +.info-bar:hover .label { -fx-underline:true; } +.info-bar .button { + -fx-background-color: transparent; + -fx-border-color: transparent; + -fx-padding: 2 2 2 2; +} + +.info-bar .button:armed { + -fx-background-color: -button-bg-pressed; + -fx-background-radius: 8; +} + /******************************************************************************* * * * ScrollBar * diff --git a/src/main/resources/fxml/addvault_existing.fxml b/src/main/resources/fxml/addvault_existing.fxml index 200eae4f9..f3d066e85 100644 --- a/src/main/resources/fxml/addvault_existing.fxml +++ b/src/main/resources/fxml/addvault_existing.fxml @@ -13,7 +13,8 @@ prefWidth="450" prefHeight="450" spacing="24" - alignment="CENTER"> + alignment="CENTER" + accessibleRole="DIALOG"> diff --git a/src/main/resources/fxml/addvault_new_expert_settings.fxml b/src/main/resources/fxml/addvault_new_expert_settings.fxml index 220444f71..d351d9f1e 100644 --- a/src/main/resources/fxml/addvault_new_expert_settings.fxml +++ b/src/main/resources/fxml/addvault_new_expert_settings.fxml @@ -19,7 +19,8 @@ prefWidth="450" prefHeight="450" spacing="12" - alignment="CENTER_LEFT"> + alignment="CENTER_LEFT" + accessibleRole="DIALOG"> diff --git a/src/main/resources/fxml/addvault_new_location.fxml b/src/main/resources/fxml/addvault_new_location.fxml index 7b3157ffb..4769cbf11 100644 --- a/src/main/resources/fxml/addvault_new_location.fxml +++ b/src/main/resources/fxml/addvault_new_location.fxml @@ -19,7 +19,8 @@ prefWidth="450" prefHeight="450" spacing="12" - alignment="CENTER_LEFT"> + alignment="CENTER_LEFT" + accessibleRole="DIALOG"> diff --git a/src/main/resources/fxml/addvault_new_name.fxml b/src/main/resources/fxml/addvault_new_name.fxml index 0b983c4a0..4c722b1ba 100644 --- a/src/main/resources/fxml/addvault_new_name.fxml +++ b/src/main/resources/fxml/addvault_new_name.fxml @@ -17,7 +17,8 @@ prefWidth="450" prefHeight="450" spacing="12" - alignment="CENTER_LEFT"> + alignment="CENTER_LEFT" + accessibleRole="DIALOG"> diff --git a/src/main/resources/fxml/addvault_new_password.fxml b/src/main/resources/fxml/addvault_new_password.fxml index 68f0200b5..f44050cfa 100644 --- a/src/main/resources/fxml/addvault_new_password.fxml +++ b/src/main/resources/fxml/addvault_new_password.fxml @@ -15,7 +15,8 @@ prefWidth="450" prefHeight="450" spacing="12" - alignment="CENTER_LEFT"> + alignment="CENTER_LEFT" + accessibleRole="DIALOG"> diff --git a/src/main/resources/fxml/addvault_new_recoverykey.fxml b/src/main/resources/fxml/addvault_new_recoverykey.fxml index b04677bc3..afd88e494 100644 --- a/src/main/resources/fxml/addvault_new_recoverykey.fxml +++ b/src/main/resources/fxml/addvault_new_recoverykey.fxml @@ -11,7 +11,8 @@ prefWidth="450" prefHeight="450" spacing="12" - alignment="CENTER_LEFT"> + alignment="CENTER_LEFT" + accessibleRole="DIALOG"> diff --git a/src/main/resources/fxml/addvault_success.fxml b/src/main/resources/fxml/addvault_success.fxml index 4df28e6e3..cd6c6754a 100644 --- a/src/main/resources/fxml/addvault_success.fxml +++ b/src/main/resources/fxml/addvault_success.fxml @@ -16,7 +16,8 @@ prefWidth="450" prefHeight="450" spacing="12" - alignment="TOP_CENTER"> + alignment="TOP_CENTER" + accessibleRole="DIALOG"> diff --git a/src/main/resources/fxml/changepassword.fxml b/src/main/resources/fxml/changepassword.fxml index 5a4d60813..88c8e2a1b 100644 --- a/src/main/resources/fxml/changepassword.fxml +++ b/src/main/resources/fxml/changepassword.fxml @@ -13,7 +13,8 @@ fx:controller="org.cryptomator.ui.changepassword.ChangePasswordController" minWidth="400" maxWidth="400" - spacing="12"> + spacing="12" + accessibleRole="DIALOG"> diff --git a/src/main/resources/fxml/convertvault_hubtopassword_convert.fxml b/src/main/resources/fxml/convertvault_hubtopassword_convert.fxml index 7797b41b2..25ec096d4 100644 --- a/src/main/resources/fxml/convertvault_hubtopassword_convert.fxml +++ b/src/main/resources/fxml/convertvault_hubtopassword_convert.fxml @@ -18,7 +18,8 @@ maxWidth="400" minHeight="145" spacing="12" - alignment="TOP_CENTER"> + alignment="TOP_CENTER" + accessibleRole="DIALOG"> diff --git a/src/main/resources/fxml/convertvault_hubtopassword_start.fxml b/src/main/resources/fxml/convertvault_hubtopassword_start.fxml index 27b6911f7..9fff40913 100644 --- a/src/main/resources/fxml/convertvault_hubtopassword_start.fxml +++ b/src/main/resources/fxml/convertvault_hubtopassword_start.fxml @@ -15,7 +15,8 @@ maxWidth="400" minHeight="145" spacing="12" - alignment="TOP_CENTER"> + alignment="TOP_CENTER" + accessibleRole="DIALOG"> diff --git a/src/main/resources/fxml/convertvault_hubtopassword_success.fxml b/src/main/resources/fxml/convertvault_hubtopassword_success.fxml index 74e1fc8e6..178699fe9 100644 --- a/src/main/resources/fxml/convertvault_hubtopassword_success.fxml +++ b/src/main/resources/fxml/convertvault_hubtopassword_success.fxml @@ -19,7 +19,8 @@ maxWidth="400" minHeight="145" spacing="12" - alignment="TOP_LEFT"> + alignment="TOP_LEFT" + accessibleRole="DIALOG"> diff --git a/src/main/resources/fxml/error.fxml b/src/main/resources/fxml/error.fxml index 5738a46c7..8426b1258 100644 --- a/src/main/resources/fxml/error.fxml +++ b/src/main/resources/fxml/error.fxml @@ -22,7 +22,8 @@ minHeight="450" prefWidth="450" prefHeight="450" - spacing="12"> + spacing="12" + accessibleRole="DIALOG"> diff --git a/src/main/resources/fxml/hub_auth_flow.fxml b/src/main/resources/fxml/hub_auth_flow.fxml index 40bb9986a..30a421050 100644 --- a/src/main/resources/fxml/hub_auth_flow.fxml +++ b/src/main/resources/fxml/hub_auth_flow.fxml @@ -21,7 +21,8 @@ maxWidth="400" minHeight="145" spacing="12" - alignment="TOP_LEFT"> + alignment="TOP_LEFT" + accessibleRole="DIALOG"> diff --git a/src/main/resources/fxml/hub_invalid_license.fxml b/src/main/resources/fxml/hub_invalid_license.fxml index e01443a3f..956d38f77 100644 --- a/src/main/resources/fxml/hub_invalid_license.fxml +++ b/src/main/resources/fxml/hub_invalid_license.fxml @@ -18,7 +18,8 @@ maxWidth="400" minHeight="145" spacing="12" - alignment="TOP_LEFT"> + alignment="TOP_LEFT" + accessibleRole="DIALOG"> diff --git a/src/main/resources/fxml/hub_legacy_register_device.fxml b/src/main/resources/fxml/hub_legacy_register_device.fxml index 1bdd475a7..0b4e547c7 100644 --- a/src/main/resources/fxml/hub_legacy_register_device.fxml +++ b/src/main/resources/fxml/hub_legacy_register_device.fxml @@ -20,7 +20,8 @@ maxWidth="400" minHeight="145" spacing="12" - alignment="TOP_LEFT"> + alignment="TOP_LEFT" + accessibleRole="DIALOG"> diff --git a/src/main/resources/fxml/hub_legacy_register_success.fxml b/src/main/resources/fxml/hub_legacy_register_success.fxml index 204f579c1..f1f405035 100644 --- a/src/main/resources/fxml/hub_legacy_register_success.fxml +++ b/src/main/resources/fxml/hub_legacy_register_success.fxml @@ -18,7 +18,8 @@ maxWidth="400" minHeight="145" spacing="12" - alignment="TOP_LEFT"> + alignment="TOP_LEFT" + accessibleRole="DIALOG"> diff --git a/src/main/resources/fxml/hub_no_keychain.fxml b/src/main/resources/fxml/hub_no_keychain.fxml index 031eac956..72d6c590b 100644 --- a/src/main/resources/fxml/hub_no_keychain.fxml +++ b/src/main/resources/fxml/hub_no_keychain.fxml @@ -20,7 +20,8 @@ maxWidth="400" minHeight="145" spacing="12" - alignment="TOP_LEFT"> + alignment="TOP_LEFT" + accessibleRole="DIALOG"> diff --git a/src/main/resources/fxml/hub_receive_key.fxml b/src/main/resources/fxml/hub_receive_key.fxml index a180c997e..7400e785e 100644 --- a/src/main/resources/fxml/hub_receive_key.fxml +++ b/src/main/resources/fxml/hub_receive_key.fxml @@ -18,7 +18,8 @@ maxWidth="400" minHeight="145" spacing="12" - alignment="TOP_LEFT"> + alignment="TOP_LEFT" + accessibleRole="DIALOG"> diff --git a/src/main/resources/fxml/hub_register_device.fxml b/src/main/resources/fxml/hub_register_device.fxml index e1a1e39ff..462009764 100644 --- a/src/main/resources/fxml/hub_register_device.fxml +++ b/src/main/resources/fxml/hub_register_device.fxml @@ -20,7 +20,8 @@ maxWidth="400" minHeight="145" spacing="12" - alignment="TOP_LEFT"> + alignment="TOP_LEFT" + accessibleRole="DIALOG"> diff --git a/src/main/resources/fxml/hub_register_device_already_exists.fxml b/src/main/resources/fxml/hub_register_device_already_exists.fxml index 9a7c1f3c7..88fe66885 100644 --- a/src/main/resources/fxml/hub_register_device_already_exists.fxml +++ b/src/main/resources/fxml/hub_register_device_already_exists.fxml @@ -11,6 +11,7 @@ + + alignment="TOP_LEFT" + accessibleRole="DIALOG"> diff --git a/src/main/resources/fxml/hub_register_failed.fxml b/src/main/resources/fxml/hub_register_failed.fxml index a088c0318..7a50b0704 100644 --- a/src/main/resources/fxml/hub_register_failed.fxml +++ b/src/main/resources/fxml/hub_register_failed.fxml @@ -18,7 +18,8 @@ maxWidth="400" minHeight="145" spacing="12" - alignment="TOP_LEFT"> + alignment="TOP_LEFT" + accessibleRole="DIALOG"> diff --git a/src/main/resources/fxml/hub_register_success.fxml b/src/main/resources/fxml/hub_register_success.fxml index 0211eeba8..34a6c4f21 100644 --- a/src/main/resources/fxml/hub_register_success.fxml +++ b/src/main/resources/fxml/hub_register_success.fxml @@ -18,7 +18,8 @@ maxWidth="400" minHeight="145" spacing="12" - alignment="TOP_LEFT"> + alignment="TOP_LEFT" + accessibleRole="DIALOG"> diff --git a/src/main/resources/fxml/hub_require_account_init.fxml b/src/main/resources/fxml/hub_require_account_init.fxml index b3ca1fb40..db3e5c75c 100644 --- a/src/main/resources/fxml/hub_require_account_init.fxml +++ b/src/main/resources/fxml/hub_require_account_init.fxml @@ -21,7 +21,8 @@ maxWidth="400" minHeight="145" spacing="12" - alignment="TOP_LEFT"> + alignment="TOP_LEFT" + accessibleRole="DIALOG"> diff --git a/src/main/resources/fxml/hub_unauthorized_device.fxml b/src/main/resources/fxml/hub_unauthorized_device.fxml index 085798387..07e98cc8e 100644 --- a/src/main/resources/fxml/hub_unauthorized_device.fxml +++ b/src/main/resources/fxml/hub_unauthorized_device.fxml @@ -18,7 +18,8 @@ maxWidth="400" minHeight="145" spacing="12" - alignment="TOP_LEFT"> + alignment="TOP_LEFT" + accessibleRole="DIALOG"> diff --git a/src/main/resources/fxml/lock_failed.fxml b/src/main/resources/fxml/lock_failed.fxml index 1c3c4345f..31faa4c4a 100644 --- a/src/main/resources/fxml/lock_failed.fxml +++ b/src/main/resources/fxml/lock_failed.fxml @@ -19,7 +19,8 @@ maxWidth="400" minHeight="145" spacing="12" - alignment="TOP_LEFT"> + alignment="TOP_LEFT" + accessibleRole="DIALOG"> diff --git a/src/main/resources/fxml/lock_forced.fxml b/src/main/resources/fxml/lock_forced.fxml index 14f801fba..66cbf4148 100644 --- a/src/main/resources/fxml/lock_forced.fxml +++ b/src/main/resources/fxml/lock_forced.fxml @@ -19,7 +19,8 @@ maxWidth="500" minHeight="145" spacing="12" - alignment="TOP_LEFT"> + alignment="TOP_LEFT" + accessibleRole="DIALOG"> diff --git a/src/main/resources/fxml/main_window.fxml b/src/main/resources/fxml/main_window.fxml index 327e2c470..37ab65bbb 100644 --- a/src/main/resources/fxml/main_window.fxml +++ b/src/main/resources/fxml/main_window.fxml @@ -3,7 +3,7 @@ - + - - + + styleClass="info-bar--green"/> - diff --git a/src/main/resources/fxml/migration_capability_error.fxml b/src/main/resources/fxml/migration_capability_error.fxml index 239f324a3..9a9af8e40 100644 --- a/src/main/resources/fxml/migration_capability_error.fxml +++ b/src/main/resources/fxml/migration_capability_error.fxml @@ -16,7 +16,8 @@ minWidth="400" maxWidth="400" minHeight="145" - spacing="12"> + spacing="12" + accessibleRole="DIALOG"> diff --git a/src/main/resources/fxml/migration_impossible.fxml b/src/main/resources/fxml/migration_impossible.fxml index 6897d4d4e..ae8eac897 100644 --- a/src/main/resources/fxml/migration_impossible.fxml +++ b/src/main/resources/fxml/migration_impossible.fxml @@ -19,7 +19,8 @@ minWidth="400" maxWidth="400" minHeight="145" - spacing="12"> + spacing="12" + accessibleRole="DIALOG"> diff --git a/src/main/resources/fxml/migration_start.fxml b/src/main/resources/fxml/migration_start.fxml index 547bd7e26..62fc9ac6e 100644 --- a/src/main/resources/fxml/migration_start.fxml +++ b/src/main/resources/fxml/migration_start.fxml @@ -20,7 +20,8 @@ fx:controller="org.cryptomator.ui.migration.MigrationStartController" prefWidth="580" prefHeight="350" - spacing="12"> + spacing="12" + accessibleRole="DIALOG"> diff --git a/src/main/resources/fxml/migration_success.fxml b/src/main/resources/fxml/migration_success.fxml index c04068a9d..e1c8e1a3b 100644 --- a/src/main/resources/fxml/migration_success.fxml +++ b/src/main/resources/fxml/migration_success.fxml @@ -15,7 +15,8 @@ minWidth="400" maxWidth="400" minHeight="145" - spacing="12"> + spacing="12" + accessibleRole="DIALOG"> diff --git a/src/main/resources/fxml/notification.fxml b/src/main/resources/fxml/notification.fxml index 5f82f3113..74ed9b18a 100644 --- a/src/main/resources/fxml/notification.fxml +++ b/src/main/resources/fxml/notification.fxml @@ -16,7 +16,8 @@ xmlns:fx="http://javafx.com/fxml" fx:controller="org.cryptomator.ui.notification.NotificationController" prefHeight="200.0" prefWidth="400.0" maxHeight="200.0" maxWidth="400.0" - styleClass="notification-window"> + styleClass="notification-window" + accessibleRole="DIALOG"> diff --git a/src/main/resources/fxml/quit.fxml b/src/main/resources/fxml/quit.fxml index f0d6ce9b6..c8694761d 100644 --- a/src/main/resources/fxml/quit.fxml +++ b/src/main/resources/fxml/quit.fxml @@ -19,7 +19,8 @@ maxWidth="400" minHeight="145" spacing="12" - alignment="TOP_LEFT"> + alignment="TOP_LEFT" + accessibleRole="DIALOG"> diff --git a/src/main/resources/fxml/quit_forced.fxml b/src/main/resources/fxml/quit_forced.fxml index d2e831d4d..8f72c71b8 100644 --- a/src/main/resources/fxml/quit_forced.fxml +++ b/src/main/resources/fxml/quit_forced.fxml @@ -19,7 +19,8 @@ maxWidth="400" minHeight="145" spacing="12" - alignment="TOP_LEFT"> + alignment="TOP_LEFT" + accessibleRole="DIALOG"> diff --git a/src/main/resources/fxml/recoverykey_create.fxml b/src/main/resources/fxml/recoverykey_create.fxml index e74074f1d..f3140e2de 100644 --- a/src/main/resources/fxml/recoverykey_create.fxml +++ b/src/main/resources/fxml/recoverykey_create.fxml @@ -20,7 +20,8 @@ maxWidth="400" minHeight="175" spacing="12" - alignment="TOP_LEFT"> + alignment="TOP_LEFT" + accessibleRole="DIALOG"> diff --git a/src/main/resources/fxml/recoverykey_display.fxml b/src/main/resources/fxml/recoverykey_display.fxml index 0d25af99c..769633cb2 100644 --- a/src/main/resources/fxml/recoverykey_display.fxml +++ b/src/main/resources/fxml/recoverykey_display.fxml @@ -14,7 +14,8 @@ minWidth="350" minHeight="280" spacing="12" - alignment="TOP_LEFT"> + alignment="TOP_LEFT" + accessibleRole="DIALOG"> diff --git a/src/main/resources/fxml/recoverykey_expert_settings.fxml b/src/main/resources/fxml/recoverykey_expert_settings.fxml index 4204d032c..0f5ed38c4 100644 --- a/src/main/resources/fxml/recoverykey_expert_settings.fxml +++ b/src/main/resources/fxml/recoverykey_expert_settings.fxml @@ -22,7 +22,8 @@ maxWidth="400" minHeight="145" spacing="12" - alignment="TOP_CENTER"> + alignment="TOP_CENTER" + accessibleRole="DIALOG"> diff --git a/src/main/resources/fxml/recoverykey_onboarding.fxml b/src/main/resources/fxml/recoverykey_onboarding.fxml index b1c701a9d..98982f458 100644 --- a/src/main/resources/fxml/recoverykey_onboarding.fxml +++ b/src/main/resources/fxml/recoverykey_onboarding.fxml @@ -25,7 +25,8 @@ prefWidth="480" minHeight="242" spacing="12" - VBox.vgrow="ALWAYS"> + VBox.vgrow="ALWAYS" + accessibleRole="DIALOG"> diff --git a/src/main/resources/fxml/recoverykey_recover.fxml b/src/main/resources/fxml/recoverykey_recover.fxml index 5a9fddbdf..dad409b35 100644 --- a/src/main/resources/fxml/recoverykey_recover.fxml +++ b/src/main/resources/fxml/recoverykey_recover.fxml @@ -17,7 +17,8 @@ minWidth="400" maxWidth="400" minHeight="145" - spacing="12"> + spacing="12" + accessibleRole="DIALOG"> diff --git a/src/main/resources/fxml/recoverykey_reset_password.fxml b/src/main/resources/fxml/recoverykey_reset_password.fxml index 8c28a1c9f..ba1b2b621 100644 --- a/src/main/resources/fxml/recoverykey_reset_password.fxml +++ b/src/main/resources/fxml/recoverykey_reset_password.fxml @@ -17,7 +17,8 @@ maxWidth="400" minHeight="145" spacing="12" - alignment="TOP_CENTER"> + alignment="TOP_CENTER" + accessibleRole="DIALOG"> diff --git a/src/main/resources/fxml/recoverykey_success.fxml b/src/main/resources/fxml/recoverykey_success.fxml index 6aacb38dd..0451a7397 100644 --- a/src/main/resources/fxml/recoverykey_success.fxml +++ b/src/main/resources/fxml/recoverykey_success.fxml @@ -12,7 +12,8 @@ maxWidth="400" minHeight="145" spacing="12" - alignment="TOP_CENTER"> + alignment="TOP_CENTER" + accessibleRole="DIALOG"> diff --git a/src/main/resources/fxml/recoverykey_validate.fxml b/src/main/resources/fxml/recoverykey_validate.fxml index cd599db40..e6a24ec49 100644 --- a/src/main/resources/fxml/recoverykey_validate.fxml +++ b/src/main/resources/fxml/recoverykey_validate.fxml @@ -10,7 +10,8 @@ fx:controller="org.cryptomator.ui.recoverykey.RecoveryKeyValidateController" maxWidth="400" minHeight="145" - spacing="12"> + spacing="12" + accessibleRole="DIALOG"> diff --git a/src/main/resources/fxml/share_vault.fxml b/src/main/resources/fxml/share_vault.fxml index b5466a10d..23362fdae 100644 --- a/src/main/resources/fxml/share_vault.fxml +++ b/src/main/resources/fxml/share_vault.fxml @@ -21,7 +21,8 @@ xmlns="http://javafx.com/javafx" fx:controller="org.cryptomator.ui.sharevault.ShareVaultController" prefWidth="540" - spacing="12"> + spacing="12" + accessibleRole="DIALOG"> diff --git a/src/main/resources/fxml/simple_dialog.fxml b/src/main/resources/fxml/simple_dialog.fxml index 0e9b01776..383405018 100644 --- a/src/main/resources/fxml/simple_dialog.fxml +++ b/src/main/resources/fxml/simple_dialog.fxml @@ -17,7 +17,8 @@ minWidth="400" maxWidth="400" minHeight="145" - spacing="12"> + spacing="12" + accessibleRole="DIALOG"> diff --git a/src/main/resources/fxml/unlock_enter_password.fxml b/src/main/resources/fxml/unlock_enter_password.fxml index 5242826a2..bcf1bfa37 100644 --- a/src/main/resources/fxml/unlock_enter_password.fxml +++ b/src/main/resources/fxml/unlock_enter_password.fxml @@ -18,7 +18,8 @@ minWidth="400" maxWidth="400" minHeight="145" - spacing="12"> + spacing="12" + accessibleRole="DIALOG"> diff --git a/src/main/resources/fxml/unlock_invalid_mount_point.fxml b/src/main/resources/fxml/unlock_invalid_mount_point.fxml index dbf6fad05..dfcb3f68a 100644 --- a/src/main/resources/fxml/unlock_invalid_mount_point.fxml +++ b/src/main/resources/fxml/unlock_invalid_mount_point.fxml @@ -19,7 +19,8 @@ maxWidth="400" minHeight="145" spacing="12" - alignment="TOP_LEFT"> + alignment="TOP_LEFT" + accessibleRole="DIALOG"> diff --git a/src/main/resources/fxml/unlock_requires_restart.fxml b/src/main/resources/fxml/unlock_requires_restart.fxml index 571ea6a32..9c0ed591b 100644 --- a/src/main/resources/fxml/unlock_requires_restart.fxml +++ b/src/main/resources/fxml/unlock_requires_restart.fxml @@ -19,7 +19,8 @@ maxWidth="400" minHeight="145" spacing="12" - alignment="TOP_LEFT"> + alignment="TOP_LEFT" + accessibleRole="DIALOG"> diff --git a/src/main/resources/fxml/unlock_select_masterkeyfile.fxml b/src/main/resources/fxml/unlock_select_masterkeyfile.fxml index 60934cdba..6dcfd4252 100644 --- a/src/main/resources/fxml/unlock_select_masterkeyfile.fxml +++ b/src/main/resources/fxml/unlock_select_masterkeyfile.fxml @@ -20,7 +20,8 @@ maxWidth="400" minHeight="145" spacing="12" - alignment="TOP_LEFT"> + alignment="TOP_LEFT" + accessibleRole="DIALOG"> diff --git a/src/main/resources/fxml/unlock_success.fxml b/src/main/resources/fxml/unlock_success.fxml index ae1b8185e..029bb96d3 100644 --- a/src/main/resources/fxml/unlock_success.fxml +++ b/src/main/resources/fxml/unlock_success.fxml @@ -21,7 +21,8 @@ maxWidth="400" minHeight="145" spacing="12" - alignment="TOP_LEFT"> + alignment="TOP_LEFT" + accessibleRole="DIALOG"> diff --git a/src/main/resources/fxml/update_reminder.fxml b/src/main/resources/fxml/update_reminder.fxml index 50bb80b5f..0402ad07a 100644 --- a/src/main/resources/fxml/update_reminder.fxml +++ b/src/main/resources/fxml/update_reminder.fxml @@ -18,7 +18,8 @@ prefWidth="500" minHeight="145" spacing="12" - alignment="TOP_LEFT"> + alignment="TOP_LEFT" + accessibleRole="DIALOG"> diff --git a/src/main/resources/fxml/vault_detail.fxml b/src/main/resources/fxml/vault_detail.fxml index cfae48d8b..141933b94 100644 --- a/src/main/resources/fxml/vault_detail.fxml +++ b/src/main/resources/fxml/vault_detail.fxml @@ -36,7 +36,7 @@ - + diff --git a/src/main/resources/fxml/vault_list.fxml b/src/main/resources/fxml/vault_list.fxml index a05d834a3..ca30d180e 100644 --- a/src/main/resources/fxml/vault_list.fxml +++ b/src/main/resources/fxml/vault_list.fxml @@ -22,7 +22,7 @@ - + diff --git a/src/main/resources/fxml/wrongfilealert.fxml b/src/main/resources/fxml/wrongfilealert.fxml index 123e84378..8032403ed 100644 --- a/src/main/resources/fxml/wrongfilealert.fxml +++ b/src/main/resources/fxml/wrongfilealert.fxml @@ -23,7 +23,8 @@ minWidth="-Infinity" minHeight="-Infinity" spacing="12" - alignment="TOP_LEFT"> + alignment="TOP_LEFT" + accessibleRole="DIALOG"> diff --git a/src/main/resources/i18n/strings.properties b/src/main/resources/i18n/strings.properties index 897fbd7da..3780b9ef4 100644 --- a/src/main/resources/i18n/strings.properties +++ b/src/main/resources/i18n/strings.properties @@ -18,6 +18,14 @@ generic.button.next=Next generic.button.print=Print generic.button.remove=Remove +## Vault state +vault.state.locked=Locked +vault.state.unlocked=Unlocked +vault.state.missing=Missing +vault.state.migrationNeeded=Migration required +vault.state.processing=Processing +vault.state.error=Error + # Error error.message=An error occurred error.description=Cryptomator didn't expect this to happen. You can look up existing solutions for this error. Or if it has not been reported yet, feel free to do so. @@ -402,6 +410,8 @@ stats.access.total=Total accesses: %d # Main Window ## Vault List +main.vaultlist=Vaults +main.vaultlist.listEntry=Vault %s (%s) main.vaultlist.emptyList.onboardingInstruction=Click here to add a vault main.vaultlist.contextMenu.remove=Remove… main.vaultlist.contextMenu.lock=Lock @@ -416,12 +426,14 @@ main.vaultlist.addVaultBtn.menuItemRecover=Recover Existing Vault… main.vaultlist.addVaultButton.tooltip=Add Vault main.vaultlist.showEventsButton.tooltip=Open Event View main.vaultlist.showPreferencesButton.tooltip=Show Preferences -##Notificaition +##Notification main.notification.updateAvailable=Update is available. main.notification.support=Support Cryptomator. +main.notification.closeButton.tooltip=Close info bar ## Vault Detail ### Welcome main.vaultDetail.welcomeOnboarding=Thanks for choosing Cryptomator to protect your files. If you need any assistance, check out our getting started guides: +main.vaultDetail.storageLocation=Vault storage location ### Locked main.vaultDetail.lockedStatus=LOCKED main.vaultDetail.unlockBtn=Unlock…