Moka-Examples.st 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. Smalltalk current createPackage: 'Moka-Examples'!
  2. Object subclass: #MKCounterBuilder
  3. instanceVariableNames: 'counter'
  4. package: 'Moka-Examples'!
  5. !MKCounterBuilder methodsFor: 'accessing'!
  6. build
  7. (MKLabelView model: self counter aspect: #count) render.
  8. (MKButtonView model: self counter aspect: #increase)
  9. label: 'Increase';
  10. render.
  11. (MKInputView model: self counter aspect: #text)
  12. render.
  13. (MKTextAreaView model: self counter aspect: #text)
  14. render.
  15. (MKCheckboxView model: self counter aspect: #checked)
  16. render.
  17. (MKSwitchView model: self counter aspect: #checked)
  18. render.
  19. (MKButtonView model: self counter aspect: #decrease)
  20. label: 'Decrease';
  21. render
  22. !
  23. counter
  24. ^ counter ifNil: [ counter := MKCounterModel new ]
  25. ! !
  26. !MKCounterBuilder class methodsFor: 'initialization'!
  27. initialize
  28. self new build
  29. ! !
  30. MKModel subclass: #MKCounterModel
  31. instanceVariableNames: 'count text checked'
  32. package: 'Moka-Examples'!
  33. !MKCounterModel methodsFor: 'actions'!
  34. checked
  35. ^ checked ifNil: [ false ]
  36. !
  37. checked: aBoolean
  38. checked := aBoolean.
  39. self changed: 'checked'
  40. !
  41. count
  42. ^ count asString
  43. !
  44. decrease
  45. count := count - 1.
  46. self changed: #count
  47. !
  48. increase
  49. count := count + 1.
  50. self changed: #count
  51. !
  52. text
  53. ^ text ifNil: [ '' ]
  54. !
  55. text: aString
  56. text := aString.
  57. self changed: 'text'
  58. ! !
  59. !MKCounterModel methodsFor: 'initialization'!
  60. initialize
  61. super initialize.
  62. count := 0
  63. ! !