Browse Source

asJQuery optimization, fixes. Fix #66.

Herbert Vojčík 8 years ago
parent
commit
e3e847e44f

+ 16 - 5
src/Helios-Browser.js

@@ -2833,11 +2833,22 @@ selector: "renderItemLabel:level:on:",
 protocol: 'rendering',
 fn: function (aClass,anInteger,html){
 var self=this;
+var indent;
 function $String(){return $globals.String||(typeof String=="undefined"?nil:String)}
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
-$recv($recv($recv(html)._span())._asJQuery())._html_($recv($String())._streamContents_((function(str){
+var $1;
+indent=$recv($String())._fromCharCode_((160));
+$1=$recv($recv(indent).__comma(indent)).__comma(indent);
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+$ctx1.sendIdx[","]=2;
+//>>excludeEnd("ctx");
+indent=$recv($1).__comma(indent);
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+$ctx1.sendIdx[","]=1;
+//>>excludeEnd("ctx");
+$recv($recv(html)._span())._with_($recv($String())._streamContents_((function(str){
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx2) {
 //>>excludeEnd("ctx");
@@ -2845,7 +2856,7 @@ $recv(anInteger)._timesRepeat_((function(){
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx3) {
 //>>excludeEnd("ctx");
-return $recv(str)._nextPutAll_("    ");
+return $recv(str)._nextPutAll_(indent);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx3.sendIdx["nextPutAll:"]=1;
 //>>excludeEnd("ctx");
@@ -2860,15 +2871,15 @@ return $recv(str)._nextPutAll_($recv(aClass)._name());
 })));
 return self;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-}, function($ctx1) {$ctx1.fill(self,"renderItemLabel:level:on:",{aClass:aClass,anInteger:anInteger,html:html},$globals.HLClassesListWidget)});
+}, function($ctx1) {$ctx1.fill(self,"renderItemLabel:level:on:",{aClass:aClass,anInteger:anInteger,html:html,indent:indent},$globals.HLClassesListWidget)});
 //>>excludeEnd("ctx");
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
 args: ["aClass", "anInteger", "html"],
-source: "renderItemLabel: aClass level: anInteger on: html\x0a\x09html span asJQuery html: (String streamContents: [ :str |\x0a\x09\x09anInteger timesRepeat: [\x0a\x09\x09\x09str nextPutAll: '    ' ].\x0a\x09\x09\x09str nextPutAll: aClass name ])",
+source: "renderItemLabel: aClass level: anInteger on: html\x0a\x09| indent |\x0a\x09indent := String fromCharCode: 160.\x0a\x09indent := indent, indent, indent, indent.\x0a\x09html span with: (String streamContents: [ :str |\x0a\x09\x09anInteger timesRepeat: [\x0a\x09\x09\x09str nextPutAll: indent ].\x0a\x09\x09\x09str nextPutAll: aClass name ])",
 referencedClasses: ["String"],
 //>>excludeEnd("ide");
-messageSends: ["html:", "asJQuery", "span", "streamContents:", "timesRepeat:", "nextPutAll:", "name"]
+messageSends: ["fromCharCode:", ",", "with:", "span", "streamContents:", "timesRepeat:", "nextPutAll:", "name"]
 }),
 $globals.HLClassesListWidget);
 

+ 5 - 2
src/Helios-Browser.st

@@ -757,9 +757,12 @@ renderItem: aClass on: html
 !
 
 renderItemLabel: aClass level: anInteger on: html
-	html span asJQuery html: (String streamContents: [ :str |
+	| indent |
+	indent := String fromCharCode: 160.
+	indent := indent, indent, indent, indent.
+	html span with: (String streamContents: [ :str |
 		anInteger timesRepeat: [
-			str nextPutAll: '    ' ].
+			str nextPutAll: indent ].
 			str nextPutAll: aClass name ])
 !
 

+ 91 - 86
src/Helios-Core.js

@@ -1942,7 +1942,7 @@ return $recv("#helper"._asJQuery())._remove();
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
 //>>excludeEnd("ctx");
-}))._valueWithTimeout_((10));
+}))._fork();
 return self;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 }, function($ctx1) {$ctx1.fill(self,"withHelperLabelled:do:",{aString:aString,aBlock:aBlock},$globals.HLToolModel)});
@@ -1950,10 +1950,10 @@ return self;
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
 args: ["aString", "aBlock"],
