Я новичок в TornadoFX (или JavaFX в этом отношении), и я хотел бы создать приложение, такое как следующий макет:
То есть я хочу иметь возможность открывать файл ресурсов (например, ZIP-файл) и отображать его содержимое в виде дерева с панелью предварительного просмотра справа.
Я структурировал пользовательский интерфейс в Виды так, что это выглядит так:
И это будет мой MenuView
класс, обрабатывающий меню File / Edit:
class MenuView: View () {
private val menuController: MenuController by inject()
override val root: Parent =
menubar {
menu("File") {
item("Open").action {
menuController.openFile(
chooseFile("Select file",
arrayOf(FileChooser.ExtensionFilter("File", "*.*"))
).first().path
)
}
separator()
item("Quit").action {
}
}
menu("Edit") {
item("Edit 1")
separator()
item("Edit 2")
}
}
}
Но я не знаю, как сделать результат моего FileChooser
доступным для остальных частей пользовательского интерфейса. Моя интуиция сказала бы мне создать его так, чтобы:
MenuView - MenuViewController - FileHandler
, чтобы FileHandler
был слоем модели, общим для всего приложения. Однако я не знаю, как сохранить этот глобальный объект, чтобы его нельзя было внедрить с помощью решения TornadoFX DI.
Что мне здесь не хватает? Как я могу сделать этот файл (вокруг которого вращается все мое приложение), чтобы иметь возможность работать с ним во всех частях приложения?