# JavaPickerDialog.qml Окно выбора сборки Java. Устроено как [VersionPickerDialog](VersionPickerDialog.md): слева виды, справа список с поиском. Отличие в том, что выбранная здесь сборка сразу и скачивается. Версии игры качает сборка, а Java, которой нет на диске, игре ничем не поможет. Открывается из диалога настроек в [Main](Main.md). ## Интерфейс | | | |---|---| | `backend` (required) | `LauncherBackend` | | `selectedId` | выбранная сборка | | `category` | `java` (Mojang), `jdk`, `jre` (Temurin) | | `filterText`, `installedOnly` | поиск и «только скачанные» | | `requiredMajor` | минимальная Java для версии игры активной сборки; 0 — версия не выбрана | | `openFor(runtimeId, requiredMajor)` | открыть | | `runtimeChosen(runtimeId)` | выбор подтверждён | ## Как работает `openFor()` сбрасывает поиск, открывает категорию переданной сборки и просит бэкенд обновить каталог Java. По «Отмене» ничего не меняется. Под категориями слева написано, какая Java нужна выбранной версии игры, чтобы не держать это в голове. `javaCatalog` приходит из C++ уже отсортированным: скачанное первым, потом новые версии сверху. Окно только отбирает строки. В строке: версия, пометка LTS, какие версии игры она потянет (`coverage`), размер и галочка у скачанных. Сборка ниже `requiredMajor` не прячется, а помечается красноватым и подписью «слишком старая для этой версии». Она может понадобиться другой сборке. Кнопка внизу называется «Скачать», если выбранной сборки нет на диске, и «Выбрать», если есть. `acceptSelection()` испускает `runtimeChosen` и, если сборки нет на диске, вызывает `installJavaRuntime()`. Ход загрузки показывает панель главного окна. ## Удаление У скачанных сборок есть корзина, и удаление происходит **без подтверждения**: `removeJavaRuntime()` вызывается сразу. Сборка весит около двухсот мегабайт, и без корзины здесь папка лаунчера росла бы незаметно для пользователя. Если удалили сборку, выбранную в настройках, бэкенд очистит `javaRuntime`. --- При создании этого документа использовался ИИ.