فهرست منبع

Added window icon to dialogs

Sebastian Stenzel 5 سال پیش
والد
کامیت
0db2068344

+ 5 - 1
main/ui/src/main/java/org/cryptomator/ui/addvaultwizard/AddVaultModule.java

@@ -9,6 +9,7 @@ import javafx.beans.property.SimpleObjectProperty;
 import javafx.beans.property.SimpleStringProperty;
 import javafx.beans.property.StringProperty;
 import javafx.scene.Scene;
+import javafx.scene.image.Image;
 import javafx.stage.Modality;
 import javafx.stage.Stage;
 import javafx.stage.StageStyle;
@@ -19,9 +20,11 @@ import org.cryptomator.ui.common.FxmlFile;
 import org.cryptomator.ui.common.FxmlScene;
 import org.cryptomator.ui.mainwindow.MainWindow;
 
+import javax.inject.Named;
 import javax.inject.Provider;
 import java.nio.file.Path;
 import java.util.Map;
+import java.util.Optional;
 import java.util.ResourceBundle;
 
 @Module
@@ -37,13 +40,14 @@ public abstract class AddVaultModule {
 	@Provides
 	@AddVaultWizard
 	@AddVaultWizardScoped
-	static Stage provideStage(@MainWindow Stage owner, ResourceBundle resourceBundle) {
+	static Stage provideStage(@MainWindow Stage owner, ResourceBundle resourceBundle, @Named("windowIcon") Optional<Image> windowIcon) {
 		Stage stage = new Stage();
 		stage.setTitle(resourceBundle.getString("addvaultwizard.title"));
 		stage.setResizable(false);
 		stage.initStyle(StageStyle.DECORATED);
 		stage.initModality(Modality.WINDOW_MODAL);
 		stage.initOwner(owner);
+		windowIcon.ifPresent(stage.getIcons()::add);
 		return stage;
 	}
 

+ 5 - 1
main/ui/src/main/java/org/cryptomator/ui/changepassword/ChangePasswordModule.java

@@ -5,6 +5,7 @@ import dagger.Module;
 import dagger.Provides;
 import dagger.multibindings.IntoMap;
 import javafx.scene.Scene;
+import javafx.scene.image.Image;
 import javafx.stage.Modality;
 import javafx.stage.Stage;
 import org.cryptomator.ui.common.FXMLLoaderFactory;
@@ -13,8 +14,10 @@ import org.cryptomator.ui.common.FxControllerKey;
 import org.cryptomator.ui.common.FxmlFile;
 import org.cryptomator.ui.common.FxmlScene;
 
+import javax.inject.Named;
 import javax.inject.Provider;
 import java.util.Map;
+import java.util.Optional;
 import java.util.ResourceBundle;
 
 @Module
@@ -30,11 +33,12 @@ abstract class ChangePasswordModule {
 	@Provides
 	@ChangePasswordWindow
 	@ChangePasswordScoped
-	static Stage provideStage(ResourceBundle resourceBundle) {
+	static Stage provideStage(ResourceBundle resourceBundle, @Named("windowIcon") Optional<Image> windowIcon) {
 		Stage stage = new Stage();
 		stage.setTitle(resourceBundle.getString("changepassword.title"));
 		stage.setResizable(false);
 		stage.initModality(Modality.APPLICATION_MODAL);
+		windowIcon.ifPresent(stage.getIcons()::add);
 		return stage;
 	}
 

+ 21 - 0
main/ui/src/main/java/org/cryptomator/ui/fxapp/FxApplicationModule.java

@@ -11,6 +11,8 @@ import dagger.Provides;
 import javafx.application.Application;
 import javafx.beans.property.ObjectProperty;
 import javafx.beans.property.SimpleObjectProperty;
+import javafx.scene.image.Image;
+import org.apache.commons.lang3.SystemUtils;
 import org.cryptomator.common.vaults.Vault;
 import org.cryptomator.keychain.KeychainModule;
 import org.cryptomator.ui.mainwindow.MainWindowComponent;
@@ -18,6 +20,11 @@ import org.cryptomator.ui.preferences.PreferencesComponent;
 import org.cryptomator.ui.quit.QuitComponent;
 import org.cryptomator.ui.unlock.UnlockComponent;
 
+import javax.inject.Named;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.UncheckedIOException;
+import java.util.Optional;
 import java.util.ResourceBundle;
 
 @Module(includes = {KeychainModule.class, UpdateCheckerModule.class}, subcomponents = {MainWindowComponent.class, PreferencesComponent.class, UnlockComponent.class, QuitComponent.class})
@@ -39,6 +46,20 @@ abstract class FxApplicationModule {
 		return ResourceBundle.getBundle("i18n.strings");
 	}
 
+	@Provides
+	@Named("windowIcon")
+	@FxApplicationScoped
+	static Optional<Image> provideWindowIcon() {
+		if (SystemUtils.IS_OS_MAC) {
+			return Optional.empty();
+		}
+		try (InputStream in = FxApplicationModule.class.getResourceAsStream("/window_icon_32.png")) { // TODO: use some higher res depending on display?
+			return Optional.of(new Image(in));
+		} catch (IOException e) {
+			return Optional.empty();
+		}
+	}
+
 	@Provides
 	static MainWindowComponent provideMainWindowComponent(MainWindowComponent.Builder builder) {
 		return builder.build();

+ 5 - 1
main/ui/src/main/java/org/cryptomator/ui/preferences/PreferencesModule.java

@@ -5,6 +5,7 @@ import dagger.Module;
 import dagger.Provides;
 import dagger.multibindings.IntoMap;
 import javafx.scene.Scene;
+import javafx.scene.image.Image;
 import javafx.scene.input.KeyCode;
 import javafx.scene.input.KeyCodeCombination;
 import javafx.scene.input.KeyCombination;
@@ -15,8 +16,10 @@ import org.cryptomator.ui.common.FxControllerKey;
 import org.cryptomator.ui.common.FxmlFile;
 import org.cryptomator.ui.common.FxmlScene;
 
+import javax.inject.Named;
 import javax.inject.Provider;
 import java.util.Map;
+import java.util.Optional;
 import java.util.ResourceBundle;
 
 @Module
@@ -32,10 +35,11 @@ abstract class PreferencesModule {
 	@Provides
 	@PreferencesWindow
 	@PreferencesScoped
-	static Stage provideStage(ResourceBundle resourceBundle) {
+	static Stage provideStage(ResourceBundle resourceBundle, @Named("windowIcon") Optional<Image> windowIcon) {
 		Stage stage = new Stage();
 		stage.setTitle(resourceBundle.getString("preferences.title"));
 		stage.setResizable(false);
+		windowIcon.ifPresent(stage.getIcons()::add);
 		return stage;
 	}
 

+ 5 - 1
main/ui/src/main/java/org/cryptomator/ui/quit/QuitModule.java

@@ -5,6 +5,7 @@ import dagger.Module;
 import dagger.Provides;
 import dagger.multibindings.IntoMap;
 import javafx.scene.Scene;
+import javafx.scene.image.Image;
 import javafx.stage.Modality;
 import javafx.stage.Stage;
 import org.cryptomator.ui.common.FXMLLoaderFactory;
@@ -14,8 +15,10 @@ import org.cryptomator.ui.common.FxmlFile;
 import org.cryptomator.ui.common.FxmlScene;
 import org.cryptomator.ui.unlock.UnlockController;
 
+import javax.inject.Named;
 import javax.inject.Provider;
 import java.util.Map;
+import java.util.Optional;
 import java.util.ResourceBundle;
 
 @Module
@@ -31,11 +34,12 @@ abstract class QuitModule {
 	@Provides
 	@QuitWindow
 	@QuitScoped
-	static Stage provideStage() {
+	static Stage provideStage(@Named("windowIcon") Optional<Image> windowIcon) {
 		Stage stage = new Stage();
 		stage.setMinWidth(300);
 		stage.setMinHeight(200);
 		stage.initModality(Modality.APPLICATION_MODAL);
+		windowIcon.ifPresent(stage.getIcons()::add);
 		return stage;
 	}
 

+ 5 - 1
main/ui/src/main/java/org/cryptomator/ui/removevault/RemoveVaultModule.java

@@ -5,6 +5,7 @@ import dagger.Module;
 import dagger.Provides;
 import dagger.multibindings.IntoMap;
 import javafx.scene.Scene;
+import javafx.scene.image.Image;
 import javafx.stage.Modality;
 import javafx.stage.Stage;
 import org.cryptomator.ui.common.FXMLLoaderFactory;
@@ -13,8 +14,10 @@ import org.cryptomator.ui.common.FxControllerKey;
 import org.cryptomator.ui.common.FxmlFile;
 import org.cryptomator.ui.common.FxmlScene;
 
+import javax.inject.Named;
 import javax.inject.Provider;
 import java.util.Map;
+import java.util.Optional;
 import java.util.ResourceBundle;
 
 @Module
@@ -30,11 +33,12 @@ abstract class RemoveVaultModule {
 	@Provides
 	@RemoveVault
 	@RemoveVaultScoped
-	static Stage provideStage(ResourceBundle resourceBundle) {
+	static Stage provideStage(ResourceBundle resourceBundle, @Named("windowIcon") Optional<Image> windowIcon) {
 		Stage stage = new Stage();
 		stage.setTitle(resourceBundle.getString("removeVault.title"));
 		stage.setResizable(false);
 		stage.initModality(Modality.APPLICATION_MODAL);
+		windowIcon.ifPresent(stage.getIcons()::add);
 		return stage;
 	}
 

+ 5 - 1
main/ui/src/main/java/org/cryptomator/ui/unlock/UnlockModule.java

@@ -5,6 +5,7 @@ import dagger.Module;
 import dagger.Provides;
 import dagger.multibindings.IntoMap;
 import javafx.scene.Scene;
+import javafx.scene.image.Image;
 import javafx.stage.Modality;
 import javafx.stage.Stage;
 import org.cryptomator.ui.common.FXMLLoaderFactory;
@@ -13,8 +14,10 @@ import org.cryptomator.ui.common.FxControllerKey;
 import org.cryptomator.ui.common.FxmlFile;
 import org.cryptomator.ui.common.FxmlScene;
 
+import javax.inject.Named;
 import javax.inject.Provider;
 import java.util.Map;
+import java.util.Optional;
 import java.util.ResourceBundle;
 
 @Module
@@ -30,11 +33,12 @@ abstract class UnlockModule {
 	@Provides
 	@UnlockWindow
 	@UnlockScoped
-	static Stage provideStage(ResourceBundle resourceBundle) {
+	static Stage provideStage(ResourceBundle resourceBundle, @Named("windowIcon") Optional<Image> windowIcon) {
 		Stage stage = new Stage();
 		stage.setTitle(resourceBundle.getString("unlock.title"));
 		stage.setResizable(false);
 		stage.initModality(Modality.APPLICATION_MODAL);
+		windowIcon.ifPresent(stage.getIcons()::add);
 		return stage;
 	}