Notice: This Wiki is now read only and edits are no longer possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.
Difference between revisions of "Incubator/Platform/UFacekit"
(→Background) |
(→Relationship with other Eclipse-based Projects) |
||
Line 103: | Line 103: | ||
* EMF (As a Databinding possibility, GWT support for EMF-Models) | * EMF (As a Databinding possibility, GWT support for EMF-Models) | ||
* E4 (SWT-Port for the web, create a class-lib for missing GWT-classes (e.g. Runnable) ) | * E4 (SWT-Port for the web, create a class-lib for missing GWT-classes (e.g. Runnable) ) | ||
+ | * Riena where some of the targets overlap (e.g. highlevel Databinding API) | ||
==Organization== | ==Organization== |
Revision as of 14:04, 10 September 2008
Contents
Introduction
UFacekit is a proposed open source component under the Eclipse Platform Incubator project. UFacekit's purpose is to:
- improve adoption of Eclipse Core technologies (like Eclipse-Databinding) outside RCP and SWT (e.g. Swing, GWT-Applications)
- improve usability of Eclipse-Databinding by providing a high-level Widget-API
Background
Since the 3.3 release Eclipse ships a top-notch databinding libary (Eclipse-Databinding) to ease development of UI-Application backed with a model. In time of 3.4 we saw adoption of Eclipse-Databinding in many RCP applications and new libraries supporting model implementations (EMF) beside JavaBeans(tm) but we didn't saw support for other Widget-Toolkit (like Swing, GWT, ...) although the main libary is designed to make this possible. This means that Eclipse-Databinding is not used in applications who are not using SWT and JFace although there's no good reason not to do so.
UFacekit was started a year ago by James Strachan and Tom Schindl (Angelo Zerr and Kenneth Westelinck joined the project later) with the following set of targets:
- promote reuse of rich UI code across Eclipse (JFace/SWT), GWT and Swing runtimes by providing a facade around different UI-Technologies
- promote the use of JFace Data Binding within GWT and Swing communities by providing Eclipse-Databinding-Observable implementations for them
- make accessible new applications stacks to EMF (e.g. Swing)
- simplify rich UI development by providing simpler facades and powerful binding
Scope
The objectives for an initial version of UFacekit are:
- a highlevel, widget-toolkit and model-indepent Widget API to easily bind widgets (including validation and decoration support)
- UI
- implementation for SWT/JFace
- implementation for Swing
- Model
- JavaBeans
- EObjects (EMF)
- UBeans
- UI
- Observable implementations for Swing
- Observable implementations for UBean
- Observable implementations for XML-DOM
- org.eclipse.core.databinding for use in GWT applications based upon current stable Eclipse release
- Observable implementations for GWT-Widgets
Additional functionality considered for later versions of UFacekit:
- GWT support for EMF-Core-Modules
- Support for Eclipse-Forms
- Support to define UI and UFacekit-Applications (Upplication) using EMF
- Support to design Upplications using GEF
- Support for other Java-UI-Toolkits (QT-Jambi, DOJO, ...)
- Declarative Styling
UFacekit Design
UFacekit is designed in a modular way as OSGi-Bundles to use its subcomponents with a minimal set of dependencies. A developer only wants to use Eclipse-Databinding in his/her project she will only use the Swing-Observables-Bundle, if he/she only wants to use a light weight model implementation he/she only takes the UBean-Bundles.
As already mentionned all UFacekit deliverables are packaged as OSGi-Bundles. By following the OSGi-standards it can be used with any OSGi implementation following the standards (Felix, Knopplerfish, ...).
The above design makes the UI-code free from the Toolkit-Code and holds as few informations about the modeling technology used as possible (maybe this could be removed completely in the future).
An UBean-Example:
public void createUI(UIComposite root, UBeanForm form, IObservableValue value) { UIFactory ui = root.getFactory(); // The UI setup InputFieldUIInfo uiInfo = = new InputFieldUIInfo(GridLayoutData.fillHorizontalData(),InputFieldUIInfo.SIMPLE); UIInputField idField = ui.newInputField(detailComposite, uiInfo); // The Binding setup InputFieldBindingInfo bindingInfo = InputFieldBindingInfo.newTextFieldInfo(form.detailValue(Person.ID, int.class)); form.add(idField, bindingInfo); // Bind the master value form.bind(value); }
An EMF-Example:
public void createUI(UIComposite root, EMFForm form, IObservableValue value) { UIFactory ui = root.getFactory(); // The UI setup InputFieldUIInfo uiInfo = = new InputFieldUIInfo(GridLayoutData.fillHorizontalData(),InputFieldUIInfo.SIMPLE); UIInputField idField = ui.newInputField(detailComposite, uiInfo); // The Binding setup InputFieldBindingInfo bindingInfo = InputFieldBindingInfo.newTextFieldInfo(form.detailValue(PersonPackage.Literals.PERSON__ID, int.class)); form.add(idField, bindingInfo); // Bind the master value form.bind(value); }
Examples
Those Screenshots are made up with 100% the same code base the only thing different is the initial composite (the Shell used as a root) created.
SWT/JFace
Swing
MyGWT (ancient and has to be rewritten)
Relationship with other Eclipse-based Projects
UFacekit has a strong relation to the following projects:
- Eclipse-Databinding (Core & JFace) providing the foundation for the high-level API
- EMF (As a Databinding possibility, GWT support for EMF-Models)
- E4 (SWT-Port for the web, create a class-lib for missing GWT-classes (e.g. Runnable) )
- Riena where some of the targets overlap (e.g. highlevel Databinding API)
Organization
Initial Committers
- Tom Schindl - tom.schindl@bestsolution.at
- James Strachan
- Angelo Zerr
- Kenneth Westelinck
Initial Code Contribution
Interested Parties
Anyware Technologies
Tentative Plan
Q4 - 2008: A first not feature complete release
Q1 - 2009: First public release