-source: "withHelperLabelled: aString do: aBlock\x0a\x09\x22TODO: doesn't belong here\x22\x0a\x0a\x09'#helper' asJQuery remove.\x0a\x0a\x09[ :html |\x0a\x09\x09html div \x0a\x09\x09\x09id: 'helper';\x0a\x09\x09\x09with: aString ] appendToJQuery: 'body' asJQuery.\x0a\x09\x0a\x09[\x0a\x09\x09aBlock value.\x0a\x09\x09'#helper' asJQuery remove\x0a\x09] \x0a\x09\x09valueWithTimeout: 10",
+source: "withHelperLabelled: aString do: aBlock\x0a\x09\x22TODO: doesn't belong here\x22\x0a\x0a\x09'#helper' asJQuery remove.\x0a\x0a\x09[ :html |\x0a\x09\x09html div \x0a\x09\x09\x09id: 'helper';\x0a\x09\x09\x09with: aString ] appendToJQuery: 'body' asJQuery.\x0a\x09\x0a\x09[\x0a\x09\x09aBlock value.\x0a\x09\x09'#helper' asJQuery remove ] fork",
 referencedClasses: [],
 //>>excludeEnd("ide");
-messageSends: ["remove", "asJQuery", "appendToJQuery:", "id:", "div", "with:", "valueWithTimeout:", "value"]
+messageSends: ["remove", "asJQuery", "appendToJQuery:", "id:", "div", "with:", "fork", "value"]
 }),
 $globals.HLToolModel);
 
@@ -2029,10 +2029,15 @@ var self=this;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
-var $1;
-$1=$recv(self._wrapper())._asJQuery();
-$recv($1)._keydown_(keyDownBlock);
-$recv($1)._keyup_(keyUpBlock);
+var $1,$2,$receiver;
+$1=self._wrapper();
+if(($receiver = $1) == null || $receiver.isNil){
+$1;
+} else {
+$2=self["@wrapper"];
+$recv($2)._onKeyDown_(keyDownBlock);
+$recv($2)._onKeyUp_(keyUpBlock);
+};
 return self;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 }, function($ctx1) {$ctx1.fill(self,"bindKeyDown:keyUp:",{keyDownBlock:keyDownBlock,keyUpBlock:keyUpBlock},$globals.HLWidget)});
@@ -2040,10 +2045,10 @@ return self;
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
 args: ["keyDownBlock", "keyUpBlock"],
-source: "bindKeyDown: keyDownBlock keyUp: keyUpBlock\x0a\x09self wrapper asJQuery\x0a\x09\x09keydown: keyDownBlock;\x0a\x09\x09keyup: keyUpBlock",
+source: "bindKeyDown: keyDownBlock keyUp: keyUpBlock\x0a\x09self wrapper ifNotNil: [ wrapper\x0a\x09\x09onKeyDown: keyDownBlock;\x0a\x09\x09onKeyUp: keyUpBlock ]",
 referencedClasses: [],
 //>>excludeEnd("ide");
-messageSends: ["keydown:", "asJQuery", "wrapper", "keyup:"]
+messageSends: ["ifNotNil:", "wrapper", "onKeyDown:", "onKeyUp:"]
 }),
 $globals.HLWidget);
 
@@ -2264,26 +2269,14 @@ var self=this;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
-var $1,$3,$2,$receiver;
+var $1,$receiver;
 $1=self._wrapper();
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx1.sendIdx["wrapper"]=1;
-//>>excludeEnd("ctx");
 if(($receiver = $1) == null || $receiver.isNil){
-return self;
-} else {
 $1;
-};
-$3=self._wrapper();
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx1.sendIdx["wrapper"]=2;
-//>>excludeEnd("ctx");
-$2=$recv($3)._asJQuery();
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx1.sendIdx["asJQuery"]=1;
-//>>excludeEnd("ctx");
-$recv($2)._empty();
-$recv((function(html){
+} else {
+var wrap;
+wrap=$receiver;
+$recv(wrap)._contents_((function(html){
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx2) {
 //>>excludeEnd("ctx");
@@ -2291,7 +2284,8 @@ return self._renderContentOn_(html);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 }, function($ctx2) {$ctx2.fillBlock({html:html},$ctx1,2)});
 //>>excludeEnd("ctx");
-}))._appendToJQuery_($recv(self._wrapper())._asJQuery());
+}));
+};
 return self;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 }, function($ctx1) {$ctx1.fill(self,"refresh",{},$globals.HLWidget)});
@@ -2299,10 +2293,10 @@ return self;
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
 args: [],
-source: "refresh\x0a\x09self wrapper ifNil: [ ^ self ].\x0a    \x0a\x09self wrapper asJQuery empty.\x0a    [ :html | self renderContentOn: html ] appendToJQuery: self wrapper asJQuery",
+source: "refresh\x0a\x09self wrapper\x0a\x09\x09ifNotNil: [ :wrap | wrap contents: [ :html | self renderContentOn: html ] ]",
 referencedClasses: [],
 //>>excludeEnd("ide");
-messageSends: ["ifNil:", "wrapper", "empty", "asJQuery", "appendToJQuery:", "renderContentOn:"]
+messageSends: ["ifNotNil:", "wrapper", "contents:", "renderContentOn:"]
 }),
 $globals.HLWidget);
 
