You are previewing qooxdoo.
O'Reilly logo
qooxdoo

Book Description

"

Develop Rich Internet Applications (RIA) with qooxdoo with this book and ebook

  • Become a competent Rich Internet Application developer in qooxdoo

  • Gain knowledge on core object oriented programming concepts in qooxdoo

  • Get a good understanding on design and implementation of RIA in qooxdoo

  • Learn to do unit testing and automation testing of your qooxdoo application

  • Develop an end to end application, Team Twitter, using qooxdoo client and Java server

In Detail

Over the past few years, all the major internet or enterprise applications are developed or migrated to Rich Internet Application to support all the features that are provided in the desktop applications. This helps organizations keep the end users happy and also improves application deployment and maintenance. qooxdoo is a stable, open source RIA framework. If you are waiting and watching for the right time to migrate your application to qooxdoo, this is the right time!

This book explains in detail about the rich user interface development in qooxdoo. It explains various concepts of qooxdoo framework in an easy to grasp and organized way, making it simple even for a novice in qooxdoo and also increases the competency level of the developer who is already working in qooxdoo.

This book helps developers understand the qooxdoo framework, setup the environment, and start the development of RIA using qooxdoo. You will learn the core programming techniques in qooxdoo, user interface development in qooxdoo, testing & debugging qooxdoo applications, internationalization of qooxdoo applications to multiple languages, customizing the look and feel of qooxdoo applications using Themes, Performance management, etc.

In the course of the book, we develop a complete application which will help the developer to understand the concepts better and to put things together to see the step-by-step progress to complete an application. By the end, this book will get the developer accustomed to the widgets and API available in the qooxdoo framework, and will enable him to design, develop, debug, and test the RIA in qooxdoo.

This book will take you through the various design and implementation concepts using qooxdoo. It helps you to develop Rich Internet Applications (RIA). qooxdoo 1.2 and qooxdoo are used to write this book.

"

