Moka-Controllers.js 30 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897
  1. define("amber_core/Moka-Controllers", ["amber_vm/smalltalk", "amber_vm/nil", "amber_vm/_st", "amber_core/Moka-Core", "amber_core/Kernel-Objects"], function(smalltalk,nil,_st){
  2. smalltalk.addPackage('Moka-Controllers');
  3. smalltalk.packages["Moka-Controllers"].transport = {"type":"amd","amdNamespace":"amber_core"};
  4. smalltalk.addClass('MKAnyKeyInputController', smalltalk.MKSingleAspectController, ['lastValue'], 'Moka-Controllers');
  5. smalltalk.MKAnyKeyInputController.comment="I am the default controller for `MKTextAreaView`. Actions are performed on any key press if the view's value changes.";
  6. smalltalk.addMethod(
  7. smalltalk.method({
  8. selector: "inputText",
  9. category: 'accessing',
  10. fn: function (){
  11. var self=this;
  12. return smalltalk.withContext(function($ctx1) {
  13. var $1;
  14. $1=_st(self._view())._value();
  15. return $1;
  16. }, function($ctx1) {$ctx1.fill(self,"inputText",{},smalltalk.MKAnyKeyInputController)})},
  17. args: [],
  18. source: "inputText\x0a\x09^ self view value",
  19. messageSends: ["value", "view"],
  20. referencedClasses: []
  21. }),
  22. smalltalk.MKAnyKeyInputController);
  23. smalltalk.addMethod(
  24. smalltalk.method({
  25. selector: "onKeyUp:",
  26. category: 'actions',
  27. fn: function (anEvent){
  28. var self=this;
  29. return smalltalk.withContext(function($ctx1) {
  30. self._setNewValue();
  31. return self}, function($ctx1) {$ctx1.fill(self,"onKeyUp:",{anEvent:anEvent},smalltalk.MKAnyKeyInputController)})},
  32. args: ["anEvent"],
  33. source: "onKeyUp: anEvent\x0a\x09self setNewValue",
  34. messageSends: ["setNewValue"],
  35. referencedClasses: []
  36. }),
  37. smalltalk.MKAnyKeyInputController);
  38. smalltalk.addMethod(
  39. smalltalk.method({
  40. selector: "setNewValue",
  41. category: 'actions',
  42. fn: function (){
  43. var self=this;
  44. var newValue;
  45. return smalltalk.withContext(function($ctx1) {
  46. var $1;
  47. newValue=self._inputText();
  48. $1=_st(newValue).__eq(self["@lastValue"]);
  49. if(smalltalk.assert($1)){
  50. return self;
  51. };
  52. self["@lastValue"]=newValue;
  53. self._performAspectActionWith_(newValue);
  54. return self}, function($ctx1) {$ctx1.fill(self,"setNewValue",{newValue:newValue},smalltalk.MKAnyKeyInputController)})},
  55. args: [],
  56. source: "setNewValue\x0a\x09| newValue |\x0a\x09\x0a\x09newValue := self inputText.\x0a\x09newValue = lastValue ifTrue: [ ^ self ].\x0a\x09\x0a\x09lastValue := newValue.\x0a\x09self performAspectActionWith: newValue",
  57. messageSends: ["inputText", "ifTrue:", "=", "performAspectActionWith:"],
  58. referencedClasses: []
  59. }),
  60. smalltalk.MKAnyKeyInputController);
  61. smalltalk.addClass('MKEnterInputController', smalltalk.MKAnyKeyInputController, [], 'Moka-Controllers');
  62. smalltalk.MKEnterInputController.comment="I am the default controller for `MKInputView`. \x0aActions are performed on 'enter' key press.";
  63. smalltalk.addMethod(
  64. smalltalk.method({
  65. selector: "onKeyDown:",
  66. category: 'actions',
  67. fn: function (anEvent){
  68. var self=this;
  69. function $String(){return smalltalk.String||(typeof String=="undefined"?nil:String)}
  70. return smalltalk.withContext(function($ctx1) {
  71. var $1;
  72. $1=_st(_st(anEvent)._keyCode()).__eq(_st(_st($String())._cr())._asciiValue());
  73. if(smalltalk.assert($1)){
  74. self._setNewValue();
  75. };
  76. return self}, function($ctx1) {$ctx1.fill(self,"onKeyDown:",{anEvent:anEvent},smalltalk.MKEnterInputController)})},
  77. args: ["anEvent"],
  78. source: "onKeyDown: anEvent\x0a\x09anEvent keyCode = String cr asciiValue ifTrue: [\x0a\x09\x09self setNewValue ]",
  79. messageSends: ["ifTrue:", "=", "keyCode", "asciiValue", "cr", "setNewValue"],
  80. referencedClasses: ["String"]
  81. }),
  82. smalltalk.MKEnterInputController);
  83. smalltalk.addMethod(
  84. smalltalk.method({
  85. selector: "onKeyUp:",
  86. category: 'actions',
  87. fn: function (anEvent){
  88. var self=this;
  89. return smalltalk.withContext(function($ctx1) {
  90. return self}, function($ctx1) {$ctx1.fill(self,"onKeyUp:",{anEvent:anEvent},smalltalk.MKEnterInputController)})},
  91. args: ["anEvent"],
  92. source: "onKeyUp: anEvent",
  93. messageSends: [],
  94. referencedClasses: []
  95. }),
  96. smalltalk.MKEnterInputController);
  97. smalltalk.addClass('MKButtonController', smalltalk.MKSingleAspectController, [], 'Moka-Controllers');
  98. smalltalk.MKButtonController.comment="I am the default controller for `MKButtonView`.";
  99. smalltalk.addMethod(
  100. smalltalk.method({
  101. selector: "onClick:",
  102. category: 'actions',
  103. fn: function (anEvent){
  104. var self=this;
  105. return smalltalk.withContext(function($ctx1) {
  106. self._performAspectAction();
  107. return self}, function($ctx1) {$ctx1.fill(self,"onClick:",{anEvent:anEvent},smalltalk.MKButtonController)})},
  108. args: ["anEvent"],
  109. source: "onClick: anEvent\x0a\x09self performAspectAction",
  110. messageSends: ["performAspectAction"],
  111. referencedClasses: []
  112. }),
  113. smalltalk.MKButtonController);
  114. smalltalk.addClass('MKCheckboxController', smalltalk.MKSingleAspectController, [], 'Moka-Controllers');
  115. smalltalk.MKCheckboxController.comment="I am the default controller for `MKCheckboxView`.";
  116. smalltalk.addMethod(
  117. smalltalk.method({
  118. selector: "onClick:",
  119. category: 'actions',
  120. fn: function (anEvent){
  121. var self=this;
  122. return smalltalk.withContext(function($ctx1) {
  123. self._toggle();
  124. return self}, function($ctx1) {$ctx1.fill(self,"onClick:",{anEvent:anEvent},smalltalk.MKCheckboxController)})},
  125. args: ["anEvent"],
  126. source: "onClick: anEvent\x0a\x09self toggle",
  127. messageSends: ["toggle"],
  128. referencedClasses: []
  129. }),
  130. smalltalk.MKCheckboxController);
  131. smalltalk.addMethod(
  132. smalltalk.method({
  133. selector: "onKeyDown:",
  134. category: 'actions',
  135. fn: function (anEvent){
  136. var self=this;
  137. return smalltalk.withContext(function($ctx1) {
  138. _st(anEvent)._stopPropagation();
  139. return self}, function($ctx1) {$ctx1.fill(self,"onKeyDown:",{anEvent:anEvent},smalltalk.MKCheckboxController)})},
  140. args: ["anEvent"],
  141. source: "onKeyDown: anEvent\x0a\x09\x22Avoid scrolling in scrollable views\x22\x0a\x09\x0a\x09anEvent stopPropagation",
  142. messageSends: ["stopPropagation"],
  143. referencedClasses: []
  144. }),
  145. smalltalk.MKCheckboxController);
  146. smalltalk.addMethod(
  147. smalltalk.method({
  148. selector: "onKeyPress:",
  149. category: 'actions',
  150. fn: function (anEvent){
  151. var self=this;
  152. return smalltalk.withContext(function($ctx1) {
  153. var $1,$2;
  154. $1=_st(_st(anEvent)._charCode()).__eq(" "._asciiValue());
  155. if(smalltalk.assert($1)){
  156. self._toggle();
  157. _st(anEvent)._stopPropagation();
  158. $2=_st(anEvent)._preventDefault();
  159. $2;
  160. };
  161. return self}, function($ctx1) {$ctx1.fill(self,"onKeyPress:",{anEvent:anEvent},smalltalk.MKCheckboxController)})},
  162. args: ["anEvent"],
  163. source: "onKeyPress: anEvent\x0a\x09anEvent charCode = ' ' asciiValue ifTrue: [ \x0a\x09\x09self toggle.\x0a\x09\x09anEvent stopPropagation; preventDefault ]",
  164. messageSends: ["ifTrue:", "=", "charCode", "asciiValue", "toggle", "stopPropagation", "preventDefault"],
  165. referencedClasses: []
  166. }),
  167. smalltalk.MKCheckboxController);
  168. smalltalk.addMethod(
  169. smalltalk.method({
  170. selector: "toggle",
  171. category: 'actions',
  172. fn: function (){
  173. var self=this;
  174. return smalltalk.withContext(function($ctx1) {
  175. self._performAspectActionWith_(_st(_st(self._view())._checked())._not());
  176. return self}, function($ctx1) {$ctx1.fill(self,"toggle",{},smalltalk.MKCheckboxController)})},
  177. args: [],
  178. source: "toggle\x0a\x09self performAspectActionWith: self view checked not",
  179. messageSends: ["performAspectActionWith:", "not", "checked", "view"],
  180. referencedClasses: []
  181. }),
  182. smalltalk.MKCheckboxController);
  183. smalltalk.addClass('MKDropdownController', smalltalk.MKAspectsController, [], 'Moka-Controllers');
  184. smalltalk.addMethod(
  185. smalltalk.method({
  186. selector: "onClick:",
  187. category: 'actions',
  188. fn: function (anEvent){
  189. var self=this;
  190. return smalltalk.withContext(function($ctx1) {
  191. _st(self._view())._popupList();
  192. return self}, function($ctx1) {$ctx1.fill(self,"onClick:",{anEvent:anEvent},smalltalk.MKDropdownController)})},
  193. args: ["anEvent"],
  194. source: "onClick: anEvent\x0a\x09self view popupList",
  195. messageSends: ["popupList", "view"],
  196. referencedClasses: []
  197. }),
  198. smalltalk.MKDropdownController);
  199. smalltalk.addMethod(
  200. smalltalk.method({
  201. selector: "onKeyDown:",
  202. category: 'actions',
  203. fn: function (anEvent){
  204. var self=this;
  205. function $String(){return smalltalk.String||(typeof String=="undefined"?nil:String)}
  206. return smalltalk.withContext(function($ctx1) {
  207. var $1;
  208. $1=_st(_st(anEvent)._keyCode()).__eq(_st(_st($String())._cr())._asciiValue());
  209. if(smalltalk.assert($1)){
  210. _st(self._view())._popupList();
  211. };
  212. return self}, function($ctx1) {$ctx1.fill(self,"onKeyDown:",{anEvent:anEvent},smalltalk.MKDropdownController)})},
  213. args: ["anEvent"],
  214. source: "onKeyDown: anEvent\x0a\x09anEvent keyCode = String cr asciiValue ifTrue: [\x0a\x09\x09self view popupList ]",
  215. messageSends: ["ifTrue:", "=", "keyCode", "asciiValue", "cr", "popupList", "view"],
  216. referencedClasses: ["String"]
  217. }),
  218. smalltalk.MKDropdownController);
  219. smalltalk.addClass('MKListController', smalltalk.MKAspectsController, ['downRepeater', 'upRepeater'], 'Moka-Controllers');
  220. smalltalk.addMethod(
  221. smalltalk.method({
  222. selector: "activateItem:",
  223. category: 'actions',
  224. fn: function (anItem){
  225. var self=this;
  226. return smalltalk.withContext(function($ctx1) {
  227. self._selectItem_(anItem);
  228. return self}, function($ctx1) {$ctx1.fill(self,"activateItem:",{anItem:anItem},smalltalk.MKListController)})},
  229. args: ["anItem"],
  230. source: "activateItem: anItem\x0a\x09\x22On item activation, change the model selection\x22\x0a\x09\x0a\x09self selectItem: anItem",
  231. messageSends: ["selectItem:"],
  232. referencedClasses: []
  233. }),
  234. smalltalk.MKListController);
  235. smalltalk.addMethod(
  236. smalltalk.method({
  237. selector: "activeItem",
  238. category: 'accessing',
  239. fn: function (){
  240. var self=this;
  241. return smalltalk.withContext(function($ctx1) {
  242. var $1;
  243. $1=_st(self._view())._activeItem();
  244. return $1;
  245. }, function($ctx1) {$ctx1.fill(self,"activeItem",{},smalltalk.MKListController)})},
  246. args: [],
  247. source: "activeItem\x0a\x09^ self view activeItem",
  248. messageSends: ["activeItem", "view"],
  249. referencedClasses: []
  250. }),
  251. smalltalk.MKListController);
  252. smalltalk.addMethod(
  253. smalltalk.method({
  254. selector: "collection",
  255. category: 'accessing',
  256. fn: function (){
  257. var self=this;
  258. return smalltalk.withContext(function($ctx1) {
  259. var $1;
  260. $1=_st(self._view())._collection();
  261. return $1;
  262. }, function($ctx1) {$ctx1.fill(self,"collection",{},smalltalk.MKListController)})},
  263. args: [],
  264. source: "collection\x0a\x09^ self view collection",
  265. messageSends: ["collection", "view"],
  266. referencedClasses: []
  267. }),
  268. smalltalk.MKListController);
  269. smalltalk.addMethod(
  270. smalltalk.method({
  271. selector: "downRepeater",
  272. category: 'accessing',
  273. fn: function (){
  274. var self=this;
  275. function $MKRepeater(){return smalltalk.MKRepeater||(typeof MKRepeater=="undefined"?nil:MKRepeater)}
  276. return smalltalk.withContext(function($ctx1) {
  277. var $2,$1;
  278. $2=self["@downRepeater"];
  279. if(($receiver = $2) == nil || $receiver == null){
  280. self["@downRepeater"]=_st($MKRepeater())._new();
  281. $1=self["@downRepeater"];
  282. } else {
  283. $1=$2;
  284. };
  285. return $1;
  286. }, function($ctx1) {$ctx1.fill(self,"downRepeater",{},smalltalk.MKListController)})},
  287. args: [],
  288. source: "downRepeater\x0a\x09^ downRepeater ifNil: [ downRepeater := MKRepeater new ]",
  289. messageSends: ["ifNil:", "new"],
  290. referencedClasses: ["MKRepeater"]
  291. }),
  292. smalltalk.MKListController);
  293. smalltalk.addMethod(
  294. smalltalk.method({
  295. selector: "itemForTarget:",
  296. category: 'private',
  297. fn: function (aDOMElement){
  298. var self=this;
  299. return smalltalk.withContext(function($ctx1) {
  300. var $1;
  301. $1=_st(self._view())._findItemFor_(aDOMElement);
  302. return $1;
  303. }, function($ctx1) {$ctx1.fill(self,"itemForTarget:",{aDOMElement:aDOMElement},smalltalk.MKListController)})},
  304. args: ["aDOMElement"],
  305. source: "itemForTarget: aDOMElement\x0a\x09^ self view findItemFor: aDOMElement",
  306. messageSends: ["findItemFor:", "view"],
  307. referencedClasses: []
  308. }),
  309. smalltalk.MKListController);
  310. smalltalk.addMethod(
  311. smalltalk.method({
  312. selector: "nextItem",
  313. category: 'private',
  314. fn: function (){
  315. var self=this;
  316. return smalltalk.withContext(function($ctx1) {
  317. var $2,$5,$4,$3,$1;
  318. $2=self._collection();
  319. $ctx1.sendIdx["collection"]=1;
  320. $5=self._collection();
  321. $ctx1.sendIdx["collection"]=2;
  322. $4=_st($5)._indexOf_(self._activeItem());
  323. $3=_st($4).__plus((1));
  324. $1=_st($2)._at_ifAbsent_($3,(function(){
  325. return smalltalk.withContext(function($ctx2) {
  326. return _st(self._collection())._last();
  327. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
  328. return $1;
  329. }, function($ctx1) {$ctx1.fill(self,"nextItem",{},smalltalk.MKListController)})},
  330. args: [],
  331. source: "nextItem\x0a\x09^ self collection \x0a\x09\x09at: (self collection indexOf: self activeItem) + 1\x0a\x09\x09ifAbsent: [ self collection last ]",
  332. messageSends: ["at:ifAbsent:", "collection", "+", "indexOf:", "activeItem", "last"],
  333. referencedClasses: []
  334. }),
  335. smalltalk.MKListController);
  336. smalltalk.addMethod(
  337. smalltalk.method({
  338. selector: "onClick:",
  339. category: 'actions',
  340. fn: function (anEvent){
  341. var self=this;
  342. return smalltalk.withContext(function($ctx1) {
  343. self._selectItem_(self._itemForTarget_(_st(anEvent)._target()));
  344. return self}, function($ctx1) {$ctx1.fill(self,"onClick:",{anEvent:anEvent},smalltalk.MKListController)})},
  345. args: ["anEvent"],
  346. source: "onClick: anEvent\x0a\x09self selectItem: (self itemForTarget: anEvent target)",
  347. messageSends: ["selectItem:", "itemForTarget:", "target"],
  348. referencedClasses: []
  349. }),
  350. smalltalk.MKListController);
  351. smalltalk.addMethod(
  352. smalltalk.method({
  353. selector: "onKeyDown:",
  354. category: 'actions',
  355. fn: function (anEvent){
  356. var self=this;
  357. return smalltalk.withContext(function($ctx1) {
  358. var $2,$1,$3,$4,$5,$6,$7;
  359. $2=_st(anEvent)._keyCode();
  360. $ctx1.sendIdx["keyCode"]=1;
  361. $1=_st($2).__eq((40));
  362. $ctx1.sendIdx["="]=1;
  363. if(smalltalk.assert($1)){
  364. _st(anEvent)._preventDefault();
  365. $ctx1.sendIdx["preventDefault"]=1;
  366. $3=_st(anEvent)._stopPropagation();
  367. $ctx1.sendIdx["stopPropagation"]=1;
  368. $3;
  369. $4=self._upRepeater();
  370. $ctx1.sendIdx["upRepeater"]=1;
  371. _st($4)._stopRepeating();
  372. $ctx1.sendIdx["stopRepeating"]=1;
  373. $5=self._downRepeater();
  374. $ctx1.sendIdx["downRepeater"]=1;
  375. _st($5)._repeat_((function(){
  376. return smalltalk.withContext(function($ctx2) {
  377. return self._activateItem_(self._nextItem());
  378. $ctx2.sendIdx["activateItem:"]=1;
  379. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}));
  380. $ctx1.sendIdx["repeat:"]=1;
  381. };
  382. $6=_st(_st(anEvent)._keyCode()).__eq((38));
  383. if(smalltalk.assert($6)){
  384. _st(anEvent)._preventDefault();
  385. $7=_st(anEvent)._stopPropagation();
  386. $7;
  387. _st(self._downRepeater())._stopRepeating();
  388. _st(self._upRepeater())._repeat_((function(){
  389. return smalltalk.withContext(function($ctx2) {
  390. return self._activateItem_(self._previousItem());
  391. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,4)})}));
  392. };
  393. return self}, function($ctx1) {$ctx1.fill(self,"onKeyDown:",{anEvent:anEvent},smalltalk.MKListController)})},
  394. args: ["anEvent"],
  395. source: "onKeyDown: anEvent\x0a\x09\x22Down\x22\x0a\x09anEvent keyCode = 40 ifTrue: [ \x0a\x09\x09anEvent preventDefault; stopPropagation.\x0a\x09\x09self upRepeater stopRepeating.\x0a\x09\x09self downRepeater repeat: [ \x0a\x09\x09\x09self activateItem: self nextItem ] ].\x0a\x09\x22Up\x22\x0a\x09anEvent keyCode = 38 ifTrue: [ \x0a\x09\x09anEvent preventDefault; stopPropagation.\x0a\x09\x09self downRepeater stopRepeating.\x0a\x09\x09self upRepeater repeat: [ \x0a\x09\x09\x09self activateItem: self previousItem ] ].",
  396. messageSends: ["ifTrue:", "=", "keyCode", "preventDefault", "stopPropagation", "stopRepeating", "upRepeater", "repeat:", "downRepeater", "activateItem:", "nextItem", "previousItem"],
  397. referencedClasses: []
  398. }),
  399. smalltalk.MKListController);
  400. smalltalk.addMethod(
  401. smalltalk.method({
  402. selector: "onKeyUp:",
  403. category: 'actions',
  404. fn: function (anEvent){
  405. var self=this;
  406. return smalltalk.withContext(function($ctx1) {
  407. _st(self._downRepeater())._stopRepeating();
  408. $ctx1.sendIdx["stopRepeating"]=1;
  409. _st(self._upRepeater())._stopRepeating();
  410. return self}, function($ctx1) {$ctx1.fill(self,"onKeyUp:",{anEvent:anEvent},smalltalk.MKListController)})},
  411. args: ["anEvent"],
  412. source: "onKeyUp: anEvent\x0a\x09self downRepeater stopRepeating.\x0a\x09self upRepeater stopRepeating",
  413. messageSends: ["stopRepeating", "downRepeater", "upRepeater"],
  414. referencedClasses: []
  415. }),
  416. smalltalk.MKListController);
  417. smalltalk.addMethod(
  418. smalltalk.method({
  419. selector: "previousItem",
  420. category: 'private',
  421. fn: function (){
  422. var self=this;
  423. return smalltalk.withContext(function($ctx1) {
  424. var $3,$2,$7,$6,$5,$4,$1;
  425. $3=self._view();
  426. $ctx1.sendIdx["view"]=1;
  427. $2=_st($3)._collection();
  428. $ctx1.sendIdx["collection"]=1;
  429. $7=self._view();
  430. $ctx1.sendIdx["view"]=2;
  431. $6=_st($7)._collection();
  432. $ctx1.sendIdx["collection"]=2;
  433. $5=_st($6)._indexOf_(self._activeItem());
  434. $4=_st($5).__minus((1));
  435. $1=_st($2)._at_ifAbsent_($4,(function(){
  436. return smalltalk.withContext(function($ctx2) {
  437. return _st(_st(self._view())._collection())._first();
  438. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
  439. return $1;
  440. }, function($ctx1) {$ctx1.fill(self,"previousItem",{},smalltalk.MKListController)})},
  441. args: [],
  442. source: "previousItem\x0a\x09^ self view collection \x0a\x09\x09at: (self view collection indexOf: self activeItem) - 1\x0a\x09\x09ifAbsent: [ self view collection first ]",
  443. messageSends: ["at:ifAbsent:", "collection", "view", "-", "indexOf:", "activeItem", "first"],
  444. referencedClasses: []
  445. }),
  446. smalltalk.MKListController);
  447. smalltalk.addMethod(
  448. smalltalk.method({
  449. selector: "selectItem:",
  450. category: 'actions',
  451. fn: function (anItem){
  452. var self=this;
  453. return smalltalk.withContext(function($ctx1) {
  454. self._performAspectAction_with_(_st(self._view())._selectionAspect(),anItem);
  455. return self}, function($ctx1) {$ctx1.fill(self,"selectItem:",{anItem:anItem},smalltalk.MKListController)})},
  456. args: ["anItem"],
  457. source: "selectItem: anItem\x0a\x09self \x0a\x09\x09performAspectAction: self view selectionAspect \x0a\x09\x09with: anItem",
  458. messageSends: ["performAspectAction:with:", "selectionAspect", "view"],
  459. referencedClasses: []
  460. }),
  461. smalltalk.MKListController);
  462. smalltalk.addMethod(
  463. smalltalk.method({
  464. selector: "upRepeater",
  465. category: 'accessing',
  466. fn: function (){
  467. var self=this;
  468. function $MKRepeater(){return smalltalk.MKRepeater||(typeof MKRepeater=="undefined"?nil:MKRepeater)}
  469. return smalltalk.withContext(function($ctx1) {
  470. var $2,$1;
  471. $2=self["@upRepeater"];
  472. if(($receiver = $2) == nil || $receiver == null){
  473. self["@upRepeater"]=_st($MKRepeater())._new();
  474. $1=self["@upRepeater"];
  475. } else {
  476. $1=$2;
  477. };
  478. return $1;
  479. }, function($ctx1) {$ctx1.fill(self,"upRepeater",{},smalltalk.MKListController)})},
  480. args: [],
  481. source: "upRepeater\x0a\x09^ upRepeater ifNil: [ upRepeater := MKRepeater new ]",
  482. messageSends: ["ifNil:", "new"],
  483. referencedClasses: ["MKRepeater"]
  484. }),
  485. smalltalk.MKListController);
  486. smalltalk.addClass('MKDropdownListController', smalltalk.MKListController, [], 'Moka-Controllers');
  487. smalltalk.addMethod(
  488. smalltalk.method({
  489. selector: "activateItem:",
  490. category: 'actions',
  491. fn: function (anItem){
  492. var self=this;
  493. return smalltalk.withContext(function($ctx1) {
  494. _st(self._view())._activateItem_(anItem);
  495. return self}, function($ctx1) {$ctx1.fill(self,"activateItem:",{anItem:anItem},smalltalk.MKDropdownListController)})},
  496. args: ["anItem"],
  497. source: "activateItem: anItem\x0a\x09\x22Select the list item in the view.\x0a\x09No change is done to the model\x22\x0a\x09\x0a\x09self view activateItem: anItem",
  498. messageSends: ["activateItem:", "view"],
  499. referencedClasses: []
  500. }),
  501. smalltalk.MKDropdownListController);
  502. smalltalk.addMethod(
  503. smalltalk.method({
  504. selector: "onKeyDown:",
  505. category: 'actions',
  506. fn: function (anEvent){
  507. var self=this;
  508. function $String(){return smalltalk.String||(typeof String=="undefined"?nil:String)}
  509. return smalltalk.withContext(function($ctx1) {
  510. var $1;
  511. smalltalk.MKDropdownListController.superclass.fn.prototype._onKeyDown_.apply(_st(self), [anEvent]);
  512. $1=_st(_st(anEvent)._keyCode()).__eq(_st(_st($String())._cr())._asciiValue());
  513. if(smalltalk.assert($1)){
  514. self._selectItem_(_st(self._view())._activeItem());
  515. };
  516. return self}, function($ctx1) {$ctx1.fill(self,"onKeyDown:",{anEvent:anEvent},smalltalk.MKDropdownListController)})},
  517. args: ["anEvent"],
  518. source: "onKeyDown: anEvent\x0a\x09super onKeyDown: anEvent.\x0a\x09\x0a\x09anEvent keyCode = String cr asciiValue ifTrue: [\x0a\x09\x09self selectItem: self view activeItem ]",
  519. messageSends: ["onKeyDown:", "ifTrue:", "=", "keyCode", "asciiValue", "cr", "selectItem:", "activeItem", "view"],
  520. referencedClasses: ["String"]
  521. }),
  522. smalltalk.MKDropdownListController);
  523. smalltalk.addMethod(
  524. smalltalk.method({
  525. selector: "onMouseMove:",
  526. category: 'actions',
  527. fn: function (anEvent){
  528. var self=this;
  529. return smalltalk.withContext(function($ctx1) {
  530. var $2,$1;
  531. $2=_st(self._upRepeater())._isRepeating();
  532. $ctx1.sendIdx["isRepeating"]=1;
  533. $1=_st($2)._or_((function(){
  534. return smalltalk.withContext(function($ctx2) {
  535. return _st(self._downRepeater())._isRepeating();
  536. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
  537. if(smalltalk.assert($1)){
  538. return self;
  539. };
  540. self._activateItem_(self._itemForTarget_(_st(anEvent)._target()));
  541. return self}, function($ctx1) {$ctx1.fill(self,"onMouseMove:",{anEvent:anEvent},smalltalk.MKDropdownListController)})},
  542. args: ["anEvent"],
  543. source: "onMouseMove: anEvent\x0a\x09(self upRepeater isRepeating or: [ self downRepeater isRepeating ])\x0a\x09\x09ifTrue: [ ^ self ].\x0a\x09\x09\x0a\x09self activateItem: (self itemForTarget: anEvent target)",
  544. messageSends: ["ifTrue:", "or:", "isRepeating", "upRepeater", "downRepeater", "activateItem:", "itemForTarget:", "target"],
  545. referencedClasses: []
  546. }),
  547. smalltalk.MKDropdownListController);
  548. smalltalk.addClass('MKModalPaneController', smalltalk.MKSingleAspectController, [], 'Moka-Controllers');
  549. smalltalk.addMethod(
  550. smalltalk.method({
  551. selector: "onClick:",
  552. category: 'actions',
  553. fn: function (anEvent){
  554. var self=this;
  555. return smalltalk.withContext(function($ctx1) {
  556. var $1;
  557. $1=_st(self._view())._closeOnClick();
  558. if(smalltalk.assert($1)){
  559. self._removeView();
  560. };
  561. return self}, function($ctx1) {$ctx1.fill(self,"onClick:",{anEvent:anEvent},smalltalk.MKModalPaneController)})},
  562. args: ["anEvent"],
  563. source: "onClick: anEvent\x0a\x09self view closeOnClick ifTrue: [ self removeView ]",
  564. messageSends: ["ifTrue:", "closeOnClick", "view", "removeView"],
  565. referencedClasses: []
  566. }),
  567. smalltalk.MKModalPaneController);
  568. smalltalk.addMethod(
  569. smalltalk.method({
  570. selector: "onKeyDown:",
  571. category: 'actions',
  572. fn: function (anEvent){
  573. var self=this;
  574. function $String(){return smalltalk.String||(typeof String=="undefined"?nil:String)}
  575. return smalltalk.withContext(function($ctx1) {
  576. var $2,$1,$3,$4;
  577. $2=_st(anEvent)._keyCode();
  578. $ctx1.sendIdx["keyCode"]=1;
  579. $1=_st($2).__eq((27));
  580. $ctx1.sendIdx["="]=1;
  581. if(smalltalk.assert($1)){
  582. self._removeView();
  583. $ctx1.sendIdx["removeView"]=1;
  584. };
  585. $3=_st(self._view())._closeOnEnter();
  586. if(smalltalk.assert($3)){
  587. $4=_st(_st(anEvent)._keyCode()).__eq(_st(_st($String())._cr())._asciiValue());
  588. if(smalltalk.assert($4)){
  589. self._removeView();
  590. };
  591. };
  592. return self}, function($ctx1) {$ctx1.fill(self,"onKeyDown:",{anEvent:anEvent},smalltalk.MKModalPaneController)})},
  593. args: ["anEvent"],
  594. source: "onKeyDown: anEvent\x0a\x09\x22ESC\x22\x0a\x09anEvent keyCode = 27 ifTrue: [\x0a\x09\x09self removeView ].\x0a\x09\x09\x0a\x09self view closeOnEnter ifTrue: [\x0a\x09\x09anEvent keyCode = String cr asciiValue ifTrue: [ \x0a\x09\x09\x09self removeView ] ]",
  595. messageSends: ["ifTrue:", "=", "keyCode", "removeView", "closeOnEnter", "view", "asciiValue", "cr"],
  596. referencedClasses: ["String"]
  597. }),
  598. smalltalk.MKModalPaneController);
  599. smalltalk.addMethod(
  600. smalltalk.method({
  601. selector: "removeView",
  602. category: 'actions',
  603. fn: function (){
  604. var self=this;
  605. return smalltalk.withContext(function($ctx1) {
  606. _st(_st(self._view())._overlay())._remove();
  607. return self}, function($ctx1) {$ctx1.fill(self,"removeView",{},smalltalk.MKModalPaneController)})},
  608. args: [],
  609. source: "removeView\x0a\x09self view overlay remove",
  610. messageSends: ["remove", "overlay", "view"],
  611. referencedClasses: []
  612. }),
  613. smalltalk.MKModalPaneController);
  614. smalltalk.addClass('MKOverlayController', smalltalk.MKSingleAspectController, [], 'Moka-Controllers');
  615. smalltalk.MKOverlayController.comment="I am the default controller for `MKOverlayView`.\x0a\x0aOn a click to the overlay, it is removed together with it's content view.";
  616. smalltalk.addMethod(
  617. smalltalk.method({
  618. selector: "onClick:",
  619. category: 'actions',
  620. fn: function (anEvent){
  621. var self=this;
  622. return smalltalk.withContext(function($ctx1) {
  623. _st(self._view())._remove();
  624. return self}, function($ctx1) {$ctx1.fill(self,"onClick:",{anEvent:anEvent},smalltalk.MKOverlayController)})},
  625. args: ["anEvent"],
  626. source: "onClick: anEvent\x0a\x09self view remove",
  627. messageSends: ["remove", "view"],
  628. referencedClasses: []
  629. }),
  630. smalltalk.MKOverlayController);
  631. smalltalk.addClass('MKRepeater', smalltalk.Object, ['repeatInterval', 'interval', 'delay'], 'Moka-Controllers');
  632. smalltalk.MKRepeater.comment="I am an internal class used by controllers to repeat block actions after a `delay` and with an `interval`.";
  633. smalltalk.addMethod(
  634. smalltalk.method({
  635. selector: "defaultRepeatInterval",
  636. category: 'defaults',
  637. fn: function (){
  638. var self=this;
  639. return smalltalk.withContext(function($ctx1) {
  640. return (70);
  641. }, function($ctx1) {$ctx1.fill(self,"defaultRepeatInterval",{},smalltalk.MKRepeater)})},
  642. args: [],
  643. source: "defaultRepeatInterval\x0a\x09^ 70",
  644. messageSends: [],
  645. referencedClasses: []
  646. }),
  647. smalltalk.MKRepeater);
  648. smalltalk.addMethod(
  649. smalltalk.method({
  650. selector: "isRepeating",
  651. category: 'testing',
  652. fn: function (){
  653. var self=this;
  654. return smalltalk.withContext(function($ctx1) {
  655. var $1;
  656. $1=_st(self["@delay"])._notNil();
  657. return $1;
  658. }, function($ctx1) {$ctx1.fill(self,"isRepeating",{},smalltalk.MKRepeater)})},
  659. args: [],
  660. source: "isRepeating\x0a\x09^ delay notNil",
  661. messageSends: ["notNil"],
  662. referencedClasses: []
  663. }),
  664. smalltalk.MKRepeater);
  665. smalltalk.addMethod(
  666. smalltalk.method({
  667. selector: "repeat:",
  668. category: 'actions',
  669. fn: function (aBlock){
  670. var self=this;
  671. return smalltalk.withContext(function($ctx1) {
  672. var $1;
  673. $1=self._isRepeating();
  674. if(smalltalk.assert($1)){
  675. return self;
  676. };
  677. _st(aBlock)._value();
  678. self["@delay"]=_st((function(){
  679. return smalltalk.withContext(function($ctx2) {
  680. self["@interval"]=_st(aBlock)._valueWithInterval_(self._repeatInterval());
  681. return self["@interval"];
  682. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)})}))._valueWithTimeout_((300));
  683. return self}, function($ctx1) {$ctx1.fill(self,"repeat:",{aBlock:aBlock},smalltalk.MKRepeater)})},
  684. args: ["aBlock"],
  685. source: "repeat: aBlock\x0a\x09self isRepeating ifTrue: [ ^ self ].\x0a\x09aBlock value.\x0a\x09delay := [ interval := aBlock valueWithInterval: self repeatInterval ] \x0a\x09\x09valueWithTimeout: 300",
  686. messageSends: ["ifTrue:", "isRepeating", "value", "valueWithTimeout:", "valueWithInterval:", "repeatInterval"],
  687. referencedClasses: []
  688. }),
  689. smalltalk.MKRepeater);
  690. smalltalk.addMethod(
  691. smalltalk.method({
  692. selector: "repeatInterval",
  693. category: 'accessing',
  694. fn: function (){
  695. var self=this;
  696. return smalltalk.withContext(function($ctx1) {
  697. var $2,$1;
  698. $2=self["@repeatInterval"];
  699. if(($receiver = $2) == nil || $receiver == null){
  700. $1=self._defaultRepeatInterval();
  701. } else {
  702. $1=$2;
  703. };
  704. return $1;
  705. }, function($ctx1) {$ctx1.fill(self,"repeatInterval",{},smalltalk.MKRepeater)})},
  706. args: [],
  707. source: "repeatInterval\x0a\x09^ repeatInterval ifNil: [ self defaultRepeatInterval ]",
  708. messageSends: ["ifNil:", "defaultRepeatInterval"],
  709. referencedClasses: []
  710. }),
  711. smalltalk.MKRepeater);
  712. smalltalk.addMethod(
  713. smalltalk.method({
  714. selector: "repeatInterval:",
  715. category: 'accessing',
  716. fn: function (aNumber){
  717. var self=this;
  718. return smalltalk.withContext(function($ctx1) {
  719. self["@repeatInterval"]=aNumber;
  720. return self}, function($ctx1) {$ctx1.fill(self,"repeatInterval:",{aNumber:aNumber},smalltalk.MKRepeater)})},
  721. args: ["aNumber"],
  722. source: "repeatInterval: aNumber\x0a\x09repeatInterval := aNumber",
  723. messageSends: [],
  724. referencedClasses: []
  725. }),
  726. smalltalk.MKRepeater);
  727. smalltalk.addMethod(
  728. smalltalk.method({
  729. selector: "stopRepeating",
  730. category: 'actions',
  731. fn: function (){
  732. var self=this;
  733. return smalltalk.withContext(function($ctx1) {
  734. var $1,$2;
  735. $1=self["@interval"];
  736. if(($receiver = $1) == nil || $receiver == null){
  737. $1;
  738. } else {
  739. _st(self["@interval"])._clearInterval();
  740. };
  741. $2=self["@delay"];
  742. if(($receiver = $2) == nil || $receiver == null){
  743. $2;
  744. } else {
  745. _st(self["@delay"])._clearTimeout();
  746. };
  747. self["@delay"]=nil;
  748. self["@interval"]=self["@delay"];
  749. return self}, function($ctx1) {$ctx1.fill(self,"stopRepeating",{},smalltalk.MKRepeater)})},
  750. args: [],
  751. source: "stopRepeating\x0a\x09interval ifNotNil: [ interval clearInterval ].\x0a\x09delay ifNotNil: [ delay clearTimeout ].\x0a\x09interval := delay := nil",
  752. messageSends: ["ifNotNil:", "clearInterval", "clearTimeout"],
  753. referencedClasses: []
  754. }),
  755. smalltalk.MKRepeater);
  756. smalltalk.addClass('MKScrollController', smalltalk.MKController, [], 'Moka-Controllers');
  757. smalltalk.addMethod(
  758. smalltalk.method({
  759. selector: "onHorizontalDrag:",
  760. category: 'actions',
  761. fn: function (anEvent){
  762. var self=this;
  763. return smalltalk.withContext(function($ctx1) {
  764. _st(_st(_st(_st(self._view())._decorated())._asJQuery())._get_((0)))._at_put_("scrollLeft",_st(self._position())._x());
  765. return self}, function($ctx1) {$ctx1.fill(self,"onHorizontalDrag:",{anEvent:anEvent},smalltalk.MKScrollController)})},
  766. args: ["anEvent"],
  767. source: "onHorizontalDrag: anEvent\x0a\x09(self view decorated asJQuery get: 0) at: 'scrollLeft' put: self position x",
  768. messageSends: ["at:put:", "get:", "asJQuery", "decorated", "view", "x", "position"],
  769. referencedClasses: []
  770. }),
  771. smalltalk.MKScrollController);
  772. smalltalk.addMethod(
  773. smalltalk.method({
  774. selector: "onVerticalDrag:",
  775. category: 'actions',
  776. fn: function (anEvent){
  777. var self=this;
  778. return smalltalk.withContext(function($ctx1) {
  779. var $1,$3,$2;
  780. $1=console;
  781. $3=self._position();
  782. $ctx1.sendIdx["position"]=1;
  783. $2=_st($3)._asString();
  784. _st($1)._log_($2);
  785. _st(_st(_st(_st(self._view())._decorated())._asJQuery())._get_((0)))._at_put_("scrollTop",_st(self._position())._y());
  786. return self}, function($ctx1) {$ctx1.fill(self,"onVerticalDrag:",{anEvent:anEvent},smalltalk.MKScrollController)})},
  787. args: ["anEvent"],
  788. source: "onVerticalDrag: anEvent\x0a\x09console log: self position asString.\x0a\x09(self view decorated asJQuery get: 0) at: 'scrollTop' put: self position y",
  789. messageSends: ["log:", "asString", "position", "at:put:", "get:", "asJQuery", "decorated", "view", "y"],
  790. referencedClasses: []
  791. }),
  792. smalltalk.MKScrollController);
  793. smalltalk.addMethod(
  794. smalltalk.method({
  795. selector: "position",
  796. category: 'accessing',
  797. fn: function (){
  798. var self=this;
  799. return smalltalk.withContext(function($ctx1) {
  800. var $1;
  801. $1=_st(_st(self._view())._domDecoratedSize()).__star(self._scrollPercent());
  802. return $1;
  803. }, function($ctx1) {$ctx1.fill(self,"position",{},smalltalk.MKScrollController)})},
  804. args: [],
  805. source: "position\x0a\x09^ self view domDecoratedSize * self scrollPercent",
  806. messageSends: ["*", "domDecoratedSize", "view", "scrollPercent"],
  807. referencedClasses: []
  808. }),
  809. smalltalk.MKScrollController);
  810. smalltalk.addMethod(
  811. smalltalk.method({
  812. selector: "scrollPercent",
  813. category: 'accessing',
  814. fn: function (){
  815. var self=this;
  816. return smalltalk.withContext(function($ctx1) {
  817. var $3,$2,$6,$5,$4,$1;
  818. $3=self._view();
  819. $ctx1.sendIdx["view"]=1;
  820. $2=_st($3)._domScrollPosition();
  821. $6=self._view();
  822. $ctx1.sendIdx["view"]=2;
  823. $5=_st($6)._domSize();
  824. $4=_st($5).__minus(_st(self._view())._domScrollbarSize());
  825. $1=_st($2).__slash($4);
  826. return $1;
  827. }, function($ctx1) {$ctx1.fill(self,"scrollPercent",{},smalltalk.MKScrollController)})},
  828. args: [],
  829. source: "scrollPercent\x0a\x09^ self view domScrollPosition / (self view domSize - self view domScrollbarSize)",
  830. messageSends: ["/", "domScrollPosition", "view", "-", "domSize", "domScrollbarSize"],
  831. referencedClasses: []
  832. }),
  833. smalltalk.MKScrollController);
  834. });