@@ -2402,16 +2396,15 @@ return $core.withContext(function($ctx1) {
 var $1;
 $1=$recv(html)._div();
 $recv($1)._class_(self._cssClass());
-self["@wrapper"]=$recv($1)._yourself();
-$recv((function(renderer){
+self["@wrapper"]=$recv($1)._with_($recv((function(){
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx2) {
 //>>excludeEnd("ctx");
-return self._renderContentOn_(renderer);
+return self._renderContentOn_(html);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-}, function($ctx2) {$ctx2.fillBlock({renderer:renderer},$ctx1,1)});
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
 //>>excludeEnd("ctx");
-}))._appendToJQuery_($recv(self["@wrapper"])._asJQuery());
+}))._yourself());
 return self;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 }, function($ctx1) {$ctx1.fill(self,"renderOn:",{html:html},$globals.HLWidget)});
@@ -2419,10 +2412,10 @@ return self;
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
 args: ["html"],
-source: "renderOn: html\x0a\x09wrapper := html div\x0a\x09\x09class: self cssClass;\x0a\x09\x09yourself.\x0a    [ :renderer | self renderContentOn: renderer ] appendToJQuery: wrapper asJQuery",
+source: "renderOn: html\x0a\x09wrapper := html div\x0a\x09\x09class: self cssClass;\x0a\x09\x09with: [ self renderContentOn: html ]\x0a\x09\x09yourself",
 referencedClasses: [],
 //>>excludeEnd("ide");
-messageSends: ["class:", "div", "cssClass", "yourself", "appendToJQuery:", "renderContentOn:", "asJQuery"]
+messageSends: ["class:", "div", "cssClass", "with:", "yourself", "renderContentOn:"]
 }),
 $globals.HLWidget);
 
@@ -2845,51 +2838,50 @@ var self=this;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
-var $1,$2,$4,$3,$5;
+var $1,$3,$2,$4;
 $1=$recv(html)._div();
 $recv($1)._class_(self._cssClass());
