{"id":16786724,"url":"https://github.com/exigow/autoform","last_synced_at":"2026-01-03T07:40:12.105Z","repository":{"id":75579623,"uuid":"59768084","full_name":"exigow/autoform","owner":"exigow","description":"Generate JavaFX model dialogs automatically from annotated classes","archived":false,"fork":false,"pushed_at":"2016-05-27T13:23:48.000Z","size":1266,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-01-23T09:42:46.057Z","etag":null,"topics":[],"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/exigow.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}},"created_at":"2016-05-26T16:59:23.000Z","updated_at":"2018-12-03T16:22:02.000Z","dependencies_parsed_at":"2023-06-06T23:45:08.638Z","dependency_job_id":null,"html_url":"https://github.com/exigow/autoform","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/exigow%2Fautoform","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/exigow%2Fautoform/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/exigow%2Fautoform/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/exigow%2Fautoform/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/exigow","download_url":"https://codeload.github.com/exigow/autoform/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243946416,"owners_count":20373043,"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","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":[],"created_at":"2024-10-13T08:13:01.451Z","updated_at":"2026-01-03T07:40:12.052Z","avatar_url":"https://github.com/exigow.png","language":"Java","readme":"Automatic model dialog JavaFX utility\n=====================================\n\n1. Annotate your value object class like below:\n\n    ```Java\n    @Autoform(title = \"Register your car\")\n    public class Car {\n    \n      @AutoformField(label = \"Model name:\")\n      public String name;\n    \n      @AutoformField(label = \"Date of production:\")\n      public LocalDate productionDate;\n    \n      @AutoformField(label = \"Car price:\")\n      public BigDecimal price;\n    \n      @AutoformField(label = \"Is insured?\", wrapper = BooleanWrapper.class)\n      public Boolean isInsured;\n    \n    }\n    ```\n\n2. Execute this:\n\n    ```Java\n    AutoformInstancer.createDialog(car, c -\u003e System.out.println(\"Recieved \" + c));\n    ```\n\n3. And see this:\n\n    ![window screenshot] (https://raw.githubusercontent.com/exigow/autoform/master/screenshots/presentation.png)\n\nNote, that lambda described in #2 will fire after completion. \nFields have been completed for presentation purposes. It is possible to initialize window with predefined data, as shown in [example] (https://github.com/exigow/autoform/blob/master/test/autoform/example/Example.java).\n\nCustomization\n-------------\n\nUtility has done implementations wrappers for common types (Boolean, String, LocalDate, BigDecimal, etc.). It is possible to provide an implementation of your own wrapper that implements the [FieldWrapper] (https://github.com/exigow/autoform/blob/master/src/autoform/wrappers/FieldWrapper.java) interface.\nIndicate wrapper class in the annotation, like below:\n\n```Java\n@AutoformField(label = \"Is insured?\", wrapper = CustomBooleanWrapper.class)\npublic String isInsured;\n```\n\nIf the wrapper is not indicated, it will be selected automatically from field type (see [WrapperFactory] (https://github.com/exigow/autoform/blob/master/src/autoform/wrappers/WrapperFactory.java) impl). Unrecognized type **throws an exception** (at runtime).\n\nTODO\n----\n* Annotation __#name__ or __#title__ param should be **optional**. In case of lack, field labels should be humanized automatically (with customizable strategy pattern (huh?)), eg. __carProductionDate__ will output __\"Car production date:\"__.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fexigow%2Fautoform","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fexigow%2Fautoform","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fexigow%2Fautoform/lists"}