Pārlūkot izejas kodu

New approach to shortcuts

Sebastian Stenzel 5 gadi atpakaļ
vecāks
revīzija
2fd671f513

+ 1 - 3
main/ui/src/main/java/org/cryptomator/ui/mainwindow/MainWindowController.java

@@ -5,16 +5,14 @@ import javafx.fxml.FXML;
 import javafx.scene.layout.HBox;
 import javafx.scene.layout.Region;
 import javafx.stage.Stage;
-import javafx.util.Duration;
-import org.cryptomator.ui.fxapp.FxApplication;
 import org.cryptomator.ui.common.FxController;
+import org.cryptomator.ui.fxapp.FxApplication;
 import org.cryptomator.ui.fxapp.UpdateChecker;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import javax.inject.Inject;
 import javax.inject.Named;
-import java.util.concurrent.CountDownLatch;
 
 @MainWindowScoped
 public class MainWindowController implements FxController {

+ 13 - 2
main/ui/src/main/java/org/cryptomator/ui/mainwindow/MainWindowModule.java

@@ -5,6 +5,9 @@ import dagger.Module;
 import dagger.Provides;
 import dagger.multibindings.IntoMap;
 import javafx.scene.Scene;
+import javafx.scene.input.KeyCode;
+import javafx.scene.input.KeyCodeCombination;
+import javafx.scene.input.KeyCombination;
 import javafx.stage.Stage;
 import javafx.stage.StageStyle;
 import org.cryptomator.ui.addvaultwizard.AddVaultWizardComponent;
@@ -46,8 +49,16 @@ abstract class MainWindowModule {
 	@Provides
 	@FxmlScene(FxmlFile.MAIN_WINDOW)
 	@MainWindowScoped
-	static Scene provideMainScene(@MainWindow FXMLLoaderFactory fxmlLoaders) {
-		return fxmlLoaders.createScene("/fxml/main_window.fxml");
+	static Scene provideMainScene(@MainWindow FXMLLoaderFactory fxmlLoaders, MainWindowController mainWindowController, VaultListController vaultListController) {
+		Scene scene = fxmlLoaders.createScene("/fxml/main_window.fxml");
+
+		// still not perfect... cant't we have a global menubar via the AWT tray app?
+		KeyCombination cmdN = new KeyCodeCombination(KeyCode.N, KeyCombination.SHORTCUT_DOWN);
+		KeyCombination cmdW = new KeyCodeCombination(KeyCode.W, KeyCombination.SHORTCUT_DOWN);
+		scene.getAccelerators().put(cmdN, vaultListController::didClickAddVault);
+		scene.getAccelerators().put(cmdW, mainWindowController::close);
+
+		return scene;
 	}
 
 	// ------------------

+ 1 - 7
main/ui/src/main/java/org/cryptomator/ui/preferences/PreferencesController.java

@@ -4,9 +4,6 @@ import javafx.beans.binding.BooleanBinding;
 import javafx.fxml.FXML;
 import javafx.scene.control.Tab;
 import javafx.scene.control.TabPane;
-import javafx.scene.input.KeyCode;
-import javafx.scene.input.KeyCodeCombination;
-import javafx.scene.input.KeyCombination;
 import javafx.stage.Stage;
 import javafx.stage.WindowEvent;
 import org.cryptomator.ui.common.FxController;
@@ -34,13 +31,10 @@ public class PreferencesController implements FxController {
 		window.setOnShowing(this::windowWillAppear);
 	}
 
-	private void windowWillAppear(WindowEvent windowEvent) {
+	private void windowWillAppear(@SuppressWarnings("unused") WindowEvent windowEvent) {
 		if (updateAvailable.get()) {
 			tabPane.getSelectionModel().select(updatesTab);
 		}
-
-		KeyCombination cmdW = new KeyCodeCombination(KeyCode.W, KeyCombination.SHORTCUT_DOWN);
-		window.getScene().getAccelerators().put(cmdW, window::close);
 	}
 
 }

+ 10 - 2
main/ui/src/main/java/org/cryptomator/ui/preferences/PreferencesModule.java

@@ -5,6 +5,9 @@ import dagger.Module;
 import dagger.Provides;
 import dagger.multibindings.IntoMap;
 import javafx.scene.Scene;
+import javafx.scene.input.KeyCode;
+import javafx.scene.input.KeyCodeCombination;
+import javafx.scene.input.KeyCombination;
 import javafx.stage.Stage;
 import org.cryptomator.ui.common.FXMLLoaderFactory;
 import org.cryptomator.ui.common.FxController;
@@ -40,8 +43,13 @@ abstract class PreferencesModule {
 	@Provides
 	@FxmlScene(FxmlFile.PREFERENCES)
 	@PreferencesScoped
-	static Scene providePreferencesScene(@PreferencesWindow FXMLLoaderFactory fxmlLoaders) {
-		return fxmlLoaders.createScene("/fxml/preferences.fxml");
+	static Scene providePreferencesScene(@PreferencesWindow FXMLLoaderFactory fxmlLoaders, @PreferencesWindow Stage window) {
+		Scene scene = fxmlLoaders.createScene("/fxml/preferences.fxml");
+
+		KeyCombination cmdW = new KeyCodeCombination(KeyCode.W, KeyCombination.SHORTCUT_DOWN);
+		scene.getAccelerators().put(cmdW, window::close);
+
+		return scene;
 	}
 
 	// ------------------

+ 1 - 21
main/ui/src/main/java/org/cryptomator/ui/vaultoptions/VaultOptionsController.java

@@ -1,11 +1,5 @@
 package org.cryptomator.ui.vaultoptions;
 
-import javafx.fxml.FXML;
-import javafx.scene.input.KeyCode;
-import javafx.scene.input.KeyCodeCombination;
-import javafx.scene.input.KeyCombination;
-import javafx.stage.Stage;
-import javafx.stage.WindowEvent;
 import org.cryptomator.ui.common.FxController;
 
 import javax.inject.Inject;
@@ -13,21 +7,7 @@ import javax.inject.Inject;
 @VaultOptionsScoped
 public class VaultOptionsController implements FxController {
 
-	private final Stage window;
-
 	@Inject
-	VaultOptionsController(@VaultOptionsWindow Stage window) {
-		this.window = window;
-	}
-
-	@FXML
-	public void initialize() {
-		window.setOnShowing(this::windowWillAppear);
-	}
-
-	private void windowWillAppear(WindowEvent windowEvent) {
-		KeyCombination cmdW = new KeyCodeCombination(KeyCode.W, KeyCombination.SHORTCUT_DOWN);
-		window.getScene().getAccelerators().put(cmdW, window::close);
-	}
+	VaultOptionsController() {}
 
 }

+ 10 - 2
main/ui/src/main/java/org/cryptomator/ui/vaultoptions/VaultOptionsModule.java

@@ -5,6 +5,9 @@ import dagger.Module;
 import dagger.Provides;
 import dagger.multibindings.IntoMap;
 import javafx.scene.Scene;
+import javafx.scene.input.KeyCode;
+import javafx.scene.input.KeyCodeCombination;
+import javafx.scene.input.KeyCombination;
 import javafx.stage.Modality;
 import javafx.stage.Stage;
 import javafx.stage.StageStyle;
@@ -48,8 +51,13 @@ abstract class VaultOptionsModule {
 	@Provides
 	@FxmlScene(FxmlFile.VAULT_OPTIONS)
 	@VaultOptionsScoped
-	static Scene provideVaultOptionsScene(@VaultOptionsWindow FXMLLoaderFactory fxmlLoaders) {
-		return fxmlLoaders.createScene("/fxml/vault_options.fxml");
+	static Scene provideVaultOptionsScene(@VaultOptionsWindow FXMLLoaderFactory fxmlLoaders, @VaultOptionsWindow Stage window) {
+		Scene scene = fxmlLoaders.createScene("/fxml/vault_options.fxml");
+
+		KeyCombination cmdW = new KeyCodeCombination(KeyCode.W, KeyCombination.SHORTCUT_DOWN);
+		scene.getAccelerators().put(cmdW, window::close);
+
+		return scene;
 	}
 
 	// ------------------