1
0

Helios-KeyBindings.deploy.js 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615
  1. smalltalk.addPackage('Helios-KeyBindings', {});
  2. smalltalk.addClass('HLBinding', smalltalk.Object, ['key', 'label'], 'Helios-KeyBindings');
  3. smalltalk.addMethod(
  4. "_isBindingAction",
  5. smalltalk.method({
  6. selector: "isBindingAction",
  7. fn: function (){
  8. var self=this;
  9. return false;
  10. }
  11. }),
  12. smalltalk.HLBinding);
  13. smalltalk.addMethod(
  14. "_isBindingGroup",
  15. smalltalk.method({
  16. selector: "isBindingGroup",
  17. fn: function (){
  18. var self=this;
  19. return false;
  20. }
  21. }),
  22. smalltalk.HLBinding);
  23. smalltalk.addMethod(
  24. "_key",
  25. smalltalk.method({
  26. selector: "key",
  27. fn: function (){
  28. var self=this;
  29. return self["@key"];
  30. }
  31. }),
  32. smalltalk.HLBinding);
  33. smalltalk.addMethod(
  34. "_key_",
  35. smalltalk.method({
  36. selector: "key:",
  37. fn: function (anInteger){
  38. var self=this;
  39. self["@key"]=anInteger;
  40. return self}
  41. }),
  42. smalltalk.HLBinding);
  43. smalltalk.addMethod(
  44. "_label",
  45. smalltalk.method({
  46. selector: "label",
  47. fn: function (){
  48. var self=this;
  49. return self["@label"];
  50. }
  51. }),
  52. smalltalk.HLBinding);
  53. smalltalk.addMethod(
  54. "_label_",
  55. smalltalk.method({
  56. selector: "label:",
  57. fn: function (aString){
  58. var self=this;
  59. self["@label"]=aString;
  60. return self}
  61. }),
  62. smalltalk.HLBinding);
  63. smalltalk.addMethod(
  64. "_shortcut",
  65. smalltalk.method({
  66. selector: "shortcut",
  67. fn: function (){
  68. var self=this;
  69. var $1;
  70. $1=smalltalk.send((smalltalk.String || String),"_fromCharCode_",[smalltalk.send(self,"_key",[])]);
  71. return $1;
  72. }
  73. }),
  74. smalltalk.HLBinding);
  75. smalltalk.addMethod(
  76. "_on_labelled_",
  77. smalltalk.method({
  78. selector: "on:labelled:",
  79. fn: function (anInteger,aString){
  80. var self=this;
  81. var $2,$3,$1;
  82. $2=smalltalk.send(self,"_new",[]);
  83. smalltalk.send($2,"_key_",[anInteger]);
  84. smalltalk.send($2,"_label_",[aString]);
  85. $3=smalltalk.send($2,"_yourself",[]);
  86. $1=$3;
  87. return $1;
  88. }
  89. }),
  90. smalltalk.HLBinding.klass);
  91. smalltalk.addClass('HLBindingAction', smalltalk.HLBinding, ['callback'], 'Helios-KeyBindings');
  92. smalltalk.addMethod(
  93. "_callback",
  94. smalltalk.method({
  95. selector: "callback",
  96. fn: function (){
  97. var self=this;
  98. return self["@callback"];
  99. }
  100. }),
  101. smalltalk.HLBindingAction);
  102. smalltalk.addMethod(
  103. "_callback_",
  104. smalltalk.method({
  105. selector: "callback:",
  106. fn: function (aBlock){
  107. var self=this;
  108. self["@callback"]=aBlock;
  109. return self}
  110. }),
  111. smalltalk.HLBindingAction);
  112. smalltalk.addMethod(
  113. "_isBindingAction",
  114. smalltalk.method({
  115. selector: "isBindingAction",
  116. fn: function (){
  117. var self=this;
  118. return true;
  119. }
  120. }),
  121. smalltalk.HLBindingAction);
  122. smalltalk.addClass('HLBindingGroup', smalltalk.HLBinding, ['bindings'], 'Helios-KeyBindings');
  123. smalltalk.addMethod(
  124. "_add_",
  125. smalltalk.method({
  126. selector: "add:",
  127. fn: function (aBinding){
  128. var self=this;
  129. var $1;
  130. $1=smalltalk.send(smalltalk.send(self,"_bindings",[]),"_add_",[aBinding]);
  131. return $1;
  132. }
  133. }),
  134. smalltalk.HLBindingGroup);
  135. smalltalk.addMethod(
  136. "_addActionKey_labelled_callback_",
  137. smalltalk.method({
  138. selector: "addActionKey:labelled:callback:",
  139. fn: function (anInteger,aString,aBlock){
  140. var self=this;
  141. var $1,$2;
  142. $1=smalltalk.send((smalltalk.HLBindingAction || HLBindingAction),"_on_labelled_",[anInteger,aString]);
  143. smalltalk.send($1,"_callback_",[aBlock]);
  144. $2=smalltalk.send($1,"_yourself",[]);
  145. smalltalk.send(self,"_add_",[$2]);
  146. return self}
  147. }),
  148. smalltalk.HLBindingGroup);
  149. smalltalk.addMethod(
  150. "_addGroupKey_labelled_",
  151. smalltalk.method({
  152. selector: "addGroupKey:labelled:",
  153. fn: function (anInteger,aString){
  154. var self=this;
  155. smalltalk.send(self,"_add_",[smalltalk.send((smalltalk.HLBindingGroup || HLBindingGroup),"_on_labelled_",[anInteger,aString])]);
  156. return self}
  157. }),
  158. smalltalk.HLBindingGroup);
  159. smalltalk.addMethod(
  160. "_at_",
  161. smalltalk.method({
  162. selector: "at:",
  163. fn: function (aString){
  164. var self=this;
  165. var $1;
  166. $1=smalltalk.send(smalltalk.send(self,"_bindings",[]),"_detect_ifNone_",[(function(each){
  167. return smalltalk.send(smalltalk.send(each,"_label",[]),"__eq",[aString]);
  168. }),(function(){
  169. return nil;
  170. })]);
  171. return $1;
  172. }
  173. }),
  174. smalltalk.HLBindingGroup);
  175. smalltalk.addMethod(
  176. "_atkey_",
  177. smalltalk.method({
  178. selector: "atkey:",
  179. fn: function (anInteger){
  180. var self=this;
  181. var $1;
  182. $1=smalltalk.send(smalltalk.send(self,"_bindings",[]),"_detect_ifNone_",[(function(each){
  183. return smalltalk.send(smalltalk.send(each,"_key",[]),"__eq",[anInteger]);
  184. }),(function(){
  185. return nil;
  186. })]);
  187. return $1;
  188. }
  189. }),
  190. smalltalk.HLBindingGroup);
  191. smalltalk.addMethod(
  192. "_bindings",
  193. smalltalk.method({
  194. selector: "bindings",
  195. fn: function (){
  196. var self=this;
  197. var $1;
  198. if(($receiver = self["@bindings"]) == nil || $receiver == undefined){
  199. self["@bindings"]=smalltalk.send((smalltalk.OrderedCollection || OrderedCollection),"_new",[]);
  200. $1=self["@bindings"];
  201. } else {
  202. $1=self["@bindings"];
  203. };
  204. return $1;
  205. }
  206. }),
  207. smalltalk.HLBindingGroup);
  208. smalltalk.addMethod(
  209. "_isBindingGroup",
  210. smalltalk.method({
  211. selector: "isBindingGroup",
  212. fn: function (){
  213. var self=this;
  214. return true;
  215. }
  216. }),
  217. smalltalk.HLBindingGroup);
  218. smalltalk.addClass('HLKeyBinder', smalltalk.Object, ['modifierKey', 'active', 'helper', 'bindings', 'selectedBinding'], 'Helios-KeyBindings');
  219. smalltalk.addMethod(
  220. "_activate",
  221. smalltalk.method({
  222. selector: "activate",
  223. fn: function (){
  224. var self=this;
  225. self["@active"]=true;
  226. smalltalk.send(smalltalk.send(self,"_helper",[]),"_show",[]);
  227. return self}
  228. }),
  229. smalltalk.HLKeyBinder);
  230. smalltalk.addMethod(
  231. "_applyBinding_",
  232. smalltalk.method({
  233. selector: "applyBinding:",
  234. fn: function (aBinding){
  235. var self=this;
  236. var $1;
  237. $1=smalltalk.send(aBinding,"_isBindingGroup",[]);
  238. if(smalltalk.assert($1)){
  239. self["@selectedBinding"]=aBinding;
  240. self["@selectedBinding"];
  241. smalltalk.send(smalltalk.send(self,"_helper",[]),"_refresh",[]);
  242. } else {
  243. smalltalk.send(smalltalk.send(aBinding,"_callback",[]),"_value",[]);
  244. smalltalk.send(self,"_deactivate",[]);
  245. };
  246. return self}
  247. }),
  248. smalltalk.HLKeyBinder);
  249. smalltalk.addMethod(
  250. "_bindings",
  251. smalltalk.method({
  252. selector: "bindings",
  253. fn: function (){
  254. var self=this;
  255. var $1;
  256. if(($receiver = self["@bindings"]) == nil || $receiver == undefined){
  257. self["@bindings"]=smalltalk.send((smalltalk.HLBindingGroup || HLBindingGroup),"_new",[]);
  258. $1=self["@bindings"];
  259. } else {
  260. $1=self["@bindings"];
  261. };
  262. return $1;
  263. }
  264. }),
  265. smalltalk.HLKeyBinder);
  266. smalltalk.addMethod(
  267. "_deactivate",
  268. smalltalk.method({
  269. selector: "deactivate",
  270. fn: function (){
  271. var self=this;
  272. self["@active"]=false;
  273. self["@selectedBinding"]=nil;
  274. smalltalk.send(smalltalk.send(self,"_helper",[]),"_hide",[]);
  275. return self}
  276. }),
  277. smalltalk.HLKeyBinder);
  278. smalltalk.addMethod(
  279. "_flushBindings",
  280. smalltalk.method({
  281. selector: "flushBindings",
  282. fn: function (){
  283. var self=this;
  284. self["@bindings"]=nil;
  285. self["@helper"]=nil;
  286. return self}
  287. }),
  288. smalltalk.HLKeyBinder);
  289. smalltalk.addMethod(
  290. "_handleBindingFor_",
  291. smalltalk.method({
  292. selector: "handleBindingFor:",
  293. fn: function (anEvent){
  294. var self=this;
  295. var binding;
  296. binding=smalltalk.send(smalltalk.send(self,"_selectedBinding",[]),"_atKey_",[smalltalk.send(anEvent,"_which",[])]);
  297. if(($receiver = binding) == nil || $receiver == undefined){
  298. binding;
  299. } else {
  300. smalltalk.send(self,"_applyBinding_",[binding]);
  301. smalltalk.send(anEvent,"_preventDefault",[]);
  302. return false;
  303. };
  304. return self}
  305. }),
  306. smalltalk.HLKeyBinder);
  307. smalltalk.addMethod(
  308. "_handleBindingKey_",
  309. smalltalk.method({
  310. selector: "handleBindingKey:",
  311. fn: function (anInteger){
  312. var self=this;
  313. return self}
  314. }),
  315. smalltalk.HLKeyBinder);
  316. smalltalk.addMethod(
  317. "_handleKeyDown_",
  318. smalltalk.method({
  319. selector: "handleKeyDown:",
  320. fn: function (event){
  321. var self=this;
  322. var $1,$2;
  323. $1=smalltalk.send(self,"_isActive",[]);
  324. if(smalltalk.assert($1)){
  325. smalltalk.send(self,"_handleBindingKey_",[smalltalk.send(event,"_which",[])]);
  326. } else {
  327. $2=smalltalk.send(smalltalk.send(event,"_which",[]),"__eq",[smalltalk.send(self,"_modifierKey",[])]);
  328. if(smalltalk.assert($2)){
  329. smalltalk.send(self,"_activate",[]);
  330. smalltalk.send(event,"_preventDefault",[]);
  331. return false;
  332. };
  333. };
  334. return self}
  335. }),
  336. smalltalk.HLKeyBinder);
  337. smalltalk.addMethod(
  338. "_handleKeyUp_",
  339. smalltalk.method({
  340. selector: "handleKeyUp:",
  341. fn: function (event){
  342. var self=this;
  343. var $1;
  344. $1=smalltalk.send(smalltalk.send(event,"_which",[]),"__eq",[smalltalk.send(self,"_modifierKey",[])]);
  345. if(smalltalk.assert($1)){
  346. smalltalk.send(self,"_deactivate",[]);
  347. };
  348. return self}
  349. }),
  350. smalltalk.HLKeyBinder);
  351. smalltalk.addMethod(
  352. "_helper",
  353. smalltalk.method({
  354. selector: "helper",
  355. fn: function (){
  356. var self=this;
  357. var $1;
  358. if(($receiver = self["@helper"]) == nil || $receiver == undefined){
  359. self["@helper"]=smalltalk.send((smalltalk.HLKeyBinderHelper || HLKeyBinderHelper),"_on_",[self]);
  360. $1=self["@helper"];
  361. } else {
  362. $1=self["@helper"];
  363. };
  364. return $1;
  365. }
  366. }),
  367. smalltalk.HLKeyBinder);
  368. smalltalk.addMethod(
  369. "_initialize",
  370. smalltalk.method({
  371. selector: "initialize",
  372. fn: function (){
  373. var self=this;
  374. smalltalk.send(self,"_initialize",[],smalltalk.Object);
  375. self["@active"]=false;
  376. return self}
  377. }),
  378. smalltalk.HLKeyBinder);
  379. smalltalk.addMethod(
  380. "_isActive",
  381. smalltalk.method({
  382. selector: "isActive",
  383. fn: function (){
  384. var self=this;
  385. var $1;
  386. if(($receiver = self["@active"]) == nil || $receiver == undefined){
  387. $1=false;
  388. } else {
  389. $1=self["@active"];
  390. };
  391. return $1;
  392. }
  393. }),
  394. smalltalk.HLKeyBinder);
  395. smalltalk.addMethod(
  396. "_modifierKey",
  397. smalltalk.method({
  398. selector: "modifierKey",
  399. fn: function (){
  400. var self=this;
  401. var $2,$1;
  402. if(($receiver = self["@modifierKey"]) == nil || $receiver == undefined){
  403. $2=smalltalk.send(self["@modifierKey"],"__eq",[smalltalk.send(smalltalk.send(navigator,"_platform",[]),"_match_",["Mac"])]);
  404. if(smalltalk.assert($2)){
  405. $1=(91);
  406. } else {
  407. $1=(17);
  408. };
  409. } else {
  410. $1=self["@modifierKey"];
  411. };
  412. return $1;
  413. }
  414. }),
  415. smalltalk.HLKeyBinder);
  416. smalltalk.addMethod(
  417. "_selectedBinding",
  418. smalltalk.method({
  419. selector: "selectedBinding",
  420. fn: function (){
  421. var self=this;
  422. var $1;
  423. if(($receiver = self["@selectedBinding"]) == nil || $receiver == undefined){
  424. $1=smalltalk.send(self,"_bindings",[]);
  425. } else {
  426. $1=self["@selectedBinding"];
  427. };
  428. return $1;
  429. }
  430. }),
  431. smalltalk.HLKeyBinder);
  432. smalltalk.addMethod(
  433. "_setupEvents",
  434. smalltalk.method({
  435. selector: "setupEvents",
  436. fn: function (){
  437. var self=this;
  438. smalltalk.send(smalltalk.send(window,"_jQuery_",["body"]),"_keydown_",[(function(event){
  439. return smalltalk.send(self,"_handleKeyDown_",[event]);
  440. })]);
  441. smalltalk.send(smalltalk.send(window,"_jQuery_",["body"]),"_keyup_",[(function(event){
  442. return smalltalk.send(self,"_handleKeyUp_",[event]);
  443. })]);
  444. return self}
  445. }),
  446. smalltalk.HLKeyBinder);
  447. smalltalk.addClass('HLKeyBinderHelper', smalltalk.HLWidget, ['keyBinder'], 'Helios-KeyBindings');
  448. smalltalk.addMethod(
  449. "_hide",
  450. smalltalk.method({
  451. selector: "hide",
  452. fn: function (){
  453. var self=this;
  454. smalltalk.send(smalltalk.send(window,"_jQuery_",[".key_helper"]),"_remove",[]);
  455. return self}
  456. }),
  457. smalltalk.HLKeyBinderHelper);
  458. smalltalk.addMethod(
  459. "_keyBinder",
  460. smalltalk.method({
  461. selector: "keyBinder",
  462. fn: function (){
  463. var self=this;
  464. return self["@keyBinder"];
  465. }
  466. }),
  467. smalltalk.HLKeyBinderHelper);
  468. smalltalk.addMethod(
  469. "_keyBinder_",
  470. smalltalk.method({
  471. selector: "keyBinder:",
  472. fn: function (aKeyBinder){
  473. var self=this;
  474. self["@keyBinder"]=aKeyBinder;
  475. return self}
  476. }),
  477. smalltalk.HLKeyBinderHelper);
  478. smalltalk.addMethod(
  479. "_registerBindings",
  480. smalltalk.method({
  481. selector: "registerBindings",
  482. fn: function (){
  483. var self=this;
  484. return self}
  485. }),
  486. smalltalk.HLKeyBinderHelper);
  487. smalltalk.addMethod(
  488. "_renderBindingsOn_",
  489. smalltalk.method({
  490. selector: "renderBindingsOn:",
  491. fn: function (html){
  492. var self=this;
  493. var $1,$3,$4,$5,$6,$2;
  494. smalltalk.send(smalltalk.send(smalltalk.send(self,"_selectedBinding",[]),"_bindings",[]),"_do_",[(function(each){
  495. $1=smalltalk.send(html,"_span",[]);
  496. smalltalk.send($1,"_class_",["command"]);
  497. $2=smalltalk.send($1,"_with_",[(function(){
  498. $3=smalltalk.send(html,"_span",[]);
  499. smalltalk.send($3,"_class_",["label"]);
  500. $4=smalltalk.send($3,"_with_",[smalltalk.send(smalltalk.send(each,"_shortcut",[]),"_asLowercase",[])]);
  501. $4;
  502. $5=smalltalk.send(html,"_span",[]);
  503. smalltalk.send($5,"_class_",["action"]);
  504. $6=smalltalk.send($5,"_with_",[smalltalk.send(each,"_label",[])]);
  505. return $6;
  506. })]);
  507. return $2;
  508. })]);
  509. return self}
  510. }),
  511. smalltalk.HLKeyBinderHelper);
  512. smalltalk.addMethod(
  513. "_renderContentOn_",
  514. smalltalk.method({
  515. selector: "renderContentOn:",
  516. fn: function (html){
  517. var self=this;
  518. var $1,$2;
  519. $1=smalltalk.send(html,"_div",[]);
  520. smalltalk.send($1,"_class_",["key_helper"]);
  521. $2=smalltalk.send($1,"_with_",[(function(){
  522. return smalltalk.send(self,"_renderBindingsOn_",[html]);
  523. })]);
  524. return self}
  525. }),
  526. smalltalk.HLKeyBinderHelper);
  527. smalltalk.addMethod(
  528. "_selectedBinding",
  529. smalltalk.method({
  530. selector: "selectedBinding",
  531. fn: function (){
  532. var self=this;
  533. var $1;
  534. $1=smalltalk.send(smalltalk.send(self,"_keyBinder",[]),"_selectedBinding",[]);
  535. return $1;
  536. }
  537. }),
  538. smalltalk.HLKeyBinderHelper);
  539. smalltalk.addMethod(
  540. "_show",
  541. smalltalk.method({
  542. selector: "show",
  543. fn: function (){
  544. var self=this;
  545. smalltalk.send(self,"_appendToJQuery_",[smalltalk.send("body","_asJQuery",[])]);
  546. return self}
  547. }),
  548. smalltalk.HLKeyBinderHelper);
  549. smalltalk.addMethod(
  550. "_on_",
  551. smalltalk.method({
  552. selector: "on:",
  553. fn: function (aKeyBinder){
  554. var self=this;
  555. var $2,$3,$1;
  556. $2=smalltalk.send(self,"_new",[]);
  557. smalltalk.send($2,"_keyBinder_",[aKeyBinder]);
  558. $3=smalltalk.send($2,"_yourself",[]);
  559. $1=$3;
  560. return $1;
  561. }
  562. }),
  563. smalltalk.HLKeyBinderHelper.klass);