code_uimenuitem.js 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. // UIMenuItem and UIMenuItemSource application source code
  2. 'use strict';
  3. var utils = require("Scripts/utils");
  4. exports.init = function(mylayout,mylogger) {
  5. //
  6. // action functions
  7. //
  8. // make the MenuItemSource to use with the menu
  9. var mis = new Atomic.UIMenuItemSource();
  10. // put in some default UIMenuItems in the MenuItemSource
  11. mis.addItem( new Atomic.UIMenuItem( "UIMenuItem1", "item1" ) );
  12. mis.addItem( new Atomic.UIMenuItem( "UIMenuItem2", "item2", "Ctrl+." ) );
  13. mis.addItem( new Atomic.UIMenuItem( "UIMenuItem2", "item2", "", "DuckButton" ) );
  14. mis.addItem( new Atomic.UIMenuItem( "UIMenuItem3", "item3", "CTrl+A", "LogoAtomic" ) );
  15. var button1 = mylayout.getWidget("uimenuitempush");
  16. button1.onClick = function () {
  17. mylogger.setText( "UIMenuWindow action : " + button1.id + " was pressed ");
  18. var mymenuwindow = new Atomic.UIMenuWindow( mylayout, "MenuItemDemo");
  19. var xx = button1.x + (button1.width/2);
  20. var yy = button1.y + (button1.height/2);
  21. mymenuwindow.show(mis, xx, yy); // use the existing menuitem source, show in the middle of the button, if possible
  22. //
  23. // widget event functions
  24. //
  25. mymenuwindow.subscribeToEvent( "WidgetEvent", function (ev) {
  26. if ( ev.type == Atomic.UI_EVENT_TYPE_CLICK && ev.target == mymenuwindow )
  27. mylogger.setText( "UIMenuItem event : " + mymenuwindow.id + " selected entry id = " + ev.refID + " event type = " + utils.eventReport(ev.type));
  28. if ( ev.type == Atomic.UI_EVENT_TYPE_SHORTCUT )
  29. mylogger.setText( "UIMenuItem event : " + mymenuwindow.id + " Shortcut id = " + ev.refID + " event type = " + utils.eventReport(ev.type));
  30. });
  31. mymenuwindow.subscribeToEvent( "UIShortcut", function (ev) {
  32. mylogger.setText( "UIMenuItem event : " + mymenuwindow.id + " Shortcut key = " + ev.key + " qualifiers = " + ev.qualifiers );
  33. });
  34. mymenuwindow.subscribeToEvent( "UIUnhandledShortcut", function (ev) {
  35. mylogger.setText( "UIMenuItem event : " + mymenuwindow.id + " UIUnhandledShortcut id = " + ev.refid );
  36. });
  37. };
  38. var button2 = mylayout.getWidget("uimi1");
  39. button2.onClick = function () {
  40. mylogger.setText( "UIMenuItem action : " + button2.id + " was pressed ");
  41. mis.addItem( new Atomic.UIMenuItem( "New UIMenuItem") );
  42. };
  43. var button3 = mylayout.getWidget("uimi2");
  44. button3.onClick = function () {
  45. mylogger.setText( "UIMenuItem action : " + button3.id + " was pressed ");
  46. mis.addItem( new Atomic.UIMenuItem( "Newer UIMenuItem", "neweritem" ) );
  47. };
  48. var button4 = mylayout.getWidget("uimi3");
  49. button4.onClick = function () {
  50. mylogger.setText( "UIMenuItem action : " + button4.id + " was pressed ");
  51. mis.addItem( new Atomic.UIMenuItem( "A Duck", "aduck", "", "DuckButton" ) );
  52. };
  53. var button5 = mylayout.getWidget("uimi4");
  54. button5.onClick = function () {
  55. mylogger.setText( "UIMenuItem action : " + button5.id + " was pressed ");
  56. mis.addItem( new Atomic.UIMenuItem( "Atomic!", "atomic", "", "LogoAtomic" ) );
  57. };
  58. var button6 = mylayout.getWidget("uimi5");
  59. button6.onClick = function () {
  60. mylogger.setText( "UIMenuItem action : " + button6.id + " was pressed ");
  61. mis.clear();
  62. };
  63. //
  64. // support functions
  65. //
  66. var button8 = mylayout.getWidget("uimenuitemcode");
  67. button8.onClick = function () {
  68. mylogger.setText( "UIMenuItem support : " + button8.id + " was pressed ");
  69. utils.viewCode ( "Components/code_uimenuitem.js", mylayout );
  70. };
  71. var button9 = mylayout.getWidget("uimenuitemlayout");
  72. button9.onClick = function () {
  73. mylogger.setText( "UIMenuItem support : " + button9.id + " was pressed ");
  74. utils.viewCode ( "Scenes/layout_uimenuitem.ui.txt", mylayout );
  75. };
  76. };