-self["@wrapper"]=$recv($1)._yourself();
-$recv(self["@wrapper"])._with_((function(){
+$recv($1)._at_put_("tabindex","0");
+$recv($1)._onBlur_((function(){
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx2) {
 //>>excludeEnd("ctx");
-return self._renderContentOn_(html);
+$3=self._wrapper();
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
+$ctx2.sendIdx["wrapper"]=1;
 //>>excludeEnd("ctx");
-}));
-$2=self["@wrapper"];
-$recv($2)._at_put_("tabindex","0");
-$recv($2)._onBlur_((function(){
+$2=$recv($3)._asJQuery();
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-return $core.withContext(function($ctx2) {
+$ctx2.sendIdx["asJQuery"]=1;
 //>>excludeEnd("ctx");
-$4=self._wrapper();
+$4=self._focusClass();
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx2.sendIdx["wrapper"]=1;
+$ctx2.sendIdx["focusClass"]=1;
 //>>excludeEnd("ctx");
-$3=$recv($4)._asJQuery();
+return $recv($2)._removeClass_($4);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx2.sendIdx["asJQuery"]=1;
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
 //>>excludeEnd("ctx");
-$5=self._focusClass();
+}));
+$recv($1)._onFocus_((function(){
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx2.sendIdx["focusClass"]=1;
+return $core.withContext(function($ctx2) {
 //>>excludeEnd("ctx");
-return $recv($3)._removeClass_($5);
+return $recv($recv(self._wrapper())._asJQuery())._addClass_(self._focusClass());
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
 //>>excludeEnd("ctx");
 }));
-$recv($2)._onFocus_((function(){
+$recv($1)._with_((function(){
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx2) {
 //>>excludeEnd("ctx");
-return $recv($recv(self._wrapper())._asJQuery())._addClass_(self._focusClass());
+return self._renderContentOn_(html);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)});
 //>>excludeEnd("ctx");
 }));
+self["@wrapper"]=$recv($1)._yourself();
 return self;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 }, function($ctx1) {$ctx1.fill(self,"renderOn:",{html:html},$globals.HLFocusableWidget)});
@@ -2897,10 +2889,10 @@ return self;
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
 args: ["html"],
-source: "renderOn: html\x0a    wrapper := html div \x0a    \x09class: self cssClass;\x0a\x09\x09yourself.\x0a\x09\x09\x0a       wrapper with: [ self renderContentOn: html ].\x0a\x09\x0a\x09wrapper\x0a\x09\x09at: 'tabindex' put: '0';\x0a\x09\x09onBlur: [ self wrapper asJQuery removeClass: self focusClass ];\x0a        onFocus: [ self wrapper asJQuery addClass: self focusClass ]",
+source: "renderOn: html\x0a    wrapper := html div \x0a    \x09class: self cssClass;\x0a\x09\x09at: 'tabindex' put: '0';\x0a\x09\x09onBlur: [ self wrapper asJQuery removeClass: self focusClass ];\x0a        onFocus: [ self wrapper asJQuery addClass: self focusClass ];\x0a\x09\x09with: [ self renderContentOn: html ];\x0a\x09\x09yourself",
 referencedClasses: [],
 //>>excludeEnd("ide");
-messageSends: ["class:", "div", "cssClass", "yourself", "with:", "renderContentOn:", "at:put:", "onBlur:", "removeClass:", "asJQuery", "wrapper", "focusClass", "onFocus:", "addClass:"]
+messageSends: ["class:", "div", "cssClass", "at:put:", "onBlur:", "removeClass:", "asJQuery", "wrapper", "focusClass", "onFocus:", "addClass:", "with:", "renderContentOn:", "yourself"]
 }),
 $globals.HLFocusableWidget);
 
@@ -4052,7 +4044,7 @@ var self=this;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
-var $2,$1,$3;
+var $1,$3,$2,$4,$receiver;
 (
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx1.supercall = true, 
@@ -4061,29 +4053,34 @@ $ctx1.supercall = true,
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx1.supercall = false;
 //>>excludeEnd("ctx");;
-$recv($recv(self._wrapper())._asJQuery())._keydown_((function(e){
+$1=self._wrapper();
+if(($receiver = $1) == null || $receiver.isNil){
+$1;
+} else {
+$recv(self["@wrapper"])._onKeyDown_((function(e){
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx2) {
 //>>excludeEnd("ctx");
-$2=$recv(e)._which();
+$3=$recv(e)._which();
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx2.sendIdx["which"]=1;
 //>>excludeEnd("ctx");
-$1=$recv($2).__eq((39));
+$2=$recv($3).__eq((39));
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx2.sendIdx["="]=1;
 //>>excludeEnd("ctx");
-if($core.assert($1)){
+if($core.assert($2)){
 self._nextFocus();
 };
-$3=$recv($recv(e)._which()).__eq((37));
-if($core.assert($3)){
+$4=$recv($recv(e)._which()).__eq((37));
+if($core.assert($4)){
 return self._previousFocus();
 };
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-}, function($ctx2) {$ctx2.fillBlock({e:e},$ctx1,1)});
+}, function($ctx2) {$ctx2.fillBlock({e:e},$ctx1,2)});
 //>>excludeEnd("ctx");
 }));
+};
 return self;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 }, function($ctx1) {$ctx1.fill(self,"setupKeyBindings",{},$globals.HLNavigationListWidget)});
@@ -4091,10 +4088,10 @@ return self;
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
 args: [],
-source: "setupKeyBindings\x0a\x09super setupKeyBindings.\x0a\x0a\x09self wrapper asJQuery keydown: [ :e |\x0a        e which = 39 ifTrue: [ \x0a        \x09self nextFocus ].\x0a\x09\x09e which = 37 ifTrue: [ \x0a        \x09self previousFocus ] ]",
+source: "setupKeyBindings\x0a\x09super setupKeyBindings.\x0a\x0a\x09self wrapper ifNotNil: [ wrapper onKeyDown: [ :e |\x0a        e which = 39 ifTrue: [ \x0a        \x09self nextFocus ].\x0a\x09\x09e which = 37 ifTrue: [ \x0a        \x09self previousFocus ] ] ]",
 referencedClasses: [],
 //>>excludeEnd("ide");
-messageSends: ["setupKeyBindings", "keydown:", "asJQuery", "wrapper", "ifTrue:", "=", "which", "nextFocus", "previousFocus"]
+messageSends: ["setupKeyBindings", "ifNotNil:", "wrapper", "onKeyDown:", "ifTrue:", "=", "which", "nextFocus", "previousFocus"]
 }),
 $globals.HLNavigationListWidget);
 
@@ -8243,10 +8240,7 @@ return self._evaluateAt_($recv(anInteger).__plus((1)));
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
 //>>excludeEnd("ctx");
