CDO Model Repository

CDO Model Repository

Tom Schindl [email protected] http://www.bestsolution.at http://tomsondev.bestsolution.at Innsbruck, Austria UFaceKit – Uniform UI Development Eclipse Summit Europe Wednesday, October 27, 2009 UFaceKit – About Me . Founder and Owner of BestSolution.at . Eclipse Committer . Platform UI . e4 . EMF . Projectlead . Nebula . UFaceKit UFaceKit © 2009 by Tom Schindl – BestSolution.at, Innsbruck, Austria. Made available under the EPL v1.0 UFaceKit – Mission . Promote Eclipse Databinding to outside Eclipse Communities . Making it available on other platforms . Providing implementations for Swing, Qt, GWT . Provide Toolkit Neutral Widget-API . Using Declartive Approaches . Using Reflective API similar to EObject from EMF UFaceKit © 2009 by Tom Schindl – BestSolution.at, Innsbruck, Austria. Made available under the EPL v1.0 UFaceKit – Motivation . Switching between technologies requires to learn different APIs . E.g. Swing-MVC vs. JFace . Write Form UI once and make it look native on different platforms . E.g. Configuration Dialog in Netbeans and Eclipse UFaceKit © 2009 by Tom Schindl – BestSolution.at, Innsbruck, Austria. Made available under the EPL v1.0 UFaceKit – Project structure . Make all parts consumeable on its ow n . Inside / outside OSGi . Use Swing Databinding without buying in the abstraction API provided UFaceKit © 2009 by Tom Schindl – BestSolution.at, Innsbruck, Austria. Made available under the EPL v1.0 UFaceKit – Project structure Eclipse Databinding Viewers SWT-DB Swing-DB GWT-DB SWT Swing GWT UForm-API SWT Swing GWT UFaceKit-API Ecore-Model UFaceKit © 2009 by Tom Schindl – BestSolution.at, Innsbruck, Austria. Made available under the EPL v1.0 UFaceKit – API Design . Factory Pattern . Reflective Widget API . Attributes accessable w ithout reflection e.g. text.set(ITextProperty.TEXT,“Hello“) . Using of interfaces . e.g. ITextPropertyOwner, ... Usage of Java Language Features . JFace-Viewers with typesafety UFaceKit © 2009 by Tom Schindl – BestSolution.at, Innsbruck, Austria. Made available under the EPL v1.0 UFaceKit – Example code SWT-UI JFaceFactory factory = new JFaceFactory(); window = factory.newApplicationWindow( desktop, new UIApplicationWindow.ApplicationWindowUIInfo(factory.newFillLayout())); UIComposite mainComposite = rootFactory.newComposite( window, new UIComposite.CompositeUIInfo(null,rootFactory.newGridLayout(3,false))); Qt-UI QTFactory factory = new QTFactory(); window = factory.newApplicationWindow( desktop, new UIApplicationWindow.ApplicationWindowUIInfo(factory.newFillLayout())); UIComposite mainComposite = rootFactory.newComposite( window, new UIComposite.CompositeUIInfo(null,rootFactory.newGridLayout(3,false))); UFaceKit © 2009 by Tom Schindl – BestSolution.at, Innsbruck, Austria. Made available under the EPL v1.0 UFaceKit – Declarative Styling . UFaceKit enforces declarative s tyling . No setBackground-method . No setFont-method . … . Advantage of UfaceKit-Styling . Take advantage of the platform support (e.g. Qt has direct CSS-Support) UFaceKit © 2009 by Tom Schindl – BestSolution.at, Innsbruck, Austria. Made available under the EPL v1.0 UFaceKit – Declarative Styling . Styling DSL is plugable . CSS . USML (a very very simple XML Description of styles) <?xml version="1.0" encoding="UTF-8"?> <styles> <style type="element" element-name="UILabel"> <attribute name="color" value="#646464"/> </style> <style type="class" class-name="white_sep"> <attribute name="background-color" value="#646464"/> <attribute name="margin-top" value='20px'/> </style> </styles> UFaceKit © 2009 by Tom Schindl – BestSolution.at, Innsbruck, Austria. Made available under the EPL v1.0 UFaceKit – Extra Features . Declarative Style . style classes . style ids . style by element . Specials . Pseudo-classes like Focus, Hover . CSS-Selector like UFaceKit © 2009 by Tom Schindl – BestSolution.at, Innsbruck, Austria. Made available under the EPL v1.0 UFaceKit – Extra Features . Xpath Queries to Walk the widget- tree XPathContextFactory<UIWidget> factory = UFacekitXPathContextFactory.newInstance(); XPathContext context = factory.newContext(containerComposite); Iterator<?> iterator = context.iterate(„/label“); for (Iterator<?> it = iterator; it.hasNext();) { UIControl control = (UIControl)it.next(); control.getStyle().setBackgroundColor("red"); } . JSON-Serialisation (e.g. useable for Testing) UFaceKit © 2009 by Tom Schindl – BestSolution.at, Innsbruck, Austria. Made available under the EPL v1.0 UFaceKit – Usage of EMF . Load UI From Model EMF-UI- UFaceKit-UI- Instance Instance M2M-Transformation UFaceKit © 2009 by Tom Schindl – BestSolution.at, Innsbruck, Austria. Made available under the EPL v1.0 UFaceKit – Usage of EMF . Backup the UI with EMF EMF-UI- UFaceKit-UI- Instance Instance M2M-Transformation + Binding UFaceKit © 2009 by Tom Schindl – BestSolution.at, Innsbruck, Austria. Made available under the EPL v1.0 UFaceKit – Web . Support for . Plain GWT (Viewers, Observables) . SmartClient (Viewers, Observables) . Own Wrapper based upon Qooxdoo UFaceKit © 2009 by Tom Schindl – BestSolution.at, Innsbruck, Austria. Made available under the EPL v1.0 UFaceKit - Resources . Open Source . www.eclipse.org/ufacekit . www.ufacekit.org . Commerical Support . www.bestsolution.at UFaceKit © 2009 by Tom Schindl – BestSolution.at, Innsbruck, Austria. Made available under the EPL v1.0 THE END.

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    17 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us