Presenty       User Interface Application Frameworkhttp://www.squeaksource.com/Presenty      MIT license
PresentySeparation business logic of user interface application              from presentation level
Business logic of user interface application  Sequence of domain user requests:      ●   Select savings account      ●   S...
Business logic of user interface application  Sequence of primitive user requests:       ●   Select item from list       ●...
Presentation level               ●   Combo box               ●   Check box               ●   Radio buttonWidgets:       ● ...
Presentation level             ●   Combo box             ●   Check box                 Radio buttonIts all designer termin...
Classic package browser
Alt Browser
Classic browser, Alt-browser, Whisker browser, Newspeak browser               Same business logic           ●   Select pac...
Classic browser, Alt-browser, Whisker browser, Newspeak browser               Same business logic           ●   Select pac...
No widgets!at application programming level          ●   Combo box          ●   Check box          ●   Radio button       ...
Simple package browser with PresentyPtyBrowsePackagesTask>>body| package class method protocol |package := user select: Pa...
Browser with simple navigation
Browser with simple navigation and filtered lists                 List filters
Browser with table
Browser with table and filters           List filters
Modal browser with filters and items paging           Kernel selected                                  Float selected     ...
Browser with treeNot yet implemented
How all this work●   PtyGuide is central object which drive all application●   PtyUser presents domain user of application...
How all this work                  PtyTask                                                    PtyTaskContext              ...
How all this work                          PtyTaskActivationStrategySeparatedAreaActivationStrategy                       ...
Tree UI elementpackage := user select: Package from: PackageOrganizer default packages.class := user select: Class from: p...
Combo box UI elementguide addTask: [model value: (user select: Item from: possibleItems)].user lookAt: model preferredPrev...
PtyForkTask●   PtyForkTask is one way to add extra task to view area●   PtyForkTask just executed target task and when use...
What about buttons?●   Presenty has no ButtonPresenter or ButtonView (Morph)●   Button is just specific way to execute som...
User actions                                    *    userActions            PtyUserAction                                 ...
User actions               Any list item has user action which                             executes               PtyRetur...
How all this configured●   Presenter views can be different for different contexs●   Requested tasks can be different for ...
UISettings and PtyPrototypesManager●   Each configured object has prototype●   Prototype can create new instances by copy ...
Future work●   Extendible object editor     ●    user edit: object●   Extendible object explorer     ●    user lookAt: obj...
The end
Upcoming SlideShare
Loading in …5
×

Presenty

3,922 views

Published on

ESUG 2012, Ghent

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

  • Be the first to like this