-}))._valueWithTimeout_((10));
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx1.sendIdx["valueWithTimeout:"]=1;
-//>>excludeEnd("ctx");
+}))._fork();
 } else {
 $recv((function(){
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
@@ -8265,10 +8259,10 @@ return self;
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
 args: ["anInteger"],
-source: "evaluateAt: anInteger\x0a\x09self updateProgress: (anInteger / self collection size) * 100.\x0a\x09anInteger <= self collection size\x0a\x09\x09ifTrue: [ \x0a\x09\x09\x09[ \x0a\x09\x09\x09\x09self workBlock value: (self collection at: anInteger).\x0a\x09\x09\x09\x09self evaluateAt: anInteger + 1 ] valueWithTimeout: 10 ]\x0a\x09\x09ifFalse: [ [ self remove ] valueWithTimeout: 500 ]",
+source: "evaluateAt: anInteger\x0a\x09self updateProgress: (anInteger / self collection size) * 100.\x0a\x09anInteger <= self collection size\x0a\x09\x09ifTrue: [ \x0a\x09\x09\x09[ \x0a\x09\x09\x09\x09self workBlock value: (self collection at: anInteger).\x0a\x09\x09\x09\x09self evaluateAt: anInteger + 1 ] fork ]\x0a\x09\x09ifFalse: [ [ self remove ] valueWithTimeout: 500 ]",
 referencedClasses: [],
 //>>excludeEnd("ide");
-messageSends: ["updateProgress:", "*", "/", "size", "collection", "ifTrue:ifFalse:", "<=", "valueWithTimeout:", "value:", "workBlock", "at:", "evaluateAt:", "+", "remove"]
+messageSends: ["updateProgress:", "*", "/", "size", "collection", "ifTrue:ifFalse:", "<=", "fork", "value:", "workBlock", "at:", "evaluateAt:", "+", "valueWithTimeout:", "remove"]
 }),
 $globals.HLProgressBarWidget);
 
@@ -8379,26 +8373,37 @@ var self=this;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
-var $1,$2;
-$recv($recv(html)._span())._with_(self._label());
+var $1,$2,$3,$4,$5;
+$1=$recv(html)._span();
+$2=self._label();
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+$ctx1.sendIdx["label"]=1;
+//>>excludeEnd("ctx");
+$recv($1)._with_($2);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx1.sendIdx["with:"]=1;
 //>>excludeEnd("ctx");
-$1=$recv(html)._div();
+$3=console;
+$recv($3)._log_("progress bar: ");
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+$ctx1.sendIdx["log:"]=1;
+//>>excludeEnd("ctx");
+$recv($3)._log_(self._label());
+$4=$recv(html)._div();
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx1.sendIdx["div"]=1;
 //>>excludeEnd("ctx");
-$recv($1)._class_("progress");
+$recv($4)._class_("progress");
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx1.sendIdx["class:"]=1;
 //>>excludeEnd("ctx");
-$recv($1)._with_((function(){
+$recv($4)._with_((function(){
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx2) {
 //>>excludeEnd("ctx");
-$2=$recv(html)._div();
-$recv($2)._class_("bar");
-self["@bar"]=$recv($2)._style_("width: 0%");
+$5=$recv(html)._div();
+$recv($5)._class_("progress-bar");
+self["@bar"]=$recv($5)._style_("width: 0%");
 return self["@bar"];
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
@@ -8411,10 +8416,10 @@ return self;
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
 args: ["html"],
-source: "renderContentOn: html\x0a\x09html span with: self label.\x0a\x09html div \x0a\x09\x09class: 'progress';\x0a\x09\x09with: [\x0a\x09\x09\x09bar := html div \x0a\x09\x09\x09\x09class: 'bar';\x0a\x09\x09\x09\x09style: 'width: 0%' ]",
+source: "renderContentOn: html\x0a\x09html span with: self label.\x0a\x09console log: 'progress bar: '; log: self label.\x0a\x09html div \x0a\x09\x09class: 'progress';\x0a\x09\x09with: [\x0a\x09\x09\x09bar := html div \x0a\x09\x09\x09\x09class: 'progress-bar';\x0a\x09\x09\x09\x09style: 'width: 0%' ]",
 referencedClasses: [],
 //>>excludeEnd("ide");
-messageSends: ["with:", "span", "label", "class:", "div", "style:"]
+messageSends: ["with:", "span", "label", "log:", "class:", "div", "style:"]
 }),
 $globals.HLProgressBarWidget);
 
@@ -10035,7 +10040,7 @@ return $recv(aTab)._activate();
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1,6)});
 //>>excludeEnd("ctx");
 }));
-$recv($recv($recv(li)._asJQuery())._get_((0)))._at_put_("tab-data",aTab);
+$recv($recv(li)._element())._at_put_("tab-data",aTab);
 return self;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 }, function($ctx1) {$ctx1.fill(self,"renderTab:on:",{aTab:aTab,html:html,li:li},$globals.HLTabsWidget)});
@@ -10043,10 +10048,10 @@ return self;
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
 args: ["aTab", "html"],
-source: "renderTab: aTab on: html\x0a\x09| li |\x0a\x09li := html li \x0a\x09\x09style: 'width: ', self tabWidth asString, 'px';\x0a\x09\x09class: (aTab isActive ifTrue: [ 'tab active' ] ifFalse: [ 'tab inactive' ]);\x0a\x09\x09with: [\x0a\x09\x09\x09html a\x0a\x09\x09\x09with: [\x0a\x09\x09\x09\x09((html tag: 'i') class: 'close')\x0a\x09\x09\x09\x09\x09onClick: [ self removeTab: aTab ].\x0a\x09\x09\x09\x09html span \x0a\x09\x09\x09\x09\x09class: aTab cssClass;\x0a\x09\x09\x09\x09\x09title: aTab label;\x0a\x09\x09\x09\x09\x09with: aTab label ];\x0a\x09\x09\x09at: 'role' put: 'tab'];\x0a\x09\x09onClick: [ aTab activate ].\x0a\x09\x0a\x09(li asJQuery get: 0) at: 'tab-data' put: aTab",
+source: "renderTab: aTab on: html\x0a\x09| li |\x0a\x09li := html li \x0a\x09\x09style: 'width: ', self tabWidth asString, 'px';\x0a\x09\x09class: (aTab isActive ifTrue: [ 'tab active' ] ifFalse: [ 'tab inactive' ]);\x0a\x09\x09with: [\x0a\x09\x09\x09html a\x0a\x09\x09\x09with: [\x0a\x09\x09\x09\x09((html tag: 'i') class: 'close')\x0a\x09\x09\x09\x09\x09onClick: [ self removeTab: aTab ].\x0a\x09\x09\x09\x09html span \x0a\x09\x09\x09\x09\x09class: aTab cssClass;\x0a\x09\x09\x09\x09\x09title: aTab label;\x0a\x09\x09\x09\x09\x09with: aTab label ];\x0a\x09\x09\x09at: 'role' put: 'tab'];\x0a\x09\x09onClick: [ aTab activate ].\x0a\x09\x0a\x09li element at: 'tab-data' put: aTab",
 referencedClasses: [],
 //>>excludeEnd("ide");
