``` class Startup : App(KeepassWorkspace::class) {...
# tornadofx
r
Copy code
class Startup : App(KeepassWorkspace::class) {
    val controller: MainController by inject()
    val guice: Injector = Guice.createInjector(GuiceConfigurator(), GuiceServletConfigurator())
    val preferences: KeepassPreferences = guice.getInstance(KeepassPreferences::class.java)

    init {
        SLF4JBridgeHandler.removeHandlersForRootLogger()
        SLF4JBridgeHandler.install()
        FX.dicontainer = object : DIContainer {
            override fun <T : Any> getInstance(type: KClass<T>): T = guice.getInstance(type.java)
        }
        //setApplicationIcon()
        val osName = System.getProperty("os.name")
        val iconFileName: String
        when {
            osName.contains("win") -> iconFileName = "/KeePass_icon.png.ico"
            else -> iconFileName = "/KeePass_icon.png"
        }
        trayicon(icon = resources.stream(iconFileName), autoSize = true, implicitExit = preferences.hideToTray.not()) {
            setOnMouseClicked(fxThread = true) {
                if (FX.primaryStage.isShowing) {
                    FX.primaryStage.hide()
                } else {
                    FX.primaryStage.show()
                    FX.primaryStage.toFront()
                }
            }
        }

    }


    override fun onBeforeShow(view: UIComponent) {
        FX.primaryStage.icons.add(Image(resources.stream("/KeePass_icon.png")))
        val titleProperty = SimpleStringProperty("KeepassFX")
        FX.primaryStage.titleProperty().bind(titleProperty)
        workspace.dock<MainView>()
    }

    override fun start(stage: Stage) {
        super.start(stage)
        controller.startIdleTimer()
        stage.addEventFilter(InputEvent.ANY) {
            controller.updateTimer()
        }
    }

    override fun stop() {
        controller.exit()
    }

    fun setApplicationIcon() {
        if (System.getProperty("os.name").contains("mac", true)) {
            System.setProperty("com.apple.mrj.application.apple.menu.about.name", "KeepassFX")
            System.setProperty("apple.awt.application.name", "KeepassFX")
        }
    }
}
👍 1