Browse Source

Use system class sorter. Refactor list widget.

Herby Vojčík 5 years ago
parent
commit
23ac2b5852
4 changed files with 88 additions and 290 deletions
  1. 33 209
      src/Helios-Browser.js
  2. 15 41
      src/Helios-Browser.st
  3. 33 33
      src/Helios-Core.js
  4. 7 7
      src/Helios-Core.st

+ 33 - 209
src/Helios-Browser.js

@@ -2011,70 +2011,6 @@ messageSends: ["announce:", "announcer", "model", "new"]
 }),
 $globals.HLClassesListWidget);
 
-$core.addMethod(
-$core.method({
-selector: "getChildrenOf:",
-protocol: "accessing",
-fn: function (aClass){
-var self=this,$self=this;
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-return $core.withContext(function($ctx1) {
-//>>excludeEnd("ctx");
-return $recv($self._items())._select_((function(each){
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-return $core.withContext(function($ctx2) {
-//>>excludeEnd("ctx");
-return $recv($recv(each)._superclass()).__eq(aClass);
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
-//>>excludeEnd("ctx");
-}));
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-}, function($ctx1) {$ctx1.fill(self,"getChildrenOf:",{aClass:aClass})});
-//>>excludeEnd("ctx");
-},
-//>>excludeStart("ide", pragmas.excludeIdeData);
-args: ["aClass"],
-source: "getChildrenOf: aClass\x0a\x09^ self items select: [ :each | each superclass = aClass ]",
-referencedClasses: [],
-//>>excludeEnd("ide");
-pragmas: [],
-messageSends: ["select:", "items", "=", "superclass"]
-}),
-$globals.HLClassesListWidget);
-
-$core.addMethod(
-$core.method({
-selector: "getRootClassesOf:",
-protocol: "accessing",
-fn: function (aCollection){
-var self=this,$self=this;
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-return $core.withContext(function($ctx1) {
-//>>excludeEnd("ctx");
-return $recv(aCollection)._select_((function(each){
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-return $core.withContext(function($ctx2) {
-//>>excludeEnd("ctx");
-return $recv($recv(aCollection)._includes_($recv(each)._superclass()))._not();
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
-//>>excludeEnd("ctx");
-}));
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-}, function($ctx1) {$ctx1.fill(self,"getRootClassesOf:",{aCollection:aCollection})});
-//>>excludeEnd("ctx");
-},
-//>>excludeStart("ide", pragmas.excludeIdeData);
-args: ["aCollection"],
-source: "getRootClassesOf: aCollection\x0a\x09^ aCollection select: [ :each |\x0a    \x09\x09(aCollection includes: each superclass) not ]",
-referencedClasses: [],
-//>>excludeEnd("ide");
-pragmas: [],
-messageSends: ["select:", "not", "includes:", "superclass"]
-}),
-$globals.HLClassesListWidget);
-
 $core.addMethod(
 $core.method({
 selector: "label",
@@ -2750,133 +2686,17 @@ $globals.HLClassesListWidget);
 
 $core.addMethod(
 $core.method({
-selector: "renderItem:level:on:",
-protocol: "rendering",
-fn: function (aClass,anInteger,html){
-var self=this,$self=this;
-var li;
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-return $core.withContext(function($ctx1) {
-//>>excludeEnd("ctx");
-var $1,$2,$3;
-li=$recv(html)._li();
-$1=$recv(li)._asJQuery();
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx1.sendIdx["asJQuery"]=1;
-//>>excludeEnd("ctx");
-$recv($1)._data_put_("item",aClass);
-$2=li;
-$recv($2)._class_($self._listCssClassForItem_(aClass));
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx1.sendIdx["class:"]=1;
-//>>excludeEnd("ctx");
-$recv($2)._with_((function(){
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-return $core.withContext(function($ctx2) {
-//>>excludeEnd("ctx");
-$3=$recv(html)._a();
-$recv($3)._with_((function(){
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-return $core.withContext(function($ctx3) {
-//>>excludeEnd("ctx");
-$recv($recv(html)._tag_("i"))._class_($self._cssClassForItem_(aClass));
-return $self._renderItemLabel_level_on_(aClass,anInteger,html);
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)});
-//>>excludeEnd("ctx");
-}));
-return $recv($3)._onClick_((function(){
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-return $core.withContext(function($ctx3) {
-//>>excludeEnd("ctx");
-return $self._reactivateListItem_($recv(li)._asJQuery());
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,3)});
-//>>excludeEnd("ctx");
-}));
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
-//>>excludeEnd("ctx");
-}));
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx1.sendIdx["with:"]=1;
-//>>excludeEnd("ctx");
-$recv($self._getChildrenOf_(aClass))._do_((function(each){
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-return $core.withContext(function($ctx2) {
-//>>excludeEnd("ctx");
-return $self._renderItem_level_on_(each,$recv(anInteger).__plus((1)),html);
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,4)});
-//>>excludeEnd("ctx");
-}));
-return self;
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-}, function($ctx1) {$ctx1.fill(self,"renderItem:level:on:",{aClass:aClass,anInteger:anInteger,html:html,li:li})});
-//>>excludeEnd("ctx");
-},
-//>>excludeStart("ide", pragmas.excludeIdeData);
-args: ["aClass", "anInteger", "html"],
-source: "renderItem: aClass level: anInteger on: html\x0a\x09| li |\x0a    \x0a\x09li := html li.\x0a\x09li asJQuery data: 'item' put: aClass.\x0a    li\x0a\x09\x09class: (self listCssClassForItem: aClass);\x0a\x09\x09with: [ \x0a        \x09html a\x0a            \x09with: [ \x0a            \x09\x09(html tag: 'i') class: (self cssClassForItem: aClass).\x0a  \x09\x09\x09\x09\x09self renderItemLabel: aClass level: anInteger on: html ];\x0a\x09\x09\x09\x09onClick: [\x0a                  \x09self reactivateListItem: li asJQuery ] ].\x0a                    \x0a    (self getChildrenOf: aClass) do: [ :each |\x0a    \x09self renderItem: each level: anInteger + 1 on: html ]",
-referencedClasses: [],
-//>>excludeEnd("ide");
-pragmas: [],
-messageSends: ["li", "data:put:", "asJQuery", "class:", "listCssClassForItem:", "with:", "a", "tag:", "cssClassForItem:", "renderItemLabel:level:on:", "onClick:", "reactivateListItem:", "do:", "getChildrenOf:", "renderItem:level:on:", "+"]
-}),
-$globals.HLClassesListWidget);
-
-$core.addMethod(
-$core.method({
-selector: "renderItem:on:",
-protocol: "rendering",
-fn: function (aClass,html){
-var self=this,$self=this;
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-return $core.withContext(function($ctx1) {
-//>>excludeEnd("ctx");
-(
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx1.supercall = true,
-//>>excludeEnd("ctx");
-($globals.HLClassesListWidget.superclass||$boot.nilAsClass).fn.prototype._renderItem_on_.apply($self, [aClass,html]));
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx1.supercall = false;
-//>>excludeEnd("ctx");;
-$recv($self._getChildrenOf_(aClass))._do_((function(each){
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-return $core.withContext(function($ctx2) {
-//>>excludeEnd("ctx");
-return $self._renderItem_level_on_(each,(1),html);
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
-//>>excludeEnd("ctx");
-}));
-return self;
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-}, function($ctx1) {$ctx1.fill(self,"renderItem:on:",{aClass:aClass,html:html})});
-//>>excludeEnd("ctx");
-},
-//>>excludeStart("ide", pragmas.excludeIdeData);
-args: ["aClass", "html"],
-source: "renderItem: aClass on: html\x0a\x09super renderItem: aClass on: html.\x0a    (self getChildrenOf: aClass) do: [ :each |\x0a    \x09self renderItem: each level: 1 on: html ]",
-referencedClasses: [],
-//>>excludeEnd("ide");
-pragmas: [],
-messageSends: ["renderItem:on:", "do:", "getChildrenOf:", "renderItem:level:on:"]
-}),
-$globals.HLClassesListWidget);
-
-$core.addMethod(
-$core.method({
-selector: "renderItemLabel:level:on:",
+selector: "renderItemLabel:on:",
 protocol: "rendering",
-fn: function (aClass,anInteger,html){
+fn: function (aClassAndLevel,html){
 var self=this,$self=this;
-var indent;
+var aClass,level,indent;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
 var $1;
+aClass=$recv(aClassAndLevel)._first();
+level=$recv(aClassAndLevel)._second();
 indent=$recv($globals.String)._fromCharCode_((160));
 $1=$recv($recv(indent).__comma(indent)).__comma(indent);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
@@ -2890,7 +2710,7 @@ $recv($recv(html)._span())._with_($recv($globals.String)._streamContents_((funct
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx2) {
 //>>excludeEnd("ctx");
-$recv(anInteger)._timesRepeat_((function(){
+$recv(level)._timesRepeat_((function(){
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx3) {
 //>>excludeEnd("ctx");
@@ -2909,41 +2729,53 @@ 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,indent:indent})});
+}, function($ctx1) {$ctx1.fill(self,"renderItemLabel:on:",{aClassAndLevel:aClassAndLevel,html:html,aClass:aClass,level:level,indent:indent})});
 //>>excludeEnd("ctx");
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
-args: ["aClass", "anInteger", "html"],
-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 ])",
+args: ["aClassAndLevel", "html"],
+source: "renderItemLabel: aClassAndLevel on: html\x0a\x09| aClass level indent |\x0a\x09aClass := aClassAndLevel first.\x0a\x09level := aClassAndLevel second.\x0a\x09indent := String fromCharCode: 160.\x0a\x09indent := indent, indent, indent, indent.\x0a\x09html span with: (String streamContents: [ :str |\x0a\x09\x09level timesRepeat: [\x0a\x09\x09\x09str nextPutAll: indent ].\x0a\x09\x09\x09str nextPutAll: aClass name ])",
 referencedClasses: ["String"],
 //>>excludeEnd("ide");
 pragmas: [],
-messageSends: ["fromCharCode:", ",", "with:", "span", "streamContents:", "timesRepeat:", "nextPutAll:", "name"]
+messageSends: ["first", "second", "fromCharCode:", ",", "with:", "span", "streamContents:", "timesRepeat:", "nextPutAll:", "name"]
 }),
 $globals.HLClassesListWidget);
 
 $core.addMethod(
 $core.method({
-selector: "renderItemLabel:on:",
+selector: "renderItems:level:on:",
 protocol: "rendering",
-fn: function (aClass,html){
+fn: function (aCollection,anInteger,html){
 var self=this,$self=this;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
-$self._renderItemLabel_level_on_(aClass,(0),html);
+$recv(aCollection)._do_((function(each){
+var aClass,subclasses;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+return $core.withContext(function($ctx2) {
+//>>excludeEnd("ctx");
+aClass=$recv(each)._first();
+subclasses=$recv(each)._second();
+$self._renderItemModel_viewModel_on_(aClass,[aClass,anInteger],html);
+return $self._renderItems_level_on_(subclasses,$recv(anInteger).__plus((1)),html);
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx2) {$ctx2.fillBlock({each:each,aClass:aClass,subclasses:subclasses},$ctx1,1)});
+//>>excludeEnd("ctx");
+}));
 return self;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-}, function($ctx1) {$ctx1.fill(self,"renderItemLabel:on:",{aClass:aClass,html:html})});
+}, function($ctx1) {$ctx1.fill(self,"renderItems:level:on:",{aCollection:aCollection,anInteger:anInteger,html:html})});
 //>>excludeEnd("ctx");
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
-args: ["aClass", "html"],
-source: "renderItemLabel: aClass on: html\x0a\x09self renderItemLabel: aClass level: 0 on: html",
+args: ["aCollection", "anInteger", "html"],
+source: "renderItems: aCollection level: anInteger on: html\x0a    aCollection do: [ :each |\x0a\x09\x09| aClass subclasses |\x0a\x09\x09aClass := each first.\x0a\x09\x09subclasses := each second.\x0a\x09\x0a\x09\x09self renderItemModel: aClass viewModel: {aClass. anInteger} on: html.\x0a\x09\x0a    \x09self renderItems: subclasses level: anInteger + 1 on: html ]",
 referencedClasses: [],
 //>>excludeEnd("ide");
 pragmas: [],
-messageSends: ["renderItemLabel:level:on:"]
+messageSends: ["do:", "first", "second", "renderItemModel:viewModel:on:", "renderItems:level:on:", "+"]
 }),
 $globals.HLClassesListWidget);
 
@@ -2956,15 +2788,7 @@ var self=this,$self=this;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
-$recv($self._getRootClassesOf_($self._items()))._do_((function(each){
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-return $core.withContext(function($ctx2) {
-//>>excludeEnd("ctx");
-return $self._renderItem_on_(each,html);
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
-//>>excludeEnd("ctx");
-}));
+$self._renderItems_level_on_($recv($globals.ClassBuilder)._sortClasses_($self._items()),(0),html);
 return self;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 }, function($ctx1) {$ctx1.fill(self,"renderListOn:",{html:html})});
@@ -2972,11 +2796,11 @@ return self;
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
 args: ["html"],
-source: "renderListOn: html\x0a\x09(self getRootClassesOf: self items)\x0a    \x09do: [ :each | self renderItem: each on: html ]",
-referencedClasses: [],
+source: "renderListOn: html\x0a\x09self renderItems: (ClassBuilder sortClasses: self items) level: 0 on: html",
+referencedClasses: ["ClassBuilder"],
 //>>excludeEnd("ide");
 pragmas: [],
-messageSends: ["do:", "getRootClassesOf:", "items", "renderItem:on:"]
+messageSends: ["renderItems:level:on:", "sortClasses:", "items"]
 }),
 $globals.HLClassesListWidget);
 

+ 15 - 41
src/Helios-Browser.st

@@ -460,15 +460,6 @@ cssClassForItem: aClass
 		ifFalse: [ ^ nonMeta heliosClass ]
 !
 
-getChildrenOf: aClass
-	^ self items select: [ :each | each superclass = aClass ]
-!
-
-getRootClassesOf: aCollection
-	^ aCollection select: [ :each |
-    		(aCollection includes: each superclass) not ]
-!
-
 label
 	^ 'Classes'
 ! !
@@ -731,48 +722,31 @@ renderButtonsOn: html
 			checkbox at: 'checked' put: 'checked' ]
 !
 
-renderItem: aClass level: anInteger on: html
-	| li |
-    
-	li := html li.
-	li asJQuery data: 'item' put: aClass.
-    li
-		class: (self listCssClassForItem: aClass);
-		with: [ 
-        	html a
-            	with: [ 
-            		(html tag: 'i') class: (self cssClassForItem: aClass).
-  					self renderItemLabel: aClass level: anInteger on: html ];
-				onClick: [
-                  	self reactivateListItem: li asJQuery ] ].
-                    
-    (self getChildrenOf: aClass) do: [ :each |
-    	self renderItem: each level: anInteger + 1 on: html ]
-!
-
-renderItem: aClass on: html
-	super renderItem: aClass on: html.
-    (self getChildrenOf: aClass) do: [ :each |
-    	self renderItem: each level: 1 on: html ]
-!
-
-renderItemLabel: aClass level: anInteger on: html
-	| indent |
+renderItemLabel: aClassAndLevel on: html
+	| aClass level indent |
+	aClass := aClassAndLevel first.
+	level := aClassAndLevel second.
 	indent := String fromCharCode: 160.
 	indent := indent, indent, indent, indent.
 	html span with: (String streamContents: [ :str |
-		anInteger timesRepeat: [
+		level timesRepeat: [
 			str nextPutAll: indent ].
 			str nextPutAll: aClass name ])
 !
 
-renderItemLabel: aClass on: html
-	self renderItemLabel: aClass level: 0 on: html
+renderItems: aCollection level: anInteger on: html
+    aCollection do: [ :each |
+		| aClass subclasses |
+		aClass := each first.
+		subclasses := each second.
+	
+		self renderItemModel: aClass viewModel: {aClass. anInteger} on: html.
+	
+    	self renderItems: subclasses level: anInteger + 1 on: html ]
 !
 
 renderListOn: html
-	(self getRootClassesOf: self items)
-    	do: [ :each | self renderItem: each on: html ]
+	self renderItems: (ClassBuilder sortClasses: self items) level: 0 on: html
 ! !
 
 !HLClassesListWidget methodsFor: 'testing'!

+ 33 - 33
src/Helios-Core.js

@@ -3723,10 +3723,35 @@ $globals.HLListWidget);
 
 $core.addMethod(
 $core.method({
-selector: "renderItem:on:",
+selector: "renderItemLabel:on:",
 protocol: "rendering",
 fn: function (anObject,html){
 var self=this,$self=this;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+return $core.withContext(function($ctx1) {
+//>>excludeEnd("ctx");
+$recv(html)._with_($recv(anObject)._asString());
+return self;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx1) {$ctx1.fill(self,"renderItemLabel:on:",{anObject:anObject,html:html})});
+//>>excludeEnd("ctx");
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
+args: ["anObject", "html"],
+source: "renderItemLabel: anObject on: html\x0a\x09html with: anObject asString",
+referencedClasses: [],
+//>>excludeEnd("ide");
+pragmas: [],
+messageSends: ["with:", "asString"]
+}),
+$globals.HLListWidget);
+
+$core.addMethod(
+$core.method({
+selector: "renderItemModel:viewModel:on:",
+protocol: "rendering",
+fn: function (anObject,anotherObject,html){
+var self=this,$self=this;
 var li;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
@@ -3753,7 +3778,7 @@ $recv($3)._with_((function(){
 return $core.withContext(function($ctx3) {
 //>>excludeEnd("ctx");
 $recv($recv(html)._tag_("i"))._class_($self._cssClassForItem_(anObject));
-return $self._renderItemLabel_on_(anObject,html);
+return $self._renderItemLabel_on_(anotherObject,html);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 }, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)});
 //>>excludeEnd("ctx");
@@ -3776,12 +3801,12 @@ $ctx1.sendIdx["with:"]=1;
 //>>excludeEnd("ctx");
 return self;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-}, function($ctx1) {$ctx1.fill(self,"renderItem:on:",{anObject:anObject,html:html,li:li})});
+}, function($ctx1) {$ctx1.fill(self,"renderItemModel:viewModel:on:",{anObject:anObject,anotherObject:anotherObject,html:html,li:li})});
 //>>excludeEnd("ctx");
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
-args: ["anObject", "html"],
-source: "renderItem: anObject on: html\x0a\x09| li |\x0a    \x0a\x09li := html li.\x0a\x09li asJQuery data: 'item' put: anObject.\x0a    li\x0a\x09\x09class: (self listCssClassForItem: anObject);\x0a        with: [ \x0a        \x09html a\x0a            \x09with: [ \x0a            \x09\x09(html tag: 'i') class: (self cssClassForItem: anObject).\x0a  \x09\x09\x09\x09\x09self renderItemLabel: anObject on: html ];\x0a\x09\x09\x09\x09onClick: [\x0a                  \x09self reactivateListItem: li asJQuery ] ]",
+args: ["anObject", "anotherObject", "html"],
+source: "renderItemModel: anObject viewModel: anotherObject on: html\x0a\x09| li |\x0a    \x0a\x09li := html li.\x0a\x09li asJQuery data: 'item' put: anObject.\x0a    li\x0a\x09\x09class: (self listCssClassForItem: anObject);\x0a        with: [ \x0a        \x09html a\x0a            \x09with: [ \x0a            \x09\x09(html tag: 'i') class: (self cssClassForItem: anObject).\x0a  \x09\x09\x09\x09\x09self renderItemLabel: anotherObject on: html ];\x0a\x09\x09\x09\x09onClick: [\x0a                  \x09self reactivateListItem: li asJQuery ] ]",
 referencedClasses: [],
 //>>excludeEnd("ide");
 pragmas: [],
@@ -3789,31 +3814,6 @@ messageSends: ["li", "data:put:", "asJQuery", "class:", "listCssClassForItem:",
 }),
 $globals.HLListWidget);
 
-$core.addMethod(
-$core.method({
-selector: "renderItemLabel:on:",
-protocol: "rendering",
-fn: function (anObject,html){
-var self=this,$self=this;
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-return $core.withContext(function($ctx1) {
-//>>excludeEnd("ctx");
-$recv(html)._with_($recv(anObject)._asString());
-return self;
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-}, function($ctx1) {$ctx1.fill(self,"renderItemLabel:on:",{anObject:anObject,html:html})});
-//>>excludeEnd("ctx");
-},
-//>>excludeStart("ide", pragmas.excludeIdeData);
-args: ["anObject", "html"],
-source: "renderItemLabel: anObject on: html\x0a\x09html with: anObject asString",
-referencedClasses: [],
-//>>excludeEnd("ide");
-pragmas: [],
-messageSends: ["with:", "asString"]
-}),
-$globals.HLListWidget);
-
 $core.addMethod(
 $core.method({
 selector: "renderListOn:",
@@ -3827,7 +3827,7 @@ $recv($self._items())._do_((function(each){
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx2) {
 //>>excludeEnd("ctx");
-return $self._renderItem_on_(each,html);
+return $self._renderItemModel_viewModel_on_(each,each,html);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
 //>>excludeEnd("ctx");
@@ -3839,11 +3839,11 @@ return self;
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
 args: ["html"],
-source: "renderListOn: html\x0a\x09self items do: [ :each  | \x0a    \x09self renderItem: each  on: html ]",
+source: "renderListOn: html\x0a\x09self items do: [ :each  | \x0a    \x09self renderItemModel: each viewModel: each on: html ]",
 referencedClasses: [],
 //>>excludeEnd("ide");
 pragmas: [],
-messageSends: ["do:", "items", "renderItem:on:"]
+messageSends: ["do:", "items", "renderItemModel:viewModel:on:"]
 }),
 $globals.HLListWidget);
 

+ 7 - 7
src/Helios-Core.st

@@ -904,7 +904,11 @@ renderContentOn: html
    self setupKeyBindings
 !
 
-renderItem: anObject on: html
+renderItemLabel: anObject on: html
+	html with: anObject asString
+!
+
+renderItemModel: anObject viewModel: anotherObject on: html
 	| li |
     
 	li := html li.
@@ -915,18 +919,14 @@ renderItem: anObject on: html
         	html a
             	with: [ 
             		(html tag: 'i') class: (self cssClassForItem: anObject).
-  					self renderItemLabel: anObject on: html ];
+  					self renderItemLabel: anotherObject on: html ];
 				onClick: [
                   	self reactivateListItem: li asJQuery ] ]
 !
 
-renderItemLabel: anObject on: html
-	html with: anObject asString
-!
-
 renderListOn: html
 	self items do: [ :each  | 
-    	self renderItem: each  on: html ]
+    	self renderItemModel: each viewModel: each on: html ]
 ! !
 
 HLListWidget subclass: #HLNavigationListWidget