{"id":20650439,"url":"https://github.com/chqu1012/richclientfx","last_synced_at":"2026-04-17T23:34:03.917Z","repository":{"id":151223628,"uuid":"173443601","full_name":"chqu1012/RichClientFX","owner":"chqu1012","description":"A lightweight EMF Rich Client Platform based on JavaFX","archived":false,"fork":false,"pushed_at":"2019-07-16T21:39:56.000Z","size":92808,"stargazers_count":3,"open_issues_count":71,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-16T21:48:29.435Z","etag":null,"topics":["chartjs","efxclipse","emf","emf-edit","eventbroker","generator","javafx","modelinferrer","presentation","rcp","reveal-js","selectionservice","xbase","xcore","xtext"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/chqu1012.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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":"2019-03-02T12:11:36.000Z","updated_at":"2025-02-12T00:16:49.000Z","dependencies_parsed_at":null,"dependency_job_id":"b277b96f-74e3-4dc0-835f-028ad5ec669c","html_url":"https://github.com/chqu1012/RichClientFX","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/chqu1012/RichClientFX","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chqu1012%2FRichClientFX","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chqu1012%2FRichClientFX/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chqu1012%2FRichClientFX/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chqu1012%2FRichClientFX/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/chqu1012","download_url":"https://codeload.github.com/chqu1012/RichClientFX/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chqu1012%2FRichClientFX/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31950387,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-17T17:29:20.459Z","status":"ssl_error","status_checked_at":"2026-04-17T17:28:47.801Z","response_time":62,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["chartjs","efxclipse","emf","emf-edit","eventbroker","generator","javafx","modelinferrer","presentation","rcp","reveal-js","selectionservice","xbase","xcore","xtext"],"created_at":"2024-11-16T17:20:02.571Z","updated_at":"2026-04-17T23:34:03.901Z","avatar_url":"https://github.com/chqu1012.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# JavaFX based EMF Rich Client Platform\nA lightweight JavaFX based EMF Rich Client Platform. This framework is defined by the emf model itself. The workbench is created by the definition. The framework contains a selection service for registration and recognition of selections. Defined views like PropertyView, HistoryView, ProjectExplorer can be included in it.\n\nEclipse Editor for generating JavaFX Controls by defining meta informations in EMF or in Xtext DSL. For more details, please visit the [wiki site](https://github.com/chqu1012/de.dc.emf.javafx.xtext.lang/wiki)\n\n### Overview of code generation with Eclipse IDE Support\n\n![Code Generation](https://github.com/chqu1012/de.dc.emf.javafx.xtext.lang/blob/master/de.dc.javafx.xcore.resources/images/09-EmfEdit-Eclipse-Support.png)\n\n### Running generated application with EMF support like Undo / Redo, PropertySheet (Optional) and Tree / Table/ List Editing.\nThis application contains on the generation:\n* Workbench\n* ProjectExplorer\n* Workspace\n* EMF Model TreeEditor\n* PropertyView\n* Flat HistoryView for Undo / Redo\n* Hierachical History View for Undo / Redo\n* ContextMenu with commands: \n\t* New item creation\n\t* Copy / Paste\n\t* Edit\n\t* Delete\n\t* Duplicate\n\t* Undo / Redo\n* Command Acceleration Binding for Undo / Redo\n* Theme switching\n* Default dark theme\n* Addons:\n\t* Realtime JavaFX Chart Rendering\n\t\t* LineChart\n\t\t* BarChart\n\t\t* ScatterChart\n\t\t* AreaChart\n\t\t* PieChart\n\t* Realtime Orson Chart Rendering\n\t\t* AreaChart 3D\n\t\t* BarChart 3D\n\t\t* LineChart 3D\n\t\t* PieChart 3D\n\t\t* ScatterChart 3D\n\t\t* XYZLineChart\n\t\t* XYZBarChart\n\t\t* SurfacePlotter\n\t* Thymeleaf Blog Template Generator\n\t* Barcode Renderer used OkapiBarcode\n\t* Lecture: Declarative defining presentation slides via tree view, markdown or html\n* Editor Registry for several types\n\n### Flat History View\nThis view shows all command calls. Via the context menu, the user can undo or redo this action.\n![Running Application](https://github.com/chqu1012/de.dc.emf.javafx.xtext.lang/blob/master/de.dc.javafx.xcore.resources/images/10-EmfEdit-ProjectExplorer.png)\n\n### Hierachical History View\nThis view is an extended history view. A lot of information is displayed in cell feature directly. The user is allowed to undo / redo and delete this command direct via the buttons. The results are also displayed in the tree as child nodes.\n![Running Application](https://github.com/chqu1012/de.dc.emf.javafx.xtext.lang/blob/master/de.dc.javafx.xcore.resources/images/12-EmfEdit-Hierachical-CommandView.png)\n\n### RealTime LineChart Rendering\nThis addon supports rendering of chart files. The chart file is defined in EMF Xcore, so to create a chart the EMFTreeModelView can be used.\n![Running Application](https://github.com/chqu1012/de.dc.emf.javafx.xtext.lang/blob/master/de.dc.javafx.xcore.resources/images/13-Addon-LineChart2.png)\n\n### RealTime BarChart Rendering\nBarChart Rendering showing history view, editor part and emf model tree.\n![Running Application](https://github.com/chqu1012/de.dc.emf.javafx.xtext.lang/blob/master/de.dc.javafx.xcore.resources/images/13-Addon-BarChart.png)\n\n### RealTime AreaChart 3D Rendering (Orson Chart)\n![Running Application](https://github.com/chqu1012/de.dc.emf.javafx.xtext.lang/blob/master/de.dc.javafx.xcore.resources/images/13-Addon-Orson-AreaChart3d.png)\n\n### RealTime BarChart 3D Rendering (Orson Chart)\n![Running Application](https://github.com/chqu1012/de.dc.emf.javafx.xtext.lang/blob/master/de.dc.javafx.xcore.resources/images/13-Addon-Orson-BarChart3d.png)\n\n### RealTime Surface 3D Plotter (Orson Chart)\n![Running Application](https://github.com/chqu1012/de.dc.emf.javafx.xtext.lang/blob/master/de.dc.javafx.xcore.resources/images/13-Addon-Orson-SurfacePlotter.png)\n\n### RealTime BarChart 3D Rendering (Orson Chart)\n![Running Application](https://github.com/chqu1012/de.dc.emf.javafx.xtext.lang/blob/master/de.dc.javafx.xcore.resources/images/13-Addon-Orson-XYZBarChart3d.png)\n\n### Generic Selection Viewer \nShows all provided selections as fields and methods in tables and hierachical view.\n![Running Application](https://github.com/chqu1012/de.dc.emf.javafx.xtext.lang/blob/master/de.dc.javafx.xcore.resources/images/11-EmfEdit-SelectionViewer.png)\n\n### Lecture Presentation Slides Editor\nDefining presentation slides can be declare by emf treeview, html or markdown. Running the slides in JavaFX Tab or external browser with the reveal.js api.\n![Running Application](https://github.com/chqu1012/RichClientFX/blob/master/de.dc.javafx.xcore.resources/images/15-Addon-Lecture-Icons.png)\n\n### EMF.edit for undo, redo, editing and drag\u0026drop support.\n\nBasic functions will integrate into the TreeView, ListView and TableView. The following figure will shows a generated EMF.edit TreeView with binded PropertyView and HistoryView. Only this description is required to configure the generation\n\n```java\nEMFSupport for CRM{\n\tpackagePath: 'hello.world.crm' \n\tmodelItemProviderAdapterFactory: de.dc.javafx.emfsupport.website.model.provider.ModelItemProviderAdapterFactory\n\tmodelPackage: de.dc.javafx.emfsupport.website.model.ModelPackage\n\tmodelFactory: de.dc.javafx.emfsupport.website.model.ModelFactory\n\trootType: de.dc.javafx.emfsupport.website.model.Website\n\tuseUndoRedo: true  \n\tshowCommandStack: true \n\tshowPropertyView: true \n\t// Generate an example application\n    \tgenerateDemo: true \n \n\t// Edit Suppport, EAttributes is taken from EMF generated ModelPackage\n\t// This attribute should exist, otherwise you will get a compile error.\n\teditables += EAttribute(Website_Name)\n\teditables += EAttribute(Page_Name)\t\n\teditables += EAttribute(Author_Firstname)\n    \n\t// Context Menu\n\tcontextMenus += addContextMenu(\n\t\tid:AddPage \n\t\tparentType: de.dc.javafx.emfsupport.website.model.Website\n\t\tcreateType: de.dc.javafx.emfsupport.website.model.Page \n\t)\n\tcontextMenus += addContextMenu(\n\t\tid:AddAuthor \n\t\tparentType: de.dc.javafx.emfsupport.website.model.Page\n\t\tcreateType: de.dc.javafx.emfsupport.website.model.Author\n\t)\n}\n```\n\n![EMF.edit Support](https://github.com/chqu1012/de.dc.emf.javafx.xtext.lang/blob/master/de.dc.javafx.xcore.resources/images/08-EmfEdit-CommandHistory.png)\n\n\n## Features\n- [x] TableView with Cell Providers\n- [x] DataBinding Models\n- [x] Form Binding Models\n- [x] Derived Bean to Binding Model\n- [x] Code Generation via DSL\n- [ ] Code Generation via EMF Editor\n- [x] Update Site for Eclipse Installation\n- [ ] Eclipse JavaFX Preview\n- [ ] Code Generation of TreeView\n- [ ] Code Generation of TreeTableView\n- [ ] Code Generation of ListView\n- [ ] Code Generation of Custom forms\n- [x] Code Generation of LineChart\n- [ ] Code Generation of PieChart\n- [ ] Code Generation of AreaChart\n- [ ] FXML Code Generation\n- [ ] High complex Binding\n- [ ] DSL directly to CompilationUnit \n\n## Used Example\n* Define TableView dsl\n```java\nProjectFX ContactProject{\n\tpackagePath 'de.dc.emf.javafx.xtext.demo.contact'\n\t\n\tcontrols{\n\t\tTableView {\n\t\t\tname: ContactTableView\n\t\t\tusedModel: Contact\n\t\t\tColumn(\tname:forename \twidth:100 \tattribute:\"Contact.forename\")\n\t\t\tColumn(\tname:familyName width:100 \tattribute:\"Contact.familyName\")\n\t\t\tColumn(\tname:age \t\t\tattribute:\"Contact.age\")\n\t\t\tColumn(\tname:address \twidth:50 \tattribute:\"Contact.address\")\n\t\t}\n\t}\n\t\n\tmodels{\n\t\tclass Contact{\n\t\t\tString forename\n\t\t\tString familyName\n\t\t\tint age\n\t\t\tboolean gender\n\t\t\tString address\n\t\t} \n\t}\n}\n```\n### How to define a FilteredTableViewFX\n\nEach Filter columns as activate the filter by ```useFilter: true```\n\n```java\nProjectFX ContactProject{\n\tpackagePath 'de.dc.emf.javafx.xtext.demo.contact'\n\t\n\tcontrols{\n\t\tFilteredTableView {\n\t\t\tname: ContactTableView\n\t\t\tusedModel: Contact\n\t\t\tColumn(\tname:forename \twidth:100 \tattribute:\"Contact.forename\" useFilter:true)\n\t\t\tColumn(\tname:familyName width:100 \tattribute:\"Contact.familyName\" useFilter:true)\n\t\t\tColumn(\tname:age \t\t\tattribute:\"Contact.age\" useFilter:true)\n\t\t\tColumn(\tname:address \twidth:50 \tattribute:\"Contact.address\" useFilter:true)\n\t\t}\n\t}   \n\t\n\tmodels{\n\t\tclass Contact{\n\t\t\tString forename\n\t\t\tString familyName\n\t\t\tint age\n\t\t\tboolean gender\n\t\t\tString address\n\t\t} \n\t}\n}\n```\n\n### How to define a LineChart with data list\n```java\nLineChart{\n\tname: BudgetChartOther\n\tlegendSide:Top\n\ttitle:\"Other Budget Chart\"\n\ttitleSide:Top\n\txAxisLabel:\"Budget\"\n\tyAxisLabel:\"Month\"\n\tdataList{\n\t\tdata('10','20') \n\t\tdata('20','23')  \n\t\tdata('25','25') \n\t\tdata('30','30') \n\t}\n}\n```\n\n![LineChart Example](https://github.com/chqu1012/de.dc.emf.javafx.xtext.lang/blob/master/de.dc.emf.javafx.model.res/images/04-LineChartView.png)\n\n### LineChart with 3 series\n\n```java\nLineChart{\n\tname: BudgetChartOther\n\tlegendSide:Top\n\ttitle:\"Other Budget Chart\"\n\ttitleSide:Top\n\txAxisLabel:\"Budget\"\n\tyAxisLabel:\"Month\"\n\tseries{  \n\t\tname:\"exampleData2\" \n\t\tdataList{\n\t\t\tdata('0','5') \n\t\t\tdata('10','20') \n\t\t\tdata('20','23')   \n\t\t\tdata('25','25') \n\t\t\tdata('30','30') \n\t\t}\n\t}\n\tseries{\n\t\tname:\"exampleData10\"\n\t\tdataList{ \n\t\t\tdata('0','5') \n\t\t\tdata('25','5')   \n\t\t\tdata('40','7') \n\t\t\tdata('80','9') \n\t\t}\n\t}\n\n\tseries{  \n\t\tname:\"exampleData15\"\n\t\tdataList{ \n\t\t\tdata('0','5') \n\t\t\tdata('5','10') \n\t\t\tdata('20','15')   \n\t\t\tdata('40','25') \n\t\t\tdata('80','29') \n\t\t}\n\t}\n}\n```\n\n![LineChart Example](https://github.com/chqu1012/de.dc.emf.javafx.xtext.lang/blob/master/de.dc.emf.javafx.model.res/images/05-LineChartView-With-3-Series.png)\n\n## Third Libaries\n* Xtext \u0026 Xtend, https://www.eclipse.org/Xtext/\n* Xcore, https://wiki.eclipse.org/Xcore\n* Emf, Eclipse Modelling Framework https://www.eclipse.org/modeling/emf/\n* OkapiBarcode, BarCode API https://github.com/woo-j/OkapiBarcode\n* Orson Chart, https://github.com/jfree/orson-charts-fx\n\n## ChangeLog\n\n## Download\n* ![v0.9.0](https://github.com/chqu1012/de.dc.emf.javafx.xtext.lang/blob/master/build/versions/de.dc.javafx.xcore.lang-v0.9.0.zip) : New API\n* ![v0.8.4](https://github.com/chqu1012/de.dc.emf.javafx.xtext.lang/blob/master/de.dc.emf.javafx.xtext.lang.update/build/v0.8.4.zip) : TableViewFX with filter and property view\n* ![v0.8.3](https://github.com/chqu1012/de.dc.emf.javafx.xtext.lang/blob/master/de.dc.emf.javafx.xtext.lang.update/build/v0.8.3.zip) : Working Example of JFX CU\n* ![v0.8.2](https://github.com/chqu1012/de.dc.emf.javafx.xtext.lang/blob/master/de.dc.emf.javafx.xtext.lang.update/build/v0.8.2.zip) : Separated base code files\n* ![v0.8.1a](https://github.com/chqu1012/de.dc.emf.javafx.xtext.lang/blob/master/de.dc.emf.javafx.xtext.lang.update/build/v0.8.1a.zip) : Removed Eclipse ui editor version restriction\n* ![v0.8.1](https://github.com/chqu1012/de.dc.emf.javafx.xtext.lang/blob/master/de.dc.emf.javafx.xtext.lang.update/build/v0.8.1.zip)\n* ![v0.8.0](https://github.com/chqu1012/de.dc.emf.javafx.xtext.lang/blob/master/de.dc.emf.javafx.xtext.lang.update/build/v0.8.0.zip)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchqu1012%2Frichclientfx","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fchqu1012%2Frichclientfx","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchqu1012%2Frichclientfx/lists"}