{"id":26408476,"url":"https://github.com/foxesworld/foxesengine","last_synced_at":"2025-10-09T12:11:56.861Z","repository":{"id":312006066,"uuid":"763467979","full_name":"FoxesWorld/FoxesEngine","owner":"FoxesWorld","description":"An Engine that is used for FoxesLauncher LTS","archived":false,"fork":false,"pushed_at":"2025-08-28T06:11:56.000Z","size":20659,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-08-28T08:27:24.919Z","etag":null,"topics":["dev","engine","foxesworld","framework","java","swing","swing-suite","ui"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/FoxesWorld.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-02-26T10:57:35.000Z","updated_at":"2025-08-28T06:12:37.000Z","dependencies_parsed_at":"2025-08-28T08:27:29.165Z","dependency_job_id":"be56db58-ff3a-4762-9ca7-b098999950e1","html_url":"https://github.com/FoxesWorld/FoxesEngine","commit_stats":null,"previous_names":["foxesworld/foxesengine"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/FoxesWorld/FoxesEngine","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FoxesWorld%2FFoxesEngine","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FoxesWorld%2FFoxesEngine/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FoxesWorld%2FFoxesEngine/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FoxesWorld%2FFoxesEngine/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/FoxesWorld","download_url":"https://codeload.github.com/FoxesWorld/FoxesEngine/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FoxesWorld%2FFoxesEngine/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279001438,"owners_count":26083078,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-09T02:00:07.460Z","response_time":59,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dev","engine","foxesworld","framework","java","swing","swing-suite","ui"],"created_at":"2025-03-17T18:46:42.090Z","updated_at":"2025-10-09T12:11:56.854Z","avatar_url":"https://github.com/FoxesWorld.png","language":"Java","readme":"# FoxEngine\n\n### Как использовать?\n\nДля начала создаем класс и наследуемся от `org.foxesworld.engine.Engine`.\nПосле наследования конструктор вашего класса должен вызывать супер-класс со следующими аргументами:\n\n```java\nsuper(poolSize, worker, configFiles);\n```\n\n#### Аргументы\n\n| Аргумент    | Тип                     | Описание                                         |\n| ----------- | ----------------------- | ------------------------------------------------ |\n| poolSize    | int                     | Размер пула потоков для многопоточной работы     |\n| worker      | String                  | Имя рабочего                                     |\n| configFiles | Map\\\u003cString, Class\\\u003c?\u003e\u003e | Коллекция с именами и POJO классами конфигурации |\n\n#### Методы, которые нужно реализовать\n\n| Метод                                                                                         | Описание                                               |\n| --------------------------------------------------------------------------------------------- | ------------------------------------------------------ |\n| preInit()                                                                                     | Предварительная инициализация                          |\n| init()                                                                                        | Инициализация                                          |\n| postInit()                                                                                    | Постинициализация                                      |\n| onPanelsBuilt()                                                                               | Вызывается при построении всех панелей                 |\n| onAdditionalPanelBuild(JPanel panel)                                                          | Вызывается при построении каждой дополнительной панели |\n| onGuiBuilt()                                                                                  | Вызывается при завершении построения UI                |\n| onPanelBuild(Map\\\u003cString, OptionGroups\u003e panels, String componentGroup, Container parentPanel) | Вызывается при построении каждой панели                |\n| actionPerformed(ActionEvent e)                                                                | Вызывается при совершении действия                     |\n| updateFocus(boolean hasFocus)                                                                 | Вызывается при получении фокуса окном (или его потере) |\n\n### Базовая реализация\nДля построения UI нужен метод, он принимает массив стилей компонентов:\n```java\n    private void buildGui(String[] styles) {\n        setStyleProvider(new StyleProvider(styles));\n        setGuiBuilder(new GuiBuilder(this));\n        getGuiBuilder().getComponentFactory().setComponentFactoryListener(new InitialValue(this)); //Регистрация слушателя, который вызывается при создании каждого компонента для установки базового значения\n        getGuiBuilder().addGuiBuilderListener(this);\n        getGuiBuilder().buildGuiAsync(fileProperties.getFrameTpl(), getFrame().getRootPanel());\n        this.setIconUtils(new IconUtils(this));\n    }\n```\nПример базовой реализации есть в файле `org.foxesworld.engine.Test`\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffoxesworld%2Ffoxesengine","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffoxesworld%2Ffoxesengine","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffoxesworld%2Ffoxesengine/lists"}