| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751 | smalltalk.addPackage('Helios-KeyBindings', {});smalltalk.addClass('HLBinding', smalltalk.Object, ['key', 'label'], 'Helios-KeyBindings');smalltalk.addMethod("_applyOn_",smalltalk.method({selector: "applyOn:",fn: function (aKeyBinder){var self=this;smalltalk.send(self,"_subclassResponsibility",[]);return self}}),smalltalk.HLBinding);smalltalk.addMethod("_isBindingAction",smalltalk.method({selector: "isBindingAction",fn: function (){var self=this;return false;}}),smalltalk.HLBinding);smalltalk.addMethod("_isBindingGroup",smalltalk.method({selector: "isBindingGroup",fn: function (){var self=this;return false;}}),smalltalk.HLBinding);smalltalk.addMethod("_key",smalltalk.method({selector: "key",fn: function (){var self=this;return self["@key"];}}),smalltalk.HLBinding);smalltalk.addMethod("_key_",smalltalk.method({selector: "key:",fn: function (anInteger){var self=this;self["@key"]=anInteger;return self}}),smalltalk.HLBinding);smalltalk.addMethod("_label",smalltalk.method({selector: "label",fn: function (){var self=this;return self["@label"];}}),smalltalk.HLBinding);smalltalk.addMethod("_label_",smalltalk.method({selector: "label:",fn: function (aString){var self=this;self["@label"]=aString;return self}}),smalltalk.HLBinding);smalltalk.addMethod("_renderOn_html_",smalltalk.method({selector: "renderOn:html:",fn: function (aBindingHelper,html){var self=this;return self}}),smalltalk.HLBinding);smalltalk.addMethod("_shortcut",smalltalk.method({selector: "shortcut",fn: function (){var self=this;var $1;$1=smalltalk.send((smalltalk.String || String),"_fromCharCode_",[smalltalk.send(self,"_key",[])]);return $1;}}),smalltalk.HLBinding);smalltalk.addMethod("_on_labelled_",smalltalk.method({selector: "on:labelled:",fn: function (anInteger,aString){var self=this;var $2,$3,$1;$2=smalltalk.send(self,"_new",[]);smalltalk.send($2,"_key_",[anInteger]);smalltalk.send($2,"_label_",[aString]);$3=smalltalk.send($2,"_yourself",[]);$1=$3;return $1;}}),smalltalk.HLBinding.klass);smalltalk.addClass('HLBindingAction', smalltalk.HLBinding, ['callback'], 'Helios-KeyBindings');smalltalk.addMethod("_applyOn_",smalltalk.method({selector: "applyOn:",fn: function (aKeyBinder){var self=this;smalltalk.send(aKeyBinder,"_applyBindingAction_",[self]);return self}}),smalltalk.HLBindingAction);smalltalk.addMethod("_callback",smalltalk.method({selector: "callback",fn: function (){var self=this;return self["@callback"];}}),smalltalk.HLBindingAction);smalltalk.addMethod("_callback_",smalltalk.method({selector: "callback:",fn: function (aBlock){var self=this;self["@callback"]=aBlock;return self}}),smalltalk.HLBindingAction);smalltalk.addMethod("_isBindingAction",smalltalk.method({selector: "isBindingAction",fn: function (){var self=this;return true;}}),smalltalk.HLBindingAction);smalltalk.addClass('HLBindingGroup', smalltalk.HLBinding, ['bindings'], 'Helios-KeyBindings');smalltalk.addMethod("_add_",smalltalk.method({selector: "add:",fn: function (aBinding){var self=this;var $1;$1=smalltalk.send(smalltalk.send(self,"_bindings",[]),"_add_",[aBinding]);return $1;}}),smalltalk.HLBindingGroup);smalltalk.addMethod("_addActionKey_labelled_callback_",smalltalk.method({selector: "addActionKey:labelled:callback:",fn: function (anInteger,aString,aBlock){var self=this;var $1,$2;$1=smalltalk.send((smalltalk.HLBindingAction || HLBindingAction),"_on_labelled_",[anInteger,aString]);smalltalk.send($1,"_callback_",[aBlock]);$2=smalltalk.send($1,"_yourself",[]);smalltalk.send(self,"_add_",[$2]);return self}}),smalltalk.HLBindingGroup);smalltalk.addMethod("_addGroupKey_labelled_",smalltalk.method({selector: "addGroupKey:labelled:",fn: function (anInteger,aString){var self=this;smalltalk.send(self,"_add_",[smalltalk.send((smalltalk.HLBindingGroup || HLBindingGroup),"_on_labelled_",[anInteger,aString])]);return self}}),smalltalk.HLBindingGroup);smalltalk.addMethod("_applyOn_",smalltalk.method({selector: "applyOn:",fn: function (aKeyBinder){var self=this;smalltalk.send(aKeyBinder,"_applyBindingGroup_",[self]);return self}}),smalltalk.HLBindingGroup);smalltalk.addMethod("_at_",smalltalk.method({selector: "at:",fn: function (aString){var self=this;var $1;$1=smalltalk.send(smalltalk.send(self,"_bindings",[]),"_detect_ifNone_",[(function(each){return smalltalk.send(smalltalk.send(each,"_label",[]),"__eq",[aString]);}),(function(){return nil;})]);return $1;}}),smalltalk.HLBindingGroup);smalltalk.addMethod("_atKey_",smalltalk.method({selector: "atKey:",fn: function (anInteger){var self=this;var $1;$1=smalltalk.send(smalltalk.send(self,"_bindings",[]),"_detect_ifNone_",[(function(each){return smalltalk.send(smalltalk.send(each,"_key",[]),"__eq",[anInteger]);}),(function(){return nil;})]);return $1;}}),smalltalk.HLBindingGroup);smalltalk.addMethod("_bindings",smalltalk.method({selector: "bindings",fn: function (){var self=this;var $1;if(($receiver = self["@bindings"]) == nil || $receiver == undefined){self["@bindings"]=smalltalk.send((smalltalk.OrderedCollection || OrderedCollection),"_new",[]);$1=self["@bindings"];} else {$1=self["@bindings"];};return $1;}}),smalltalk.HLBindingGroup);smalltalk.addMethod("_isBindingGroup",smalltalk.method({selector: "isBindingGroup",fn: function (){var self=this;return true;}}),smalltalk.HLBindingGroup);smalltalk.addMethod("_renderOn_html_",smalltalk.method({selector: "renderOn:html:",fn: function (aBindingHelper,html){var self=this;smalltalk.send(aBindingHelper,"_renderBindingGroup_on_",[self,html]);return self}}),smalltalk.HLBindingGroup);smalltalk.addClass('HLKeyBinder', smalltalk.Object, ['modifierKey', 'active', 'helper', 'bindings', 'selectedBinding'], 'Helios-KeyBindings');smalltalk.addMethod("_activate",smalltalk.method({selector: "activate",fn: function (){var self=this;self["@active"]=true;smalltalk.send(smalltalk.send(self,"_helper",[]),"_show",[]);return self}}),smalltalk.HLKeyBinder);smalltalk.addMethod("_activationKey",smalltalk.method({selector: "activationKey",fn: function (){var self=this;return (32);}}),smalltalk.HLKeyBinder);smalltalk.addMethod("_applyBinding_",smalltalk.method({selector: "applyBinding:",fn: function (aBinding){var self=this;smalltalk.send(aBinding,"_applyOn_",[self]);return self}}),smalltalk.HLKeyBinder);smalltalk.addMethod("_applyBindingAction_",smalltalk.method({selector: "applyBindingAction:",fn: function (aBinding){var self=this;smalltalk.send(smalltalk.send(aBinding,"_callback",[]),"_value",[]);smalltalk.send(self,"_deactivate",[]);return self}}),smalltalk.HLKeyBinder);smalltalk.addMethod("_applyBindingGroup_",smalltalk.method({selector: "applyBindingGroup:",fn: function (aBinding){var self=this;self["@selectedBinding"]=aBinding;smalltalk.send(smalltalk.send(self,"_helper",[]),"_refresh",[]);return self}}),smalltalk.HLKeyBinder);smalltalk.addMethod("_bindings",smalltalk.method({selector: "bindings",fn: function (){var self=this;var $1;if(($receiver = self["@bindings"]) == nil || $receiver == undefined){self["@bindings"]=smalltalk.send((smalltalk.HLBindingGroup || HLBindingGroup),"_new",[]);$1=self["@bindings"];} else {$1=self["@bindings"];};return $1;}}),smalltalk.HLKeyBinder);smalltalk.addMethod("_deactivate",smalltalk.method({selector: "deactivate",fn: function (){var self=this;self["@active"]=false;self["@selectedBinding"]=nil;smalltalk.send(smalltalk.send(self,"_helper",[]),"_hide",[]);return self}}),smalltalk.HLKeyBinder);smalltalk.addMethod("_escapeKey",smalltalk.method({selector: "escapeKey",fn: function (){var self=this;return (27);}}),smalltalk.HLKeyBinder);smalltalk.addMethod("_flushBindings",smalltalk.method({selector: "flushBindings",fn: function (){var self=this;self["@bindings"]=nil;self["@helper"]=nil;return self}}),smalltalk.HLKeyBinder);smalltalk.addMethod("_handleActiveKeyDown_",smalltalk.method({selector: "handleActiveKeyDown:",fn: function (event){var self=this;var $1,$2;$1=smalltalk.send(smalltalk.send(smalltalk.send(event,"_which",[]),"__eq",[smalltalk.send(self,"_escapeKey",[])]),"_or_",[(function(){return smalltalk.send(smalltalk.send(smalltalk.send(event,"_which",[]),"__eq",[(71)]),"_and_",[(function(){return smalltalk.send(event,"_ctrlKey",[]);})]);})]);if(smalltalk.assert($1)){smalltalk.send(self,"_deactivate",[]);smalltalk.send(event,"_preventDefault",[]);return false;};$2=smalltalk.send(self,"_handleBindingFor_",[event]);return $2;}}),smalltalk.HLKeyBinder);smalltalk.addMethod("_handleBindingFor_",smalltalk.method({selector: "handleBindingFor:",fn: function (anEvent){var self=this;var binding;binding=smalltalk.send(smalltalk.send(self,"_selectedBinding",[]),"_atKey_",[smalltalk.send(anEvent,"_which",[])]);if(($receiver = binding) == nil || $receiver == undefined){binding;} else {smalltalk.send(self,"_applyBinding_",[binding]);smalltalk.send(anEvent,"_preventDefault",[]);return false;};return self}}),smalltalk.HLKeyBinder);smalltalk.addMethod("_handleInactiveKeyDown_",smalltalk.method({selector: "handleInactiveKeyDown:",fn: function (event){var self=this;var $1,$3,$2;$1=smalltalk.send(smalltalk.send(event,"_which",[]),"__eq",[smalltalk.send(self,"_activationKey",[])]);if(smalltalk.assert($1)){$3=smalltalk.send(self,"_systemIsMac",[]);if(smalltalk.assert($3)){$2=smalltalk.send(event,"_metaKey",[]);} else {$2=smalltalk.send(event,"_ctrlKey",[]);};if(smalltalk.assert($2)){smalltalk.send(self,"_activate",[]);smalltalk.send(event,"_preventDefault",[]);return false;};};return self}}),smalltalk.HLKeyBinder);smalltalk.addMethod("_handleKeyDown_",smalltalk.method({selector: "handleKeyDown:",fn: function (event){var self=this;var $2,$1;$2=smalltalk.send(self,"_isActive",[]);if(smalltalk.assert($2)){$1=smalltalk.send(self,"_handleActiveKeyDown_",[event]);} else {$1=smalltalk.send(self,"_handleInactiveKeyDown_",[event]);};return $1;}}),smalltalk.HLKeyBinder);smalltalk.addMethod("_helper",smalltalk.method({selector: "helper",fn: function (){var self=this;var $1;if(($receiver = self["@helper"]) == nil || $receiver == undefined){self["@helper"]=smalltalk.send((smalltalk.HLKeyBinderHelper || HLKeyBinderHelper),"_on_",[self]);$1=self["@helper"];} else {$1=self["@helper"];};return $1;}}),smalltalk.HLKeyBinder);smalltalk.addMethod("_initialize",smalltalk.method({selector: "initialize",fn: function (){var self=this;smalltalk.send(self,"_initialize",[],smalltalk.Object);self["@active"]=false;return self}}),smalltalk.HLKeyBinder);smalltalk.addMethod("_isActive",smalltalk.method({selector: "isActive",fn: function (){var self=this;var $1;if(($receiver = self["@active"]) == nil || $receiver == undefined){$1=false;} else {$1=self["@active"];};return $1;}}),smalltalk.HLKeyBinder);smalltalk.addMethod("_selectedBinding",smalltalk.method({selector: "selectedBinding",fn: function (){var self=this;var $1;if(($receiver = self["@selectedBinding"]) == nil || $receiver == undefined){$1=smalltalk.send(self,"_bindings",[]);} else {$1=self["@selectedBinding"];};return $1;}}),smalltalk.HLKeyBinder);smalltalk.addMethod("_setupEvents",smalltalk.method({selector: "setupEvents",fn: function (){var self=this;smalltalk.send(smalltalk.send(window,"_jQuery_",["body"]),"_keydown_",[(function(event){return smalltalk.send(self,"_handleKeyDown_",[event]);})]);return self}}),smalltalk.HLKeyBinder);smalltalk.addMethod("_systemIsMac",smalltalk.method({selector: "systemIsMac",fn: function (){var self=this;var $1;$1=smalltalk.send(smalltalk.send(navigator,"_platform",[]),"_match_",["Mac"]);return $1;}}),smalltalk.HLKeyBinder);smalltalk.addClass('HLKeyBinderHelper', smalltalk.HLWidget, ['keyBinder'], 'Helios-KeyBindings');smalltalk.addMethod("_hide",smalltalk.method({selector: "hide",fn: function (){var self=this;smalltalk.send(smalltalk.send(self["@rootDiv"],"_asJQuery",[]),"_remove",[]);return self}}),smalltalk.HLKeyBinderHelper);smalltalk.addMethod("_keyBinder",smalltalk.method({selector: "keyBinder",fn: function (){var self=this;return self["@keyBinder"];}}),smalltalk.HLKeyBinderHelper);smalltalk.addMethod("_keyBinder_",smalltalk.method({selector: "keyBinder:",fn: function (aKeyBinder){var self=this;self["@keyBinder"]=aKeyBinder;return self}}),smalltalk.HLKeyBinderHelper);smalltalk.addMethod("_registerBindings",smalltalk.method({selector: "registerBindings",fn: function (){var self=this;return self}}),smalltalk.HLKeyBinderHelper);smalltalk.addMethod("_renderBindingGroup_on_",smalltalk.method({selector: "renderBindingGroup:on:",fn: function (aBindingGroup,html){var self=this;var $1,$3,$4,$5,$6,$2;smalltalk.send(smalltalk.send(smalltalk.send(aBindingGroup,"_bindings",[]),"_sorted_",[(function(a,b){return smalltalk.send(smalltalk.send(a,"_key",[]),"__lt",[smalltalk.send(b,"_key",[])]);})]),"_do_",[(function(each){$1=smalltalk.send(html,"_span",[]);smalltalk.send($1,"_class_",["command"]);$2=smalltalk.send($1,"_with_",[(function(){$3=smalltalk.send(html,"_span",[]);smalltalk.send($3,"_class_",["label"]);$4=smalltalk.send($3,"_with_",[smalltalk.send(smalltalk.send(each,"_shortcut",[]),"_asLowercase",[])]);$4;$5=smalltalk.send(html,"_a",[]);smalltalk.send($5,"_class_",["action"]);smalltalk.send($5,"_with_",[smalltalk.send(each,"_label",[])]);$6=smalltalk.send($5,"_onClick_",[(function(){return smalltalk.send(smalltalk.send(self,"_keyBinder",[]),"_applyBinding_",[each]);})]);return $6;})]);return $2;})]);return self}}),smalltalk.HLKeyBinderHelper);smalltalk.addMethod("_renderBindingOn_",smalltalk.method({selector: "renderBindingOn:",fn: function (html){var self=this;smalltalk.send(smalltalk.send(self,"_selectedBinding",[]),"_renderOn_html_",[self,html]);return self}}),smalltalk.HLKeyBinderHelper);smalltalk.addMethod("_renderContentOn_",smalltalk.method({selector: "renderContentOn:",fn: function (html){var self=this;var $1,$3,$2;$1=smalltalk.send(html,"_div",[]);smalltalk.send($1,"_class_",["key_helper"]);$2=smalltalk.send($1,"_with_",[(function(){smalltalk.send(self,"_renderSelectionOn_",[html]);$3=smalltalk.send(self,"_renderBindingOn_",[html]);return $3;})]);return self}}),smalltalk.HLKeyBinderHelper);smalltalk.addMethod("_renderSelectionOn_",smalltalk.method({selector: "renderSelectionOn:",fn: function (html){var self=this;var $1,$4,$3,$2;$1=smalltalk.send(html,"_span",[]);smalltalk.send($1,"_class_",["selected"]);$4=smalltalk.send(smalltalk.send(self,"_selectedBinding",[]),"_label",[]);if(($receiver = $4) == nil || $receiver == undefined){$3="Action";} else {$3=$4;};$2=smalltalk.send($1,"_with_",[$3]);return self}}),smalltalk.HLKeyBinderHelper);smalltalk.addMethod("_selectedBinding",smalltalk.method({selector: "selectedBinding",fn: function (){var self=this;var $1;$1=smalltalk.send(smalltalk.send(self,"_keyBinder",[]),"_selectedBinding",[]);return $1;}}),smalltalk.HLKeyBinderHelper);smalltalk.addMethod("_show",smalltalk.method({selector: "show",fn: function (){var self=this;smalltalk.send(self,"_appendToJQuery_",[smalltalk.send("body","_asJQuery",[])]);return self}}),smalltalk.HLKeyBinderHelper);smalltalk.addMethod("_on_",smalltalk.method({selector: "on:",fn: function (aKeyBinder){var self=this;var $2,$3,$1;$2=smalltalk.send(self,"_new",[]);smalltalk.send($2,"_keyBinder_",[aKeyBinder]);$3=smalltalk.send($2,"_yourself",[]);$1=$3;return $1;}}),smalltalk.HLKeyBinderHelper.klass);
 |