1
0

Helios-KeyBindings.deploy.js 27 KB

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