Helios-KeyBindings.deploy.js 27 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815
  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. "_activationKeyLabel",
  312. smalltalk.method({
  313. selector: "activationKeyLabel",
  314. fn: function (){
  315. var self=this;
  316. return smalltalk.withContext(function($ctx1) { return "ctrl + space";
  317. }, function($ctx1) {$ctx1.fill(self,"activationKeyLabel",{}, smalltalk.HLKeyBinder)})},
  318. messageSends: []}),
  319. smalltalk.HLKeyBinder);
  320. smalltalk.addMethod(
  321. "_applyBinding_",
  322. smalltalk.method({
  323. selector: "applyBinding:",
  324. fn: function (aBinding){
  325. var self=this;
  326. return smalltalk.withContext(function($ctx1) { _st(aBinding)._applyOn_(self);
  327. return self}, function($ctx1) {$ctx1.fill(self,"applyBinding:",{aBinding:aBinding}, smalltalk.HLKeyBinder)})},
  328. messageSends: ["applyOn:"]}),
  329. smalltalk.HLKeyBinder);
  330. smalltalk.addMethod(
  331. "_applyBindingAction_",
  332. smalltalk.method({
  333. selector: "applyBindingAction:",
  334. fn: function (aBinding){
  335. var self=this;
  336. return smalltalk.withContext(function($ctx1) { _st(_st(aBinding)._callback())._value();
  337. _st(self)._deactivate();
  338. return self}, function($ctx1) {$ctx1.fill(self,"applyBindingAction:",{aBinding:aBinding}, smalltalk.HLKeyBinder)})},
  339. messageSends: ["value", "callback", "deactivate"]}),
  340. smalltalk.HLKeyBinder);
  341. smalltalk.addMethod(
  342. "_applyBindingGroup_",
  343. smalltalk.method({
  344. selector: "applyBindingGroup:",
  345. fn: function (aBinding){
  346. var self=this;
  347. return smalltalk.withContext(function($ctx1) { self["@selectedBinding"]=aBinding;
  348. _st(_st(self)._helper())._refresh();
  349. return self}, function($ctx1) {$ctx1.fill(self,"applyBindingGroup:",{aBinding:aBinding}, smalltalk.HLKeyBinder)})},
  350. messageSends: ["refresh", "helper"]}),
  351. smalltalk.HLKeyBinder);
  352. smalltalk.addMethod(
  353. "_bindings",
  354. smalltalk.method({
  355. selector: "bindings",
  356. fn: function (){
  357. var self=this;
  358. return smalltalk.withContext(function($ctx1) { var $2,$1;
  359. $2=self["@bindings"];
  360. if(($receiver = $2) == nil || $receiver == undefined){
  361. self["@bindings"]=_st((smalltalk.HLBindingGroup || HLBindingGroup))._new();
  362. $1=self["@bindings"];
  363. } else {
  364. $1=$2;
  365. };
  366. return $1;
  367. }, function($ctx1) {$ctx1.fill(self,"bindings",{}, smalltalk.HLKeyBinder)})},
  368. messageSends: ["ifNil:", "new"]}),
  369. smalltalk.HLKeyBinder);
  370. smalltalk.addMethod(
  371. "_deactivate",
  372. smalltalk.method({
  373. selector: "deactivate",
  374. fn: function (){
  375. var self=this;
  376. return smalltalk.withContext(function($ctx1) { self["@active"]=false;
  377. self["@selectedBinding"]=nil;
  378. _st(_st(self)._helper())._hide();
  379. return self}, function($ctx1) {$ctx1.fill(self,"deactivate",{}, smalltalk.HLKeyBinder)})},
  380. messageSends: ["hide", "helper"]}),
  381. smalltalk.HLKeyBinder);
  382. smalltalk.addMethod(
  383. "_escapeKey",
  384. smalltalk.method({
  385. selector: "escapeKey",
  386. fn: function (){
  387. var self=this;
  388. return smalltalk.withContext(function($ctx1) { return (27);
  389. }, function($ctx1) {$ctx1.fill(self,"escapeKey",{}, smalltalk.HLKeyBinder)})},
  390. messageSends: []}),
  391. smalltalk.HLKeyBinder);
  392. smalltalk.addMethod(
  393. "_flushBindings",
  394. smalltalk.method({
  395. selector: "flushBindings",
  396. fn: function (){
  397. var self=this;
  398. return smalltalk.withContext(function($ctx1) { self["@bindings"]=nil;
  399. return self}, function($ctx1) {$ctx1.fill(self,"flushBindings",{}, smalltalk.HLKeyBinder)})},
  400. messageSends: []}),
  401. smalltalk.HLKeyBinder);
  402. smalltalk.addMethod(
  403. "_handleActiveKeyDown_",
  404. smalltalk.method({
  405. selector: "handleActiveKeyDown:",
  406. fn: function (event){
  407. var self=this;
  408. return smalltalk.withContext(function($ctx1) { var $1,$2;
  409. $1=_st(_st(_st(event)._which()).__eq(_st(self)._escapeKey()))._or_((function(){
  410. return smalltalk.withContext(function($ctx2) { return _st(_st(_st(event)._which()).__eq((71)))._and_((function(){
  411. return smalltalk.withContext(function($ctx3) { return _st(event)._ctrlKey();
  412. }, function($ctx3) {$ctx3.fillBlock({},$ctx1)})}));
  413. }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
  414. if(smalltalk.assert($1)){
  415. _st(self)._deactivate();
  416. _st(event)._preventDefault();
  417. return false;
  418. };
  419. $2=_st(self)._handleBindingFor_(event);
  420. return $2;
  421. }, function($ctx1) {$ctx1.fill(self,"handleActiveKeyDown:",{event:event}, smalltalk.HLKeyBinder)})},
  422. messageSends: ["ifTrue:", "deactivate", "preventDefault", "or:", "and:", "ctrlKey", "=", "which", "escapeKey", "handleBindingFor:"]}),
  423. smalltalk.HLKeyBinder);
  424. smalltalk.addMethod(
  425. "_handleBindingFor_",
  426. smalltalk.method({
  427. selector: "handleBindingFor:",
  428. fn: function (anEvent){
  429. var self=this;
  430. var binding;
  431. return smalltalk.withContext(function($ctx1) { var $1;
  432. binding=_st(_st(self)._selectedBinding())._atKey_(_st(anEvent)._which());
  433. $1=binding;
  434. if(($receiver = $1) == nil || $receiver == undefined){
  435. $1;
  436. } else {
  437. _st(self)._applyBinding_(binding);
  438. _st(anEvent)._preventDefault();
  439. return false;
  440. };
  441. return self}, function($ctx1) {$ctx1.fill(self,"handleBindingFor:",{anEvent:anEvent,binding:binding}, smalltalk.HLKeyBinder)})},
  442. messageSends: ["atKey:", "which", "selectedBinding", "ifNotNil:", "applyBinding:", "preventDefault"]}),
  443. smalltalk.HLKeyBinder);
  444. smalltalk.addMethod(
  445. "_handleInactiveKeyDown_",
  446. smalltalk.method({
  447. selector: "handleInactiveKeyDown:",
  448. fn: function (event){
  449. var self=this;
  450. return smalltalk.withContext(function($ctx1) { var $1,$2;
  451. $1=_st(_st(event)._which()).__eq(_st(self)._activationKey());
  452. if(smalltalk.assert($1)){
  453. $2=_st(event)._ctrlKey();
  454. if(smalltalk.assert($2)){
  455. _st(self)._activate();
  456. _st(event)._preventDefault();
  457. return false;
  458. };
  459. };
  460. return self}, function($ctx1) {$ctx1.fill(self,"handleInactiveKeyDown:",{event:event}, smalltalk.HLKeyBinder)})},
  461. messageSends: ["ifTrue:", "activate", "preventDefault", "ctrlKey", "=", "activationKey", "which"]}),
  462. smalltalk.HLKeyBinder);
  463. smalltalk.addMethod(
  464. "_handleKeyDown_",
  465. smalltalk.method({
  466. selector: "handleKeyDown:",
  467. fn: function (event){
  468. var self=this;
  469. return smalltalk.withContext(function($ctx1) { var $2,$1;
  470. $2=_st(self)._isActive();
  471. if(smalltalk.assert($2)){
  472. $1=_st(self)._handleActiveKeyDown_(event);
  473. } else {
  474. $1=_st(self)._handleInactiveKeyDown_(event);
  475. };
  476. return $1;
  477. }, function($ctx1) {$ctx1.fill(self,"handleKeyDown:",{event:event}, smalltalk.HLKeyBinder)})},
  478. messageSends: ["ifTrue:ifFalse:", "handleActiveKeyDown:", "handleInactiveKeyDown:", "isActive"]}),
  479. smalltalk.HLKeyBinder);
  480. smalltalk.addMethod(
  481. "_helper",
  482. smalltalk.method({
  483. selector: "helper",
  484. fn: function (){
  485. var self=this;
  486. return smalltalk.withContext(function($ctx1) { var $1;
  487. $1=self["@helper"];
  488. return $1;
  489. }, function($ctx1) {$ctx1.fill(self,"helper",{}, smalltalk.HLKeyBinder)})},
  490. messageSends: []}),
  491. smalltalk.HLKeyBinder);
  492. smalltalk.addMethod(
  493. "_initialize",
  494. smalltalk.method({
  495. selector: "initialize",
  496. fn: function (){
  497. var self=this;
  498. return smalltalk.withContext(function($ctx1) { smalltalk.Object.fn.prototype._initialize.apply(_st(self), []);
  499. self["@helper"]=_st((smalltalk.HLKeyBinderHelper || HLKeyBinderHelper))._on_(self);
  500. _st(self["@helper"])._renderStart();
  501. self["@active"]=false;
  502. return self}, function($ctx1) {$ctx1.fill(self,"initialize",{}, smalltalk.HLKeyBinder)})},
  503. messageSends: ["initialize", "on:", "renderStart"]}),
  504. smalltalk.HLKeyBinder);
  505. smalltalk.addMethod(
  506. "_isActive",
  507. smalltalk.method({
  508. selector: "isActive",
  509. fn: function (){
  510. var self=this;
  511. return smalltalk.withContext(function($ctx1) { var $2,$1;
  512. $2=self["@active"];
  513. if(($receiver = $2) == nil || $receiver == undefined){
  514. $1=false;
  515. } else {
  516. $1=$2;
  517. };
  518. return $1;
  519. }, function($ctx1) {$ctx1.fill(self,"isActive",{}, smalltalk.HLKeyBinder)})},
  520. messageSends: ["ifNil:"]}),
  521. smalltalk.HLKeyBinder);
  522. smalltalk.addMethod(
  523. "_selectedBinding",
  524. smalltalk.method({
  525. selector: "selectedBinding",
  526. fn: function (){
  527. var self=this;
  528. return smalltalk.withContext(function($ctx1) { var $2,$1;
  529. $2=self["@selectedBinding"];
  530. if(($receiver = $2) == nil || $receiver == undefined){
  531. $1=_st(self)._bindings();
  532. } else {
  533. $1=$2;
  534. };
  535. return $1;
  536. }, function($ctx1) {$ctx1.fill(self,"selectedBinding",{}, smalltalk.HLKeyBinder)})},
  537. messageSends: ["ifNil:", "bindings"]}),
  538. smalltalk.HLKeyBinder);
  539. smalltalk.addMethod(
  540. "_setupEvents",
  541. smalltalk.method({
  542. selector: "setupEvents",
  543. fn: function (){
  544. var self=this;
  545. return smalltalk.withContext(function($ctx1) { _st(_st(window)._jQuery_("body"))._keydown_((function(event){
  546. return smalltalk.withContext(function($ctx2) { return _st(self)._handleKeyDown_(event);
  547. }, function($ctx2) {$ctx2.fillBlock({event:event},$ctx1)})}));
  548. return self}, function($ctx1) {$ctx1.fill(self,"setupEvents",{}, smalltalk.HLKeyBinder)})},
  549. messageSends: ["keydown:", "handleKeyDown:", "jQuery:"]}),
  550. smalltalk.HLKeyBinder);
  551. smalltalk.addMethod(
  552. "_systemIsMac",
  553. smalltalk.method({
  554. selector: "systemIsMac",
  555. fn: function (){
  556. var self=this;
  557. return smalltalk.withContext(function($ctx1) { var $1;
  558. $1=_st(_st(navigator)._platform())._match_("Mac");
  559. return $1;
  560. }, function($ctx1) {$ctx1.fill(self,"systemIsMac",{}, smalltalk.HLKeyBinder)})},
  561. messageSends: ["match:", "platform"]}),
  562. smalltalk.HLKeyBinder);
  563. smalltalk.addClass('HLKeyBinderHelper', smalltalk.HLWidget, ['keyBinder'], 'Helios-KeyBindings');
  564. smalltalk.addMethod(
  565. "_cssClass",
  566. smalltalk.method({
  567. selector: "cssClass",
  568. fn: function (){
  569. var self=this;
  570. return smalltalk.withContext(function($ctx1) { return "key_helper";
  571. }, function($ctx1) {$ctx1.fill(self,"cssClass",{}, smalltalk.HLKeyBinderHelper)})},
  572. messageSends: []}),
  573. smalltalk.HLKeyBinderHelper);
  574. smalltalk.addMethod(
  575. "_hide",
  576. smalltalk.method({
  577. selector: "hide",
  578. fn: function (){
  579. var self=this;
  580. return smalltalk.withContext(function($ctx1) { _st(_st(_st(".").__comma(_st(self)._cssClass()))._asJQuery())._remove();
  581. return self}, function($ctx1) {$ctx1.fill(self,"hide",{}, smalltalk.HLKeyBinderHelper)})},
  582. messageSends: ["remove", "asJQuery", ",", "cssClass"]}),
  583. smalltalk.HLKeyBinderHelper);
  584. smalltalk.addMethod(
  585. "_keyBinder",
  586. smalltalk.method({
  587. selector: "keyBinder",
  588. fn: function (){
  589. var self=this;
  590. return smalltalk.withContext(function($ctx1) { var $1;
  591. $1=self["@keyBinder"];
  592. return $1;
  593. }, function($ctx1) {$ctx1.fill(self,"keyBinder",{}, smalltalk.HLKeyBinderHelper)})},
  594. messageSends: []}),
  595. smalltalk.HLKeyBinderHelper);
  596. smalltalk.addMethod(
  597. "_keyBinder_",
  598. smalltalk.method({
  599. selector: "keyBinder:",
  600. fn: function (aKeyBinder){
  601. var self=this;
  602. return smalltalk.withContext(function($ctx1) { self["@keyBinder"]=aKeyBinder;
  603. return self}, function($ctx1) {$ctx1.fill(self,"keyBinder:",{aKeyBinder:aKeyBinder}, smalltalk.HLKeyBinderHelper)})},
  604. messageSends: []}),
  605. smalltalk.HLKeyBinderHelper);
  606. smalltalk.addMethod(
  607. "_registerBindings",
  608. smalltalk.method({
  609. selector: "registerBindings",
  610. fn: function (){
  611. var self=this;
  612. return smalltalk.withContext(function($ctx1) { return self}, function($ctx1) {$ctx1.fill(self,"registerBindings",{}, smalltalk.HLKeyBinderHelper)})},
  613. messageSends: []}),
  614. smalltalk.HLKeyBinderHelper);
  615. smalltalk.addMethod(
  616. "_renderBindingGroup_on_",
  617. smalltalk.method({
  618. selector: "renderBindingGroup:on:",
  619. fn: function (aBindingGroup,html){
  620. var self=this;
  621. return smalltalk.withContext(function($ctx1) { var $1,$3,$4,$5,$6,$2;
  622. _st(_st(_st(aBindingGroup)._bindings())._sorted_((function(a,b){
  623. return smalltalk.withContext(function($ctx2) { return _st(_st(a)._key()).__lt(_st(b)._key());
  624. }, function($ctx2) {$ctx2.fillBlock({a:a,b:b},$ctx1)})})))._do_((function(each){
  625. return smalltalk.withContext(function($ctx2) { $1=_st(html)._span();
  626. _st($1)._class_("command");
  627. $2=_st($1)._with_((function(){
  628. return smalltalk.withContext(function($ctx3) { $3=_st(html)._span();
  629. _st($3)._class_("label");
  630. $4=_st($3)._with_(_st(_st(each)._shortcut())._asLowercase());
  631. $4;
  632. $5=_st(html)._a();
  633. _st($5)._class_("action");
  634. _st($5)._with_(_st(each)._label());
  635. $6=_st($5)._onClick_((function(){
  636. return smalltalk.withContext(function($ctx4) { return _st(_st(self)._keyBinder())._applyBinding_(each);
  637. }, function($ctx4) {$ctx4.fillBlock({},$ctx1)})}));
  638. return $6;
  639. }, function($ctx3) {$ctx3.fillBlock({},$ctx1)})}));
  640. return $2;
  641. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
  642. return self}, function($ctx1) {$ctx1.fill(self,"renderBindingGroup:on:",{aBindingGroup:aBindingGroup,html:html}, smalltalk.HLKeyBinderHelper)})},
  643. messageSends: ["do:", "class:", "span", "with:", "asLowercase", "shortcut", "a", "label", "onClick:", "applyBinding:", "keyBinder", "sorted:", "<", "key", "bindings"]}),
  644. smalltalk.HLKeyBinderHelper);
  645. smalltalk.addMethod(
  646. "_renderBindingOn_",
  647. smalltalk.method({
  648. selector: "renderBindingOn:",
  649. fn: function (html){
  650. var self=this;
  651. return smalltalk.withContext(function($ctx1) { _st(_st(self)._selectedBinding())._renderOn_html_(self,html);
  652. return self}, function($ctx1) {$ctx1.fill(self,"renderBindingOn:",{html:html}, smalltalk.HLKeyBinderHelper)})},
  653. messageSends: ["renderOn:html:", "selectedBinding"]}),
  654. smalltalk.HLKeyBinderHelper);
  655. smalltalk.addMethod(
  656. "_renderContentOn_",
  657. smalltalk.method({
  658. selector: "renderContentOn:",
  659. fn: function (html){
  660. var self=this;
  661. return smalltalk.withContext(function($ctx1) { var $1,$3,$4,$2;
  662. $1=_st(html)._div();
  663. _st($1)._class_(_st(self)._cssClass());
  664. $2=_st($1)._with_((function(){
  665. return smalltalk.withContext(function($ctx2) { $3=self;
  666. _st($3)._renderSelectionOn_(html);
  667. $4=_st($3)._renderBindingOn_(html);
  668. return $4;
  669. }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
  670. return self}, function($ctx1) {$ctx1.fill(self,"renderContentOn:",{html:html}, smalltalk.HLKeyBinderHelper)})},
  671. messageSends: ["class:", "cssClass", "div", "with:", "renderSelectionOn:", "renderBindingOn:"]}),
  672. smalltalk.HLKeyBinderHelper);
  673. smalltalk.addMethod(
  674. "_renderSelectionOn_",
  675. smalltalk.method({
  676. selector: "renderSelectionOn:",
  677. fn: function (html){
  678. var self=this;
  679. return smalltalk.withContext(function($ctx1) { var $1,$3,$5,$4,$2;
  680. $1=_st(html)._span();
  681. _st($1)._class_("selected");
  682. $3=$1;
  683. $5=_st(_st(self)._selectedBinding())._label();
  684. if(($receiver = $5) == nil || $receiver == undefined){
  685. $4="Action";
  686. } else {
  687. $4=$5;
  688. };
  689. $2=_st($3)._with_($4);
  690. return self}, function($ctx1) {$ctx1.fill(self,"renderSelectionOn:",{html:html}, smalltalk.HLKeyBinderHelper)})},
  691. messageSends: ["class:", "span", "with:", "ifNil:", "label", "selectedBinding"]}),
  692. smalltalk.HLKeyBinderHelper);
  693. smalltalk.addMethod(
  694. "_renderStart",
  695. smalltalk.method({
  696. selector: "renderStart",
  697. fn: function (){
  698. var self=this;
  699. return smalltalk.withContext(function($ctx1) { var $1,$2;
  700. _st((function(html){
  701. return smalltalk.withContext(function($ctx2) { $1=_st(html)._div();
  702. _st($1)._id_("keybinding-start-helper");
  703. $2=_st($1)._with_(_st(_st("Press ").__comma(_st(_st(self)._keyBinder())._activationKeyLabel())).__comma(" to start"));
  704. return $2;
  705. }, function($ctx2) {$ctx2.fillBlock({html:html},$ctx1)})}))._appendToJQuery_(_st("body")._asJQuery());
  706. _st((function(){
  707. return smalltalk.withContext(function($ctx2) { return _st(_st(window)._jQuery_("#keybinding-start-helper"))._fadeOut_((1000));
  708. }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}))._valueWithTimeout_((2000));
  709. return self}, function($ctx1) {$ctx1.fill(self,"renderStart",{}, smalltalk.HLKeyBinderHelper)})},
  710. messageSends: ["appendToJQuery:", "asJQuery", "id:", "div", "with:", ",", "activationKeyLabel", "keyBinder", "valueWithTimeout:", "fadeOut:", "jQuery:"]}),
  711. smalltalk.HLKeyBinderHelper);
  712. smalltalk.addMethod(
  713. "_selectedBinding",
  714. smalltalk.method({
  715. selector: "selectedBinding",
  716. fn: function (){
  717. var self=this;
  718. return smalltalk.withContext(function($ctx1) { var $1;
  719. $1=_st(_st(self)._keyBinder())._selectedBinding();
  720. return $1;
  721. }, function($ctx1) {$ctx1.fill(self,"selectedBinding",{}, smalltalk.HLKeyBinderHelper)})},
  722. messageSends: ["selectedBinding", "keyBinder"]}),
  723. smalltalk.HLKeyBinderHelper);
  724. smalltalk.addMethod(
  725. "_show",
  726. smalltalk.method({
  727. selector: "show",
  728. fn: function (){
  729. var self=this;
  730. return smalltalk.withContext(function($ctx1) { _st(self)._appendToJQuery_(_st("body")._asJQuery());
  731. return self}, function($ctx1) {$ctx1.fill(self,"show",{}, smalltalk.HLKeyBinderHelper)})},
  732. messageSends: ["appendToJQuery:", "asJQuery"]}),
  733. smalltalk.HLKeyBinderHelper);
  734. smalltalk.addMethod(
  735. "_on_",
  736. smalltalk.method({
  737. selector: "on:",
  738. fn: function (aKeyBinder){
  739. var self=this;
  740. return smalltalk.withContext(function($ctx1) { var $2,$3,$1;
  741. $2=_st(self)._new();
  742. _st($2)._keyBinder_(aKeyBinder);
  743. $3=_st($2)._yourself();
  744. $1=$3;
  745. return $1;
  746. }, function($ctx1) {$ctx1.fill(self,"on:",{aKeyBinder:aKeyBinder}, smalltalk.HLKeyBinderHelper.klass)})},
  747. messageSends: ["keyBinder:", "new", "yourself"]}),
  748. smalltalk.HLKeyBinderHelper.klass);