Как обмениваться информацией между представлениями / сохранять глобальное состояние в TornadoFX - PullRequest
0 голосов
/ 28 апреля 2020

Я новичок в TornadoFX (или JavaFX в этом отношении), и я хотел бы создать приложение, такое как следующий макет:

enter image description here

То есть я хочу иметь возможность открывать файл ресурсов (например, ZIP-файл) и отображать его содержимое в виде дерева с панелью предварительного просмотра справа.

Я структурировал пользовательский интерфейс в Виды так, что это выглядит так:

enter image description here

И это будет мой 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.

Что мне здесь не хватает? Как я могу сделать этот файл (вокруг которого вращается все мое приложение), чтобы иметь возможность работать с ним во всех частях приложения?

1 Ответ

0 голосов
/ 30 апреля 2020

Вы пробовали использовать прицелы? https://edvin.gitbooks.io/tornadofx-guide/part2/Scopes.html, есть примеры, поясняющие, что именно вы там ищете. Сначала попробуйте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...