![Page 1: Ajax In Action 2008 - Gui Development With qooxdoo](https://reader033.vdocument.in/reader033/viewer/2022061220/54bba9f44a79593f368b457a/html5/thumbnails/1.jpg)
colorstrip.gifT
Web GUI-Development with qooxdoo
Fabian Jakobs1&1 Internet AG
THE NEW ERA OF WEB DEVELOPMENT
Ajax in Action29. Oktober 2008
![Page 2: Ajax In Action 2008 - Gui Development With qooxdoo](https://reader033.vdocument.in/reader033/viewer/2022061220/54bba9f44a79593f368b457a/html5/thumbnails/2.jpg)
Overview
• Evolution of AJAX
• How Single Page Applications are different
• How qooxdoo can help
![Page 3: Ajax In Action 2008 - Gui Development With qooxdoo](https://reader033.vdocument.in/reader033/viewer/2022061220/54bba9f44a79593f368b457a/html5/thumbnails/3.jpg)
HTML only
![Page 4: Ajax In Action 2008 - Gui Development With qooxdoo](https://reader033.vdocument.in/reader033/viewer/2022061220/54bba9f44a79593f368b457a/html5/thumbnails/4.jpg)
HTML + JavaScript
![Page 5: Ajax In Action 2008 - Gui Development With qooxdoo](https://reader033.vdocument.in/reader033/viewer/2022061220/54bba9f44a79593f368b457a/html5/thumbnails/5.jpg)
HTML + AJAX
+JS
![Page 6: Ajax In Action 2008 - Gui Development With qooxdoo](https://reader033.vdocument.in/reader033/viewer/2022061220/54bba9f44a79593f368b457a/html5/thumbnails/6.jpg)
+JS +AJAX
moreAJAX
longerpage load
![Page 8: Ajax In Action 2008 - Gui Development With qooxdoo](https://reader033.vdocument.in/reader033/viewer/2022061220/54bba9f44a79593f368b457a/html5/thumbnails/8.jpg)
+JS +AJAXSinglePage
![Page 9: Ajax In Action 2008 - Gui Development With qooxdoo](https://reader033.vdocument.in/reader033/viewer/2022061220/54bba9f44a79593f368b457a/html5/thumbnails/9.jpg)
+JS +AJAXSinglePage
![Page 10: Ajax In Action 2008 - Gui Development With qooxdoo](https://reader033.vdocument.in/reader033/viewer/2022061220/54bba9f44a79593f368b457a/html5/thumbnails/10.jpg)
+JS +AJAXSinglePage
Reach
Interactivity
![Page 11: Ajax In Action 2008 - Gui Development With qooxdoo](https://reader033.vdocument.in/reader033/viewer/2022061220/54bba9f44a79593f368b457a/html5/thumbnails/11.jpg)
Single Page Applications are Different
+JS +AJAX
SinglePage
![Page 12: Ajax In Action 2008 - Gui Development With qooxdoo](https://reader033.vdocument.in/reader033/viewer/2022061220/54bba9f44a79593f368b457a/html5/thumbnails/12.jpg)
Why?
![Page 13: Ajax In Action 2008 - Gui Development With qooxdoo](https://reader033.vdocument.in/reader033/viewer/2022061220/54bba9f44a79593f368b457a/html5/thumbnails/13.jpg)
Expectations
„If it looks like a desktop application it should feel like a desktop application!“
![Page 14: Ajax In Action 2008 - Gui Development With qooxdoo](https://reader033.vdocument.in/reader033/viewer/2022061220/54bba9f44a79593f368b457a/html5/thumbnails/14.jpg)
Client liberation
• Code is run in the client
• Client/server communication style changes
• Client can maintain state
![Page 15: Ajax In Action 2008 - Gui Development With qooxdoo](https://reader033.vdocument.in/reader033/viewer/2022061220/54bba9f44a79593f368b457a/html5/thumbnails/15.jpg)
But:Theming Still Matters!
![Page 16: Ajax In Action 2008 - Gui Development With qooxdoo](https://reader033.vdocument.in/reader033/viewer/2022061220/54bba9f44a79593f368b457a/html5/thumbnails/16.jpg)
+JS +AJAXSinglePage
Client code explodes
HTML CSS JavaScript
![Page 17: Ajax In Action 2008 - Gui Development With qooxdoo](https://reader033.vdocument.in/reader033/viewer/2022061220/54bba9f44a79593f368b457a/html5/thumbnails/17.jpg)
You Need a Framework!
![Page 18: Ajax In Action 2008 - Gui Development With qooxdoo](https://reader033.vdocument.in/reader033/viewer/2022061220/54bba9f44a79593f368b457a/html5/thumbnails/18.jpg)
qooxdoo
![Page 19: Ajax In Action 2008 - Gui Development With qooxdoo](https://reader033.vdocument.in/reader033/viewer/2022061220/54bba9f44a79593f368b457a/html5/thumbnails/19.jpg)
qooxdoo
• Cross browser
• JavaScript based RIA framework
• Open Source
• powered by
![Page 20: Ajax In Action 2008 - Gui Development With qooxdoo](https://reader033.vdocument.in/reader033/viewer/2022061220/54bba9f44a79593f368b457a/html5/thumbnails/20.jpg)
How does qooxdoo help?
• UI-Expectations
• Theming
• Code Size
![Page 21: Ajax In Action 2008 - Gui Development With qooxdoo](https://reader033.vdocument.in/reader033/viewer/2022061220/54bba9f44a79593f368b457a/html5/thumbnails/21.jpg)
Expectations
![Page 22: Ajax In Action 2008 - Gui Development With qooxdoo](https://reader033.vdocument.in/reader033/viewer/2022061220/54bba9f44a79593f368b457a/html5/thumbnails/22.jpg)
Swing/Qt/Cocoafor the Web
![Page 23: Ajax In Action 2008 - Gui Development With qooxdoo](https://reader033.vdocument.in/reader033/viewer/2022061220/54bba9f44a79593f368b457a/html5/thumbnails/23.jpg)
qooxdoo Architecture
Core (JavaScript OOP)
BOM (Cross Browser Code)
EventAnim.HTML
UI Core(Rendering Engine)
Widgets
![Page 24: Ajax In Action 2008 - Gui Development With qooxdoo](https://reader033.vdocument.in/reader033/viewer/2022061220/54bba9f44a79593f368b457a/html5/thumbnails/24.jpg)
Widgets
![Page 25: Ajax In Action 2008 - Gui Development With qooxdoo](https://reader033.vdocument.in/reader033/viewer/2022061220/54bba9f44a79593f368b457a/html5/thumbnails/25.jpg)
How would you layout this with CSS?
![Page 26: Ajax In Action 2008 - Gui Development With qooxdoo](https://reader033.vdocument.in/reader033/viewer/2022061220/54bba9f44a79593f368b457a/html5/thumbnails/26.jpg)
Absolute positioning!
![Page 27: Ajax In Action 2008 - Gui Development With qooxdoo](https://reader033.vdocument.in/reader033/viewer/2022061220/54bba9f44a79593f368b457a/html5/thumbnails/27.jpg)
Layout Manager
• Calculate layout in JavaScript
• Not limited by the browser
• JavaScript is fast enough
![Page 28: Ajax In Action 2008 - Gui Development With qooxdoo](https://reader033.vdocument.in/reader033/viewer/2022061220/54bba9f44a79593f368b457a/html5/thumbnails/28.jpg)
Layout Manager
• Calculate layout in JavaScript
• Not limited by the browser
• JavaScript is fast enough
VBox
![Page 29: Ajax In Action 2008 - Gui Development With qooxdoo](https://reader033.vdocument.in/reader033/viewer/2022061220/54bba9f44a79593f368b457a/html5/thumbnails/29.jpg)
Layout Manager
• Calculate layout in JavaScript
• Not limited by the browser
• JavaScript is fast enough
VBox
![Page 30: Ajax In Action 2008 - Gui Development With qooxdoo](https://reader033.vdocument.in/reader033/viewer/2022061220/54bba9f44a79593f368b457a/html5/thumbnails/30.jpg)
Layout Manager
• Calculate layout in JavaScript
• Not limited by the browser
• JavaScript is fast enough
VBox
![Page 31: Ajax In Action 2008 - Gui Development With qooxdoo](https://reader033.vdocument.in/reader033/viewer/2022061220/54bba9f44a79593f368b457a/html5/thumbnails/31.jpg)
Layout Manager
• Calculate layout in JavaScript
• Not limited by the browser
• JavaScript is fast enough
VBoxGrid
![Page 32: Ajax In Action 2008 - Gui Development With qooxdoo](https://reader033.vdocument.in/reader033/viewer/2022061220/54bba9f44a79593f368b457a/html5/thumbnails/32.jpg)
Layout Manager
• Calculate layout in JavaScript
• Not limited by the browser
• JavaScript is fast enough
VBoxGrid
![Page 33: Ajax In Action 2008 - Gui Development With qooxdoo](https://reader033.vdocument.in/reader033/viewer/2022061220/54bba9f44a79593f368b457a/html5/thumbnails/33.jpg)
Desktop StyleDevelopment Model
// Create a button
var button1 = new qx.ui.form.Button("First Button", "demo/browser.png");
// Add button to container at fixed coordinates
container.add(button1, {left: 100, top: 50});
// Add an event listener
button1.addListener("execute", function(e) {
alert("Hello World!");
});
![Page 34: Ajax In Action 2008 - Gui Development With qooxdoo](https://reader033.vdocument.in/reader033/viewer/2022061220/54bba9f44a79593f368b457a/html5/thumbnails/34.jpg)
Theming Matters!
![Page 35: Ajax In Action 2008 - Gui Development With qooxdoo](https://reader033.vdocument.in/reader033/viewer/2022061220/54bba9f44a79593f368b457a/html5/thumbnails/35.jpg)
Theming
• 4 images
![Page 36: Ajax In Action 2008 - Gui Development With qooxdoo](https://reader033.vdocument.in/reader033/viewer/2022061220/54bba9f44a79593f368b457a/html5/thumbnails/36.jpg)
Theming
• 4 images
![Page 37: Ajax In Action 2008 - Gui Development With qooxdoo](https://reader033.vdocument.in/reader033/viewer/2022061220/54bba9f44a79593f368b457a/html5/thumbnails/37.jpg)
Theming
• 4 images
![Page 38: Ajax In Action 2008 - Gui Development With qooxdoo](https://reader033.vdocument.in/reader033/viewer/2022061220/54bba9f44a79593f368b457a/html5/thumbnails/38.jpg)
Theming
• 4 images
![Page 39: Ajax In Action 2008 - Gui Development With qooxdoo](https://reader033.vdocument.in/reader033/viewer/2022061220/54bba9f44a79593f368b457a/html5/thumbnails/39.jpg)
Theming
• 4 images
• 30 lines configuration
![Page 40: Ajax In Action 2008 - Gui Development With qooxdoo](https://reader033.vdocument.in/reader033/viewer/2022061220/54bba9f44a79593f368b457a/html5/thumbnails/40.jpg)
Theming
• 4 images
• 30 lines configuration
• 80 lines theme
"calc-button" : {
style: function(states)
{
return {
decorator: states.pressed ?
"deco-button-pressed" :
"deco-button",
center: true,
padding: [2, 8]
}
}
}
![Page 41: Ajax In Action 2008 - Gui Development With qooxdoo](https://reader033.vdocument.in/reader033/viewer/2022061220/54bba9f44a79593f368b457a/html5/thumbnails/41.jpg)
Theming
• 4 images
• 30 lines configuration
• 80 lines theme
"calc-button" : {
style: function(states)
{
return {
decorator: states.pressed ?
"deco-button-pressed" :
"deco-button",
center: true,
padding: [2, 8]
}
}
}
"deco-button": {
decorator: qx.ui.decoration.Grid,
style: {
baseImage: "calc/theme/button.png",
insets: [3, 3, 5, 3]
}
}
![Page 42: Ajax In Action 2008 - Gui Development With qooxdoo](https://reader033.vdocument.in/reader033/viewer/2022061220/54bba9f44a79593f368b457a/html5/thumbnails/42.jpg)
Theming
• 4 images
• 30 lines configuration
• 80 lines theme
• 60 minutes work
![Page 43: Ajax In Action 2008 - Gui Development With qooxdoo](https://reader033.vdocument.in/reader033/viewer/2022061220/54bba9f44a79593f368b457a/html5/thumbnails/43.jpg)
Theming
![Page 44: Ajax In Action 2008 - Gui Development With qooxdoo](https://reader033.vdocument.in/reader033/viewer/2022061220/54bba9f44a79593f368b457a/html5/thumbnails/44.jpg)
Code Size
![Page 45: Ajax In Action 2008 - Gui Development With qooxdoo](https://reader033.vdocument.in/reader033/viewer/2022061220/54bba9f44a79593f368b457a/html5/thumbnails/45.jpg)
JavaScript OOPqx.Class.define("demo.Person",
{
extend : qx.core.Object,
construct : function(firstName, lastName)
{
! this.base(arguments);!
!
! this._firstName = firstName;
! this._lastName = lastName;
},
members :
{
getFullName : function() {
return this._firstName + " " + this._lastName;
}
}
});
![Page 46: Ajax In Action 2008 - Gui Development With qooxdoo](https://reader033.vdocument.in/reader033/viewer/2022061220/54bba9f44a79593f368b457a/html5/thumbnails/46.jpg)
Linker
![Page 47: Ajax In Action 2008 - Gui Development With qooxdoo](https://reader033.vdocument.in/reader033/viewer/2022061220/54bba9f44a79593f368b457a/html5/thumbnails/47.jpg)
JavaScript Tooling
• Unit testing infrastructure
• API documentation generation
• JavaScript Lint
• ...
![Page 48: Ajax In Action 2008 - Gui Development With qooxdoo](https://reader033.vdocument.in/reader033/viewer/2022061220/54bba9f44a79593f368b457a/html5/thumbnails/48.jpg)
Use the right approach!
![Page 49: Ajax In Action 2008 - Gui Development With qooxdoo](https://reader033.vdocument.in/reader033/viewer/2022061220/54bba9f44a79593f368b457a/html5/thumbnails/49.jpg)
If a Single Page Application (RIA) is the
right choice...
![Page 50: Ajax In Action 2008 - Gui Development With qooxdoo](https://reader033.vdocument.in/reader033/viewer/2022061220/54bba9f44a79593f368b457a/html5/thumbnails/50.jpg)
... try qooxdoo!
![Page 51: Ajax In Action 2008 - Gui Development With qooxdoo](https://reader033.vdocument.in/reader033/viewer/2022061220/54bba9f44a79593f368b457a/html5/thumbnails/51.jpg)
Thank you.
Fabian Jakobs <[email protected]>http://qooxdoo.org
colorstrip.gifT
THE NEW ERA OF WEB DEVELOPMENT