blob: af9c48bd83365e3e7cfadd374b1b11800923ba2d [file] [log] [blame]
<!DOCTYPE html>
<html lang="en-us">
<head>
<meta name="theme" content="Syna">
<meta name="theme-version" content="v0.17.2">
<meta name="theme-url" content="https://syna.okkur.org">
<meta name="theme-description" content="Highly customizable open source theme for Hugo based static websites">
<meta name="theme-author" content="Okkur Labs">
<meta name="theme-author-url" content="https://about.okkur.org">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="google" content="notranslate" />
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<meta name="description" content="EMF Forms and the EMF Client Platform provide a new way of developing UIs. Instead of manually coding form-based layouts, trees or tables, it allows you to describe the UI with a simple model instead of with code. The approach allows you to more efficiently produce and iteratively refine data-centric UIs that conform to a uniform look and feel. This also lowers the technical entry barrier to creating form-based UIs. The UI description is interpreted by a rendering engine and allows you to switch between the UI technology stack e.">
<meta property="og:title" content="EMF Forms" />
<meta property="og:description" content="Are you still manually coding UIs?" />
<meta property="og:type" content="website" />
<meta property="og:url" content="https://www.eclipse.org/ecp/emfforms/" />
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="EMF Forms" />
<meta name="twitter:description" content="EMF Forms and the EMF Client Platform provide a new way of developing UIs. Instead of manually coding form-based layouts, trees or tables, it allows you to describe the UI with a simple model instead of with code. The approach allows you to more efficiently produce and iteratively refine data-centric UIs that conform to a uniform look and feel. This also lowers the technical entry barrier to creating form-based UIs. The UI description is interpreted by a rendering engine and allows you to switch between the UI technology stack e.">
<meta name="twitter:url" content="https://www.eclipse.org/ecp/emfforms/" />
<meta property="og:image" content="">
<meta name="twitter:image" content="">
<meta name="author" content="Eclipse Foundation">
<meta name="generator" content="Hugo 0.78.1" />
<title>EMF Forms</title>
<!-- Theme Styles -->
<style>
.mx-0 {
margin-left: 0 !important;
margin-right: 0 !important; }
@-ms-viewport {
width: device-width; }
html {
box-sizing: border-box;
-ms-overflow-style: scrollbar; }
*,
*::before,
*::after {
box-sizing: inherit; }
.container {
width: 100%;
padding-right: 15px;
padding-left: 15px;
margin-right: auto;
margin-left: auto;
max-width: 540px;
max-width: 720px;
max-width: 960px;
max-width: 1140px; }
.container-fluid {
width: 100%;
padding-right: 15px;
padding-left: 15px;
margin-right: auto;
margin-left: auto; }
.row {
display: flex;
flex-wrap: wrap;
margin-right: -15px;
margin-left: -15px; }
.no-gutters {
margin-right: 0;
margin-left: 0; }
.no-gutters > .col,
.no-gutters > [class*="col-"] {
padding-right: 0;
padding-left: 0; }
.col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col,
.col-auto {
position: relative;
width: 100%;
min-height: 1px;
padding-right: 15px;
padding-left: 15px; }
.col {
flex-basis: 0;
flex-grow: 1;
max-width: 100%; }
.col-auto {
flex: 0 0 auto;
width: auto;
max-width: none; }
.col-1 {
flex: 0 0 8.33333%;
max-width: 8.33333%; }
.col-2 {
flex: 0 0 16.66667%;
max-width: 16.66667%; }
.col-3 {
flex: 0 0 25%;
max-width: 25%; }
.col-4 {
flex: 0 0 33.33333%;
max-width: 33.33333%; }
.col-5 {
flex: 0 0 41.66667%;
max-width: 41.66667%; }
.col-6 {
flex: 0 0 50%;
max-width: 50%; }
.col-7 {
flex: 0 0 58.33333%;
max-width: 58.33333%; }
.col-8 {
flex: 0 0 66.66667%;
max-width: 66.66667%; }
.col-9 {
flex: 0 0 75%;
max-width: 75%; }
.col-10 {
flex: 0 0 83.33333%;
max-width: 83.33333%; }
.col-11 {
flex: 0 0 91.66667%;
max-width: 91.66667%; }
.col-12 {
flex: 0 0 100%;
max-width: 100%; }
.order-first {
order: -1; }
.order-last {
order: 13; }
.order-0 {
order: 0; }
.order-1 {
order: 1; }
.order-2 {
order: 2; }
.order-3 {
order: 3; }
.order-4 {
order: 4; }
.order-5 {
order: 5; }
.order-6 {
order: 6; }
.order-7 {
order: 7; }
.order-8 {
order: 8; }
.order-9 {
order: 9; }
.order-10 {
order: 10; }
.order-11 {
order: 11; }
.order-12 {
order: 12; }
.offset-1 {
margin-left: 8.33333%; }
.offset-2 {
margin-left: 16.66667%; }
.offset-3 {
margin-left: 25%; }
.offset-4 {
margin-left: 33.33333%; }
.offset-5 {
margin-left: 41.66667%; }
.offset-6 {
margin-left: 50%; }
.offset-7 {
margin-left: 58.33333%; }
.offset-8 {
margin-left: 66.66667%; }
.offset-9 {
margin-left: 75%; }
.offset-10 {
margin-left: 83.33333%; }
.offset-11 {
margin-left: 91.66667%; }
.d-none {
display: none !important; }
.d-inline {
display: inline !important; }
.d-inline-block {
display: inline-block !important; }
.d-block {
display: block !important; }
.d-table {
display: table !important; }
.d-table-row {
display: table-row !important; }
.d-table-cell {
display: table-cell !important; }
.d-flex {
display: flex !important; }
.d-inline-flex {
display: inline-flex !important; }
@media print {
.d-print-none {
display: none !important; }
.d-print-inline {
display: inline !important; }
.d-print-inline-block {
display: inline-block !important; }
.d-print-block {
display: block !important; }
.d-print-table {
display: table !important; }
.d-print-table-row {
display: table-row !important; }
.d-print-table-cell {
display: table-cell !important; }
.d-print-flex {
display: flex !important; }
.d-print-inline-flex {
display: inline-flex !important; } }
.flex-row {
flex-direction: row !important; }
.flex-column {
flex-direction: column !important; }
.flex-row-reverse {
flex-direction: row-reverse !important; }
.flex-column-reverse {
flex-direction: column-reverse !important; }
.flex-wrap {
flex-wrap: wrap !important; }
.flex-nowrap {
flex-wrap: nowrap !important; }
.flex-wrap-reverse {
flex-wrap: wrap-reverse !important; }
.flex-fill {
flex: 1 1 auto !important; }
.flex-grow-0 {
flex-grow: 0 !important; }
.flex-grow-1 {
flex-grow: 1 !important; }
.flex-shrink-0 {
flex-shrink: 0 !important; }
.flex-shrink-1 {
flex-shrink: 1 !important; }
.justify-content-start {
justify-content: flex-start !important; }
.justify-content-end {
justify-content: flex-end !important; }
.justify-content-center {
justify-content: center !important; }
.justify-content-between {
justify-content: space-between !important; }
.justify-content-around {
justify-content: space-around !important; }
.align-items-start {
align-items: flex-start !important; }
.align-items-end {
align-items: flex-end !important; }
.align-items-center {
align-items: center !important; }
.align-items-baseline {
align-items: baseline !important; }
.align-items-stretch {
align-items: stretch !important; }
.align-content-start {
align-content: flex-start !important; }
.align-content-end {
align-content: flex-end !important; }
.align-content-center {
align-content: center !important; }
.align-content-between {
align-content: space-between !important; }
.align-content-around {
align-content: space-around !important; }
.align-content-stretch {
align-content: stretch !important; }
.align-self-auto {
align-self: auto !important; }
.align-self-start {
align-self: flex-start !important; }
.align-self-end {
align-self: flex-end !important; }
.align-self-center {
align-self: center !important; }
.align-self-baseline {
align-self: baseline !important; }
.align-self-stretch {
align-self: stretch !important; }
</style>
<link href="/ecp/emfforms/style.min.d3a01c977ecacc40ec136f2a5aa5bcd3e9a7238f1b2c69a4948769c48f6f45c7.css" rel="stylesheet">
<link rel="shortcut icon" type="image/x-icon" href="favicon.ico">
<link rel="icon" sizes="16x16 32x32" type="image/x-icon" href="/ecp/emfforms/favicon.ico">
<link rel="icon" href="/ecp/emfforms/favicon.png">
<link rel="apple-touch-icon-precomposed" href="/ecp/emfforms/favicon.png">
<script>
window.syna = {
};
</script>
<script src="/ecp/emfforms/scripts/syna-head.min.0757f18970a0a32d5acac5a2accc5fe82f787821866c545d9ed17ca765f291a3.js"></script></head>
<body class="bg-secondary">
<!-- Navigation --><nav class="overlay fragment navbar navbar-expand-lg py-2 scroll-spy bg-light navbar-light" id="nav" role="navigation">
<div class="container">
<a class="navbar-brand py-0" href="/ecp/emfforms/#">
<img src="/ecp/emfforms/images/logo.png" height="35" class="d-inline-block align-top" alt="EMF Forms">
</a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarCollapse" aria-controls="navbarCollapse" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="navbar-collapse justify-content-end collapse show" id="navbarCollapse">
<ul class="navbar-nav"><li class="nav-item">
<a href="/ecp/emfforms/"
class="nav-link">
Home
</a>
</li><li class="nav-item">
<a href="/ecp/emfforms/gettingstarted"
class="nav-link">
Getting started
</a>
</li><li class="nav-item">
<a href="/ecp/emfforms/support"
class="nav-link">
Support
</a>
</li><li class="nav-item">
<a href="/ecp/emfforms/documentation"
class="nav-link">
Documentation
</a>
</li><li class="nav-item">
<a href="/ecp/emfforms/downloads"
class="nav-link">
Downloads
</a>
</li><li class="nav-item">
<a href="/ecp/emfforms/gettinginvolved"
class="nav-link">
Getting Involved
</a>
</li><li class="nav-item">
<a href="/ecp/emfforms/contact"
class="nav-link">
Contact
</a>
</li><li class="nav-item">
<a href="https://git.eclipse.org/r/plugins/gitiles/emfclient/org.eclipse.emf.ecp.core"
class="nav-link">
Git
</a>
</li>
</ul>
</div>
</div>
</nav>
<div class="scroll-to-top bg-primary has-font-icon"
title="Back to top"
><i class="fas fa-angle-up"></i><span class="sr-only">Back to top</span>
</div>
<!-- Hero -->
<header id="hero" class="fragment hero">
<div style=""class="jumbotron text-center mb-0 bg-dark">
<div id="hero-particles-js" class="hero-particles particles-js"></div>
<div class="hero-image-container row justify-content-center align-items-start">
<img
class="hero-image overlay img-fluid"
src="/ecp/emfforms/images/emfformsdemo.gif"
alt="EMF Forms"
style="width: 600px !important;"
></img>
</div>
<div class="hero-subtitle-container row justify-content-center align-items-start">
<h1 class="hero-subtitle overlay jumbotron-heading my-4 text-white">EMF Forms / EMF Client Platform</h1>
</div><div class="hero-buttons">
<a class="overlay btn btn-lg m-2 btn-primary " href="/ecp/emfforms/#components">
<div class="column justify-content-center align-content-center">Components</div>
</a>
<a class="overlay btn btn-lg m-2 btn-primary " href="/ecp/emfforms/contact">
<div class="column justify-content-center align-content-center">Contact</div>
</a>
<a class="overlay btn btn-lg m-2 btn-primary " href="/ecp/emfforms/support">
<div class="column justify-content-center align-content-center">Support</div>
</a>
<a class="overlay btn btn-lg m-2 btn-primary " href="https://eclipsesource.com/blogs/tutorials/getting-started-with-EMF-Forms/">
<div class="column justify-content-center align-content-center">Getting started</div>
</a>
</div>
</div>
</header><script>
var fragmentName = "hero";window.syna.api.register("hero", "hero-" + fragmentName, {
selector: "hero-particles-js",
config: null,
});
</script>
<!-- Content -->
<section id="overview" class="fragment content-fragment">
<div class="container-fluid bg-white overlay">
<div class="container py-5 overlay">
<div class="row">
<article class="col-md-12">
<div class="title-container row mx-0">
<div class="title col px-0 text-center text-body">
<h2>Are you still manually coding UIs?</h2>
</div>
</div>
<div class="content-body col-12 content px-0 text-body"><p style='text-align: center;'>
EMF Forms and the EMF Client Platform provide a new way of developing UIs. Instead of manually coding form-based layouts, trees or tables, it allows you to describe the UI with a simple model instead of with code. The approach allows you to more efficiently produce and iteratively refine data-centric UIs that conform to a uniform look and feel. This also lowers the technical entry barrier to creating form-based UIs. The UI description is interpreted by a rendering engine and allows you to switch between the UI technology stack e.g. to the web - just by replacing the renderer.</p></div>
</article>
</div>
</div>
</div>
</section>
<!-- Items -->
<section id="components" class="fragment ">
<div class="container-fluid bg-white ">
<div class="container py-5 ">
<div class="title-container row mx-0">
<div class="title col px-0 text-center text-body">
<h2>Components</h2>
</div>
</div>
<div class="row justify-content-center align-items-stretch items">
<div class="col-md-4 d-flex flex-column">
<div class="col justify-content-between d-flex flex-column header">
<div class="row image justify-content-center align-items-center">
<span class="fa-stack fa-3x m-2" title="Form-based CRUD UIs">
<i class="fas fa-circle fa-stack-2x text-primary"></i>
<i class="fab fa-wpforms fa-stack-1x fa-inverse"></i>
<span class="sr-only">Form-based CRUD UIs</span>
</span>
</div>
<div class="row justify-content-center text-center">
<h4 class="mb-3 text-body">Form-based CRUD UIs</h4></div>
</div>
<div class="row justify-content-center text-center p-2">
<div class=" text-body">
<p>EMF Forms supports the creation of form-based UIs without any manual coding. Declaratily describe your forms using a simple model, preview the results and integrate the rendered result into any application within minutes! Ensure that your UIs support professional layouting, validation and rule-based visbility without any manual effort.</p>
</div>
</div>
</div>
<div class="col-md-4 d-flex flex-column">
<div class="col justify-content-between d-flex flex-column header">
<div class="row image justify-content-center align-items-center">
<span class="fa-stack fa-3x m-2" title="Form creation tooling">
<i class="fas fa-circle fa-stack-2x text-primary"></i>
<i class="fas fa-tools fa-stack-1x fa-inverse"></i>
<span class="sr-only">Form creation tooling</span>
</span>
</div>
<div class="row justify-content-center text-center">
<h4 class="mb-3 text-body">Form creation tooling</h4></div>
</div>
<div class="row justify-content-center text-center p-2">
<div class=" text-body">
<p>EMF Forms provides powerful tooling for the creation, evolution and maintainence of UIs for a very fast turn-around. It allows you to generate a first version directly from the underlying data model. Based on the intial state you can iterativly refine the UI in a visual editor including a preview, drag and drop and support for advanced elements such as rule-based visibility.</p>
</div>
</div>
</div>
<div class="col-md-4 d-flex flex-column">
<div class="col justify-content-between d-flex flex-column header">
<div class="row image justify-content-center align-items-center">
<span class="fa-stack fa-3x m-2" title="Tables, Trees and Editors">
<i class="fas fa-circle fa-stack-2x text-primary"></i>
<i class="fas fa-table fa-stack-1x fa-inverse"></i>
<span class="sr-only">Tables, Trees and Editors</span>
</span>
</div>
<div class="row justify-content-center text-center">
<h4 class="mb-3 text-body">Tables, Trees and Editors</h4></div>
</div>
<div class="row justify-content-center text-center p-2">
<div class=" text-body">
<p>EMF Forms provides components and APIs to implement complex UI elements such as tables, trees and editors to modify your domain data. Please have a look at the <a href="https://eclipsesource.com/blogs/2018/01/31/emf-forms-1-15-0-feature-enhanced-table-renderer/">EMF Forms table framework</a>, the <a href="https://eclipsesource.com/blogs/tutorials/emf-forms-view-model-elements/#treemasterdetail">EMF Forms tree renderer</a> and the <a href="https://eclipsesource.com/blogs/tutorials/emf-forms-editors">EMF Forms Editors</a>.</p>
</div>
</div>
</div></div>
</div>
</div>
</section>
<!-- Items -->
<section id="features" class="fragment ">
<div class="container-fluid bg-white ">
<div class="container py-5 ">
<div class="title-container row mx-0">
<div class="title col px-0 text-center text-body">
<h2>Features</h2>
</div>
</div>
<div class="row justify-content-center align-items-stretch items">
<div class="col-md-4 d-flex flex-column">
<div class="col justify-content-between d-flex flex-column header">
<div class="row image justify-content-center align-items-center">
<span class="fa-stack fa-3x m-2" title="Professional UIs">
<i class="fas fa-circle fa-stack-2x text-primary"></i>
<i class="fas fa-user-tie fa-stack-1x fa-inverse"></i>
<span class="sr-only">Professional UIs</span>
</span>
</div>
<div class="row justify-content-center text-center">
<h4 class="mb-3 text-body">Professional UIs</h4></div>
</div>
<div class="row justify-content-center text-center p-2">
<div class=" text-body">
<p><b><p>Powerful layouting</p></p>
<p>Ensures homogeneous UI</p>
<p>Input Validation</p>
<p>Rule-based Visibility and Enablement</p></b>
</div>
</div>
</div>
<div class="col-md-4 d-flex flex-column">
<div class="col justify-content-between d-flex flex-column header">
<div class="row image justify-content-center align-items-center">
<span class="fa-stack fa-3x m-2" title="Customizable and Extensible">
<i class="fas fa-circle fa-stack-2x text-primary"></i>
<i class="fa fa-screwdriver fa-stack-1x fa-inverse"></i>
<span class="sr-only">Customizable and Extensible</span>
</span>
</div>
<div class="row justify-content-center text-center">
<h4 class="mb-3 text-body">Customizable and Extensible</h4></div>
</div>
<div class="row justify-content-center text-center p-2">
<div class=" text-body">
<p><b><p>Adaptable rendering</p></p>
<p>Domain-specific form elements</p>
<p>Integrate custom controls</p>
<p>Design your styling</p></b>
</div>
</div>
</div>
<div class="col-md-4 d-flex flex-column">
<a href="https://jsonforms.io" class="col justify-content-between d-flex flex-column header text-body">
<div class="row image justify-content-center align-items-center">
<span class="fa-stack fa-3x m-2" title="Web UIs">
<i class="fas fa-circle fa-stack-2x text-primary"></i>
<i class="fab fa-html5 fa-stack-1x fa-inverse"></i>
<span class="sr-only">Web UIs</span>
</span>
</div>
<div class="row justify-content-center text-center">
<h4 class="mb-3 text-body">Web UIs</h4></div>
</a>
<div class="row justify-content-center text-center p-2">
<div class=" text-body">
<p><b><p>Web renderer available</p></p>
<p>Migrate or single source desktop UIs to the web</p>
<p>React, Angular and Ionic</p>
<p>Provided by <a href="https://jsonforms.io">JSON Forms</a></p></b>
</div>
</div>
</div></div>
</div>
</div>
</section>
<!-- Footer -->
<section id="footer" class="fragment ">
<div class="container-fluid bg-light ">
<div class="container py-5 ">
<div class="row">
<div class="col-md m-2 text-body">
<h4></h4>
<a href="#">
<img src="/ecp/emfforms/images/logo.png" class="img-fluid w-50" alt="EMF Forms">
</a>
<div class="row justify-content-left ml-0">
<span class="fa-stack fa-2x mt-3 mr-1" title="twitter">
<a href="https://twitter.com/emfforms" class="ignore-color-change">
<i class="fas fa-circle fa-stack-2x"></i>
<i class="fab fa-twitter fa-stack-1x fa-fw text-light"></i>
<span class="sr-only">twitter</span>
</a>
</span>
<span class="fa-stack fa-2x mt-3 mr-1" title="forum">
<a href="http://www.eclipse.org/forums/index.php/f/19/" class="ignore-color-change">
<i class="fas fa-circle fa-stack-2x"></i>
<i class="far fa-comments fa-stack-1x fa-fw text-light"></i>
<span class="sr-only">forum</span>
</a>
</span>
<span class="fa-stack fa-2x mt-3 mr-1" title="Git">
<a href="https://git.eclipse.org/r/plugins/gitiles/emfclient/org.eclipse.emf.ecp.core" class="ignore-color-change">
<i class="fas fa-circle fa-stack-2x"></i>
<i class="fab fa-github fa-stack-1x fa-fw text-light"></i>
<span class="sr-only">Git</span>
</a>
</span>
</div>
</div>
<div class="col-md m-2 text-body">
<h4>Related Projects</h4>
<ul class="nav flex-column">
<li class="nav-item">
<a class="nav-link p-0 display-5" href="https://emf.cloud">EMF Cloud</a>
</li>
<li class="nav-item">
<a class="nav-link p-0 display-5" href="https://eclipse.org/ecp">EMF Forms</a>
</li>
<li class="nav-item">
<a class="nav-link p-0 display-5" href="https://jsonforms.io">JSON Forms</a>
</li>
</ul>
</div>
<div class="col-md m-2 text-body">
<div><h4 id="emf-forms--emf-client-platform">EMF Forms / EMF Client Platform</h4>
<p>EMF Forms / EMF Client Platform is a project hosted at the Eclipse Foundation, lead by <a href="https://projects.eclipse.org/projects/modeling.emft.emf-client/who">Eugen Neufeld</a>, <a href="https://projects.eclipse.org/projects/modeling.emft.emf-client/who">Johannes Faltermeier</a>, <a href="https://projects.eclipse.org/projects/modeling.emft.emf-client/who">Jonas Helming</a> and <a href="https://projects.eclipse.org/projects/modeling.emft.emf-client/who">Maximilian Koegel</a>.</p>
</div>
</div>
</div>
</div>
</div>
</section>
<!-- Copyright -->
<footer class="overlay fragment container-fluid bg-secondary" id="copyright">
<div class="container">
<div class="row py-3">
<div class="col-md">
<div class="row mx-0 my-2 justify-content-center text-center text-lg-none text-black-50">
<div class="row mx-0 mr-lg-auto justify-content-center">
<div class="col-auto px-1 copyright-legal">© Copyright&nbsp;2021</div>
<div class="col-auto px-0 copyright-by"> by Eclipse Foundation</div>
</div>
</div>
</div>
<div class="col-md">
<div class="row mx-0 my-2 justify-content-center">
<ul class="nav ml-lg-auto">
<li class="nav-item">
<a class="nav-link py-0" href="https://projects.eclipse.org/projects/modeling.emft.emf-client"
>About</a>
</li>
<li class="nav-item">
<a class="nav-link py-0" href="https://www.eclipse.org/legal/privacy.php"
>Privacy Policy</a>
</li>
<li class="nav-item">
<a class="nav-link py-0" href="https://www.eclipse.org/legal/termsofuse.php"
>Terms of Use</a>
</li>
<li class="nav-item">
<a class="nav-link py-0" href="https://www.eclipse.org/legal/copyright.php"
>Copyright</a>
</li>
<li class="nav-item">
<a class="nav-link py-0" href="https://www.eclipse.org/legal/"
>Legal</a>
</li>
</ul>
</div>
</div>
</div>
</div>
</footer>
<div id="react"></div>
<!-- Theme Code -->
<script async defer src="/ecp/emfforms/scripts/syna-main.min.68ae1ae47948304c9c224cfc1a97ffe16c57514bc587dd6140dcb82389a8d299.js"></script>
<script async defer src="/ecp/emfforms/scripts/syna-hero.min.97a3fff0c67d9da74ebdd6af2640d8a9cde6200539e8c3b2c091b7fc6644420e.js"></script>
<script async defer src="/ecp/emfforms/scripts/syna-content.min.bf537eb5ace369e45e8b4ed41b8d235a65db92236a400ed5659f7a3c41d0f221.js"></script>
</body>
</html>