Examples.js 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195
  1. define("amber-attic/Examples", ["amber/boot", "amber_core/Web"], function($boot){
  2. var $core=$boot.api,nil=$boot.nil,$recv=$boot.asReceiver,$globals=$boot.globals;
  3. $core.addPackage('Examples');
  4. $core.packages["Examples"].transport = {"type":"amd","amdNamespace":"amber-attic"};
  5. $core.addClass('Counter', $globals.Widget, ['count', 'header'], 'Examples');
  6. //>>excludeStart("ide", pragmas.excludeIdeData);
  7. $globals.Counter.comment="This is a trivial Widget example mimicking the classic Counter example in Seaside.\x0aIn order to play with it, just evaluate the doit below in a workspace.\x0aThen take a look in the HTML document above the IDE.\x0a\x0a\x09\x09Counter tryExample";
  8. //>>excludeEnd("ide");
  9. $core.addMethod(
  10. $core.method({
  11. selector: "decrease",
  12. protocol: 'actions',
  13. fn: function (){
  14. var self=this;
  15. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16. return $core.withContext(function($ctx1) {
  17. //>>excludeEnd("ctx");
  18. self["@count"]=$recv(self["@count"]).__minus((1));
  19. $recv(self["@header"])._contents_((function(html){
  20. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21. return $core.withContext(function($ctx2) {
  22. //>>excludeEnd("ctx");
  23. return $recv(html)._with_($recv(self["@count"])._asString());
  24. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25. }, function($ctx2) {$ctx2.fillBlock({html:html},$ctx1,1)});
  26. //>>excludeEnd("ctx");
  27. }));
  28. return self;
  29. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30. }, function($ctx1) {$ctx1.fill(self,"decrease",{},$globals.Counter)});
  31. //>>excludeEnd("ctx");
  32. },
  33. //>>excludeStart("ide", pragmas.excludeIdeData);
  34. args: [],
  35. source: "decrease\x0a\x09count := count - 1.\x0a\x09header contents: [ :html | html with: count asString ]",
  36. referencedClasses: [],
  37. //>>excludeEnd("ide");
  38. messageSends: ["-", "contents:", "with:", "asString"]
  39. }),
  40. $globals.Counter);
  41. $core.addMethod(
  42. $core.method({
  43. selector: "increase",
  44. protocol: 'actions',
  45. fn: function (){
  46. var self=this;
  47. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48. return $core.withContext(function($ctx1) {
  49. //>>excludeEnd("ctx");
  50. self["@count"]=$recv(self["@count"]).__plus((1));
  51. $recv(self["@header"])._contents_((function(html){
  52. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53. return $core.withContext(function($ctx2) {
  54. //>>excludeEnd("ctx");
  55. return $recv(html)._with_($recv(self["@count"])._asString());
  56. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57. }, function($ctx2) {$ctx2.fillBlock({html:html},$ctx1,1)});
  58. //>>excludeEnd("ctx");
  59. }));
  60. return self;
  61. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62. }, function($ctx1) {$ctx1.fill(self,"increase",{},$globals.Counter)});
  63. //>>excludeEnd("ctx");
  64. },
  65. //>>excludeStart("ide", pragmas.excludeIdeData);
  66. args: [],
  67. source: "increase\x0a\x09count := count + 1.\x0a\x09header contents: [ :html | html with: count asString ]",
  68. referencedClasses: [],
  69. //>>excludeEnd("ide");
  70. messageSends: ["+", "contents:", "with:", "asString"]
  71. }),
  72. $globals.Counter);
  73. $core.addMethod(
  74. $core.method({
  75. selector: "initialize",
  76. protocol: 'initialization',
  77. fn: function (){
  78. var self=this;
  79. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80. return $core.withContext(function($ctx1) {
  81. //>>excludeEnd("ctx");
  82. (
  83. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  84. $ctx1.supercall = true,
  85. //>>excludeEnd("ctx");
  86. $globals.Counter.superclass.fn.prototype._initialize.apply($recv(self), []));
  87. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  88. $ctx1.supercall = false;
  89. //>>excludeEnd("ctx");;
  90. self["@count"]=(0);
  91. return self;
  92. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  93. }, function($ctx1) {$ctx1.fill(self,"initialize",{},$globals.Counter)});
  94. //>>excludeEnd("ctx");
  95. },
  96. //>>excludeStart("ide", pragmas.excludeIdeData);
  97. args: [],
  98. source: "initialize\x0a\x09super initialize.\x0a\x09count := 0",
  99. referencedClasses: [],
  100. //>>excludeEnd("ide");
  101. messageSends: ["initialize"]
  102. }),
  103. $globals.Counter);
  104. $core.addMethod(
  105. $core.method({
  106. selector: "renderOn:",
  107. protocol: 'rendering',
  108. fn: function (html){
  109. var self=this;
  110. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  111. return $core.withContext(function($ctx1) {
  112. //>>excludeEnd("ctx");
  113. var $1,$2,$3,$4,$5,$6;
  114. $1=$recv(html)._h1();
  115. $recv($1)._with_($recv(self["@count"])._asString());
  116. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  117. $ctx1.sendIdx["with:"]=1;
  118. //>>excludeEnd("ctx");
  119. $2=$recv($1)._yourself();
  120. self["@header"]=$2;
  121. $3=$recv(html)._button();
  122. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  123. $ctx1.sendIdx["button"]=1;
  124. //>>excludeEnd("ctx");
  125. $recv($3)._with_("++");
  126. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  127. $ctx1.sendIdx["with:"]=2;
  128. //>>excludeEnd("ctx");
  129. $4=$recv($3)._onClick_((function(){
  130. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  131. return $core.withContext(function($ctx2) {
  132. //>>excludeEnd("ctx");
  133. return self._increase();
  134. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  135. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  136. //>>excludeEnd("ctx");
  137. }));
  138. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  139. $ctx1.sendIdx["onClick:"]=1;
  140. //>>excludeEnd("ctx");
  141. $5=$recv(html)._button();
  142. $recv($5)._with_("--");
  143. $6=$recv($5)._onClick_((function(){
  144. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  145. return $core.withContext(function($ctx2) {
  146. //>>excludeEnd("ctx");
  147. return self._decrease();
  148. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  149. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  150. //>>excludeEnd("ctx");
  151. }));
  152. return self;
  153. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  154. }, function($ctx1) {$ctx1.fill(self,"renderOn:",{html:html},$globals.Counter)});
  155. //>>excludeEnd("ctx");
  156. },
  157. //>>excludeStart("ide", pragmas.excludeIdeData);
  158. args: ["html"],
  159. source: "renderOn: html\x0a\x09header := html h1\x0a\x09\x09with: count asString;\x0a\x09\x09yourself.\x0a\x09html button\x0a\x09\x09with: '++';\x0a\x09\x09onClick: [ self increase ].\x0a\x09html button\x0a\x09\x09with: '--';\x0a\x09\x09onClick: [ self decrease ]",
  160. referencedClasses: [],
  161. //>>excludeEnd("ide");
  162. messageSends: ["with:", "h1", "asString", "yourself", "button", "onClick:", "increase", "decrease"]
  163. }),
  164. $globals.Counter);
  165. $core.addMethod(
  166. $core.method({
  167. selector: "tryExample",
  168. protocol: 'example',
  169. fn: function (){
  170. var self=this;
  171. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  172. return $core.withContext(function($ctx1) {
  173. //>>excludeEnd("ctx");
  174. $recv(self._new())._appendToJQuery_("body"._asJQuery());
  175. return self;
  176. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  177. }, function($ctx1) {$ctx1.fill(self,"tryExample",{},$globals.Counter.klass)});
  178. //>>excludeEnd("ctx");
  179. },
  180. //>>excludeStart("ide", pragmas.excludeIdeData);
  181. args: [],
  182. source: "tryExample\x0a\x09\x22In order to play with the Counter, just select the\x0a\x09doit below and press the Do it button. Then take a\x0a\x09look in the HTML document above the IDE.\x22\x0a\x0a\x09\x22Counter tryExample\x22\x0a\x09\x09self new appendToJQuery: 'body' asJQuery",
  183. referencedClasses: [],
  184. //>>excludeEnd("ide");
  185. messageSends: ["appendToJQuery:", "new", "asJQuery"]
  186. }),
  187. $globals.Counter.klass);
  188. });