Helios-Browser.js 68 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841
  1. smalltalk.addPackage('Helios-Browser', {});
  2. smalltalk.addClass('HLBrowser', smalltalk.HLWidget, ['model', 'packagesListWidget', 'classesListWidget', 'protocolsListWidget', 'methodsListWidget', 'sourceWidget'], 'Helios-Browser');
  3. smalltalk.addMethod(
  4. "_announcer",
  5. smalltalk.method({
  6. selector: "announcer",
  7. category: 'accessing',
  8. fn: function () {
  9. var self = this;
  10. var $1;
  11. $1 = smalltalk.send(smalltalk.send(self, "_model", []), "_announcer", []);
  12. return $1;
  13. },
  14. args: [],
  15. source: "announcer\x0a\x09^ self model announcer",
  16. messageSends: ["announcer", "model"],
  17. referencedClasses: []
  18. }),
  19. smalltalk.HLBrowser);
  20. smalltalk.addMethod(
  21. "_classesListWidget",
  22. smalltalk.method({
  23. selector: "classesListWidget",
  24. category: 'widgets',
  25. fn: function () {
  26. var self = this;
  27. var $1;
  28. if (($receiver = self['@classesListWidget']) == nil ||
  29. $receiver == undefined) {
  30. self['@classesListWidget'] = smalltalk.send(smalltalk.HLClassesListWidget || HLClassesListWidget, "_on_", [smalltalk.send(self, "_model", [])]);
  31. self['@classesListWidget'];
  32. $1 = smalltalk.send(self['@classesListWidget'], "_next_", [smalltalk.send(self, "_protocolsListWidget", [])]);
  33. } else {
  34. $1 = self['@classesListWidget'];
  35. }
  36. return $1;
  37. },
  38. args: [],
  39. source: "classesListWidget\x0a\x09^ classesListWidget ifNil: [\x0a \x09classesListWidget := HLClassesListWidget on: self model.\x0a\x09\x09classesListWidget next: self protocolsListWidget ]",
  40. messageSends: ["ifNil:", "on:", "model", "next:", "protocolsListWidget"],
  41. referencedClasses: ["HLClassesListWidget"]
  42. }),
  43. smalltalk.HLBrowser);
  44. smalltalk.addMethod(
  45. "_environment",
  46. smalltalk.method({
  47. selector: "environment",
  48. category: 'accessing',
  49. fn: function () {
  50. var self = this;
  51. var $1;
  52. $1 = smalltalk.send(smalltalk.send(self, "_model", []), "_environment", []);
  53. return $1;
  54. },
  55. args: [],
  56. source: "environment\x0a\x09^ self model environment",
  57. messageSends: ["environment", "model"],
  58. referencedClasses: []
  59. }),
  60. smalltalk.HLBrowser);
  61. smalltalk.addMethod(
  62. "_methodsListWidget",
  63. smalltalk.method({
  64. selector: "methodsListWidget",
  65. category: 'widgets',
  66. fn: function () {
  67. var self = this;
  68. var $1;
  69. if (($receiver = self['@methodsListWidget']) == nil ||
  70. $receiver == undefined) {
  71. self['@methodsListWidget'] = smalltalk.send(smalltalk.HLMethodsListWidget || HLMethodsListWidget, "_on_", [smalltalk.send(self, "_model", [])]);
  72. $1 = self['@methodsListWidget'];
  73. } else {
  74. $1 = self['@methodsListWidget'];
  75. }
  76. return $1;
  77. },
  78. args: [],
  79. source: "methodsListWidget\x0a\x09^ methodsListWidget ifNil: [\x0a \x09methodsListWidget := HLMethodsListWidget on: self model ]",
  80. messageSends: ["ifNil:", "on:", "model"],
  81. referencedClasses: ["HLMethodsListWidget"]
  82. }),
  83. smalltalk.HLBrowser);
  84. smalltalk.addMethod(
  85. "_model",
  86. smalltalk.method({
  87. selector: "model",
  88. category: 'accessing',
  89. fn: function () {
  90. var self = this;
  91. var $1;
  92. if (($receiver = self['@model']) == nil || $receiver == undefined) {
  93. self['@model'] = smalltalk.send(smalltalk.HLBrowserModel || HLBrowserModel, "_new", []);
  94. $1 = self['@model'];
  95. } else {
  96. $1 = self['@model'];
  97. }
  98. return $1;
  99. },
  100. args: [],
  101. source: "model\x0a\x09^ model ifNil: [ model := HLBrowserModel new ]",
  102. messageSends: ["ifNil:", "new"],
  103. referencedClasses: ["HLBrowserModel"]
  104. }),
  105. smalltalk.HLBrowser);
  106. smalltalk.addMethod(
  107. "_model_",
  108. smalltalk.method({
  109. selector: "model:",
  110. category: 'accessing',
  111. fn: function (aModel) {
  112. var self = this;
  113. self['@model'] = aModel;
  114. return self;
  115. },
  116. args: ["aModel"],
  117. source: "model: aModel\x0a\x09model := aModel",
  118. messageSends: [],
  119. referencedClasses: []
  120. }),
  121. smalltalk.HLBrowser);
  122. smalltalk.addMethod(
  123. "_packagesListWidget",
  124. smalltalk.method({
  125. selector: "packagesListWidget",
  126. category: 'widgets',
  127. fn: function () {
  128. var self = this;
  129. var $1;
  130. if (($receiver = self['@packagesListWidget']) == nil ||
  131. $receiver == undefined) {
  132. self['@packagesListWidget'] = smalltalk.send(smalltalk.HLPackagesListWidget || HLPackagesListWidget, "_on_", [smalltalk.send(self, "_model", [])]);
  133. self['@packagesListWidget'];
  134. $1 = smalltalk.send(self['@packagesListWidget'], "_next_", [smalltalk.send(self, "_classesListWidget", [])]);
  135. } else {
  136. $1 = self['@packagesListWidget'];
  137. }
  138. return $1;
  139. },
  140. args: [],
  141. source: "packagesListWidget\x0a\x09^ packagesListWidget ifNil: [\x0a \x09packagesListWidget := HLPackagesListWidget on: self model.\x0a\x09\x09packagesListWidget next: self classesListWidget ]",
  142. messageSends: ["ifNil:", "on:", "model", "next:", "classesListWidget"],
  143. referencedClasses: ["HLPackagesListWidget"]
  144. }),
  145. smalltalk.HLBrowser);
  146. smalltalk.addMethod(
  147. "_protocolsListWidget",
  148. smalltalk.method({
  149. selector: "protocolsListWidget",
  150. category: 'widgets',
  151. fn: function () {
  152. var self = this;
  153. var $1;
  154. if (($receiver = self['@protocolsListWidget']) == nil ||
  155. $receiver == undefined) {
  156. self['@protocolsListWidget'] = smalltalk.send(smalltalk.HLProtocolsListWidget || HLProtocolsListWidget, "_on_", [smalltalk.send(self, "_model", [])]);
  157. self['@protocolsListWidget'];
  158. $1 = smalltalk.send(self['@protocolsListWidget'], "_next_", [smalltalk.send(self, "_methodsListWidget", [])]);
  159. } else {
  160. $1 = self['@protocolsListWidget'];
  161. }
  162. return $1;
  163. },
  164. args: [],
  165. source: "protocolsListWidget\x0a\x09^ protocolsListWidget ifNil: [\x0a \x09protocolsListWidget := HLProtocolsListWidget on: self model.\x0a\x09\x09protocolsListWidget next: self methodsListWidget ]",
  166. messageSends: ["ifNil:", "on:", "model", "next:", "methodsListWidget"],
  167. referencedClasses: ["HLProtocolsListWidget"]
  168. }),
  169. smalltalk.HLBrowser);
  170. smalltalk.addMethod(
  171. "_registerBindingsOn_",
  172. smalltalk.method({
  173. selector: "registerBindingsOn:",
  174. category: 'keybindings',
  175. fn: function (aBindingGroup) {
  176. var self = this;
  177. var $1, $2;
  178. smalltalk.send(aBindingGroup, "_addGroupKey_labelled_", [66, "Browse"]);
  179. smalltalk.send(aBindingGroup, "_addGroupKey_labelled_", [71, "Go to"]);
  180. $1 = smalltalk.send(aBindingGroup, "_addGroupKey_labelled_", [84, "Toggle"]);
  181. smalltalk.send(smalltalk.send(smalltalk.HLBrowserCommand || HLBrowserCommand, "_withAllSubclasses", []), "_do_", [function (each) {$2 = smalltalk.send(each, "_key", []);if (($receiver = $2) == nil || $receiver == undefined) {return $2;} else {return smalltalk.send(smalltalk.send(aBindingGroup, "_at_", [smalltalk.send(each, "_bindingGroup", [])]), "_add_", [smalltalk.send(smalltalk.send(each, "_on_", [smalltalk.send(self, "_model", [])]), "_asBinding", [])]);}}]);
  182. return self;
  183. },
  184. args: ["aBindingGroup"],
  185. source: "registerBindingsOn: aBindingGroup\x0a\x09aBindingGroup \x0a \x09addGroupKey: 66 labelled: 'Browse';\x0a addGroupKey: 71 labelled: 'Go to';\x0a addGroupKey: 84 labelled: 'Toggle'.\x0a \x0a \x09HLBrowserCommand withAllSubclasses do: [ :each |\x0a \x09\x09each key ifNotNil: [\x0a \x09\x09\x09(aBindingGroup at: each bindingGroup) \x0a \x09\x09\x09\x09add: (each on: self model) asBinding ] ]",
  186. messageSends: ["addGroupKey:labelled:", "do:", "ifNotNil:", "add:", "asBinding", "on:", "model", "at:", "bindingGroup", "key", "withAllSubclasses"],
  187. referencedClasses: ["HLBrowserCommand"]
  188. }),
  189. smalltalk.HLBrowser);
  190. smalltalk.addMethod(
  191. "_renderContentOn_",
  192. smalltalk.method({
  193. selector: "renderContentOn:",
  194. category: 'rendering',
  195. fn: function (html) {
  196. var self = this;
  197. smalltalk.send(html, "_with_", [smalltalk.send(smalltalk.HLContainer || HLContainer, "_with_", [smalltalk.send(smalltalk.HLHorizontalSplitter || HLHorizontalSplitter, "_with_with_", [smalltalk.send(smalltalk.HLVerticalSplitter || HLVerticalSplitter, "_with_with_", [smalltalk.send(smalltalk.HLVerticalSplitter || HLVerticalSplitter, "_with_with_", [smalltalk.send(self, "_packagesListWidget", []), smalltalk.send(self, "_classesListWidget", [])]), smalltalk.send(smalltalk.HLVerticalSplitter || HLVerticalSplitter, "_with_with_", [smalltalk.send(self, "_protocolsListWidget", []), smalltalk.send(self, "_methodsListWidget", [])])]), smalltalk.send(self, "_sourceWidget", [])])])]);
  198. return self;
  199. },
  200. args: ["html"],
  201. source: "renderContentOn: html\x0a\x09html with: (HLContainer with: (HLHorizontalSplitter \x0a \x09with: (HLVerticalSplitter\x0a \x09with: (HLVerticalSplitter\x0a \x09with: self packagesListWidget\x0a with: self classesListWidget)\x0a with: (HLVerticalSplitter\x0a \x09with: self protocolsListWidget\x0a with: self methodsListWidget)) \x0a with: self sourceWidget))",
  202. messageSends: ["with:", "with:with:", "packagesListWidget", "classesListWidget", "protocolsListWidget", "methodsListWidget", "sourceWidget"],
  203. referencedClasses: ["HLVerticalSplitter", "HLHorizontalSplitter", "HLContainer"]
  204. }),
  205. smalltalk.HLBrowser);
  206. smalltalk.addMethod(
  207. "_sourceWidget",
  208. smalltalk.method({
  209. selector: "sourceWidget",
  210. category: 'widgets',
  211. fn: function () {
  212. var self = this;
  213. var $1;
  214. if (($receiver = self['@sourceWidget']) == nil ||
  215. $receiver == undefined) {
  216. self['@sourceWidget'] = smalltalk.send(smalltalk.HLBrowserSourceWidget || HLBrowserSourceWidget, "_on_", [smalltalk.send(self, "_model", [])]);
  217. $1 = self['@sourceWidget'];
  218. } else {
  219. $1 = self['@sourceWidget'];
  220. }
  221. return $1;
  222. },
  223. args: [],
  224. source: "sourceWidget\x0a\x09^ sourceWidget ifNil: [\x0a \x09sourceWidget := HLBrowserSourceWidget on: self model ]",
  225. messageSends: ["ifNil:", "on:", "model"],
  226. referencedClasses: ["HLBrowserSourceWidget"]
  227. }),
  228. smalltalk.HLBrowser);
  229. smalltalk.HLBrowser.klass.iVarNames = ['nextId'];
  230. smalltalk.addMethod(
  231. "_canBeOpenAsTab",
  232. smalltalk.method({
  233. selector: "canBeOpenAsTab",
  234. category: 'testing',
  235. fn: function () {
  236. var self = this;
  237. return true;
  238. },
  239. args: [],
  240. source: "canBeOpenAsTab\x0a\x09^ true",
  241. messageSends: [],
  242. referencedClasses: []
  243. }),
  244. smalltalk.HLBrowser.klass);
  245. smalltalk.addMethod(
  246. "_nextId",
  247. smalltalk.method({
  248. selector: "nextId",
  249. category: 'accessing',
  250. fn: function () {
  251. var self = this;
  252. var $1;
  253. if (($receiver = self['@nextId']) == nil || $receiver == undefined) {
  254. self['@nextId'] = 0;
  255. self['@nextId'];
  256. } else {
  257. self['@nextId'];
  258. }
  259. $1 = smalltalk.send("browser_", "__comma", [smalltalk.send(smalltalk.send(self['@nextId'], "__plus", [1]), "_asString", [])]);
  260. return $1;
  261. },
  262. args: [],
  263. source: "nextId\x0a\x09nextId ifNil: [ nextId := 0 ].\x0a ^ 'browser_', (nextId + 1) asString",
  264. messageSends: ["ifNil:", ",", "asString", "+"],
  265. referencedClasses: []
  266. }),
  267. smalltalk.HLBrowser.klass);
  268. smalltalk.addMethod(
  269. "_tabLabel",
  270. smalltalk.method({
  271. selector: "tabLabel",
  272. category: 'accessing',
  273. fn: function () {
  274. var self = this;
  275. return "Browser";
  276. },
  277. args: [],
  278. source: "tabLabel\x0a\x09^ 'Browser'",
  279. messageSends: [],
  280. referencedClasses: []
  281. }),
  282. smalltalk.HLBrowser.klass);
  283. smalltalk.addMethod(
  284. "_tabPriority",
  285. smalltalk.method({
  286. selector: "tabPriority",
  287. category: 'accessing',
  288. fn: function () {
  289. var self = this;
  290. return 0;
  291. },
  292. args: [],
  293. source: "tabPriority\x0a\x09^ 0",
  294. messageSends: [],
  295. referencedClasses: []
  296. }),
  297. smalltalk.HLBrowser.klass);
  298. smalltalk.addClass('HLBrowserListWidget', smalltalk.HLNavigationListWidget, ['model'], 'Helios-Browser');
  299. smalltalk.addMethod(
  300. "_model",
  301. smalltalk.method({
  302. selector: "model",
  303. category: 'accessing',
  304. fn: function () {
  305. var self = this;
  306. return self['@model'];
  307. },
  308. args: [],
  309. source: "model\x0a\x09^ model",
  310. messageSends: [],
  311. referencedClasses: []
  312. }),
  313. smalltalk.HLBrowserListWidget);
  314. smalltalk.addMethod(
  315. "_model_",
  316. smalltalk.method({
  317. selector: "model:",
  318. category: 'accessing',
  319. fn: function (aBrowserModel) {
  320. var self = this;
  321. self['@model'] = aBrowserModel;
  322. smalltalk.send(self['@model'], "_subscribe_", [self]);
  323. return self;
  324. },
  325. args: ["aBrowserModel"],
  326. source: "model: aBrowserModel\x0a\x09\x22TODO: unsubscribe from previous model\x22\x0a \x0a\x09model := aBrowserModel.\x0a model subscribe: self",
  327. messageSends: ["subscribe:"],
  328. referencedClasses: []
  329. }),
  330. smalltalk.HLBrowserListWidget);
  331. smalltalk.addMethod(
  332. "_on_",
  333. smalltalk.method({
  334. selector: "on:",
  335. category: 'instance creation',
  336. fn: function (aModel) {
  337. var self = this;
  338. var $2, $3, $1;
  339. $2 = smalltalk.send(self, "_new", []);
  340. smalltalk.send($2, "_model_", [aModel]);
  341. $3 = smalltalk.send($2, "_yourself", []);
  342. $1 = $3;
  343. return $1;
  344. },
  345. args: ["aModel"],
  346. source: "on: aModel\x0a\x09^ self new \x0a \x09model: aModel;\x0a yourself",
  347. messageSends: ["model:", "new", "yourself"],
  348. referencedClasses: []
  349. }),
  350. smalltalk.HLBrowserListWidget.klass);
  351. smalltalk.addClass('HLClassesListWidget', smalltalk.HLBrowserListWidget, [], 'Helios-Browser');
  352. smalltalk.addMethod(
  353. "_focusMethodsListWidget",
  354. smalltalk.method({
  355. selector: "focusMethodsListWidget",
  356. category: 'actions',
  357. fn: function () {
  358. var self = this;
  359. smalltalk.send(smalltalk.send(smalltalk.send(self, "_model", []), "_announcer", []), "_announce_", [smalltalk.send(smalltalk.HLMethodsListFocus || HLMethodsListFocus, "_new", [])]);
  360. return self;
  361. },
  362. args: [],
  363. source: "focusMethodsListWidget\x0a\x09self model announcer announce: HLMethodsListFocus new",
  364. messageSends: ["announce:", "new", "announcer", "model"],
  365. referencedClasses: ["HLMethodsListFocus"]
  366. }),
  367. smalltalk.HLClassesListWidget);
  368. smalltalk.addMethod(
  369. "_focusProtocolsListWidget",
  370. smalltalk.method({
  371. selector: "focusProtocolsListWidget",
  372. category: 'actions',
  373. fn: function () {
  374. var self = this;
  375. smalltalk.send(smalltalk.send(smalltalk.send(self, "_model", []), "_announcer", []), "_announce_", [smalltalk.send(smalltalk.HLProtocolsListFocus || HLProtocolsListFocus, "_new", [])]);
  376. return self;
  377. },
  378. args: [],
  379. source: "focusProtocolsListWidget\x0a\x09self model announcer announce: HLProtocolsListFocus new",
  380. messageSends: ["announce:", "new", "announcer", "model"],
  381. referencedClasses: ["HLProtocolsListFocus"]
  382. }),
  383. smalltalk.HLClassesListWidget);
  384. smalltalk.addMethod(
  385. "_getChildrenOf_",
  386. smalltalk.method({
  387. selector: "getChildrenOf:",
  388. category: 'accessing',
  389. fn: function (aClass) {
  390. var self = this;
  391. var $1;
  392. $1 = smalltalk.send(smalltalk.send(self, "_items", []), "_select_", [function (each) {return smalltalk.send(smalltalk.send(each, "_superclass", []), "__eq", [aClass]);}]);
  393. return $1;
  394. },
  395. args: ["aClass"],
  396. source: "getChildrenOf: aClass\x0a\x09^ self items select: [ :each | each superclass = aClass ]",
  397. messageSends: ["select:", "=", "superclass", "items"],
  398. referencedClasses: []
  399. }),
  400. smalltalk.HLClassesListWidget);
  401. smalltalk.addMethod(
  402. "_getRootClassesOf_",
  403. smalltalk.method({
  404. selector: "getRootClassesOf:",
  405. category: 'accessing',
  406. fn: function (aCollection) {
  407. var self = this;
  408. var $1;
  409. $1 = smalltalk.send(aCollection, "_select_", [function (each) {return smalltalk.send(smalltalk.send(smalltalk.send(each, "_allSuperclasses", []), "_intersection_", [aCollection]), "_isEmpty", []);}]);
  410. return $1;
  411. },
  412. args: ["aCollection"],
  413. source: "getRootClassesOf: aCollection\x0a\x09^ aCollection select: [ :each |\x0a \x09(each allSuperclasses intersection: aCollection) isEmpty ]",
  414. messageSends: ["select:", "isEmpty", "intersection:", "allSuperclasses"],
  415. referencedClasses: []
  416. }),
  417. smalltalk.HLClassesListWidget);
  418. smalltalk.addMethod(
  419. "_iconForItem_",
  420. smalltalk.method({
  421. selector: "iconForItem:",
  422. category: 'accessing',
  423. fn: function (aClass) {
  424. var self = this;
  425. var $2, $1;
  426. $2 = smalltalk.send(smalltalk.send(smalltalk.send(aClass, "_theNonMetaClass", []), "_comment", []), "_isEmpty", []);
  427. if (smalltalk.assert($2)) {
  428. $1 = "icon-question-sign";
  429. } else {
  430. $1 = "icon-none";
  431. }
  432. return $1;
  433. },
  434. args: ["aClass"],
  435. source: "iconForItem: aClass\x0a\x09^ aClass theNonMetaClass comment isEmpty\x0a \x09ifFalse: [ 'icon-none' ]\x0a \x09ifTrue: [ 'icon-question-sign' ]",
  436. messageSends: ["ifFalse:ifTrue:", "isEmpty", "comment", "theNonMetaClass"],
  437. referencedClasses: []
  438. }),
  439. smalltalk.HLClassesListWidget);
  440. smalltalk.addMethod(
  441. "_packageSelected_",
  442. smalltalk.method({
  443. selector: "packageSelected:",
  444. category: 'actions',
  445. fn: function (aPackage) {
  446. var self = this;
  447. var $1;
  448. smalltalk.send(self, "_selectedItem_", [nil]);
  449. if (($receiver = aPackage) == nil || $receiver == undefined) {
  450. $1 = [];
  451. } else {
  452. $1 = smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send(aPackage, "_classes", []), "_collect_", [function (each) {return smalltalk.send(each, "_theNonMetaClass", []);}]), "_asSet", []), "_asArray", []);
  453. }
  454. smalltalk.send(self, "_items_", [$1]);
  455. smalltalk.send(self, "_refresh", []);
  456. return self;
  457. },
  458. args: ["aPackage"],
  459. source: "packageSelected: aPackage\x0a self selectedItem: nil.\x0a \x0a self items: (aPackage \x0a \x09ifNil: [ #() ]\x0a \x09\x09ifNotNil: [ (aPackage classes \x0a \x09collect: [ :each | each theNonMetaClass ]) asSet asArray ]).\x0a\x0a self refresh",
  460. messageSends: ["selectedItem:", "items:", "ifNil:ifNotNil:", "asArray", "asSet", "collect:", "theNonMetaClass", "classes", "refresh"],
  461. referencedClasses: []
  462. }),
  463. smalltalk.HLClassesListWidget);
  464. smalltalk.addMethod(
  465. "_renderButtonsOn_",
  466. smalltalk.method({
  467. selector: "renderButtonsOn:",
  468. category: 'rendering',
  469. fn: function (html) {
  470. var self = this;
  471. var $1, $3, $4, $5, $6, $7, $8, $2, $9, $10;
  472. $1 = smalltalk.send(html, "_div", []);
  473. smalltalk.send($1, "_class_", ["btn-group"]);
  474. smalltalk.send($1, "_at_put_", ["data-toggle", "buttons-radio"]);
  475. $2 = smalltalk.send($1, "_with_", [function () {$3 = smalltalk.send(html, "_button", []);smalltalk.send($3, "_class_", [smalltalk.send(smalltalk.String || String, "_streamContents_", [function (str) {smalltalk.send(str, "_nextPutAll_", ["btn"]);$4 = smalltalk.send(self, "_showInstance", []);if (smalltalk.assert($4)) {return smalltalk.send(str, "_nextPutAll_", [" active"]);}}])]);smalltalk.send($3, "_with_", ["Instance"]);$5 = smalltalk.send($3, "_onClick_", [function () {return smalltalk.send(self, "_showInstance_", [true]);}]);$5;$6 = smalltalk.send(html, "_button", []);smalltalk.send($6, "_class_", [smalltalk.send(smalltalk.String || String, "_streamContents_", [function (str) {smalltalk.send(str, "_nextPutAll_", ["btn"]);$7 = smalltalk.send(smalltalk.send(self, "_model", []), "_showInstance", []);if (!smalltalk.assert($7)) {return smalltalk.send(str, "_nextPutAll_", [" active"]);}}])]);smalltalk.send($6, "_with_", ["Class"]);$8 = smalltalk.send($6, "_onClick_", [function () {return smalltalk.send(smalltalk.send(self, "_model", []), "_showInstance_", [false]);}]);return $8;}]);
  476. $9 = smalltalk.send(html, "_button", []);
  477. smalltalk.send($9, "_class_", ["btn"]);
  478. smalltalk.send($9, "_at_put_", ["data-toggle", "button"]);
  479. $10 = smalltalk.send($9, "_with_", ["Comment"]);
  480. return self;
  481. },
  482. args: ["html"],
  483. source: "renderButtonsOn: html\x0a\x09html div \x0a class: 'btn-group';\x0a\x09\x09at: 'data-toggle' put: 'buttons-radio';\x0a\x09\x09with: [ \x0a \x09html button \x0a class: (String streamContents: [ :str |\x0a \x09str nextPutAll: 'btn'.\x0a self showInstance ifTrue: [ \x0a \x09str nextPutAll: ' active'] ]);\x0a \x09\x09\x09\x09with: 'Instance';\x0a onClick: [ self showInstance: true ].\x0a \x09\x09\x09html button\x0a \x09\x09\x09\x09class: (String streamContents: [ :str |\x0a \x09str nextPutAll: 'btn'.\x0a self model showInstance ifFalse: [ \x0a \x09str nextPutAll: ' active'] ]);\x0a \x09\x09\x09\x09with: 'Class';\x0a\x09\x09\x09\x09onClick: [ self model showInstance: false ] ].\x0a \x0a \x09html button \x0a \x09class: 'btn';\x0a at: 'data-toggle' put: 'button';\x0a \x09\x09\x09with: 'Comment'",
  484. messageSends: ["class:", "div", "at:put:", "with:", "streamContents:", "nextPutAll:", "ifTrue:", "showInstance", "button", "onClick:", "showInstance:", "ifFalse:", "model"],
  485. referencedClasses: ["String"]
  486. }),
  487. smalltalk.HLClassesListWidget);
  488. smalltalk.addMethod(
  489. "_renderItem_level_on_",
  490. smalltalk.method({
  491. selector: "renderItem:level:on:",
  492. category: 'rendering',
  493. fn: function (aClass, anInteger, html) {
  494. var self = this;
  495. var $2, $3, $1;
  496. var li;
  497. li = smalltalk.send(html, "_li", []);
  498. smalltalk.send(li, "_at_put_", ["list-data", smalltalk.send(smalltalk.send(self, "_items", []), "_indexOf_", [aClass])]);
  499. smalltalk.send(li, "_class_", [smalltalk.send(self, "_cssClassForItem_", [aClass])]);
  500. $1 = smalltalk.send(li, "_with_", [function () {$2 = smalltalk.send(html, "_a", []);smalltalk.send($2, "_with_", [function () {smalltalk.send(smalltalk.send(html, "_tag_", ["i"]), "_class_", [smalltalk.send(self, "_iconForItem_", [aClass])]);return smalltalk.send(self, "_renderItemLabel_level_on_", [aClass, anInteger, html]);}]);$3 = smalltalk.send($2, "_onClick_", [function () {return smalltalk.send(self, "_activateListItem_", [smalltalk.send(li, "_asJQuery", [])]);}]);return $3;}]);
  501. smalltalk.send(smalltalk.send(self, "_getChildrenOf_", [aClass]), "_do_", [function (each) {return smalltalk.send(self, "_renderItem_level_on_", [each, smalltalk.send(anInteger, "__plus", [1]), html]);}]);
  502. return self;
  503. },
  504. args: ["aClass", "anInteger", "html"],
  505. source: "renderItem: aClass level: anInteger on: html\x0a\x09| li |\x0a \x0a\x09li := html li.\x0a li\x0a \x09at: 'list-data' put: (self items indexOf: aClass);\x0a \x09class: (self cssClassForItem: aClass);\x0a with: [ \x0a \x09html a\x0a \x09with: [ \x0a \x09\x09(html tag: 'i') class: (self iconForItem: aClass).\x0a \x09\x09\x09\x09\x09self renderItemLabel: aClass level: anInteger on: html ];\x0a\x09\x09\x09\x09onClick: [\x0a \x09self activateListItem: li asJQuery ] ].\x0a \x0a (self getChildrenOf: aClass) do: [ :each |\x0a \x09self renderItem: each level: anInteger + 1 on: html ]",
  506. messageSends: ["li", "at:put:", "indexOf:", "items", "class:", "cssClassForItem:", "with:", "iconForItem:", "tag:", "renderItemLabel:level:on:", "a", "onClick:", "activateListItem:", "asJQuery", "do:", "renderItem:level:on:", "+", "getChildrenOf:"],
  507. referencedClasses: []
  508. }),
  509. smalltalk.HLClassesListWidget);
  510. smalltalk.addMethod(
  511. "_renderItem_on_",
  512. smalltalk.method({
  513. selector: "renderItem:on:",
  514. category: 'rendering',
  515. fn: function (aClass, html) {
  516. var self = this;
  517. smalltalk.send(self, "_renderItem_on_", [aClass, html], smalltalk.HLBrowserListWidget);
  518. smalltalk.send(smalltalk.send(self, "_getChildrenOf_", [aClass]), "_do_", [function (each) {return smalltalk.send(self, "_renderItem_level_on_", [each, 1, html]);}]);
  519. return self;
  520. },
  521. args: ["aClass", "html"],
  522. source: "renderItem: aClass on: html\x0a\x09super renderItem: aClass on: html.\x0a \x09(self getChildrenOf: aClass) do: [ :each |\x0a \x09\x09self renderItem: each level: 1 on: html ]",
  523. messageSends: ["renderItem:on:", "do:", "renderItem:level:on:", "getChildrenOf:"],
  524. referencedClasses: []
  525. }),
  526. smalltalk.HLClassesListWidget);
  527. smalltalk.addMethod(
  528. "_renderItemLabel_level_on_",
  529. smalltalk.method({
  530. selector: "renderItemLabel:level:on:",
  531. category: 'rendering',
  532. fn: function (aClass, anInteger, html) {
  533. var self = this;
  534. smalltalk.send(smalltalk.send(smalltalk.send(html, "_span", []), "_asJQuery", []), "_html_", [smalltalk.send(smalltalk.String || String, "_streamContents_", [function (str) {smalltalk.send(anInteger, "_timesRepeat_", [function () {return smalltalk.send(str, "_nextPutAll_", ["    "]);}]);return smalltalk.send(str, "_nextPutAll_", [smalltalk.send(aClass, "_name", [])]);}])]);
  535. return self;
  536. },
  537. args: ["aClass", "anInteger", "html"],
  538. 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 ])",
  539. messageSends: ["html:", "streamContents:", "timesRepeat:", "nextPutAll:", "name", "asJQuery", "span"],
  540. referencedClasses: ["String"]
  541. }),
  542. smalltalk.HLClassesListWidget);
  543. smalltalk.addMethod(
  544. "_renderItemLabel_on_",
  545. smalltalk.method({
  546. selector: "renderItemLabel:on:",
  547. category: 'rendering',
  548. fn: function (aClass, html) {
  549. var self = this;
  550. smalltalk.send(self, "_renderItemLabel_level_on_", [aClass, 0, html]);
  551. return self;
  552. },
  553. args: ["aClass", "html"],
  554. source: "renderItemLabel: aClass on: html\x0a\x09self renderItemLabel: aClass level: 0 on: html",
  555. messageSends: ["renderItemLabel:level:on:"],
  556. referencedClasses: []
  557. }),
  558. smalltalk.HLClassesListWidget);
  559. smalltalk.addMethod(
  560. "_renderListOn_",
  561. smalltalk.method({
  562. selector: "renderListOn:",
  563. category: 'rendering',
  564. fn: function (html) {
  565. var self = this;
  566. smalltalk.send(smalltalk.send(self, "_getRootClassesOf_", [smalltalk.send(self, "_items", [])]), "_do_", [function (each) {return smalltalk.send(self, "_renderItem_on_", [each, html]);}]);
  567. return self;
  568. },
  569. args: ["html"],
  570. source: "renderListOn: html\x0a\x09(self getRootClassesOf: self items)\x0a \x09do: [ :each | self renderItem: each on: html ]",
  571. messageSends: ["do:", "renderItem:on:", "getRootClassesOf:", "items"],
  572. referencedClasses: []
  573. }),
  574. smalltalk.HLClassesListWidget);
  575. smalltalk.addMethod(
  576. "_selectItem_",
  577. smalltalk.method({
  578. selector: "selectItem:",
  579. category: 'actions',
  580. fn: function (aClass){
  581. var self=this;
  582. smalltalk.send(self,"_selectItem_",[aClass],smalltalk.HLBrowserListWidget);
  583. smalltalk.send(smalltalk.send(self,"_model",[]),"_selectedClass_",[aClass]);
  584. return self},
  585. args: ["aClass"],
  586. source: "selectItem: aClass\x0a\x09super selectItem: aClass.\x0a self model selectedClass: aClass",
  587. messageSends: ["selectItem:", "selectedClass:", "model"],
  588. referencedClasses: []
  589. }),
  590. smalltalk.HLClassesListWidget);
  591. smalltalk.addMethod(
  592. "_showInstance",
  593. smalltalk.method({
  594. selector: "showInstance",
  595. category: 'accessing',
  596. fn: function () {
  597. var self = this;
  598. var $1;
  599. $1 = smalltalk.send(smalltalk.send(self, "_model", []), "_showInstance", []);
  600. return $1;
  601. },
  602. args: [],
  603. source: "showInstance\x0a\x09^ self model showInstance",
  604. messageSends: ["showInstance", "model"],
  605. referencedClasses: []
  606. }),
  607. smalltalk.HLClassesListWidget);
  608. smalltalk.addMethod(
  609. "_showInstance_",
  610. smalltalk.method({
  611. selector: "showInstance:",
  612. category: 'actions',
  613. fn: function (aBoolean) {
  614. var self = this;
  615. smalltalk.send(smalltalk.send(self, "_model", []), "_showInstance_", [aBoolean]);
  616. return self;
  617. },
  618. args: ["aBoolean"],
  619. source: "showInstance: aBoolean\x0a\x09self model showInstance: aBoolean",
  620. messageSends: ["showInstance:", "model"],
  621. referencedClasses: []
  622. }),
  623. smalltalk.HLClassesListWidget);
  624. smalltalk.addMethod(
  625. "_subscribeTo_",
  626. smalltalk.method({
  627. selector: "subscribeTo:",
  628. category: 'announcements',
  629. fn: function (anAnnouncer) {
  630. var self = this;
  631. smalltalk.send(anAnnouncer, "_on_do_", [smalltalk.HLPackageSelected || HLPackageSelected, function (ann) {return smalltalk.send(self, "_packageSelected_", [smalltalk.send(ann, "_item", [])]);}]);
  632. smalltalk.send(anAnnouncer, "_on_do_", [smalltalk.HLShowInstanceToggled || HLShowInstanceToggled, function (ann) {return smalltalk.send(self, "_refresh", []);}]);
  633. smalltalk.send(anAnnouncer, "_on_do_", [smalltalk.HLClassSelected || HLClassSelected, function (ann) {return smalltalk.send(self, "_focus", []);}]);
  634. return self;
  635. },
  636. args: ["anAnnouncer"],
  637. source: "subscribeTo: anAnnouncer\x0a\x09anAnnouncer on: HLPackageSelected do: [ :ann |\x0a \x09self packageSelected: ann item ].\x0a anAnnouncer on: HLShowInstanceToggled do: [ :ann |\x0a \x09self refresh ].\x0a anAnnouncer on: HLClassSelected do: [ :ann |\x0a \x09self focus ]",
  638. messageSends: ["on:do:", "packageSelected:", "item", "refresh", "focus"],
  639. referencedClasses: ["HLPackageSelected", "HLShowInstanceToggled", "HLClassSelected"]
  640. }),
  641. smalltalk.HLClassesListWidget);
  642. smalltalk.addClass('HLMethodsListWidget', smalltalk.HLBrowserListWidget, ['selectorsCache'], 'Helios-Browser');
  643. smalltalk.addMethod(
  644. "_allProtocol",
  645. smalltalk.method({
  646. selector: "allProtocol",
  647. category: 'accessing',
  648. fn: function () {
  649. var self = this;
  650. var $1;
  651. $1 = smalltalk.send(smalltalk.send(self, "_model", []), "_allProtocol", []);
  652. return $1;
  653. },
  654. args: [],
  655. source: "allProtocol\x0a\x09^ self model allProtocol",
  656. messageSends: ["allProtocol", "model"],
  657. referencedClasses: []
  658. }),
  659. smalltalk.HLMethodsListWidget);
  660. smalltalk.addMethod(
  661. "_flushSelectorsCache",
  662. smalltalk.method({
  663. selector: "flushSelectorsCache",
  664. category: 'cache',
  665. fn: function () {
  666. var self = this;
  667. self['@selectorsCache'] = smalltalk.send(smalltalk.Dictionary || Dictionary, "_new", []);
  668. return self;
  669. },
  670. args: [],
  671. source: "flushSelectorsCache\x0a\x09selectorsCache := Dictionary new",
  672. messageSends: ["new"],
  673. referencedClasses: ["Dictionary"]
  674. }),
  675. smalltalk.HLMethodsListWidget);
  676. smalltalk.addMethod(
  677. "_iconForItem_",
  678. smalltalk.method({
  679. selector: "iconForItem:",
  680. category: 'accessing',
  681. fn: function (aCompiledMethod) {
  682. var self = this;
  683. var $1;
  684. var override;
  685. var overriden;
  686. override = smalltalk.send(self, "_isOverride_", [aCompiledMethod]);
  687. overriden = smalltalk.send(self, "_isOverriden_", [aCompiledMethod]);
  688. if (smalltalk.assert(override)) {
  689. if (smalltalk.assert(overriden)) {
  690. $1 = "icon-resize-vertical";
  691. } else {
  692. $1 = "icon-arrow-up";
  693. }
  694. } else {
  695. if (smalltalk.assert(overriden)) {
  696. $1 = "icon-arrow-down";
  697. } else {
  698. $1 = "icon-none";
  699. }
  700. }
  701. return $1;
  702. },
  703. args: ["aCompiledMethod"],
  704. source: "iconForItem: aCompiledMethod\x0a\x09| override overriden |\x0a \x0a override := self isOverride: aCompiledMethod.\x0a overriden := self isOverriden: aCompiledMethod.\x0a \x0a\x09^ override\x0a \x09ifTrue: [ overriden\x0a\x09\x09\x09ifTrue: [ 'icon-resize-vertical' ]\x0a\x09\x09\x09ifFalse: [ 'icon-arrow-up' ] ]\x0a\x09\x09ifFalse: [\x0a\x09\x09\x09overriden\x0a\x09\x09\x09ifTrue: [ 'icon-arrow-down' ]\x0a\x09\x09\x09ifFalse: [ 'icon-none' ] ]",
  705. messageSends: ["isOverride:", "isOverriden:", "ifTrue:ifFalse:"],
  706. referencedClasses: []
  707. }),
  708. smalltalk.HLMethodsListWidget);
  709. smalltalk.addMethod(
  710. "_initialize",
  711. smalltalk.method({
  712. selector: "initialize",
  713. category: 'initialization',
  714. fn: function () {
  715. var self = this;
  716. smalltalk.send(self, "_initialize", [], smalltalk.HLBrowserListWidget);
  717. smalltalk.send(self, "_flushSelectorsCache", []);
  718. return self;
  719. },
  720. args: [],
  721. source: "initialize\x0a\x09super initialize.\x0a self flushSelectorsCache",
  722. messageSends: ["initialize", "flushSelectorsCache"],
  723. referencedClasses: []
  724. }),
  725. smalltalk.HLMethodsListWidget);
  726. smalltalk.addMethod(
  727. "_isOverride_",
  728. smalltalk.method({
  729. selector: "isOverride:",
  730. category: 'testing',
  731. fn: function (aMethod) {
  732. var self = this;
  733. var $1;
  734. $1 = smalltalk.send(smalltalk.send(self, "_overrideSelectors", []), "_includes_", [smalltalk.send(aMethod, "_selector", [])]);
  735. return $1;
  736. },
  737. args: ["aMethod"],
  738. source: "isOverride: aMethod\x0a\x0a ^ self overrideSelectors includes: aMethod selector",
  739. messageSends: ["includes:", "selector", "overrideSelectors"],
  740. referencedClasses: []
  741. }),
  742. smalltalk.HLMethodsListWidget);
  743. smalltalk.addMethod(
  744. "_isOverriden_",
  745. smalltalk.method({
  746. selector: "isOverriden:",
  747. category: 'testing',
  748. fn: function (aMethod) {
  749. var self = this;
  750. var $1;
  751. $1 = smalltalk.send(smalltalk.send(self, "_overridenSelectors", []), "_includes_", [smalltalk.send(aMethod, "_selector", [])]);
  752. return $1;
  753. },
  754. args: ["aMethod"],
  755. source: "isOverriden: aMethod\x0a\x0a ^ self overridenSelectors includes: aMethod selector",
  756. messageSends: ["includes:", "selector", "overridenSelectors"],
  757. referencedClasses: []
  758. }),
  759. smalltalk.HLMethodsListWidget);
  760. smalltalk.addMethod(
  761. "_methodsInProtocol_",
  762. smalltalk.method({
  763. selector: "methodsInProtocol:",
  764. category: 'accessing',
  765. fn: function (aString) {
  766. var self = this;
  767. var $2, $1;
  768. $2 = smalltalk.send(aString, "__eq", [smalltalk.send(self, "_allProtocol", [])]);
  769. if (smalltalk.assert($2)) {
  770. $1 = smalltalk.send(smalltalk.send(smalltalk.send(self, "_model", []), "_selectedClass", []), "_methods", []);
  771. } else {
  772. $1 = smalltalk.send(smalltalk.send(smalltalk.send(self, "_model", []), "_selectedClass", []), "_methodsInProtocol_", [aString]);
  773. }
  774. return $1;
  775. },
  776. args: ["aString"],
  777. source: "methodsInProtocol: aString\x0a\x09^ aString = self allProtocol\x0a \x09ifTrue: [ self model selectedClass methods ]\x0a \x09ifFalse: [ self model selectedClass methodsInProtocol: aString ]",
  778. messageSends: ["ifTrue:ifFalse:", "methods", "selectedClass", "model", "methodsInProtocol:", "=", "allProtocol"],
  779. referencedClasses: []
  780. }),
  781. smalltalk.HLMethodsListWidget);
  782. smalltalk.addMethod(
  783. "_overrideSelectors",
  784. smalltalk.method({
  785. selector: "overrideSelectors",
  786. category: 'accessing',
  787. fn: function () {
  788. var self = this;
  789. var $2, $1;
  790. $1 = smalltalk.send(smalltalk.send(self, "_selectorsCache", []), "_at_ifAbsentPut_", ["override", function () {return smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send(self, "_model", []), "_selectedClass", []), "_allSuperclasses", []), "_inject_into_", [smalltalk.send(smalltalk.Set || Set, "_new", []), function (acc, each) {smalltalk.send(acc, "_addAll_", [smalltalk.send(each, "_selectors", [])]);$2 = smalltalk.send(acc, "_yourself", []);return $2;}]);}]);
  791. return $1;
  792. },
  793. args: [],
  794. source: "overrideSelectors\x0a\x09^ self selectorsCache \x0a \x09at: 'override'\x0a ifAbsentPut: [ \x0a \x09self model selectedClass allSuperclasses\x0a\x09\x09\x09\x09inject: Set new into: [ :acc :each | acc addAll: each selectors; yourself ] ]",
  795. messageSends: ["at:ifAbsentPut:", "inject:into:", "new", "addAll:", "selectors", "yourself", "allSuperclasses", "selectedClass", "model", "selectorsCache"],
  796. referencedClasses: ["Set"]
  797. }),
  798. smalltalk.HLMethodsListWidget);
  799. smalltalk.addMethod(
  800. "_overridenSelectors",
  801. smalltalk.method({
  802. selector: "overridenSelectors",
  803. category: 'accessing',
  804. fn: function () {
  805. var self = this;
  806. var $2, $1;
  807. $1 = smalltalk.send(smalltalk.send(self, "_selectorsCache", []), "_at_ifAbsentPut_", ["overriden", function () {return smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send(self, "_model", []), "_selectedClass", []), "_allSubclasses", []), "_inject_into_", [smalltalk.send(smalltalk.Set || Set, "_new", []), function (acc, each) {smalltalk.send(acc, "_addAll_", [smalltalk.send(each, "_selectors", [])]);$2 = smalltalk.send(acc, "_yourself", []);return $2;}]);}]);
  808. return $1;
  809. },
  810. args: [],
  811. source: "overridenSelectors\x0a\x09^ self selectorsCache \x0a \x09at: 'overriden'\x0a ifAbsentPut: [ \x0a \x09self model selectedClass allSubclasses\x0a\x09\x09\x09\x09inject: Set new into: [ :acc :each | acc addAll: each selectors; yourself ] ]",
  812. messageSends: ["at:ifAbsentPut:", "inject:into:", "new", "addAll:", "selectors", "yourself", "allSubclasses", "selectedClass", "model", "selectorsCache"],
  813. referencedClasses: ["Set"]
  814. }),
  815. smalltalk.HLMethodsListWidget);
  816. smalltalk.addMethod(
  817. "_protocolSelected_",
  818. smalltalk.method({
  819. selector: "protocolSelected:",
  820. category: 'actions',
  821. fn: function (aString){
  822. var self=this;
  823. var $2,$1;
  824. smalltalk.send(self,"_selectedItem_",[nil]);
  825. $2=smalltalk.send(smalltalk.send(self,"_model",[]),"_selectedClass",[]);
  826. if(($receiver = $2) == nil || $receiver == undefined){
  827. $1=[];
  828. } else {
  829. if(($receiver = aString) == nil || $receiver == undefined){
  830. $1=[];
  831. } else {
  832. $1=smalltalk.send(self,"_methodsInProtocol_",[aString]);
  833. };
  834. };
  835. smalltalk.send(self,"_items_",[$1]);
  836. smalltalk.send(self,"_refresh",[]);
  837. return self},
  838. args: ["aString"],
  839. source: "protocolSelected: aString\x0a self selectedItem: nil.\x0a \x0a self items: (self model selectedClass \x0a \x09ifNil: [ #() ]\x0a \x09ifNotNil: [ aString\x0a \x09\x09ifNil: [ #() ]\x0a \x09\x09ifNotNil: [ self methodsInProtocol: aString ] ]).\x0a \x0a self refresh",
  840. messageSends: ["selectedItem:", "items:", "ifNil:ifNotNil:", "methodsInProtocol:", "selectedClass", "model", "refresh"],
  841. referencedClasses: []
  842. }),
  843. smalltalk.HLMethodsListWidget);
  844. smalltalk.addMethod(
  845. "_renderContentOn_",
  846. smalltalk.method({
  847. selector: "renderContentOn:",
  848. category: 'rendering',
  849. fn: function (html) {
  850. var self = this;
  851. var $1, $2, $3;
  852. $1 = smalltalk.send(smalltalk.send(self, "_model", []), "_showInstance", []);
  853. if (smalltalk.assert($1)) {
  854. smalltalk.send(self, "_renderContentOn_", [html], smalltalk.HLBrowserListWidget);
  855. } else {
  856. $2 = smalltalk.send(html, "_div", []);
  857. smalltalk.send($2, "_class_", ["class_side"]);
  858. $3 = smalltalk.send($2, "_with_", [function () {return smalltalk.send(self, "_renderContentOn_", [html], smalltalk.HLBrowserListWidget);}]);
  859. }
  860. smalltalk.send(self, "_flushSelectorsCache", []);
  861. return self;
  862. },
  863. args: ["html"],
  864. source: "renderContentOn: html\x0a\x09self model showInstance\x0a \x09ifFalse: [ html div \x0a \x09class: 'class_side'; \x0a with: [ super renderContentOn: html ] ]\x0a \x09ifTrue: [ super renderContentOn: html ].\x0a \x0a self flushSelectorsCache",
  865. messageSends: ["ifFalse:ifTrue:", "class:", "div", "with:", "renderContentOn:", "showInstance", "model", "flushSelectorsCache"],
  866. referencedClasses: []
  867. }),
  868. smalltalk.HLMethodsListWidget);
  869. smalltalk.addMethod(
  870. "_renderItemLabel_on_",
  871. smalltalk.method({
  872. selector: "renderItemLabel:on:",
  873. category: 'rendering',
  874. fn: function (aCompiledMethod, html) {
  875. var self = this;
  876. smalltalk.send(html, "_with_", [smalltalk.send(aCompiledMethod, "_selector", [])]);
  877. return self;
  878. },
  879. args: ["aCompiledMethod", "html"],
  880. source: "renderItemLabel: aCompiledMethod on: html\x0a\x09html with: aCompiledMethod selector",
  881. messageSends: ["with:", "selector"],
  882. referencedClasses: []
  883. }),
  884. smalltalk.HLMethodsListWidget);
  885. smalltalk.addMethod(
  886. "_selectItem_",
  887. smalltalk.method({
  888. selector: "selectItem:",
  889. category: 'actions',
  890. fn: function (aCompiledMethod){
  891. var self=this;
  892. smalltalk.send(self,"_selectItem_",[aCompiledMethod],smalltalk.HLBrowserListWidget);
  893. smalltalk.send(smalltalk.send(self,"_model",[]),"_selectedMethod_",[aCompiledMethod]);
  894. return self},
  895. args: ["aCompiledMethod"],
  896. source: "selectItem: aCompiledMethod\x0a\x09super selectItem: aCompiledMethod.\x0a \x09self model selectedMethod: aCompiledMethod",
  897. messageSends: ["selectItem:", "selectedMethod:", "model"],
  898. referencedClasses: []
  899. }),
  900. smalltalk.HLMethodsListWidget);
  901. smalltalk.addMethod(
  902. "_selectorsCache",
  903. smalltalk.method({
  904. selector: "selectorsCache",
  905. category: 'accessing',
  906. fn: function () {
  907. var self = this;
  908. return self['@selectorsCache'];
  909. },
  910. args: [],
  911. source: "selectorsCache\x0a\x09^ selectorsCache",
  912. messageSends: [],
  913. referencedClasses: []
  914. }),
  915. smalltalk.HLMethodsListWidget);
  916. smalltalk.addMethod(
  917. "_subscribeTo_",
  918. smalltalk.method({
  919. selector: "subscribeTo:",
  920. category: 'announcements',
  921. fn: function (anAnnouncer) {
  922. var self = this;
  923. smalltalk.send(anAnnouncer, "_on_do_", [smalltalk.HLProtocolSelected || HLProtocolSelected, function (ann) {return smalltalk.send(self, "_protocolSelected_", [smalltalk.send(ann, "_item", [])]);}]);
  924. smalltalk.send(anAnnouncer, "_on_do_", [smalltalk.HLShowInstanceToggled || HLShowInstanceToggled, function (ann) {return smalltalk.send(self, "_protocolSelected_", [nil]);}]);
  925. smalltalk.send(anAnnouncer, "_on_do_", [smalltalk.HLMethodSelected || HLMethodSelected, function (ann) {return smalltalk.send(self, "_focus", []);}]);
  926. return self;
  927. },
  928. args: ["anAnnouncer"],
  929. source: "subscribeTo: anAnnouncer\x0a\x09anAnnouncer on: HLProtocolSelected do: [ :ann |\x0a \x09self protocolSelected: ann item ].\x0a anAnnouncer on: HLShowInstanceToggled do: [ :ann |\x0a \x09self protocolSelected: nil ].\x0a anAnnouncer on: HLMethodSelected do: [ :ann |\x0a \x09self focus ]",
  930. messageSends: ["on:do:", "protocolSelected:", "item", "focus"],
  931. referencedClasses: ["HLProtocolSelected", "HLShowInstanceToggled", "HLMethodSelected"]
  932. }),
  933. smalltalk.HLMethodsListWidget);
  934. smalltalk.addClass('HLPackagesListWidget', smalltalk.HLBrowserListWidget, [], 'Helios-Browser');
  935. smalltalk.addMethod(
  936. "_focusClassesListWidget",
  937. smalltalk.method({
  938. selector: "focusClassesListWidget",
  939. category: 'actions',
  940. fn: function () {
  941. var self = this;
  942. smalltalk.send(smalltalk.send(smalltalk.send(self, "_model", []), "_announcer", []), "_announce_", [smalltalk.send(smalltalk.HLClassesListFocus || HLClassesListFocus, "_new", [])]);
  943. return self;
  944. },
  945. args: [],
  946. source: "focusClassesListWidget\x0a\x09self model announcer announce: HLClassesListFocus new",
  947. messageSends: ["announce:", "new", "announcer", "model"],
  948. referencedClasses: ["HLClassesListFocus"]
  949. }),
  950. smalltalk.HLPackagesListWidget);
  951. smalltalk.addMethod(
  952. "_initializeItems",
  953. smalltalk.method({
  954. selector: "initializeItems",
  955. category: 'accessing',
  956. fn: function (){
  957. var self=this;
  958. var $1;
  959. self["@items"]=smalltalk.send(smalltalk.send(smalltalk.send(self,"_model",[]),"_packages",[]),"_sort_",[(function(a,b){
  960. return smalltalk.send(smalltalk.send(a,"_name",[]),"__lt",[smalltalk.send(b,"_name",[])]);
  961. })]);
  962. $1=self["@items"];
  963. return $1;
  964. },
  965. args: [],
  966. source: "initializeItems\x0a\x09^ items := self model packages sort:[:a :b|\x0a\x09\x09\x09\x09\x09\x09a name < b name]",
  967. messageSends: ["sort:", "<", "name", "packages", "model"],
  968. referencedClasses: []
  969. }),
  970. smalltalk.HLPackagesListWidget);
  971. smalltalk.addMethod(
  972. "_items",
  973. smalltalk.method({
  974. selector: "items",
  975. category: 'accessing',
  976. fn: function (){
  977. var self=this;
  978. var $1;
  979. if(($receiver = self["@items"]) == nil || $receiver == undefined){
  980. $1=smalltalk.send(self,"_initializeItems",[]);
  981. } else {
  982. $1=self["@items"];
  983. };
  984. return $1;
  985. },
  986. args: [],
  987. source: "items\x0a\x09^ items ifNil: [self initializeItems]",
  988. messageSends: ["ifNil:", "initializeItems"],
  989. referencedClasses: []
  990. }),
  991. smalltalk.HLPackagesListWidget);
  992. smalltalk.addMethod(
  993. "_renderButtonsOn_",
  994. smalltalk.method({
  995. selector: "renderButtonsOn:",
  996. category: 'rendering',
  997. fn: function (html) {
  998. var self = this;
  999. var $1, $2, $3, $5, $6, $7, $8, $4, $9, $10;
  1000. $1 = smalltalk.send(html, "_span", []);
  1001. smalltalk.send($1, "_class_", ["info"]);
  1002. $2 = smalltalk.send($1, "_with_", ["Auto commit"]);
  1003. $3 = smalltalk.send(html, "_div", []);
  1004. smalltalk.send($3, "_class_", ["btn-group switch"]);
  1005. smalltalk.send($3, "_at_put_", ["data-toggle", "buttons-radio"]);
  1006. $4 = smalltalk.send($3, "_with_", [function () {$5 = smalltalk.send(html, "_button", []);smalltalk.send($5, "_class_", [smalltalk.send(smalltalk.String || String, "_streamContents_", [function (str) {return smalltalk.send(str, "_nextPutAll_", ["btn"]);}])]);$6 = smalltalk.send($5, "_with_", ["On"]);$6;$7 = smalltalk.send(html, "_button", []);smalltalk.send($7, "_class_", [smalltalk.send(smalltalk.String || String, "_streamContents_", [function (str) {return smalltalk.send(str, "_nextPutAll_", ["btn active"]);}])]);$8 = smalltalk.send($7, "_with_", ["Off"]);return $8;}]);
  1007. $9 = smalltalk.send(html, "_a", []);
  1008. smalltalk.send($9, "_class_", ["btn"]);
  1009. $10 = smalltalk.send($9, "_with_", ["Commit"]);
  1010. return self;
  1011. },
  1012. args: ["html"],
  1013. source: "renderButtonsOn: html\x0a\x0a\x09html span class: 'info'; with: 'Auto commit'.\x0a\x09html div \x0a class: 'btn-group switch';\x0a\x09\x09at: 'data-toggle' put: 'buttons-radio';\x0a\x09\x09with: [ \x0a \x09html button \x0a class: (String streamContents: [ :str |\x0a \x09str nextPutAll: 'btn' ]);\x0a \x09\x09\x09\x09with: 'On'.\x0a \x09\x09\x09html button\x0a \x09\x09\x09\x09class: (String streamContents: [ :str |\x0a \x09str nextPutAll: 'btn active' ]);\x0a \x09\x09\x09\x09with: 'Off' ].\x0a \x0a html a \x0a \x09class: 'btn';\x0a\x09\x09\x09with: 'Commit'.",
  1014. messageSends: ["class:", "span", "with:", "div", "at:put:", "streamContents:", "nextPutAll:", "button", "a"],
  1015. referencedClasses: ["String"]
  1016. }),
  1017. smalltalk.HLPackagesListWidget);
  1018. smalltalk.addMethod(
  1019. "_selectItem_",
  1020. smalltalk.method({
  1021. selector: "selectItem:",
  1022. category: 'actions',
  1023. fn: function (aPackage){
  1024. var self=this;
  1025. smalltalk.send(self,"_selectItem_",[aPackage],smalltalk.HLBrowserListWidget);
  1026. smalltalk.send(smalltalk.send(self,"_model",[]),"_selectedPackage_",[aPackage]);
  1027. return self},
  1028. args: ["aPackage"],
  1029. source: "selectItem: aPackage\x0a\x09super selectItem: aPackage.\x0a self model selectedPackage: aPackage",
  1030. messageSends: ["selectItem:", "selectedPackage:", "model"],
  1031. referencedClasses: []
  1032. }),
  1033. smalltalk.HLPackagesListWidget);
  1034. smalltalk.addMethod(
  1035. "_subscribeTo_",
  1036. smalltalk.method({
  1037. selector: "subscribeTo:",
  1038. category: 'announcements',
  1039. fn: function (anAnnouncer) {
  1040. var self = this;
  1041. smalltalk.send(anAnnouncer, "_on_do_", [smalltalk.HLPackageSelected || HLPackageSelected, function (ann) {return smalltalk.send(self, "_focus", []);}]);
  1042. return self;
  1043. },
  1044. args: ["anAnnouncer"],
  1045. source: "subscribeTo: anAnnouncer\x0a anAnnouncer on: HLPackageSelected do: [ :ann |\x0a \x09self focus ]",
  1046. messageSends: ["on:do:", "focus"],
  1047. referencedClasses: ["HLPackageSelected"]
  1048. }),
  1049. smalltalk.HLPackagesListWidget);
  1050. smalltalk.addClass('HLProtocolsListWidget', smalltalk.HLBrowserListWidget, [], 'Helios-Browser');
  1051. smalltalk.addMethod(
  1052. "_allProtocol",
  1053. smalltalk.method({
  1054. selector: "allProtocol",
  1055. category: 'accessing',
  1056. fn: function () {
  1057. var self = this;
  1058. var $1;
  1059. $1 = smalltalk.send(smalltalk.send(self, "_model", []), "_allProtocol", []);
  1060. return $1;
  1061. },
  1062. args: [],
  1063. source: "allProtocol\x0a\x09^ self model allProtocol",
  1064. messageSends: ["allProtocol", "model"],
  1065. referencedClasses: []
  1066. }),
  1067. smalltalk.HLProtocolsListWidget);
  1068. smalltalk.addMethod(
  1069. "_classSelected_",
  1070. smalltalk.method({
  1071. selector: "classSelected:",
  1072. category: 'actions',
  1073. fn: function (aClass) {
  1074. var self = this;
  1075. var $2, $3, $1;
  1076. smalltalk.send(self, "_selectedItem_", [nil]);
  1077. if (($receiver = aClass) == nil || $receiver == undefined) {
  1078. $1 = smalltalk.send(smalltalk.Array || Array, "_with_", [smalltalk.send(self, "_allProtocol", [])]);
  1079. } else {
  1080. $2 = smalltalk.send(smalltalk.Array || Array, "_with_", [smalltalk.send(self, "_allProtocol", [])]);
  1081. smalltalk.send($2, "_addAll_", [smalltalk.send(aClass, "_protocols", [])]);
  1082. $3 = smalltalk.send($2, "_yourself", []);
  1083. $1 = $3;
  1084. }
  1085. smalltalk.send(self, "_items_", [$1]);
  1086. smalltalk.send(self, "_refresh", []);
  1087. return self;
  1088. },
  1089. args: ["aClass"],
  1090. source: "classSelected: aClass\x0a self selectedItem: nil.\x0a \x0a self items: (aClass\x0a \x09ifNil: [ Array with: self allProtocol ]\x0a \x09ifNotNil: [ \x0a \x09(Array with: self allProtocol) \x0a \x09addAll: aClass protocols; \x0a yourself ]).\x0a\x0a self refresh",
  1091. messageSends: ["selectedItem:", "items:", "ifNil:ifNotNil:", "with:", "allProtocol", "addAll:", "protocols", "yourself", "refresh"],
  1092. referencedClasses: ["Array"]
  1093. }),
  1094. smalltalk.HLProtocolsListWidget);
  1095. smalltalk.addMethod(
  1096. "_renderContentOn_",
  1097. smalltalk.method({
  1098. selector: "renderContentOn:",
  1099. category: 'rendering',
  1100. fn: function (html) {
  1101. var self = this;
  1102. var $1, $2, $3;
  1103. $1 = smalltalk.send(smalltalk.send(self, "_model", []), "_showInstance", []);
  1104. if (smalltalk.assert($1)) {
  1105. smalltalk.send(self, "_renderContentOn_", [html], smalltalk.HLBrowserListWidget);
  1106. } else {
  1107. $2 = smalltalk.send(html, "_div", []);
  1108. smalltalk.send($2, "_class_", ["class_side"]);
  1109. $3 = smalltalk.send($2, "_with_", [function () {return smalltalk.send(self, "_renderContentOn_", [html], smalltalk.HLBrowserListWidget);}]);
  1110. }
  1111. return self;
  1112. },
  1113. args: ["html"],
  1114. source: "renderContentOn: html\x0a\x09self model showInstance\x0a \x09ifFalse: [ html div \x0a \x09class: 'class_side'; \x0a with: [ super renderContentOn: html ] ]\x0a \x09ifTrue: [ super renderContentOn: html ]",
  1115. messageSends: ["ifFalse:ifTrue:", "class:", "div", "with:", "renderContentOn:", "showInstance", "model"],
  1116. referencedClasses: []
  1117. }),
  1118. smalltalk.HLProtocolsListWidget);
  1119. smalltalk.addMethod(
  1120. "_selectItem_",
  1121. smalltalk.method({
  1122. selector: "selectItem:",
  1123. category: 'actions',
  1124. fn: function (aString){
  1125. var self=this;
  1126. smalltalk.send(self,"_selectItem_",[aString],smalltalk.HLBrowserListWidget);
  1127. smalltalk.send(smalltalk.send(self,"_model",[]),"_selectedProtocol_",[aString]);
  1128. return self},
  1129. args: ["aString"],
  1130. source: "selectItem: aString\x0a\x09super selectItem: aString.\x0a self model selectedProtocol: aString",
  1131. messageSends: ["selectItem:", "selectedProtocol:", "model"],
  1132. referencedClasses: []
  1133. }),
  1134. smalltalk.HLProtocolsListWidget);
  1135. smalltalk.addMethod(
  1136. "_selectedItem",
  1137. smalltalk.method({
  1138. selector: "selectedItem",
  1139. category: 'accessing',
  1140. fn: function (){
  1141. var self=this;
  1142. var $1;
  1143. $1=smalltalk.send(self,"_selectedItem",[],smalltalk.HLBrowserListWidget);
  1144. return $1;
  1145. },
  1146. args: [],
  1147. source: "selectedItem\x0a\x09^ super selectedItem\x22 ifNil: [ self allProtocol ]\x22",
  1148. messageSends: ["selectedItem"],
  1149. referencedClasses: []
  1150. }),
  1151. smalltalk.HLProtocolsListWidget);
  1152. smalltalk.addMethod(
  1153. "_subscribeTo_",
  1154. smalltalk.method({
  1155. selector: "subscribeTo:",
  1156. category: 'announcements',
  1157. fn: function (anAnnouncer) {
  1158. var self = this;
  1159. smalltalk.send(anAnnouncer, "_on_do_", [smalltalk.HLClassSelected || HLClassSelected, function (ann) {return smalltalk.send(self, "_classSelected_", [smalltalk.send(ann, "_item", [])]);}]);
  1160. smalltalk.send(anAnnouncer, "_on_do_", [smalltalk.HLShowInstanceToggled || HLShowInstanceToggled, function (ann) {return smalltalk.send(self, "_classSelected_", [smalltalk.send(smalltalk.send(self, "_model", []), "_selectedClass", [])]);}]);
  1161. smalltalk.send(anAnnouncer, "_on_do_", [smalltalk.HLProtocolSelected || HLProtocolSelected, function (ann) {return smalltalk.send(self, "_focus", []);}]);
  1162. return self;
  1163. },
  1164. args: ["anAnnouncer"],
  1165. source: "subscribeTo: anAnnouncer\x0a\x09anAnnouncer on: HLClassSelected do: [ :ann |\x0a \x09self classSelected: ann item ].\x0a anAnnouncer on: HLShowInstanceToggled do: [ :ann |\x0a \x09self classSelected: self model selectedClass ].\x0a anAnnouncer on: HLProtocolSelected do: [ :ann |\x0a \x09self focus ]",
  1166. messageSends: ["on:do:", "classSelected:", "item", "selectedClass", "model", "focus"],
  1167. referencedClasses: ["HLClassSelected", "HLShowInstanceToggled", "HLProtocolSelected"]
  1168. }),
  1169. smalltalk.HLProtocolsListWidget);
  1170. smalltalk.addClass('HLBrowserModel', smalltalk.Object, ['announcer', 'environment', 'selectedPackage', 'selectedClass', 'selectedProtocol', 'selectedMethod', 'showInstance', 'showComment'], 'Helios-Browser');
  1171. smalltalk.addMethod(
  1172. "_allProtocol",
  1173. smalltalk.method({
  1174. selector: "allProtocol",
  1175. category: 'accessing',
  1176. fn: function () {
  1177. var self = this;
  1178. return "-- All --";
  1179. },
  1180. args: [],
  1181. source: "allProtocol\x0a\x09^ '-- All --'",
  1182. messageSends: [],
  1183. referencedClasses: []
  1184. }),
  1185. smalltalk.HLBrowserModel);
  1186. smalltalk.addMethod(
  1187. "_announcer",
  1188. smalltalk.method({
  1189. selector: "announcer",
  1190. category: 'announcements',
  1191. fn: function () {
  1192. var self = this;
  1193. var $1;
  1194. if (($receiver = self['@announcer']) == nil || $receiver == undefined) {
  1195. self['@announcer'] = smalltalk.send(smalltalk.Announcer || Announcer, "_new", []);
  1196. $1 = self['@announcer'];
  1197. } else {
  1198. $1 = self['@announcer'];
  1199. }
  1200. return $1;
  1201. },
  1202. args: [],
  1203. source: "announcer\x0a\x09^ announcer ifNil: [ announcer := Announcer new ]",
  1204. messageSends: ["ifNil:", "new"],
  1205. referencedClasses: ["Announcer"]
  1206. }),
  1207. smalltalk.HLBrowserModel);
  1208. smalltalk.addMethod(
  1209. "_environment",
  1210. smalltalk.method({
  1211. selector: "environment",
  1212. category: 'accessing',
  1213. fn: function () {
  1214. var self = this;
  1215. var $1;
  1216. if (($receiver = self['@environment']) == nil || $receiver == undefined) {
  1217. self['@environment'] = smalltalk.send(smalltalk.Smalltalk || Smalltalk, "_current", []);
  1218. $1 = self['@environment'];
  1219. } else {
  1220. $1 = self['@environment'];
  1221. }
  1222. return $1;
  1223. },
  1224. args: [],
  1225. source: "environment\x0a\x09^ environment ifNil: [ environment := Smalltalk current ]",
  1226. messageSends: ["ifNil:", "current"],
  1227. referencedClasses: ["Smalltalk"]
  1228. }),
  1229. smalltalk.HLBrowserModel);
  1230. smalltalk.addMethod(
  1231. "_environment_",
  1232. smalltalk.method({
  1233. selector: "environment:",
  1234. category: 'accessing',
  1235. fn: function (anEnvironment) {
  1236. var self = this;
  1237. self['@environment'] = anEnvironment;
  1238. return self;
  1239. },
  1240. args: ["anEnvironment"],
  1241. source: "environment: anEnvironment\x0a\x09environment := anEnvironment",
  1242. messageSends: [],
  1243. referencedClasses: []
  1244. }),
  1245. smalltalk.HLBrowserModel);
  1246. smalltalk.addMethod(
  1247. "_packages",
  1248. smalltalk.method({
  1249. selector: "packages",
  1250. category: 'accessing',
  1251. fn: function () {
  1252. var self = this;
  1253. var $1;
  1254. $1 = smalltalk.send(smalltalk.send(self, "_environment", []), "_packages", []);
  1255. return $1;
  1256. },
  1257. args: [],
  1258. source: "packages\x0a\x09^ self environment packages",
  1259. messageSends: ["packages", "environment"],
  1260. referencedClasses: []
  1261. }),
  1262. smalltalk.HLBrowserModel);
  1263. smalltalk.addMethod(
  1264. "_selectedClass",
  1265. smalltalk.method({
  1266. selector: "selectedClass",
  1267. category: 'accessing',
  1268. fn: function () {
  1269. var self = this;
  1270. return self['@selectedClass'];
  1271. },
  1272. args: [],
  1273. source: "selectedClass\x0a\x09^ selectedClass",
  1274. messageSends: [],
  1275. referencedClasses: []
  1276. }),
  1277. smalltalk.HLBrowserModel);
  1278. smalltalk.addMethod(
  1279. "_selectedClass_",
  1280. smalltalk.method({
  1281. selector: "selectedClass:",
  1282. category: 'accessing',
  1283. fn: function (aClass){
  1284. var self=this;
  1285. var $1,$2,$3;
  1286. $1=smalltalk.send(self["@selectedClass"],"__eq",[aClass]);
  1287. if(! smalltalk.assert($1)){
  1288. if(($receiver = aClass) == nil || $receiver == undefined){
  1289. self["@selectedClass"]=nil;
  1290. self["@selectedClass"];
  1291. } else {
  1292. $2=smalltalk.send(self,"_showInstance",[]);
  1293. if(smalltalk.assert($2)){
  1294. self["@selectedClass"]=smalltalk.send(aClass,"_theNonMetaClass",[]);
  1295. self["@selectedClass"];
  1296. } else {
  1297. self["@selectedClass"]=smalltalk.send(aClass,"_theMetaClass",[]);
  1298. self["@selectedClass"];
  1299. };
  1300. };
  1301. smalltalk.send(self,"_selectedMethod_",[nil]);
  1302. $3=smalltalk.send(self,"_selectedProtocol_",[nil]);
  1303. $3;
  1304. };
  1305. smalltalk.send(smalltalk.send(self,"_announcer",[]),"_announce_",[smalltalk.send((smalltalk.HLClassSelected || HLClassSelected),"_on_",[smalltalk.send(self,"_selectedClass",[])])]);
  1306. return self},
  1307. args: ["aClass"],
  1308. source: "selectedClass: aClass\x0a\x09selectedClass = aClass ifFalse: [\x0a\x09\x09aClass \x0a \x09\x09ifNil: [ selectedClass := nil ]\x0a \x09\x09ifNotNil: [\x0a\x09\x09\x09\x09self showInstance \x0a \x09\x09\x09\x09ifTrue: [ selectedClass := aClass theNonMetaClass ]\x0a \x09\x09\x09\x09ifFalse: [ selectedClass := aClass theMetaClass ] ].\x0a \x0a \x09\x09self \x0a \x09\x09selectedMethod: nil;\x0a \x09 \x09selectedProtocol: nil ].\x0a \x0a self announcer announce: (HLClassSelected on: self selectedClass)",
  1309. messageSends: ["ifFalse:", "ifNil:ifNotNil:", "ifTrue:ifFalse:", "theNonMetaClass", "theMetaClass", "showInstance", "selectedMethod:", "selectedProtocol:", "=", "announce:", "on:", "selectedClass", "announcer"],
  1310. referencedClasses: ["HLClassSelected"]
  1311. }),
  1312. smalltalk.HLBrowserModel);
  1313. smalltalk.addMethod(
  1314. "_selectedMethod",
  1315. smalltalk.method({
  1316. selector: "selectedMethod",
  1317. category: 'accessing',
  1318. fn: function () {
  1319. var self = this;
  1320. return self['@selectedMethod'];
  1321. },
  1322. args: [],
  1323. source: "selectedMethod\x0a\x09^ selectedMethod",
  1324. messageSends: [],
  1325. referencedClasses: []
  1326. }),
  1327. smalltalk.HLBrowserModel);
  1328. smalltalk.addMethod(
  1329. "_selectedMethod_",
  1330. smalltalk.method({
  1331. selector: "selectedMethod:",
  1332. category: 'accessing',
  1333. fn: function (aCompiledMethod){
  1334. var self=this;
  1335. var $1;
  1336. $1=smalltalk.send(self["@selectedMethod"],"__eq",[aCompiledMethod]);
  1337. if(! smalltalk.assert($1)){
  1338. self["@selectedMethod"]=aCompiledMethod;
  1339. self["@selectedMethod"];
  1340. };
  1341. smalltalk.send(smalltalk.send(self,"_announcer",[]),"_announce_",[smalltalk.send((smalltalk.HLMethodSelected || HLMethodSelected),"_on_",[aCompiledMethod])]);
  1342. return self},
  1343. args: ["aCompiledMethod"],
  1344. source: "selectedMethod: aCompiledMethod\x0a\x09selectedMethod = aCompiledMethod ifFalse: [\x0a\x09\x09selectedMethod := aCompiledMethod ].\x0a \x0a self announcer announce: (HLMethodSelected on: aCompiledMethod)",
  1345. messageSends: ["ifFalse:", "=", "announce:", "on:", "announcer"],
  1346. referencedClasses: ["HLMethodSelected"]
  1347. }),
  1348. smalltalk.HLBrowserModel);
  1349. smalltalk.addMethod(
  1350. "_selectedPackage",
  1351. smalltalk.method({
  1352. selector: "selectedPackage",
  1353. category: 'accessing',
  1354. fn: function () {
  1355. var self = this;
  1356. return self['@selectedPackage'];
  1357. },
  1358. args: [],
  1359. source: "selectedPackage\x0a\x09^ selectedPackage",
  1360. messageSends: [],
  1361. referencedClasses: []
  1362. }),
  1363. smalltalk.HLBrowserModel);
  1364. smalltalk.addMethod(
  1365. "_selectedPackage_",
  1366. smalltalk.method({
  1367. selector: "selectedPackage:",
  1368. category: 'accessing',
  1369. fn: function (aPackage){
  1370. var self=this;
  1371. var $1;
  1372. $1=smalltalk.send(self["@selectedPackage"],"__eq",[aPackage]);
  1373. if(! smalltalk.assert($1)){
  1374. self["@selectedPackage"]=aPackage;
  1375. self["@selectedPackage"];
  1376. smalltalk.send(self,"_selectedClass_",[nil]);
  1377. };
  1378. smalltalk.send(smalltalk.send(self,"_announcer",[]),"_announce_",[smalltalk.send((smalltalk.HLPackageSelected || HLPackageSelected),"_on_",[aPackage])]);
  1379. return self},
  1380. args: ["aPackage"],
  1381. source: "selectedPackage: aPackage\x0a\x09selectedPackage = aPackage ifFalse: [\x0a\x09\x09selectedPackage := aPackage.\x0a \x09self selectedClass: nil ].\x0a \x0a self announcer announce: (HLPackageSelected on: aPackage)",
  1382. messageSends: ["ifFalse:", "selectedClass:", "=", "announce:", "on:", "announcer"],
  1383. referencedClasses: ["HLPackageSelected"]
  1384. }),
  1385. smalltalk.HLBrowserModel);
  1386. smalltalk.addMethod(
  1387. "_selectedProtocol",
  1388. smalltalk.method({
  1389. selector: "selectedProtocol",
  1390. category: 'accessing',
  1391. fn: function () {
  1392. var self = this;
  1393. return self['@selectedProtocol'];
  1394. },
  1395. args: [],
  1396. source: "selectedProtocol\x0a\x09^ selectedProtocol",
  1397. messageSends: [],
  1398. referencedClasses: []
  1399. }),
  1400. smalltalk.HLBrowserModel);
  1401. smalltalk.addMethod(
  1402. "_selectedProtocol_",
  1403. smalltalk.method({
  1404. selector: "selectedProtocol:",
  1405. category: 'accessing',
  1406. fn: function (aString){
  1407. var self=this;
  1408. var $1;
  1409. $1=smalltalk.send(self["@selectedProtocol"],"__eq",[aString]);
  1410. if(! smalltalk.assert($1)){
  1411. self["@selectedProtocol"]=aString;
  1412. self["@selectedProtocol"];
  1413. smalltalk.send(self,"_selectedMethod_",[nil]);
  1414. };
  1415. smalltalk.send(smalltalk.send(self,"_announcer",[]),"_announce_",[smalltalk.send((smalltalk.HLProtocolSelected || HLProtocolSelected),"_on_",[aString])]);
  1416. return self},
  1417. args: ["aString"],
  1418. source: "selectedProtocol: aString\x0a\x09selectedProtocol = aString ifFalse: [\x0a \x09selectedProtocol := aString.\x0a \x09self selectedMethod: nil ].\x0a \x0a self announcer announce: (HLProtocolSelected on: aString)",
  1419. messageSends: ["ifFalse:", "selectedMethod:", "=", "announce:", "on:", "announcer"],
  1420. referencedClasses: ["HLProtocolSelected"]
  1421. }),
  1422. smalltalk.HLBrowserModel);
  1423. smalltalk.addMethod(
  1424. "_showComment",
  1425. smalltalk.method({
  1426. selector: "showComment",
  1427. category: 'accessing',
  1428. fn: function () {
  1429. var self = this;
  1430. var $1;
  1431. if (($receiver = self['@showComment']) == nil || $receiver == undefined) {
  1432. $1 = false;
  1433. } else {
  1434. $1 = self['@showComment'];
  1435. }
  1436. return $1;
  1437. },
  1438. args: [],
  1439. source: "showComment\x0a\x09^ showComment ifNil: [ false ]",
  1440. messageSends: ["ifNil:"],
  1441. referencedClasses: []
  1442. }),
  1443. smalltalk.HLBrowserModel);
  1444. smalltalk.addMethod(
  1445. "_showComment_",
  1446. smalltalk.method({
  1447. selector: "showComment:",
  1448. category: 'accessing',
  1449. fn: function (aBoolean) {
  1450. var self = this;
  1451. self['@showComment'] = aBoolean;
  1452. smalltalk.send(smalltalk.send(self, "_announcer", []), "_announce_", [smalltalk.send(smalltalk.HLShowCommentToggled || HLShowCommentToggled, "_new", [])]);
  1453. return self;
  1454. },
  1455. args: ["aBoolean"],
  1456. source: "showComment: aBoolean\x0a\x09showComment := aBoolean.\x0a \x0a self announcer announce: HLShowCommentToggled new",
  1457. messageSends: ["announce:", "new", "announcer"],
  1458. referencedClasses: ["HLShowCommentToggled"]
  1459. }),
  1460. smalltalk.HLBrowserModel);
  1461. smalltalk.addMethod(
  1462. "_showInstance",
  1463. smalltalk.method({
  1464. selector: "showInstance",
  1465. category: 'accessing',
  1466. fn: function () {
  1467. var self = this;
  1468. var $1;
  1469. if (($receiver = self['@showInstance']) == nil ||
  1470. $receiver == undefined) {
  1471. $1 = true;
  1472. } else {
  1473. $1 = self['@showInstance'];
  1474. }
  1475. return $1;
  1476. },
  1477. args: [],
  1478. source: "showInstance\x0a\x09^ showInstance ifNil: [ true ]",
  1479. messageSends: ["ifNil:"],
  1480. referencedClasses: []
  1481. }),
  1482. smalltalk.HLBrowserModel);
  1483. smalltalk.addMethod(
  1484. "_showInstance_",
  1485. smalltalk.method({
  1486. selector: "showInstance:",
  1487. category: 'accessing',
  1488. fn: function (aBoolean) {
  1489. var self = this;
  1490. var $1, $2;
  1491. self['@showInstance'] = aBoolean;
  1492. $1 = smalltalk.send(self, "_selectedClass", []);
  1493. if (($receiver = $1) == nil || $receiver == undefined) {
  1494. } else {
  1495. if (smalltalk.assert(aBoolean)) {
  1496. $2 = smalltalk.send(smalltalk.send(self, "_selectedClass", []), "_theNonMetaClass", []);
  1497. } else {
  1498. $2 = smalltalk.send(smalltalk.send(self, "_selectedClass", []), "_theMetaClass", []);
  1499. }
  1500. smalltalk.send(self, "_selectedClass_", [$2]);
  1501. }
  1502. smalltalk.send(smalltalk.send(self, "_announcer", []), "_announce_", [smalltalk.send(smalltalk.HLShowInstanceToggled || HLShowInstanceToggled, "_new", [])]);
  1503. return self;
  1504. },
  1505. args: ["aBoolean"],
  1506. source: "showInstance: aBoolean\x0a\x09showInstance := aBoolean.\x0a \x0a self selectedClass ifNotNil: [\x0a \x09self selectedClass: (aBoolean\x0a \x09\x09ifTrue: [self selectedClass theNonMetaClass ]\x0a \x09 \x09ifFalse: [ self selectedClass theMetaClass ]) ].\x0a \x0a self announcer announce: HLShowInstanceToggled new",
  1507. messageSends: ["ifNotNil:", "selectedClass:", "ifTrue:ifFalse:", "theNonMetaClass", "selectedClass", "theMetaClass", "announce:", "new", "announcer"],
  1508. referencedClasses: ["HLShowInstanceToggled"]
  1509. }),
  1510. smalltalk.HLBrowserModel);
  1511. smalltalk.addMethod(
  1512. "_subscribe_",
  1513. smalltalk.method({
  1514. selector: "subscribe:",
  1515. category: 'announcements',
  1516. fn: function (aWidget) {
  1517. var self = this;
  1518. smalltalk.send(aWidget, "_subscribeTo_", [smalltalk.send(self, "_announcer", [])]);
  1519. return self;
  1520. },
  1521. args: ["aWidget"],
  1522. source: "subscribe: aWidget\x0a\x09aWidget subscribeTo: self announcer",
  1523. messageSends: ["subscribeTo:", "announcer"],
  1524. referencedClasses: []
  1525. }),
  1526. smalltalk.HLBrowserModel);
  1527. smalltalk.addClass('HLBrowserSourceWidget', smalltalk.HLWidget, ['model', 'sourceArea'], 'Helios-Browser');
  1528. smalltalk.addMethod(
  1529. "_classSelected_",
  1530. smalltalk.method({
  1531. selector: "classSelected:",
  1532. category: 'actions',
  1533. fn: function (aClass) {
  1534. var self = this;
  1535. var $1;
  1536. if (($receiver = aClass) == nil || $receiver == undefined) {
  1537. $1 = smalltalk.send(self, "_contents_", [""]);
  1538. return $1;
  1539. } else {
  1540. }
  1541. smalltalk.send(self, "_contents_", [smalltalk.send(aClass, "_definition", [])]);
  1542. return self;
  1543. },
  1544. args: ["aClass"],
  1545. source: "classSelected: aClass\x0a\x09aClass ifNil: [ ^ self contents: '' ].\x0a \x0a self contents: aClass definition",
  1546. messageSends: ["ifNil:", "contents:", "definition"],
  1547. referencedClasses: []
  1548. }),
  1549. smalltalk.HLBrowserSourceWidget);
  1550. smalltalk.addMethod(
  1551. "_contents",
  1552. smalltalk.method({
  1553. selector: "contents",
  1554. category: 'accessing',
  1555. fn: function () {
  1556. var self = this;
  1557. var $1;
  1558. $1 = smalltalk.send(smalltalk.send(self, "_sourceArea", []), "_contents", []);
  1559. return $1;
  1560. },
  1561. args: [],
  1562. source: "contents\x0a\x09^ self sourceArea contents",
  1563. messageSends: ["contents", "sourceArea"],
  1564. referencedClasses: []
  1565. }),
  1566. smalltalk.HLBrowserSourceWidget);
  1567. smalltalk.addMethod(
  1568. "_contents_",
  1569. smalltalk.method({
  1570. selector: "contents:",
  1571. category: 'accessing',
  1572. fn: function (aString) {
  1573. var self = this;
  1574. smalltalk.send(smalltalk.send(self, "_sourceArea", []), "_contents_", [aString]);
  1575. return self;
  1576. },
  1577. args: ["aString"],
  1578. source: "contents: aString\x0a\x09self sourceArea contents: aString",
  1579. messageSends: ["contents:", "sourceArea"],
  1580. referencedClasses: []
  1581. }),
  1582. smalltalk.HLBrowserSourceWidget);
  1583. smalltalk.addMethod(
  1584. "_methodSelected_",
  1585. smalltalk.method({
  1586. selector: "methodSelected:",
  1587. category: 'actions',
  1588. fn: function (aCompiledMethod) {
  1589. var self = this;
  1590. var $1;
  1591. if (($receiver = aCompiledMethod) == nil || $receiver == undefined) {
  1592. $1 = smalltalk.send(self, "_contents_", [""]);
  1593. return $1;
  1594. } else {
  1595. }
  1596. smalltalk.send(self, "_contents_", [smalltalk.send(aCompiledMethod, "_source", [])]);
  1597. return self;
  1598. },
  1599. args: ["aCompiledMethod"],
  1600. source: "methodSelected: aCompiledMethod\x0a\x09aCompiledMethod ifNil: [ ^ self contents: '' ].\x0a \x0a self contents: aCompiledMethod source",
  1601. messageSends: ["ifNil:", "contents:", "source"],
  1602. referencedClasses: []
  1603. }),
  1604. smalltalk.HLBrowserSourceWidget);
  1605. smalltalk.addMethod(
  1606. "_model",
  1607. smalltalk.method({
  1608. selector: "model",
  1609. category: 'accessing',
  1610. fn: function () {
  1611. var self = this;
  1612. return self['@model'];
  1613. },
  1614. args: [],
  1615. source: "model\x0a\x09^ model",
  1616. messageSends: [],
  1617. referencedClasses: []
  1618. }),
  1619. smalltalk.HLBrowserSourceWidget);
  1620. smalltalk.addMethod(
  1621. "_model_",
  1622. smalltalk.method({
  1623. selector: "model:",
  1624. category: 'accessing',
  1625. fn: function (aBrowserModel) {
  1626. var self = this;
  1627. self['@model'] = aBrowserModel;
  1628. smalltalk.send(self['@model'], "_subscribe_", [self]);
  1629. return self;
  1630. },
  1631. args: ["aBrowserModel"],
  1632. source: "model: aBrowserModel\x0a\x09\x22TODO: unsubscribe from previous model\x22\x0a \x0a\x09model := aBrowserModel.\x0a model subscribe: self",
  1633. messageSends: ["subscribe:"],
  1634. referencedClasses: []
  1635. }),
  1636. smalltalk.HLBrowserSourceWidget);
  1637. smalltalk.addMethod(
  1638. "_protocolSelected_",
  1639. smalltalk.method({
  1640. selector: "protocolSelected:",
  1641. category: 'actions',
  1642. fn: function (aString) {
  1643. var self = this;
  1644. var $1, $2;
  1645. $1 = smalltalk.send(smalltalk.send(self, "_model", []), "_selectedClass", []);
  1646. if (($receiver = $1) == nil || $receiver == undefined) {
  1647. $2 = smalltalk.send(self, "_contents_", [""]);
  1648. return $2;
  1649. } else {
  1650. }
  1651. smalltalk.send(self, "_contents_", [smalltalk.send(smalltalk.send(smalltalk.send(self, "_model", []), "_selectedClass", []), "_definition", [])]);
  1652. return self;
  1653. },
  1654. args: ["aString"],
  1655. source: "protocolSelected: aString\x0a\x09self model selectedClass ifNil: [ ^ self contents: '' ].\x0a \x0a self contents: self model selectedClass definition",
  1656. messageSends: ["ifNil:", "contents:", "selectedClass", "model", "definition"],
  1657. referencedClasses: []
  1658. }),
  1659. smalltalk.HLBrowserSourceWidget);
  1660. smalltalk.addMethod(
  1661. "_renderContentOn_",
  1662. smalltalk.method({
  1663. selector: "renderContentOn:",
  1664. category: 'rendering',
  1665. fn: function (html) {
  1666. var self = this;
  1667. smalltalk.send(smalltalk.send(self, "_sourceArea", []), "_renderOn_", [html]);
  1668. return self;
  1669. },
  1670. args: ["html"],
  1671. source: "renderContentOn: html\x0a\x09self sourceArea renderOn: html",
  1672. messageSends: ["renderOn:", "sourceArea"],
  1673. referencedClasses: []
  1674. }),
  1675. smalltalk.HLBrowserSourceWidget);
  1676. smalltalk.addMethod(
  1677. "_sourceArea",
  1678. smalltalk.method({
  1679. selector: "sourceArea",
  1680. category: 'accessing',
  1681. fn: function () {
  1682. var self = this;
  1683. var $1;
  1684. if (($receiver = self['@sourceArea']) == nil || $receiver == undefined) {
  1685. self['@sourceArea'] = smalltalk.send(smalltalk.HLSourceArea || HLSourceArea, "_new", []);
  1686. $1 = self['@sourceArea'];
  1687. } else {
  1688. $1 = self['@sourceArea'];
  1689. }
  1690. return $1;
  1691. },
  1692. args: [],
  1693. source: "sourceArea\x0a\x09^ sourceArea ifNil: [ sourceArea := HLSourceArea new ]",
  1694. messageSends: ["ifNil:", "new"],
  1695. referencedClasses: ["HLSourceArea"]
  1696. }),
  1697. smalltalk.HLBrowserSourceWidget);
  1698. smalltalk.addMethod(
  1699. "_subscribeTo_",
  1700. smalltalk.method({
  1701. selector: "subscribeTo:",
  1702. category: 'announcements',
  1703. fn: function (anAnnouncer) {
  1704. var self = this;
  1705. smalltalk.send(anAnnouncer, "_on_do_", [smalltalk.HLMethodSelected || HLMethodSelected, function (ann) {return smalltalk.send(self, "_methodSelected_", [smalltalk.send(ann, "_item", [])]);}]);
  1706. smalltalk.send(anAnnouncer, "_on_do_", [smalltalk.HLClassSelected || HLClassSelected, function (ann) {return smalltalk.send(self, "_classSelected_", [smalltalk.send(ann, "_item", [])]);}]);
  1707. smalltalk.send(anAnnouncer, "_on_do_", [smalltalk.HLProtocolSelected || HLProtocolSelected, function (ann) {return smalltalk.send(self, "_protocolSelected_", [smalltalk.send(ann, "_item", [])]);}]);
  1708. return self;
  1709. },
  1710. args: ["anAnnouncer"],
  1711. source: "subscribeTo: anAnnouncer\x0a\x09anAnnouncer on: HLMethodSelected do: [ :ann |\x0a \x09self methodSelected: ann item ].\x0a anAnnouncer on: HLClassSelected do: [ :ann |\x0a \x09self classSelected: ann item ].\x0a anAnnouncer on: HLProtocolSelected do: [ :ann |\x0a \x09self protocolSelected: ann item ]",
  1712. messageSends: ["on:do:", "methodSelected:", "item", "classSelected:", "protocolSelected:"],
  1713. referencedClasses: ["HLMethodSelected", "HLClassSelected", "HLProtocolSelected"]
  1714. }),
  1715. smalltalk.HLBrowserSourceWidget);
  1716. smalltalk.addMethod(
  1717. "_on_",
  1718. smalltalk.method({
  1719. selector: "on:",
  1720. category: 'instance creation',
  1721. fn: function (aBrowserModel) {
  1722. var self = this;
  1723. var $2, $3, $1;
  1724. $2 = smalltalk.send(self, "_new", []);
  1725. smalltalk.send($2, "_model_", [aBrowserModel]);
  1726. $3 = smalltalk.send($2, "_yourself", []);
  1727. $1 = $3;
  1728. return $1;
  1729. },
  1730. args: ["aBrowserModel"],
  1731. source: "on: aBrowserModel\x0a\x09^ self new\x0a \x09model: aBrowserModel;\x0a yourself",
  1732. messageSends: ["model:", "new", "yourself"],
  1733. referencedClasses: []
  1734. }),
  1735. smalltalk.HLBrowserSourceWidget.klass);