added tray icon, refactored dagger component graph:

singleton -> tray -> fxapplication -> mainwindow
This commit is contained in:
Sebastian Stenzel
2019-07-29 12:38:24 +02:00
parent 4931e6707a
commit 10e842e457
35 changed files with 340 additions and 56 deletions
@@ -5,11 +5,10 @@
*******************************************************************************/
package org.cryptomator.launcher;
import javafx.application.Platform;
import org.apache.commons.lang3.SystemUtils;
import org.cryptomator.logging.DebugMode;
import org.cryptomator.logging.LoggerConfiguration;
import org.cryptomator.ui.FxApplication;
import org.cryptomator.ui.traymenu.TrayMenuComponent;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -34,15 +33,17 @@ public class Cryptomator {
private final Optional<String> applicationVersion;
private final CountDownLatch shutdownLatch;
private final CleanShutdownPerformer shutdownPerformer;
private final TrayMenuComponent.Builder trayComponent;
@Inject
Cryptomator(LoggerConfiguration logConfig, DebugMode debugMode, IpcFactory ipcFactory, @Named("applicationVersion") Optional<String> applicationVersion, @Named("shutdownLatch") CountDownLatch shutdownLatch, CleanShutdownPerformer shutdownPerformer) {
Cryptomator(LoggerConfiguration logConfig, DebugMode debugMode, IpcFactory ipcFactory, @Named("applicationVersion") Optional<String> applicationVersion, @Named("shutdownLatch") CountDownLatch shutdownLatch, CleanShutdownPerformer shutdownPerformer, TrayMenuComponent.Builder trayComponent) {
this.logConfig = logConfig;
this.debugMode = debugMode;
this.ipcFactory = ipcFactory;
this.applicationVersion = applicationVersion;
this.shutdownLatch = shutdownLatch;
this.shutdownPerformer = shutdownPerformer;
this.trayComponent = trayComponent;
}
public static void main(String[] args) {
@@ -89,7 +90,7 @@ public class Cryptomator {
private int runGuiApplication() {
try {
shutdownPerformer.registerShutdownHook();
CRYPTOMATOR_COMPONENT.fxApplicationComponent().start();
trayComponent.build().addIconToSystemTray();
shutdownLatch.await();
LOG.info("UI shut down");
return 0;
@@ -3,7 +3,7 @@ package org.cryptomator.launcher;
import dagger.Component;
import org.cryptomator.common.CommonsModule;
import org.cryptomator.logging.LoggerModule;
import org.cryptomator.ui.FxApplicationComponent;
import org.cryptomator.ui.fxapp.FxApplicationComponent;
import javax.inject.Singleton;
@@ -13,6 +13,4 @@ public interface CryptomatorComponent {
Cryptomator application();
FxApplicationComponent fxApplicationComponent();
}
@@ -4,8 +4,10 @@ import dagger.Module;
import dagger.Provides;
import org.cryptomator.common.settings.Settings;
import org.cryptomator.common.settings.SettingsProvider;
import org.cryptomator.ui.FxApplicationScoped;
import org.cryptomator.ui.UiModule;
import org.cryptomator.ui.model.AppLaunchEvent;
import org.cryptomator.ui.model.VaultComponent;
import org.cryptomator.ui.traymenu.TrayMenuComponent;
import javax.inject.Named;
import javax.inject.Singleton;
@@ -15,7 +17,7 @@ import java.util.concurrent.BlockingQueue;
import java.util.concurrent.CountDownLatch;
import java.util.function.Consumer;
@Module
@Module(includes = {UiModule.class}, subcomponents = {VaultComponent.class, TrayMenuComponent.class})
class CryptomatorModule {
@Provides