Helios-KeyBindings.js 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825
  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. category: 'testing',
  8. fn: function (){
  9. var self=this;
  10. return false;
  11. },
  12. args: [],
  13. source: "isBindingAction\x0a\x09^ false",
  14. messageSends: [],
  15. referencedClasses: []
  16. }),
  17. smalltalk.HLBinding);
  18. smalltalk.addMethod(
  19. "_isBindingGroup",
  20. smalltalk.method({
  21. selector: "isBindingGroup",
  22. category: 'testing',
  23. fn: function (){
  24. var self=this;
  25. return false;
  26. },
  27. args: [],
  28. source: "isBindingGroup\x0a\x09^ false",
  29. messageSends: [],
  30. referencedClasses: []
  31. }),
  32. smalltalk.HLBinding);
  33. smalltalk.addMethod(
  34. "_key",
  35. smalltalk.method({
  36. selector: "key",
  37. category: 'accessing',
  38. fn: function (){
  39. var self=this;
  40. return self["@key"];
  41. },
  42. args: [],
  43. source: "key\x0a\x09^ key",
  44. messageSends: [],
  45. referencedClasses: []
  46. }),
  47. smalltalk.HLBinding);
  48. smalltalk.addMethod(
  49. "_key_",
  50. smalltalk.method({
  51. selector: "key:",
  52. category: 'accessing',
  53. fn: function (anInteger){
  54. var self=this;
  55. self["@key"]=anInteger;
  56. return self},
  57. args: ["anInteger"],
  58. source: "key: anInteger\x0a\x09key := anInteger",
  59. messageSends: [],
  60. referencedClasses: []
  61. }),
  62. smalltalk.HLBinding);
  63. smalltalk.addMethod(
  64. "_label",
  65. smalltalk.method({
  66. selector: "label",
  67. category: 'accessing',
  68. fn: function (){
  69. var self=this;
  70. return self["@label"];
  71. },
  72. args: [],
  73. source: "label\x0a\x09^ label",
  74. messageSends: [],
  75. referencedClasses: []
  76. }),
  77. smalltalk.HLBinding);
  78. smalltalk.addMethod(
  79. "_label_",
  80. smalltalk.method({
  81. selector: "label:",
  82. category: 'accessing',
  83. fn: function (aString){
  84. var self=this;
  85. self["@label"]=aString;
  86. return self},
  87. args: ["aString"],
  88. source: "label: aString\x0a\x09label := aString",
  89. messageSends: [],
  90. referencedClasses: []
  91. }),
  92. smalltalk.HLBinding);
  93. smalltalk.addMethod(
  94. "_shortcut",
  95. smalltalk.method({
  96. selector: "shortcut",
  97. category: 'accessing',
  98. fn: function (){
  99. var self=this;
  100. var $1;
  101. $1=smalltalk.send((smalltalk.String || String),"_fromCharCode_",[smalltalk.send(self,"_key",[])]);
  102. return $1;
  103. },
  104. args: [],
  105. source: "shortcut\x0a\x09^ String fromCharCode: self key",
  106. messageSends: ["fromCharCode:", "key"],
  107. referencedClasses: ["String"]
  108. }),
  109. smalltalk.HLBinding);
  110. smalltalk.addMethod(
  111. "_on_labelled_",
  112. smalltalk.method({
  113. selector: "on:labelled:",
  114. category: 'instance creation',
  115. fn: function (anInteger,aString){
  116. var self=this;
  117. var $2,$3,$1;
  118. $2=smalltalk.send(self,"_new",[]);
  119. smalltalk.send($2,"_key_",[anInteger]);
  120. smalltalk.send($2,"_label_",[aString]);
  121. $3=smalltalk.send($2,"_yourself",[]);
  122. $1=$3;
  123. return $1;
  124. },
  125. args: ["anInteger", "aString"],
  126. source: "on: anInteger labelled: aString\x0a\x09^ self new\x0a \x09key: anInteger;\x0a label: aString;\x0a yourself",
  127. messageSends: ["key:", "new", "label:", "yourself"],
  128. referencedClasses: []
  129. }),
  130. smalltalk.HLBinding.klass);
  131. smalltalk.addClass('HLBindingAction', smalltalk.HLBinding, ['callback'], 'Helios-KeyBindings');
  132. smalltalk.addMethod(
  133. "_callback",
  134. smalltalk.method({
  135. selector: "callback",
  136. category: 'accessing',
  137. fn: function (){
  138. var self=this;
  139. return self["@callback"];
  140. },
  141. args: [],
  142. source: "callback\x0a\x09^ callback",
  143. messageSends: [],
  144. referencedClasses: []
  145. }),
  146. smalltalk.HLBindingAction);
  147. smalltalk.addMethod(
  148. "_callback_",
  149. smalltalk.method({
  150. selector: "callback:",
  151. category: 'accessing',
  152. fn: function (aBlock){
  153. var self=this;
  154. self["@callback"]=aBlock;
  155. return self},
  156. args: ["aBlock"],
  157. source: "callback: aBlock\x0a\x09callback := aBlock",
  158. messageSends: [],
  159. referencedClasses: []
  160. }),
  161. smalltalk.HLBindingAction);
  162. smalltalk.addMethod(
  163. "_isBindingAction",
  164. smalltalk.method({
  165. selector: "isBindingAction",
  166. category: 'testing',
  167. fn: function (){
  168. var self=this;
  169. return true;
  170. },
  171. args: [],
  172. source: "isBindingAction\x0a\x09^ true",
  173. messageSends: [],
  174. referencedClasses: []
  175. }),
  176. smalltalk.HLBindingAction);
  177. smalltalk.addClass('HLBindingGroup', smalltalk.HLBinding, ['bindings'], 'Helios-KeyBindings');
  178. smalltalk.addMethod(
  179. "_add_",
  180. smalltalk.method({
  181. selector: "add:",
  182. category: 'accessing',
  183. fn: function (aBinding){
  184. var self=this;
  185. var $1;
  186. $1=smalltalk.send(smalltalk.send(self,"_bindings",[]),"_add_",[aBinding]);
  187. return $1;
  188. },
  189. args: ["aBinding"],
  190. source: "add: aBinding\x0a\x09^ self bindings add: aBinding",
  191. messageSends: ["add:", "bindings"],
  192. referencedClasses: []
  193. }),
  194. smalltalk.HLBindingGroup);
  195. smalltalk.addMethod(
  196. "_addActionKey_labelled_callback_",
  197. smalltalk.method({
  198. selector: "addActionKey:labelled:callback:",
  199. category: 'accessing',
  200. fn: function (anInteger,aString,aBlock){
  201. var self=this;
  202. var $1,$2;
  203. $1=smalltalk.send((smalltalk.HLBindingAction || HLBindingAction),"_on_labelled_",[anInteger,aString]);
  204. smalltalk.send($1,"_callback_",[aBlock]);
  205. $2=smalltalk.send($1,"_yourself",[]);
  206. smalltalk.send(self,"_add_",[$2]);
  207. return self},
  208. args: ["anInteger", "aString", "aBlock"],
  209. source: "addActionKey: anInteger labelled: aString callback: aBlock\x0a\x09self add: ((HLBindingAction on: anInteger labelled: aString)\x0a \x09callback: aBlock;\x0a yourself)",
  210. messageSends: ["add:", "callback:", "on:labelled:", "yourself"],
  211. referencedClasses: ["HLBindingAction"]
  212. }),
  213. smalltalk.HLBindingGroup);
  214. smalltalk.addMethod(
  215. "_addGroupKey_labelled_",
  216. smalltalk.method({
  217. selector: "addGroupKey:labelled:",
  218. category: 'accessing',
  219. fn: function (anInteger,aString){
  220. var self=this;
  221. smalltalk.send(self,"_add_",[smalltalk.send((smalltalk.HLBindingGroup || HLBindingGroup),"_on_labelled_",[anInteger,aString])]);
  222. return self},
  223. args: ["anInteger", "aString"],
  224. source: "addGroupKey: anInteger labelled: aString\x0a\x09self add: (HLBindingGroup on: anInteger labelled: aString)",
  225. messageSends: ["add:", "on:labelled:"],
  226. referencedClasses: ["HLBindingGroup"]
  227. }),
  228. smalltalk.HLBindingGroup);
  229. smalltalk.addMethod(
  230. "_at_",
  231. smalltalk.method({
  232. selector: "at:",
  233. category: 'accessing',
  234. fn: function (aString){
  235. var self=this;
  236. var $1;
  237. $1=smalltalk.send(smalltalk.send(self,"_bindings",[]),"_detect_ifNone_",[(function(each){
  238. return smalltalk.send(smalltalk.send(each,"_label",[]),"__eq",[aString]);
  239. }),(function(){
  240. return nil;
  241. })]);
  242. return $1;
  243. },
  244. args: ["aString"],
  245. source: "at: aString\x0a\x09^ self bindings \x0a \x09detect: [ :each | each label = aString ]\x0a \x09ifNone: [ nil ]",
  246. messageSends: ["detect:ifNone:", "=", "label", "bindings"],
  247. referencedClasses: []
  248. }),
  249. smalltalk.HLBindingGroup);
  250. smalltalk.addMethod(
  251. "_atkey_",
  252. smalltalk.method({
  253. selector: "atkey:",
  254. category: 'accessing',
  255. fn: function (anInteger){
  256. var self=this;
  257. var $1;
  258. $1=smalltalk.send(smalltalk.send(self,"_bindings",[]),"_detect_ifNone_",[(function(each){
  259. return smalltalk.send(smalltalk.send(each,"_key",[]),"__eq",[anInteger]);
  260. }),(function(){
  261. return nil;
  262. })]);
  263. return $1;
  264. },
  265. args: ["anInteger"],
  266. source: "atkey: anInteger\x0a\x09^ self bindings \x0a \x09detect: [ :each | each key = anInteger ]\x0a \x09ifNone: [ nil ]",
  267. messageSends: ["detect:ifNone:", "=", "key", "bindings"],
  268. referencedClasses: []
  269. }),
  270. smalltalk.HLBindingGroup);
  271. smalltalk.addMethod(
  272. "_bindings",
  273. smalltalk.method({
  274. selector: "bindings",
  275. category: 'accessing',
  276. fn: function (){
  277. var self=this;
  278. var $1;
  279. if(($receiver = self["@bindings"]) == nil || $receiver == undefined){
  280. self["@bindings"]=smalltalk.send((smalltalk.OrderedCollection || OrderedCollection),"_new",[]);
  281. $1=self["@bindings"];
  282. } else {
  283. $1=self["@bindings"];
  284. };
  285. return $1;
  286. },
  287. args: [],
  288. source: "bindings\x0a\x09^ bindings ifNil: [ bindings := OrderedCollection new ]",
  289. messageSends: ["ifNil:", "new"],
  290. referencedClasses: ["OrderedCollection"]
  291. }),
  292. smalltalk.HLBindingGroup);
  293. smalltalk.addMethod(
  294. "_isBindingGroup",
  295. smalltalk.method({
  296. selector: "isBindingGroup",
  297. category: 'testing',
  298. fn: function (){
  299. var self=this;
  300. return true;
  301. },
  302. args: [],
  303. source: "isBindingGroup\x0a\x09^ true",
  304. messageSends: [],
  305. referencedClasses: []
  306. }),
  307. smalltalk.HLBindingGroup);
  308. smalltalk.addClass('HLKeyBinder', smalltalk.Object, ['modifierKey', 'active', 'helper', 'bindings', 'selectedBinding'], 'Helios-KeyBindings');
  309. smalltalk.addMethod(
  310. "_activate",
  311. smalltalk.method({
  312. selector: "activate",
  313. category: 'actions',
  314. fn: function (){
  315. var self=this;
  316. self["@active"]=true;
  317. smalltalk.send(smalltalk.send(self,"_helper",[]),"_show",[]);
  318. return self},
  319. args: [],
  320. source: "activate\x0a\x09active := true.\x0a\x09self helper show",
  321. messageSends: ["show", "helper"],
  322. referencedClasses: []
  323. }),
  324. smalltalk.HLKeyBinder);
  325. smalltalk.addMethod(
  326. "_applyBinding_",
  327. smalltalk.method({
  328. selector: "applyBinding:",
  329. category: 'actions',
  330. fn: function (aBinding){
  331. var self=this;
  332. var $1;
  333. $1=smalltalk.send(aBinding,"_isBindingGroup",[]);
  334. if(smalltalk.assert($1)){
  335. self["@selectedBinding"]=aBinding;
  336. self["@selectedBinding"];
  337. smalltalk.send(smalltalk.send(self,"_helper",[]),"_refresh",[]);
  338. } else {
  339. smalltalk.send(smalltalk.send(aBinding,"_callback",[]),"_value",[]);
  340. smalltalk.send(self,"_deactivate",[]);
  341. };
  342. return self},
  343. args: ["aBinding"],
  344. source: "applyBinding: aBinding\x0a aBinding isBindingGroup\x0a \x09ifTrue: [\x0a\x09\x09\x09selectedBinding := aBinding.\x0a \x09\x09self helper refresh ]\x0a ifFalse: [ \x0a\x09\x09\x09aBinding callback value.\x0a\x09\x09\x09self deactivate ]",
  345. messageSends: ["ifTrue:ifFalse:", "refresh", "helper", "value", "callback", "deactivate", "isBindingGroup"],
  346. referencedClasses: []
  347. }),
  348. smalltalk.HLKeyBinder);
  349. smalltalk.addMethod(
  350. "_bindings",
  351. smalltalk.method({
  352. selector: "bindings",
  353. category: 'accessing',
  354. fn: function (){
  355. var self=this;
  356. var $1;
  357. if(($receiver = self["@bindings"]) == nil || $receiver == undefined){
  358. self["@bindings"]=smalltalk.send((smalltalk.HLBindingGroup || HLBindingGroup),"_new",[]);
  359. $1=self["@bindings"];
  360. } else {
  361. $1=self["@bindings"];
  362. };
  363. return $1;
  364. },
  365. args: [],
  366. source: "bindings\x0a\x09^ bindings ifNil: [ bindings := HLBindingGroup new ]",
  367. messageSends: ["ifNil:", "new"],
  368. referencedClasses: ["HLBindingGroup"]
  369. }),
  370. smalltalk.HLKeyBinder);
  371. smalltalk.addMethod(
  372. "_deactivate",
  373. smalltalk.method({
  374. selector: "deactivate",
  375. category: 'actions',
  376. fn: function (){
  377. var self=this;
  378. self["@active"]=false;
  379. self["@selectedBinding"]=nil;
  380. smalltalk.send(smalltalk.send(self,"_helper",[]),"_hide",[]);
  381. return self},
  382. args: [],
  383. source: "deactivate\x0a\x09active := false.\x0a selectedBinding := nil.\x0a\x09self helper hide",
  384. messageSends: ["hide", "helper"],
  385. referencedClasses: []
  386. }),
  387. smalltalk.HLKeyBinder);
  388. smalltalk.addMethod(
  389. "_flushBindings",
  390. smalltalk.method({
  391. selector: "flushBindings",
  392. category: 'actions',
  393. fn: function (){
  394. var self=this;
  395. self["@bindings"]=nil;
  396. self["@helper"]=nil;
  397. return self},
  398. args: [],
  399. source: "flushBindings\x0a\x09bindings := nil.\x0a helper := nil",
  400. messageSends: [],
  401. referencedClasses: []
  402. }),
  403. smalltalk.HLKeyBinder);
  404. smalltalk.addMethod(
  405. "_handleBindingFor_",
  406. smalltalk.method({
  407. selector: "handleBindingFor:",
  408. category: 'events',
  409. fn: function (anEvent){
  410. var self=this;
  411. var binding;
  412. binding=smalltalk.send(smalltalk.send(self,"_selectedBinding",[]),"_atKey_",[smalltalk.send(anEvent,"_which",[])]);
  413. if(($receiver = binding) == nil || $receiver == undefined){
  414. binding;
  415. } else {
  416. smalltalk.send(self,"_applyBinding_",[binding]);
  417. smalltalk.send(anEvent,"_preventDefault",[]);
  418. return false;
  419. };
  420. return self},
  421. args: ["anEvent"],
  422. source: "handleBindingFor: anEvent\x0a\x09| binding |\x0a binding := self selectedBinding atKey: anEvent which.\x0a \x0a binding ifNotNil: [ \x0a \x09self applyBinding: binding.\x0a\x09\x09anEvent preventDefault.\x0a\x09\x09^ false ]",
  423. messageSends: ["atKey:", "which", "selectedBinding", "ifNotNil:", "applyBinding:", "preventDefault"],
  424. referencedClasses: []
  425. }),
  426. smalltalk.HLKeyBinder);
  427. smalltalk.addMethod(
  428. "_handleBindingKey_",
  429. smalltalk.method({
  430. selector: "handleBindingKey:",
  431. category: 'events',
  432. fn: function (anInteger){
  433. var self=this;
  434. return self},
  435. args: ["anInteger"],
  436. source: "handleBindingKey: anInteger",
  437. messageSends: [],
  438. referencedClasses: []
  439. }),
  440. smalltalk.HLKeyBinder);
  441. smalltalk.addMethod(
  442. "_handleKeyDown_",
  443. smalltalk.method({
  444. selector: "handleKeyDown:",
  445. category: 'events',
  446. fn: function (event){
  447. var self=this;
  448. var $1,$2;
  449. $1=smalltalk.send(self,"_isActive",[]);
  450. if(smalltalk.assert($1)){
  451. smalltalk.send(self,"_handleBindingKey_",[smalltalk.send(event,"_which",[])]);
  452. } else {
  453. $2=smalltalk.send(smalltalk.send(event,"_which",[]),"__eq",[smalltalk.send(self,"_modifierKey",[])]);
  454. if(smalltalk.assert($2)){
  455. smalltalk.send(self,"_activate",[]);
  456. smalltalk.send(event,"_preventDefault",[]);
  457. return false;
  458. };
  459. };
  460. return self},
  461. args: ["event"],
  462. source: "handleKeyDown: event\x0a\x09self isActive\x0a \x09ifTrue: [ \x0a \x09self handleBindingKey: event which ]\x0a \x09ifFalse: [\x0a \x09event which = self modifierKey ifTrue: [\x0a\x09\x09\x09\x09self activate. \x0a event preventDefault. \x0a ^ false ] ]",
  463. messageSends: ["ifTrue:ifFalse:", "handleBindingKey:", "which", "ifTrue:", "activate", "preventDefault", "=", "modifierKey", "isActive"],
  464. referencedClasses: []
  465. }),
  466. smalltalk.HLKeyBinder);
  467. smalltalk.addMethod(
  468. "_handleKeyUp_",
  469. smalltalk.method({
  470. selector: "handleKeyUp:",
  471. category: 'events',
  472. fn: function (event){
  473. var self=this;
  474. var $1;
  475. $1=smalltalk.send(smalltalk.send(event,"_which",[]),"__eq",[smalltalk.send(self,"_modifierKey",[])]);
  476. if(smalltalk.assert($1)){
  477. smalltalk.send(self,"_deactivate",[]);
  478. };
  479. return self},
  480. args: ["event"],
  481. source: "handleKeyUp: event\x0a\x09event which = self modifierKey ifTrue: [\x0a \x09self deactivate ]",
  482. messageSends: ["ifTrue:", "deactivate", "=", "modifierKey", "which"],
  483. referencedClasses: []
  484. }),
  485. smalltalk.HLKeyBinder);
  486. smalltalk.addMethod(
  487. "_helper",
  488. smalltalk.method({
  489. selector: "helper",
  490. category: 'accessing',
  491. fn: function (){
  492. var self=this;
  493. var $1;
  494. if(($receiver = self["@helper"]) == nil || $receiver == undefined){
  495. self["@helper"]=smalltalk.send((smalltalk.HLKeyBinderHelper || HLKeyBinderHelper),"_on_",[self]);
  496. $1=self["@helper"];
  497. } else {
  498. $1=self["@helper"];
  499. };
  500. return $1;
  501. },
  502. args: [],
  503. source: "helper\x0a\x09^ helper ifNil: [ helper := HLKeyBinderHelper on: self ]",
  504. messageSends: ["ifNil:", "on:"],
  505. referencedClasses: ["HLKeyBinderHelper"]
  506. }),
  507. smalltalk.HLKeyBinder);
  508. smalltalk.addMethod(
  509. "_initialize",
  510. smalltalk.method({
  511. selector: "initialize",
  512. category: 'initialization',
  513. fn: function (){
  514. var self=this;
  515. smalltalk.send(self,"_initialize",[],smalltalk.Object);
  516. self["@active"]=false;
  517. return self},
  518. args: [],
  519. source: "initialize\x0a\x09super initialize.\x0a active := false",
  520. messageSends: ["initialize"],
  521. referencedClasses: []
  522. }),
  523. smalltalk.HLKeyBinder);
  524. smalltalk.addMethod(
  525. "_isActive",
  526. smalltalk.method({
  527. selector: "isActive",
  528. category: 'testing',
  529. fn: function (){
  530. var self=this;
  531. var $1;
  532. if(($receiver = self["@active"]) == nil || $receiver == undefined){
  533. $1=false;
  534. } else {
  535. $1=self["@active"];
  536. };
  537. return $1;
  538. },
  539. args: [],
  540. source: "isActive\x0a\x09^ active ifNil: [ false ]",
  541. messageSends: ["ifNil:"],
  542. referencedClasses: []
  543. }),
  544. smalltalk.HLKeyBinder);
  545. smalltalk.addMethod(
  546. "_modifierKey",
  547. smalltalk.method({
  548. selector: "modifierKey",
  549. category: 'accessing',
  550. fn: function (){
  551. var self=this;
  552. var $2,$1;
  553. if(($receiver = self["@modifierKey"]) == nil || $receiver == undefined){
  554. $2=smalltalk.send(self["@modifierKey"],"__eq",[smalltalk.send(smalltalk.send(navigator,"_platform",[]),"_match_",["Mac"])]);
  555. if(smalltalk.assert($2)){
  556. $1=(91);
  557. } else {
  558. $1=(17);
  559. };
  560. } else {
  561. $1=self["@modifierKey"];
  562. };
  563. return $1;
  564. },
  565. args: [],
  566. source: "modifierKey\x0a\x09^ modifierKey ifNil: [\x0a\x09\x09modifierKey = (navigator platform match: 'Mac')\x0a\x09\x09\x09ifTrue: [ 91 ]\x0a\x09\x09\x09ifFalse: [ 17 ] ]",
  567. messageSends: ["ifNil:", "ifTrue:ifFalse:", "=", "match:", "platform"],
  568. referencedClasses: []
  569. }),
  570. smalltalk.HLKeyBinder);
  571. smalltalk.addMethod(
  572. "_selectedBinding",
  573. smalltalk.method({
  574. selector: "selectedBinding",
  575. category: 'accessing',
  576. fn: function (){
  577. var self=this;
  578. var $1;
  579. if(($receiver = self["@selectedBinding"]) == nil || $receiver == undefined){
  580. $1=smalltalk.send(self,"_bindings",[]);
  581. } else {
  582. $1=self["@selectedBinding"];
  583. };
  584. return $1;
  585. },
  586. args: [],
  587. source: "selectedBinding\x0a\x09^ selectedBinding ifNil: [ self bindings ]",
  588. messageSends: ["ifNil:", "bindings"],
  589. referencedClasses: []
  590. }),
  591. smalltalk.HLKeyBinder);
  592. smalltalk.addMethod(
  593. "_setupEvents",
  594. smalltalk.method({
  595. selector: "setupEvents",
  596. category: 'events',
  597. fn: function (){
  598. var self=this;
  599. smalltalk.send(smalltalk.send(window,"_jQuery_",["body"]),"_keydown_",[(function(event){
  600. return smalltalk.send(self,"_handleKeyDown_",[event]);
  601. })]);
  602. smalltalk.send(smalltalk.send(window,"_jQuery_",["body"]),"_keyup_",[(function(event){
  603. return smalltalk.send(self,"_handleKeyUp_",[event]);
  604. })]);
  605. return self},
  606. args: [],
  607. source: "setupEvents\x0a\x09(window jQuery: 'body') keydown: [ :event | self handleKeyDown: event ].\x0a (window jQuery: 'body') keyup: [ :event | self handleKeyUp: event ]",
  608. messageSends: ["keydown:", "handleKeyDown:", "jQuery:", "keyup:", "handleKeyUp:"],
  609. referencedClasses: []
  610. }),
  611. smalltalk.HLKeyBinder);
  612. smalltalk.addClass('HLKeyBinderHelper', smalltalk.HLWidget, ['keyBinder'], 'Helios-KeyBindings');
  613. smalltalk.addMethod(
  614. "_hide",
  615. smalltalk.method({
  616. selector: "hide",
  617. category: 'actions',
  618. fn: function (){
  619. var self=this;
  620. smalltalk.send(smalltalk.send(window,"_jQuery_",[".key_helper"]),"_remove",[]);
  621. return self},
  622. args: [],
  623. source: "hide\x0a\x09(window jQuery: '.key_helper') remove",
  624. messageSends: ["remove", "jQuery:"],
  625. referencedClasses: []
  626. }),
  627. smalltalk.HLKeyBinderHelper);
  628. smalltalk.addMethod(
  629. "_keyBinder",
  630. smalltalk.method({
  631. selector: "keyBinder",
  632. category: 'accessing',
  633. fn: function (){
  634. var self=this;
  635. return self["@keyBinder"];
  636. },
  637. args: [],
  638. source: "keyBinder\x0a\x09^ keyBinder",
  639. messageSends: [],
  640. referencedClasses: []
  641. }),
  642. smalltalk.HLKeyBinderHelper);
  643. smalltalk.addMethod(
  644. "_keyBinder_",
  645. smalltalk.method({
  646. selector: "keyBinder:",
  647. category: 'accessing',
  648. fn: function (aKeyBinder){
  649. var self=this;
  650. self["@keyBinder"]=aKeyBinder;
  651. return self},
  652. args: ["aKeyBinder"],
  653. source: "keyBinder: aKeyBinder\x0a\x09keyBinder := aKeyBinder",
  654. messageSends: [],
  655. referencedClasses: []
  656. }),
  657. smalltalk.HLKeyBinderHelper);
  658. smalltalk.addMethod(
  659. "_registerBindings",
  660. smalltalk.method({
  661. selector: "registerBindings",
  662. category: 'keyBindings',
  663. fn: function (){
  664. var self=this;
  665. return self},
  666. args: [],
  667. source: "registerBindings\x0a\x09\x22Do nothing\x22",
  668. messageSends: [],
  669. referencedClasses: []
  670. }),
  671. smalltalk.HLKeyBinderHelper);
  672. smalltalk.addMethod(
  673. "_renderBindingsOn_",
  674. smalltalk.method({
  675. selector: "renderBindingsOn:",
  676. category: 'rendering',
  677. fn: function (html){
  678. var self=this;
  679. var $1,$3,$4,$5,$6,$2;
  680. smalltalk.send(smalltalk.send(smalltalk.send(self,"_selectedBinding",[]),"_bindings",[]),"_do_",[(function(each){
  681. $1=smalltalk.send(html,"_span",[]);
  682. smalltalk.send($1,"_class_",["command"]);
  683. $2=smalltalk.send($1,"_with_",[(function(){
  684. $3=smalltalk.send(html,"_span",[]);
  685. smalltalk.send($3,"_class_",["label"]);
  686. $4=smalltalk.send($3,"_with_",[smalltalk.send(smalltalk.send(each,"_shortcut",[]),"_asLowercase",[])]);
  687. $4;
  688. $5=smalltalk.send(html,"_span",[]);
  689. smalltalk.send($5,"_class_",["action"]);
  690. $6=smalltalk.send($5,"_with_",[smalltalk.send(each,"_label",[])]);
  691. return $6;
  692. })]);
  693. return $2;
  694. })]);
  695. return self},
  696. args: ["html"],
  697. source: "renderBindingsOn: html\x0a\x09self selectedBinding bindings do: [ :each |\x0a\x09\x09html span class: 'command'; with: [\x0a\x09\x09\x09html span class: 'label'; with: each shortcut asLowercase.\x0a \x09\x09\x09html span class: 'action'; with: each label ] ]",
  698. messageSends: ["do:", "class:", "span", "with:", "asLowercase", "shortcut", "label", "bindings", "selectedBinding"],
  699. referencedClasses: []
  700. }),
  701. smalltalk.HLKeyBinderHelper);
  702. smalltalk.addMethod(
  703. "_renderContentOn_",
  704. smalltalk.method({
  705. selector: "renderContentOn:",
  706. category: 'rendering',
  707. fn: function (html){
  708. var self=this;
  709. var $1,$2;
  710. $1=smalltalk.send(html,"_div",[]);
  711. smalltalk.send($1,"_class_",["key_helper"]);
  712. $2=smalltalk.send($1,"_with_",[(function(){
  713. return smalltalk.send(self,"_renderBindingsOn_",[html]);
  714. })]);
  715. return self},
  716. args: ["html"],
  717. source: "renderContentOn: html\x0a\x09html div class: 'key_helper'; with: [\x0a \x09self renderBindingsOn: html ]",
  718. messageSends: ["class:", "div", "with:", "renderBindingsOn:"],
  719. referencedClasses: []
  720. }),
  721. smalltalk.HLKeyBinderHelper);
  722. smalltalk.addMethod(
  723. "_selectedBinding",
  724. smalltalk.method({
  725. selector: "selectedBinding",
  726. category: 'accessing',
  727. fn: function (){
  728. var self=this;
  729. var $1;
  730. $1=smalltalk.send(smalltalk.send(self,"_keyBinder",[]),"_selectedBinding",[]);
  731. return $1;
  732. },
  733. args: [],
  734. source: "selectedBinding\x0a\x09^ self keyBinder selectedBinding",
  735. messageSends: ["selectedBinding", "keyBinder"],
  736. referencedClasses: []
  737. }),
  738. smalltalk.HLKeyBinderHelper);
  739. smalltalk.addMethod(
  740. "_show",
  741. smalltalk.method({
  742. selector: "show",
  743. category: 'actions',
  744. fn: function (){
  745. var self=this;
  746. smalltalk.send(self,"_appendToJQuery_",[smalltalk.send("body","_asJQuery",[])]);
  747. return self},
  748. args: [],
  749. source: "show\x0a\x09self appendToJQuery: 'body' asJQuery",
  750. messageSends: ["appendToJQuery:", "asJQuery"],
  751. referencedClasses: []
  752. }),
  753. smalltalk.HLKeyBinderHelper);
  754. smalltalk.addMethod(
  755. "_on_",
  756. smalltalk.method({
  757. selector: "on:",
  758. category: 'instance creation',
  759. fn: function (aKeyBinder){
  760. var self=this;
  761. var $2,$3,$1;
  762. $2=smalltalk.send(self,"_new",[]);
  763. smalltalk.send($2,"_keyBinder_",[aKeyBinder]);
  764. $3=smalltalk.send($2,"_yourself",[]);
  765. $1=$3;
  766. return $1;
  767. },
  768. args: ["aKeyBinder"],
  769. source: "on: aKeyBinder\x0a\x09^ self new\x0a \x09keyBinder: aKeyBinder;\x0a yourself",
  770. messageSends: ["keyBinder:", "new", "yourself"],
  771. referencedClasses: []
  772. }),
  773. smalltalk.HLKeyBinderHelper.klass);