Skip to main content

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.

Jump to: navigation, search

Difference between revisions of "Incubator/Platform/UFacekit"

(Redirecting to Eclipse/Incubator/UFacekit)
 
(28 intermediate revisions by the same user not shown)
Line 1: Line 1:
==Introduction==
+
#REDIRECT [[Eclipse/Incubator/UFacekit]]
[http://code.google.com/p/uface/ UFacekit] is a proposed open source component under the Eclipse Incubator Platform component. 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
+
 
+
This proposal is in the [http://www.eclipse.org/projects/dev_process/development_process.php Project Proposal Phase] and and is written to declare its intent and scope. This proposal is written to solicit additional participation and input from the Eclipse community. You are invited to comment on and/or join the effort.
+
 
+
==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
+
* Observable implementations for Swing
+
** JFace-Viewers for Structured-Swing-Controls (List, Table, Tree)
+
* 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 (EMF-Model/CSS)
+
 
+
==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, ...).
+
 
+
[[Image:UFaceKitUML.png|1000px]]
+
 
+
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:
+
 
+
<source lang="java">
+
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);
+
}
+
</source>
+
 
+
An EMF-Example:
+
 
+
<source lang="java">
+
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);
+
}
+
</source>
+
 
+
===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
+
 
+
[[Image:UFaceSWT.png]]
+
 
+
Swing
+
 
+
[[Image:UFaceSwing.png]]
+
 
+
MyGWT (ancient and has to be rewritten)
+
 
+
[[Image:UFaceMyGWT.jpg]]
+
 
+
==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===
+
[http://code.google.com/p/uface/ UFacekit-Project]
+
 
+
===Interested Parties===
+
Anyware Technologies
+
 
+
==Tentative Plan==
+
Q4 - 2008: A first not feature complete release
+
 
+
Q1 - 2009: First public release
+

Latest revision as of 17:08, 7 October 2008

Back to the top