Presenty         User Interface Frameworkhttp://www.squeaksource.com/Presenty   MIT license
PresentyPlatform-independent user interface            application
Desktop contact manager
Filter contacts by typed name
Select contact from groups
Select contact from last calls
Contact selection show details data
Presenty approach●   Multiple separated tasks a user can perform●   Each task is a sequence of user requests    ●   Contac...
Implementation●   Continuation-based tasks as elements of user    interaction at application level●   User requests as bui...
SelectContactFromGroupsTaskbody| selected group |group := user select: ContactsGroup from: ContactManager groups.selected ...
Select contact from groups
SelectContactBySearchTaskbody| selected |selected := user execute: (   PtySearchItemTask forItems: ContactManager contacts...
SelectContactFromLastCallsTaskbody| selected |selected := user select: LastContact from: ContactManager lastCalls.user goT...
ShowContactsForDesktopTaskbodyguide viewport createNewViewArea.guide forkTask: SelectContactFromLastCallsTask new.guide fo...
Select contact from last calls
Select contact from last calls
Select contact from groups
Select contact from groups
Filter contacts by typed name
guide translator
Filter contacts by typed name
Filter contacts by typed name
ShowContactsForPhoneTaskbody| taskClass |guide viewport createNewViewArea.taskClass := user select: ContactManagerTask fro...
Task Configuration●   Presenter can have different views in different    contexts    ●   For different parent presenters  ...
Task Configuration●   Guide can store default settings for tasks       –   guide create: PtyShowListTask●   Task settings ...
How tasks configured●   PtyItemsListTask has itemPresenterFactory    which can be saved in settings    ●   PtyExplicitPres...
What should be done●   Configurable task activation●   Simple object editor task       –   user edit: object●   Better des...
Questions?
The end
Modal warning example
Tasks from blocksDetailedContactPresenter>>runCallguide executeTask: [    guide doInModal: [           guide user warn: Yo...
Presenty UI framework●   Modified Model-View-Presenter pattern●   Continuation-based tasks as elements of user    interact...
Modified Model-View-Presenter           pattern
Upcoming SlideShare
Loading in …5
×

Presenty: User Interface Framework

964 views

Published on

Presenty
User Interface Framework.

ESUG 2011, Edinburgh

Published in: Technology, Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
964
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
7
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Presenty: User Interface Framework

  1. 1. Presenty User Interface Frameworkhttp://www.squeaksource.com/Presenty MIT license
  2. 2. PresentyPlatform-independent user interface application
  3. 3. Desktop contact manager
  4. 4. Filter contacts by typed name
  5. 5. Select contact from groups
  6. 6. Select contact from last calls
  7. 7. Contact selection show details data
  8. 8. Presenty approach● Multiple separated tasks a user can perform● Each task is a sequence of user requests ● Contact groups selection task: 1) select group from groups list 2) select contact from selected group contents 3) look at selected contact details
  9. 9. Implementation● Continuation-based tasks as elements of user interaction at application level● User requests as building blocks for tasks: ● Primitive user requests to invoke base interface components ● Compound requests for calling other tasks● Extendable DSL (pure Smalltalk) facilitating task implementation● Modified Model-View-Presenter pattern
  10. 10. SelectContactFromGroupsTaskbody| selected group |group := user select: ContactsGroup from: ContactManager groups.selected := user select: Contact from: group contents.user goTo: (DetailedContactPresenter on: selected )
  11. 11. Select contact from groups
  12. 12. SelectContactBySearchTaskbody| selected |selected := user execute: ( PtySearchItemTask forItems: ContactManager contacts ofClass: Contact).guide restoreActiveArea.user goTo: (DetailedContactPresenter on: selected )
  13. 13. SelectContactFromLastCallsTaskbody| selected |selected := user select: LastContact from: ContactManager lastCalls.user goTo: (DetailedContactPresenter on: selected )
  14. 14. ShowContactsForDesktopTaskbodyguide viewport createNewViewArea.guide forkTask: SelectContactFromLastCallsTask new.guide forkTask: SelectContactFromGroupsTask new.guide forkTask: SelectContactBySearchTask new.user goTo: [guide showViewArea]
  15. 15. Select contact from last calls
  16. 16. Select contact from last calls
  17. 17. Select contact from groups
  18. 18. Select contact from groups
  19. 19. Filter contacts by typed name
  20. 20. guide translator
  21. 21. Filter contacts by typed name
  22. 22. Filter contacts by typed name
  23. 23. ShowContactsForPhoneTaskbody| taskClass |guide viewport createNewViewArea.taskClass := user select: ContactManagerTask from:{SelectContactFromLastCallsTask. SelectContactFromGroupsTask.SelectContactBySearchTask}.guide addBackButton.user execute: taskClass new
  24. 24. Task Configuration● Presenter can have different views in different contexts ● For different parent presenters ● For different tasks ● For different styles of presenter ● For different styles of parent presenter
  25. 25. Task Configuration● Guide can store default settings for tasks – guide create: PtyShowListTask● Task settings can vary in different contexts
  26. 26. How tasks configured● PtyItemsListTask has itemPresenterFactory which can be saved in settings ● PtyExplicitPresenterFactory specifyed concrete presenter class to present list items ● PtyPresenterPreviewFactory use #preferredPreviewPresenter message for getting presenter from list item
  27. 27. What should be done● Configurable task activation● Simple object editor task – user edit: object● Better designer● Serializing prototypes and settings to style classes● Searching for prototypes and settings in multiple task contexts● Documentation
  28. 28. Questions?
  29. 29. The end
  30. 30. Modal warning example
  31. 31. Tasks from blocksDetailedContactPresenter>>runCallguide executeTask: [ guide doInModal: [ guide user warn: You dial to , model printString]. guide user stopCurrentTask.] asTask
  32. 32. Presenty UI framework● Modified Model-View-Presenter pattern● Continuation-based tasks as elements of user interaction at application level● User requests as building blocks for tasks: ● Primitive user requests to invoke base interface components ● Compound requests for calling other tasks● Extendable DSL (pure Smalltalk) facilitating task implementation● Prototyping for visual components and tasks
  33. 33. Modified Model-View-Presenter pattern

×