-messageSends: ["style:", "li", ",", "asString", "tabWidth", "class:", "ifTrue:ifFalse:", "isActive", "with:", "a", "onClick:", "tag:", "removeTab:", "span", "cssClass", "title:", "label", "at:put:", "activate", "get:", "asJQuery"]
+messageSends: ["style:", "li", ",", "asString", "tabWidth", "class:", "ifTrue:ifFalse:", "isActive", "with:", "a", "onClick:", "tag:", "removeTab:", "span", "cssClass", "title:", "label", "at:put:", "activate", "element"]
 }),
 $globals.HLTabsWidget);
 

+ 17 - 23
src/Helios-Core.st

@@ -457,9 +457,7 @@ withHelperLabelled: aString do: aBlock
 	
 	[
 		aBlock value.
-		'#helper' asJQuery remove
-	] 
-		valueWithTimeout: 10
+		'#helper' asJQuery remove ] fork
 ! !
 
 !HLToolModel methodsFor: 'testing'!
@@ -613,9 +611,9 @@ defaultTabLabel
 !HLWidget methodsFor: 'keybindings'!
 
 bindKeyDown: keyDownBlock keyUp: keyUpBlock
-	self wrapper asJQuery
-		keydown: keyDownBlock;
-		keyup: keyUpBlock
+	self wrapper ifNotNil: [ wrapper
+		onKeyDown: keyDownBlock;
+		onKeyUp: keyUpBlock ]
 !
 
 registerBindings
@@ -639,8 +637,8 @@ renderContentOn: html
 renderOn: html
 	wrapper := html div
 		class: self cssClass;
-		yourself.
-    [ :renderer | self renderContentOn: renderer ] appendToJQuery: wrapper asJQuery
+		with: [ self renderContentOn: html ]
+		yourself
 ! !
 
 !HLWidget methodsFor: 'testing'!
@@ -652,10 +650,8 @@ canHaveFocus
 !HLWidget methodsFor: 'updating'!
 
 refresh
-	self wrapper ifNil: [ ^ self ].
-    
-	self wrapper asJQuery empty.
-    [ :html | self renderContentOn: html ] appendToJQuery: self wrapper asJQuery
+	self wrapper
+		ifNotNil: [ :wrap | wrap contents: [ :html | self renderContentOn: html ] ]
 ! !
 
 !HLWidget class methodsFor: 'accessing'!
@@ -724,14 +720,11 @@ renderContentOn: html
 renderOn: html
     wrapper := html div 
     	class: self cssClass;
-		yourself.
-		
-       wrapper with: [ self renderContentOn: html ].
-	
-	wrapper
 		at: 'tabindex' put: '0';
 		onBlur: [ self wrapper asJQuery removeClass: self focusClass ];
-        onFocus: [ self wrapper asJQuery addClass: self focusClass ]
+        onFocus: [ self wrapper asJQuery addClass: self focusClass ];
+		with: [ self renderContentOn: html ];
+		yourself
 ! !
 
 !HLFocusableWidget methodsFor: 'testing'!
@@ -972,11 +965,11 @@ previousFocus
 setupKeyBindings
 	super setupKeyBindings.
 
-	self wrapper asJQuery keydown: [ :e |
+	self wrapper ifNotNil: [ wrapper onKeyDown: [ :e |
         e which = 39 ifTrue: [ 
         	self nextFocus ].
 		e which = 37 ifTrue: [ 
-        	self previousFocus ] ]
+        	self previousFocus ] ] ]
 ! !
 
 HLNavigationListWidget subclass: #HLToolListWidget
@@ -1954,7 +1947,7 @@ evaluateAt: anInteger
 		ifTrue: [ 
 			[ 
 				self workBlock value: (self collection at: anInteger).
-				self evaluateAt: anInteger + 1 ] valueWithTimeout: 10 ]
+				self evaluateAt: anInteger + 1 ] fork ]
 		ifFalse: [ [ self remove ] valueWithTimeout: 500 ]
 !
 
