diff --git a/.idea/compiler.xml b/.idea/compiler.xml
index 89ecef4de..943b0492d 100644
--- a/.idea/compiler.xml
+++ b/.idea/compiler.xml
@@ -32,9 +32,9 @@
+
-
diff --git a/main/commons/src/main/java/org/cryptomator/common/vaults/Vault.java b/main/commons/src/main/java/org/cryptomator/common/vaults/Vault.java
index e9883dff4..59db806f4 100644
--- a/main/commons/src/main/java/org/cryptomator/common/vaults/Vault.java
+++ b/main/commons/src/main/java/org/cryptomator/common/vaults/Vault.java
@@ -66,6 +66,7 @@ public class Vault {
private final BooleanBinding locked;
private final BooleanBinding processing;
private final BooleanBinding unlocked;
+ private final BooleanBinding missing;
private final BooleanBinding needsMigration;
private final ObjectBinding accessPoint;
@@ -84,6 +85,7 @@ public class Vault {
this.locked = Bindings.createBooleanBinding(this::isLocked, state);
this.processing = Bindings.createBooleanBinding(this::isProcessing, state);
this.unlocked = Bindings.createBooleanBinding(this::isUnlocked, state);
+ this.missing = Bindings.createBooleanBinding(this::isMissing, state);
this.needsMigration = Bindings.createBooleanBinding(this::isNeedsMigration, state);
this.accessPoint = Bindings.createObjectBinding(this::getAccessPoint, state);
}
@@ -177,6 +179,14 @@ public class Vault {
public boolean isUnlocked() {
return state.get() == VaultState.UNLOCKED;
}
+
+ public BooleanBinding missingProperty() {
+ return missing;
+ }
+
+ public boolean isMissing() {
+ return state.get() == VaultState.MISSING;
+ }
public BooleanBinding needsMigrationProperty() {
return needsMigration;
diff --git a/main/ui/src/main/java/org/cryptomator/ui/controls/FontAwesome5Icon.java b/main/ui/src/main/java/org/cryptomator/ui/controls/FontAwesome5Icon.java
index 97d20ecdb..8cce36d0d 100644
--- a/main/ui/src/main/java/org/cryptomator/ui/controls/FontAwesome5Icon.java
+++ b/main/ui/src/main/java/org/cryptomator/ui/controls/FontAwesome5Icon.java
@@ -16,6 +16,7 @@ public enum FontAwesome5Icon {
EXCLAMATION_TRIANGLE("\uF071"), //
EYE("\uF06E"), //
EYE_SLASH("\uF070"), //
+ FILE("\uF15B"), //
FILE_IMPORT("\uF56F"), //
FOLDER_OPEN("\uF07C"), //
HAND_HOLDING_HEART("\uF4BE"), //
@@ -29,6 +30,7 @@ public enum FontAwesome5Icon {
PLUS("\uF067"), //
PRINT("\uF02F"), //
QUESTION("\uF128"), //
+ SEARCH("\uF002"), //
SPINNER("\uF110"), //
SYNC("\uF021"), //
TIMES("\uF00D"), //
diff --git a/main/ui/src/main/java/org/cryptomator/ui/mainwindow/MainWindowModule.java b/main/ui/src/main/java/org/cryptomator/ui/mainwindow/MainWindowModule.java
index 9a058ea85..2251903bc 100644
--- a/main/ui/src/main/java/org/cryptomator/ui/mainwindow/MainWindowModule.java
+++ b/main/ui/src/main/java/org/cryptomator/ui/mainwindow/MainWindowModule.java
@@ -97,6 +97,11 @@ abstract class MainWindowModule {
@IntoMap
@FxControllerKey(VaultDetailUnlockedController.class)
abstract FxController bindVaultDetailUnlockedController(VaultDetailUnlockedController controller);
+
+ @Binds
+ @IntoMap
+ @FxControllerKey(VaultDetailMissingVaultController.class)
+ abstract FxController bindVaultDetailMissingVaultController(VaultDetailMissingVaultController controller);
@Binds
@IntoMap
diff --git a/main/ui/src/main/java/org/cryptomator/ui/mainwindow/VaultDetailMissingVaultController.java b/main/ui/src/main/java/org/cryptomator/ui/mainwindow/VaultDetailMissingVaultController.java
new file mode 100644
index 000000000..8036cbb3c
--- /dev/null
+++ b/main/ui/src/main/java/org/cryptomator/ui/mainwindow/VaultDetailMissingVaultController.java
@@ -0,0 +1,20 @@
+package org.cryptomator.ui.mainwindow;
+
+import javafx.beans.property.ObjectProperty;
+import javafx.beans.property.ReadOnlyObjectProperty;
+import org.cryptomator.common.vaults.Vault;
+import org.cryptomator.ui.common.FxController;
+
+import javax.inject.Inject;
+
+@MainWindowScoped
+public class VaultDetailMissingVaultController implements FxController {
+
+ private final ReadOnlyObjectProperty vault;
+
+ @Inject
+ public VaultDetailMissingVaultController(ObjectProperty vault) {
+ this.vault = vault;
+ }
+
+}
diff --git a/main/ui/src/main/resources/fxml/vault_detail.fxml b/main/ui/src/main/resources/fxml/vault_detail.fxml
index 8438fc362..19a590cd6 100644
--- a/main/ui/src/main/resources/fxml/vault_detail.fxml
+++ b/main/ui/src/main/resources/fxml/vault_detail.fxml
@@ -50,6 +50,7 @@
+
diff --git a/main/ui/src/main/resources/fxml/vault_detail_missing.fxml b/main/ui/src/main/resources/fxml/vault_detail_missing.fxml
new file mode 100644
index 000000000..cc94063f5
--- /dev/null
+++ b/main/ui/src/main/resources/fxml/vault_detail_missing.fxml
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/main/ui/src/main/resources/i18n/strings.properties b/main/ui/src/main/resources/i18n/strings.properties
index 9a029f29e..ace961512 100644
--- a/main/ui/src/main/resources/i18n/strings.properties
+++ b/main/ui/src/main/resources/i18n/strings.properties
@@ -167,6 +167,8 @@ main.vaultDetail.bytesPerSecondWritten=written:
main.vaultDetail.throughput.idle=idle
main.vaultDetail.throughput.kbps=%.1f kiB/s
main.vaultDetail.throughput.mbps=%.1f MiB/s
+### Missing
+main.vaultDetail.missing.info=Cryptomator could not find a vault at this path.
### Needs Migration
main.vaultDetail.migrateButton=Upgrade Vault
main.vaultDetail.migratePrompt=Your vault needs to be upgraded to a new format, before you can access it