[View]  [Edit]  [Lock]  [References]  [Attachments]  [History]  [Home]  [Changes]  [Search]  [Help] 

[U8] Mobile Framework

Description

This framework allows you to develop multiplatform mobile applications and can adapt the UI to Android, iOS, etc.

Main classes/roles

MobileSystemOne (or more) domain/model object(s) accessible to a mobile application.
MobileApplicationAn application with a collection of (independent) threads that run in parallel.
The user can select/switch threads using a thread selection UI element
e.g. tabBar UI, multi-framed windows -TopPane-, or multi-screen environment -WebDocument-.
MobileThreadA thread defines a point of view of the system and let the user access the tools to interact with model objects under a point of view.
MobileCoordinatorA GUI composed of widgets/tools used to manage changes on the system during a discrete time. It defines a context of operation on a subset of objects in the system. The coordinator use the screen to present tools/views to the user. The tools/controls can change the the system and the coordinator can open/push another coordinator to perform works on that situation/context. It also can close reverting state to previous coordinator/context.
A thread define an initial coordinator, that will be shown at start time of application.
MobileDevice
[Mobile] Widgets
MobileCordinatorTemplateA template that contains all the necessary information to create coordinators.

[Mobile] Critics and thoughts about current design/implementation of Mobile Framework

Tutorials & Developer's Guide

Sample Applications

App instantiation patterns

threads template
(#threads -> (
   (1 -> ((#tool -> #threadName1),(#coordinator -> aCoordinatorTemplateForStartup))),
  ,(2 -> ((#tool -> #threadName2),(#coordinator -> aCoordinatorTemplateForStartup)))
))
coordinator templates
((#templates -> (
  (#Browser ->
    ((#class -> #MobileBrowser)
    ,(#configuration -> (
       (#title -> #Browser)
      ,(#widgets -> (#classes ->
         ((#class -> #MobileSelector)
         ,(#configuration -> (
           (#listeners -> (
	     (#needsItems -> [:coordinator | Smalltalk classes sorted: [:a :b| a name < b name]])
             ,(#configureCell:for:in:coordinator: -> [:cell :item :list :aCoordinator | aCoordinator configure: cell title: item name description: nil] )
	     ,(#selected: -> [:item :coordinator | coordinator thread next: ((coordinator newTemplateAt: #ClassView) model: item;yourself) ])
            ))
	  ))
         ))
       ) 
    ))
   ))
 ))
)