@@ -1976,11 +1969,12 @@ updateProgress: anInteger
 
 renderContentOn: html
 	html span with: self label.
+	console log: 'progress bar: '; log: self label.
 	html div 
 		class: 'progress';
 		with: [
 			bar := html div 
-				class: 'bar';
+				class: 'progress-bar';
 				style: 'width: 0%' ]
 ! !
 
@@ -2349,7 +2343,7 @@ renderTab: aTab on: html
 			at: 'role' put: 'tab'];
 		onClick: [ aTab activate ].
 	
-	(li asJQuery get: 0) at: 'tab-data' put: aTab
+	li element at: 'tab-data' put: aTab
 !
 
 renderTabsOn: html

+ 2 - 2
src/Helios-Debugger.js

@@ -810,7 +810,7 @@ var self=this;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
-$recv(self["@editor"])._setGutterMarker_gutter_value_(anInteger,"stops",$recv($recv("<div class=\x22stop\x22></stop>"._asJQuery())._toArray())._first());
+$recv(self["@editor"])._setGutterMarker_gutter_value_(anInteger,"stops",$recv($recv("<div class=\x22stop\x22></div>"._asJQuery())._toArray())._first());
 return self;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 }, function($ctx1) {$ctx1.fill(self,"addStopAt:",{anInteger:anInteger},$globals.HLDebuggerCodeWidget)});
@@ -818,7 +818,7 @@ return self;
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
 args: ["anInteger"],
-source: "addStopAt: anInteger\x0a\x09editor\x0a\x09\x09setGutterMarker: anInteger\x0a\x09\x09gutter: 'stops'\x0a\x09\x09value: '<div class=\x22stop\x22></stop>' asJQuery toArray first",
+source: "addStopAt: anInteger\x0a\x09editor\x0a\x09\x09setGutterMarker: anInteger\x0a\x09\x09gutter: 'stops'\x0a\x09\x09value: '<div class=\x22stop\x22></div>' asJQuery toArray first",
 referencedClasses: [],
 //>>excludeEnd("ide");
 messageSends: ["setGutterMarker:gutter:value:", "first", "toArray", "asJQuery"]

+ 1 - 1
src/Helios-Debugger.st

@@ -228,7 +228,7 @@ addStopAt: anInteger
 	editor
 		setGutterMarker: anInteger
 		gutter: 'stops'
-		value: '<div class="stop"></stop>' asJQuery toArray first
+		value: '<div class="stop"></div>' asJQuery toArray first
 !
 
 clearHighlight

+ 3 - 3
src/Helios-KeyBindings.js

@@ -1340,7 +1340,7 @@ return $recv($11)._select();
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1,5)});
 //>>excludeEnd("ctx");
-}))._valueWithTimeout_((10));
+}))._fork();
 return self;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 }, function($ctx1) {$ctx1.fill(self,"renderOn:",{html:html},$globals.HLBindingActionInputWidget)});
@@ -1348,10 +1348,10 @@ return self;
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
 args: ["html"],
-source: "renderOn: html\x0a\x09wrapper ifNil: [ wrapper := html span ].\x0a\x0a\x09wrapper \x0a\x09\x09class: self status;\x0a\x09\x09with: [\x0a\x09\x09\x09input := html input\x0a\x09\x09\x09\x09placeholder: self ghostText;\x0a\x09\x09\x09\x09value: self defaultValue;\x0a\x09\x09\x09\x09onKeyDown: [ :event | \x0a\x09\x09\x09\x09\x09event which = 13 ifTrue: [\x0a\x09\x09\x09\x09\x09\x09self evaluate: input asJQuery val ] ]\x0a\x09\x09\x09\x09yourself.\x0a\x09\x09\x09input asJQuery \x0a\x09\x09\x09\x09typeahead: #{ 'source' -> self inputCompletion }.\x0a\x09\x09\x09messageTag := (html span\x0a\x09\x09\x09\x09class: 'help-inline';\x0a\x09\x09\x09\x09with: self message;\x0a\x09\x09\x09\x09yourself) ].\x0a\x09\x0a\x09\x22Evaluate with a timeout to ensure focus.\x0a\x09Commands can be executed from a menu, clicking on the menu to\x0a\x09evaluate the command would give it the focus otherwise\x22\x0a\x09\x0a\x09[ input asJQuery focus; select ] valueWithTimeout: 10",
+source: "renderOn: html\x0a\x09wrapper ifNil: [ wrapper := html span ].\x0a\x0a\x09wrapper \x0a\x09\x09class: self status;\x0a\x09\x09with: [\x0a\x09\x09\x09input := html input\x0a\x09\x09\x09\x09placeholder: self ghostText;\x0a\x09\x09\x09\x09value: self defaultValue;\x0a\x09\x09\x09\x09onKeyDown: [ :event | \x0a\x09\x09\x09\x09\x09event which = 13 ifTrue: [\x0a\x09\x09\x09\x09\x09\x09self evaluate: input asJQuery val ] ]\x0a\x09\x09\x09\x09yourself.\x0a\x09\x09\x09input asJQuery \x0a\x09\x09\x09\x09typeahead: #{ 'source' -> self inputCompletion }.\x0a\x09\x09\x09messageTag := (html span\x0a\x09\x09\x09\x09class: 'help-inline';\x0a\x09\x09\x09\x09with: self message;\x0a\x09\x09\x09\x09yourself) ].\x0a\x09\x0a\x09\x22Evaluate with a timeout to ensure focus.\x0a\x09Commands can be executed from a menu, clicking on the menu to\x0a\x09evaluate the command would give it the focus otherwise\x22\x0a\x09\x0a\x09[ input asJQuery focus; select ] fork",
 referencedClasses: [],
 //>>excludeEnd("ide");