Table of Contents

  1. qooxdoo
    1. qooxdoo
    2. Credits
    3. About the Authors
    4. About the Reviewers
    5. www.PacktPub.com
      1. Support files, eBooks, discount offers, and more
        1. Why Subscribe?
        2. Free Access for Packt account holders
    6. Preface
      1. What this book covers
      2. What you need for this book
      3. Who this book is for
      4. Conventions
      5. Time for action - heading
        1. What just happened?
        2. Pop quiz
      6. Reader feedback
      7. Customer support
        1. Downloading the example code
        2. Errata
        3. Piracy
        4. Questions
    7. 1. What is qooxdoo?
      1. A feel of an RIA developed in qooxdoo
      2. Time for action - play with the feed reader application
            1. Adding a feed to the feed reader
            2. Checking the feeds
        1. What just happened?
            1. User context
            2. Desktop characteristics
            3. GUI library
      3. Architecture of qooxdoo SDK
        1. Core layer
        2. Browser Abstraction layer
        3. Low-Level layer
        4. GUI Toolkit layer
        5. Data Binding
        6. Internationalization
      4. qooxdoo framework features
        1. Language
        2. Object-orientation
        3. Programming
        4. Internationalization
        5. API reference
        6. Testing
        7. Deployment
        8. Migration
        9. Alternative programming models
      5. Event-based rich UI programming
      6. GUI widget library
      7. Time for action - checking the demo browser and the playground applications
            1. Demo browser
            2. Playground
        1. What just happened?
      8. Application to be developed in this book—Team Twitter
      9. Time for action - checking the Team Twitter application
            1. Reading team tweets
            2. Logging in to the Team Twitter application
            3. Tweeting to the team
        1. What just happened?
      10. What you should know and what you don't need to know
        1. Pop quiz
      11. Summary
    8. 2. Say Hello to the qooxdoo World!
      1. Installing qooxdoo tools
      2. Time for action - installing qooxdoo tools
        1. Installing ActivePython
        2. Installing Cygwin
        3. What just happened?
      3. Installing qooxdoo SDK
      4. Time for action - installing qooxdoo SDK
            1. Application
            2. Component
            3. Documentation
            4. Framework
            5. Tool
        1. What just happened?
      5. Creating a simple qooxdoo application
      6. Time for action - creating a simple qooxdoo application
        1. What just happened?
            1. Source
              1. Build
              2. Manifest.json
              3. config.json
              4. generate.py
      7. Passing data to the server
        1. JSON standard format
        2. What just happened?
      8. Communicating with the server
        1. Setting up an RPC connection
        2. Making a call
          1. Request
          2. Response
        3. Aborting a call
        4. Error handling
        5. Cross-domain calls
        6. Parameter and result conversion
        7. What just happened?
      9. RPC servers
      10. Integrating with the Java server
      11. Time for action - integrating with the Java server
        1. Working with Eclipse IDE
        2. What just happened?
        3. Pop quiz
      12. Summary
    9. 3. Core Programming Concepts
      1. Code comments and API documentation
      2. Time for action - generating API documentation for Team Twitter
        1. What just happened?
      3. Object-oriented programming
        1. Object and class
        2. Encapsulation
        3. Inheritance
        4. Overriding
        5. Abstraction
        6. Polymorphism
      4. Interface
        1. Members
        2. Statics
        3. Properties
        4. Events
      5. Class
        1. Constructor and destructor
        2. Members
          1. Class members
          2. Instance members
        3. Types
          1. Static class
          2. Singleton class
          3. Abstract class
        4. Inheritance in qooxdoo
        5. Overriding in qooxdoo
      6. Mixin
        1. Defining a mixin
        2. Using a mixin in a class
      7. Time for action - writing classes for Team Twitter
        1. What just happened?
        2. Pop quiz-I
      8. qooxdoo properties
        1. Property initialization
        2. Predefined methods
        3. Property configurations
          1. Apply
          2. Check
          3. Validate
          4. Group
          5. Event—property level
        4. Property features
          1. Value checks
          2. Validation
          3. Convenience
          4. Notification
          5. Advanced value handling
          6. Performance
          7. Memory management
      9. Events—class level
        1. Declaring events for a class
        2. Adding listeners
        3. Firing an event
      10. Time for action - enhancing Team Twitter classes with properties
        1. What just happened?
        2. Pop quiz-II
      11. Summary
    10. 4. Working with Layouts and Menus
      1. Base classes for widgets
        1. qx.core.Object
          1. Object management
          2. Event handling
          3. Logging
        2. qx.core.LayoutItem
        3. qx.core.Widget
          1. Widget properties
        4. qx.application
      2. Containers
        1. Scroll
        2. Stack
        3. Resizer
        4. Composite
        5. Window
        6. Tabview
        7. Groupbox
      3. Layout managers
        1. Size hint of the widget and its parent widget
        2. Layout properties
        3. Auto sizing
        4. Growing or shrinking
        5. Overflow
          1. Basic
          2. Canvas
          3. Dock
          4. HBox
          5. VBox
          6. Flow
          7. Grid
      4. Time for action - designing layout managers for Team Twitter
        1. What just happened?
      5. Menu, MenuBar, and ToolBar
        1. Menu
          1. Menu creation
        2. MenuBar
        3. ToolBar
        4. Pop quiz
      6. Summary
    11. 5. Working with Widgets
      1. Basic widgets
        1. Label
        2. Atom
        3. Image
      2. Time for action - enhancing the server application
        1. What just happened?
      3. Form widgets
        1. Interface hierarchy
          1. IBooleanForm, INumberForm, IDateForm, IColorForm, and IStringForm
          2. IForm
          3. IExecutable
          4. IRange
          5. IModel
          6. IModelSelection
        2. Class hierarchy
          1. qx.ui.form.TextField
          2. qx.ui.form.TextArea
          3. qx.ui.form.PasswordField
          4. qx.ui.form.CheckBox
          5. qx.ui.form.RadioButton
          6. qx.ui.form.RadioButtonGroup
          7. qx.ui.form.SelectBox
          8. qx.ui.form.ComboBox
          9. qx.ui.form.Spinner
          10. qx.ui.form.List
          11. qx.ui.form.ListItem
          12. qx.ui.form.DateField
          13. qx.ui.form.Button
          14. qx.ui.form.ToggleButton
          15. qx.ui.form.MenuButton
          16. qx.ui.form.SplitButton
          17. qx.ui.form.HoverButton
          18. qx.ui.form.RepeatButton
          19. qx.ui.form.Slider
      4. Time for action - adding widgets into Team Twitter
        1. What just happened?
      5. Special widgets
        1. The popup widgets
          1. qx.ui.popup
        2. The tooltip widgets
          1. qx.ui.tooltip
        3. The control widgets
          1. qx.ui.control.ColorPopup
          2. qx.ui.control.ColorSelector
          3. qx.ui.control.DateChooser
      6. Custom widgets
      7. Time for action - adding a custom widget to Team Twitter
        1. What just happened?
      8. Inline widgets
      9. The table widget
        1. Class hierarchy
        2. Table construction
        3. Remote table model
      10. The tree widget
        1. Class hierarchy
        2. Tree construction
      11. The treevirtual widget
        1. Class hierarchy
        2. TreeVirtual construction
        3. Pop quiz
      12. Summary
    12. 6. Working with Forms and Data
      1. Form handling
        1. Validation
          1. Synchronous
            1. Asynchronous
          2. Resetting
          3. Rendering
            1. Single column
            2. Double column
            3. Single column with placeholder
          4. Serialization
      2. Time for action - enhancing the UserSignUpForm
        1. What just happened?
      3. Object pooling
      4. Data binding
        1. Single value binding
        2. Property binding
        3. Event binding
        4. Hierarchical data binding
        5. Array binding
          1. Options map
        6. Data controller
          1. Object controller
          2. List controller
          3. Form controller
          4. Tree controller
          5. Data stores
            1. JSON store
            2. JSONP store
            3. YQL store
      5. Time for action - enhancing the UserSignUpForm again
        1. What just happened?
        2. Pop quiz
      6. Summary
    13. 7. Testing and Debugging
      1. Unit testing
      2. Time for action - performing unit test
        1. What just happened?
      3. Integration testing
        1. Integration test setup
        2. Writing test cases
          1. Simulator API documentation
          2. Simulator class hierarchy
          3. Selenium Java Client Driver API documentation
          4. Locating strategy
            1. Selenium locators
            2. qooxdoo locators
      4. Time for action - performing integration test
        1. What just happened?
      5. Debugging
        1. Logging statements in qooxdoo code
          1. Console object
          2. Trace
          3. qx.dev.Debug
          4. Variant qx.debug
          5. Miscellaneous
        2. Introduction to Firebug
        3. Installing the Firebug add-on
        4. IE developer tools
        5. Tracing through AOP
      6. Time for action - debugging
        1. What just happened?
        2. Pop quiz
      7. Summary
    14. 8. Internationalization
      1. Internationalization
        1. Writing code to use internationalization
          1. qx.locale.Manager
          2. qx.locale.MTranslation
          3. qx.locale.String, qx.locale.Number, qx.locale.Date, and qx.locale.Key
        2. Writing PO files for various languages
      2. Time for action - generating PO files for Team Twitter
        1. What just happened?
        2. Pop quiz
      3. Summary
    15. 9. Working with Themes
      1. Theme
      2. Meta theme
        1. Theme
        2. Font
        3. Color
        4. Decoration
        5. Appearance
        6. Modern theme
        7. Classic theme
        8. Simple theme
      3. Icon theme
      4. Color theme
      5. Font theme
      6. Decoration theme
        1. Aliases
        2. Decorations
          1. Decorator
          2. Style
          3. Writing new decorators
      7. Appearance theme
        1. Appearance selector (key)
        2. Appearance entry (value)
          1. Alias
          2. Appearance map
        3. Style entry in the appearance map
        4. The include entry in the appearance map
        5. The alias entry in the appearance map
        6. Base calls
      8. Performance
        1. Appearance queue
        2. Selector caching
        3. Alias caching
        4. Result caching
      9. Time for action - customizing themes for Team Twitter
        1. What just happened?
        2. Pop quiz
      10. Summary
    16. 10. Performance
      1. Memory management
      2. Object pooling
      3. Profiling
        1. Limitations
      4. Compile-time tuning
        1. Class optimizations
          1. Strings
          2. Variables
          3. Private
          4. Base calls
        2. Identifying unused classes
        3. Lint check
          1. Improvements
      5. Partitioning and lazy loading
        1. Configuration
        2. Coding to load parts on demand
        3. Verification
        4. Recent improvements
          1. Part collapsing or merging
          2. Remove dependencies from the part loader
          3. Load packages in parallel
          4. Error handling
        5. Advantages
      6. Time for action - partitioning
        1. What just happened?
      7. Good practices for performance
        1. Restrict the data in certain widgets
        2. Use filters
        3. Pagination
        4. .gz compression
        5. Pop quiz
      8. Summary
    17. 11. Miscellaneous
      1. Configuration
        1. config.json
          1. Listing of keys in context
        2. Job resolution
          1. The extend key
          2. The run key
              1. The include key
        3. Job shadowing and partial overriding
      2. Migration
      3. Time for action - migration
        1. What just happened?
      4. Back button support
        1. Identify application states
        2. Update history upon state change
        3. Add the event listener to the history manager
        4. Retrieve initial state
      5. qooxdoo license
        1. Pop quiz
      6. Summary
    18. A. Pop Quiz Answers
      1. Chapter 1: What is qooxdoo?
      2. Chapter 2: Say Hello to the qooxdoo World!
      3. Chapter 3: Core Programming Concepts
        1. Pop quiz-I
        2. Pop quiz-II
      4. Chapter 4: Working with Layouts and Menus
      5. Chapter 5: Working with Widgets
      6. Chapter 6: Working with Forms and Data
      7. Chapter 7: Testing and Debugging
      8. Chapter 8: Internationalization
      9. Chapter 9: Working with Themes
      10. Chapter 10: Performance
      11. Chapter 11: Miscellaneous
    19. B. References