Examples.js 7.0 KB

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