-messageSends: ["ifNil:", "span", "class:", "status", "with:", "placeholder:", "input", "ghostText", "value:", "defaultValue", "onKeyDown:", "yourself", "ifTrue:", "=", "which", "evaluate:", "val", "asJQuery", "typeahead:", "inputCompletion", "message", "valueWithTimeout:", "focus", "select"]
+messageSends: ["ifNil:", "span", "class:", "status", "with:", "placeholder:", "input", "ghostText", "value:", "defaultValue", "onKeyDown:", "yourself", "ifTrue:", "=", "which", "evaluate:", "val", "asJQuery", "typeahead:", "inputCompletion", "message", "fork", "focus", "select"]
 }),
 $globals.HLBindingActionInputWidget);
 

+ 1 - 1
src/Helios-KeyBindings.st

@@ -335,7 +335,7 @@ renderOn: html
 	Commands can be executed from a menu, clicking on the menu to
 	evaluate the command would give it the focus otherwise"
 	
-	[ input asJQuery focus; select ] valueWithTimeout: 10
+	[ input asJQuery focus; select ] fork
 ! !
 
 Object subclass: #HLKeyBinder

+ 3 - 3
src/Helios-SUnit.js

@@ -2897,7 +2897,7 @@ return $recv($1)._updateProgress_($2);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
 //>>excludeEnd("ctx");
-}))._valueWithTimeout_((10));
+}))._fork();
 return self;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 }, function($ctx1) {$ctx1.fill(self,"onResultAnnouncement:",{announcement:announcement},$globals.HLSUnitResults)});
@@ -2905,10 +2905,10 @@ return self;
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
 args: ["announcement"],
-source: "onResultAnnouncement: announcement\x0a\x09[self progressBarWidget \x0a\x09\x09updateProgress: (self model testResult runs / self model testResult total * 100) rounded] valueWithTimeout: 10",
+source: "onResultAnnouncement: announcement\x0a\x09[self progressBarWidget \x0a\x09\x09updateProgress: (self model testResult runs / self model testResult total * 100) rounded] fork",
 referencedClasses: [],
 //>>excludeEnd("ide");
-messageSends: ["valueWithTimeout:", "updateProgress:", "progressBarWidget", "rounded", "*", "/", "runs", "testResult", "model", "total"]
+messageSends: ["fork", "updateProgress:", "progressBarWidget", "rounded", "*", "/", "runs", "testResult", "model", "total"]
 }),
 $globals.HLSUnitResults);
 

+ 1 - 1
src/Helios-SUnit.st

@@ -734,7 +734,7 @@ observeModel
 
 onResultAnnouncement: announcement
 	[self progressBarWidget 
-		updateProgress: (self model testResult runs / self model testResult total * 100) rounded] valueWithTimeout: 10
+		updateProgress: (self model testResult runs / self model testResult total * 100) rounded] fork
 !
 
 onRunTests: announcement

+ 3 - 3
src/Helios-Transcript.js

@@ -139,7 +139,7 @@ $1=self["@textarea"];
 if(($receiver = $1) == null || $receiver.isNil){
 $1;
 } else {
-$recv($recv(self["@textarea"])._asJQuery())._append_($recv(aString)._asString());
+$recv(self["@textarea"])._append_($recv(aString)._asString());
 };
 return self;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
@@ -148,10 +148,10 @@ return self;
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
 args: ["aString"],
-source: "show: aString\x0a\x09textarea ifNotNil: [\x0a \x09\x09textarea asJQuery append: aString asString ]",
+source: "show: aString\x0a\x09textarea ifNotNil: [\x0a \x09\x09textarea append: aString asString ]",
 referencedClasses: [],
 //>>excludeEnd("ide");
-messageSends: ["ifNotNil:", "append:", "asJQuery", "asString"]
+messageSends: ["ifNotNil:", "append:", "asString"]
 }),
 $globals.HLTranscript);
 

+ 1 - 1
src/Helios-Transcript.st

@@ -24,7 +24,7 @@ clear
 
 show: aString
 	textarea ifNotNil: [
- 		textarea asJQuery append: aString asString ]
+ 		textarea append: aString asString ]
 ! !
 
 !HLTranscript methodsFor: 'initialization'!