Skip to main content

Notice: this Wiki will be going read only early in 2024 and edits will no longer be 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"

(Examples)
(Redirecting to Eclipse/Incubator/UFacekit)
 
(42 intermediate revisions by 6 users 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 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 easy 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 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
+
* 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
+
* 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:
+
* 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 without 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 from from the Toolkit-Code and holds as view informations about the modeling technology used.
+
 
+
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
+
==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===
+
 
+
==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