Helios-KeyBindings.deploy.js 25 KB

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