No Downloads
Views
Total views
3,922
On SlideShare
0
From Embeds
0
Number of Embeds
823
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Presenty

  1. 1. Presenty User Interface Application Frameworkhttp://www.squeaksource.com/Presenty MIT license
  2. 2. PresentySeparation business logic of user interface application from presentation level
  3. 3. Business logic of user interface application Sequence of domain user requests: ● Select savings account ● Select pay service ● Input pay service requisities ● Input payment amount ● Wait payment processed ● Take cheque
  4. 4. Business logic of user interface application Sequence of primitive user requests: ● Select item from list ● Edit item ● Wait something ● Look at item
  5. 5. Presentation level ● Combo box ● Check box ● Radio buttonWidgets: ● Context menu ● Button ● Shortcuts ● Table ● List ● Tree
  6. 6. Presentation level ● Combo box ● Check box Radio buttonIts all designer terminology ● ●Context menu ● Button ● Shortcut ● Table ● List ● Tree
  7. 7. Classic package browser
  8. 8. Alt Browser
  9. 9. Classic browser, Alt-browser, Whisker browser, Newspeak browser Same business logic ● Select package ● Select class from selected package ● Select protocol from selected class ● Select method from selected protocol
  10. 10. Classic browser, Alt-browser, Whisker browser, Newspeak browser Same business logic ● Select package ● Select class from selected package ● Select protocol from selected class ● Select method from selected protocol Can be presented by million ways, by million widgets
  11. 11. No widgets!at application programming level ● Combo box ● Check box ● Radio button ● Context menu ● Button ● Shortcut ● Table ● List ● Tree
  12. 12. Simple package browser with PresentyPtyBrowsePackagesTask>>body| package class method protocol |package := user select: Package from: PackageOrganizer default packages.class := user select: Class from: package classes.protocol := user select: Protocol from: class protocols.method := user select: Method from: (class methodsInProtocol: protocol).user lookAt: method sourceCodePreviewPresenter
  13. 13. Browser with simple navigation
  14. 14. Browser with simple navigation and filtered lists List filters
  15. 15. Browser with table
  16. 16. Browser with table and filters List filters
  17. 17. Modal browser with filters and items paging Kernel selected Float selected Arithmetic selected
  18. 18. Browser with treeNot yet implemented
  19. 19. How all this work● PtyGuide is central object which drive all application● PtyUser presents domain user of application. It implements domain specific requests ● user payForService ● user selectSavingsAccount ● …● User interacts with guide to call new tasks● Task describes business logic as sequence of user requests● Task can call other tasks● Task can add UI items (presenters) to view area● UI items are presenters which connect model to view● Task can inherit UI items from other tasks
  20. 20. How all this work PtyTask PtyTaskContext task ● user ● task ● guide ● continuation ● activationStrategy (default) ● activation ● parentContext parentContext activation context ● prototype PtyTaskActivationStrategy context ● contextPtyViewAreaPresenter ● parentViewArea parentViewArea● context ● shouldRememberTask● items ● shouldForgetCompleteTask ● shouldRestoreParentArea
  21. 21. How all this work PtyTaskActivationStrategySeparatedAreaActivationStrategy InheritedActivationStrategy PtyNewAreaActivator areaActivator PtyInlinedAreaActivator PtyModalAreaActivator PtyViewAreaActivator show view area to user PtyNewWindowActivator PtyPopUpAreaActivator PtyEmbeddedAreaActivator
  22. 22. Tree UI elementpackage := user select: Package from: PackageOrganizer default packages.class := user select: Class from: package classes.● Class selection task configured to be activated on separated view area near selected package item● With same way any task which executed by button can show its items near this button● Not implemented yet
  23. 23. Combo box UI elementguide addTask: [model value: (user select: Item from: possibleItems)].user lookAt: model preferredPreviewPresenter● #lookAt: shows user current value of model● #addTask: adds extra task to view area● #addTask: can be configured as button which executes extra task● Extra task with items selection can be configured to show popup view area with items list
  24. 24. PtyForkTask● PtyForkTask is one way to add extra task to view area● PtyForkTask just executed target task and when user request happen parent task continue execution● There are many ways to share «fork task items» with parent task ● Add all items to parent view area ● Put all items on separated panel ● Put first request items on one panel but next on other ● ...
  25. 25. What about buttons?● Presenty has no ButtonPresenter or ButtonView (Morph)● Button is just specific way to execute some action. Its same as: ● Shortcuts ● Voice command ● Gesture ● Million other ways
  26. 26. User actions * userActions PtyUserAction PtyPresenter connector presenteraction PtyUserActionConnector activators PtyButtonUserActionActivator * PtyUserActionActivator PtyShortcutActionActivator Implements #hookupPresenter PtyMouseClickUserActionActivator
  27. 27. User actions Any list item has user action which executes PtyReturnValueFromPresenterTaskUser action PtyReturnToPreviousTask
  28. 28. How all this configured● Presenter views can be different for different contexs● Requested tasks can be different for different contexts● Action activators can be different for different contexts Extendible UI contexts● Task context● Presenter context● Presenter style context● List items name context● Any domain specific contexts ● Big payment context ● Little account balance context
  29. 29. UISettings and PtyPrototypesManager● Each configured object has prototype● Prototype can create new instances by copy its sample● PtyPrototypesManager contains collections of prototypes● Manager know how to find appropriate prototype ● manager prototypeFor: someContextObject ● special lookup logic which can be extended by domain specific contexts● Separated managers for presenters, tasks and user actions● UISettings contains all managers● UISettings know how to prepare new instances created from prototype● PrototypesManager is separated package. It is not depends on Presenty. It is MIT
  30. 30. Future work● Extendible object editor ● user edit: object● Extendible object explorer ● user lookAt: object● User actions with parameters. Drag and drop activators● Text editor based on presenter and user actions● More forking task strategies● More view area activators● Improvements for basic stuff like tables● Docs● ...
  31. 31. The end

×