1
0

Helios-KeyBindings.deploy.js 29 KB

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