checkbutton.monkey2 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. Namespace mojox
  2. #rem monkeydoc The CheckGroup class.
  3. #end
  4. Class CheckGroup
  5. Property Checked:CheckButton()
  6. Return _checked
  7. End
  8. Private
  9. Field _views:=New Stack<CheckButton>
  10. Field _checked:CheckButton
  11. End
  12. #rem monkeydoc The CheckButton class.
  13. #end
  14. Class CheckButton Extends Label
  15. #rem monkeydoc Invoked when the button's [[Checked]] state changes.
  16. Note: This is only invoked as the result of user interaction.
  17. #end
  18. Field Clicked:Void()
  19. #rem monkeydoc Creates a new CheckButton.
  20. #end
  21. Method New( text:String="",icon:Image=Null,group:CheckGroup=Null )
  22. Super.New( text,icon )
  23. Style=GetStyle( "CheckButton" )
  24. AcceptsKeyEvents=False
  25. AcceptsMouseEvents=False
  26. _checkBox=New Button
  27. _checkBox.Style=GetStyle( "CheckBox" )
  28. _checkBox.Icon=_checkBox.RenderStyle.Icons[0]
  29. Local clicked:=Lambda()
  30. If _group And Checked Return
  31. Checked=Not Checked
  32. Clicked()
  33. End
  34. Super.Clicked+=clicked
  35. _checkBox.Clicked+=clicked
  36. AddView( _checkBox )
  37. If group Group=group
  38. End
  39. #rem monkeydoc The CheckGroup the button belongs to.
  40. #end
  41. Property Group:CheckGroup()
  42. Return _group
  43. Setter( group:CheckGroup )
  44. Assert( group And Not _group )
  45. _group=group
  46. _group._views.Add( Self )
  47. If _group._views.Length=1
  48. group._checked=Self
  49. SetChecked( True )
  50. Endif
  51. End
  52. #rem monkeydoc The button's checked state.
  53. #end
  54. Property Checked:Bool()
  55. Return _checked
  56. Setter( checked:Bool )
  57. If checked=_checked Return
  58. If _group
  59. If Not checked Return
  60. If _group._checked _group._checked.SetChecked( False )
  61. _group._checked=Self
  62. Endif
  63. SetChecked( checked )
  64. End
  65. Protected
  66. Method OnValidateStyle() Override
  67. _checkBox.Icon=_checkBox.RenderStyle.Icons[ _checked ]
  68. End
  69. Private
  70. Field _checked:Bool
  71. Field _checkBox:Button
  72. Field _group:CheckGroup
  73. Method SetChecked( checked:Bool )
  74. _checked=checked
  75. InvalidateStyle()
  76. End
  77. End