Helios-Workspace.js 32 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150
  1. smalltalk.addPackage('Helios-Workspace', {});
  2. smalltalk.addClass('HLCodeModel', smalltalk.Object, ['announcer', 'environment', 'receiver'], 'Helios-Workspace');
  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. if (($receiver = self['@announcer']) == nil || $receiver == undefined) {
  12. self['@announcer'] = smalltalk.send(smalltalk.Announcer || Announcer, "_new", []);
  13. $1 = self['@announcer'];
  14. } else {
  15. $1 = self['@announcer'];
  16. }
  17. return $1;
  18. },
  19. args: [],
  20. source: "announcer\x0a\x09^ announcer ifNil: [ announcer := Announcer new ]",
  21. messageSends: ["ifNil:", "new"],
  22. referencedClasses: ["Announcer"]
  23. }),
  24. smalltalk.HLCodeModel);
  25. smalltalk.addMethod(
  26. "_defaultReceiver",
  27. smalltalk.method({
  28. selector: "defaultReceiver",
  29. category: 'defaults',
  30. fn: function () {
  31. var self = this;
  32. var $1;
  33. $1 = smalltalk.send(smalltalk.DoIt || DoIt, "_new", []);
  34. return $1;
  35. },
  36. args: [],
  37. source: "defaultReceiver\x0a\x09^ DoIt new",
  38. messageSends: ["new"],
  39. referencedClasses: ["DoIt"]
  40. }),
  41. smalltalk.HLCodeModel);
  42. smalltalk.addMethod(
  43. "_doIt_",
  44. smalltalk.method({
  45. selector: "doIt:",
  46. category: 'actions',
  47. fn: function (someCode) {
  48. var self = this;
  49. var $1;
  50. $1 = smalltalk.send(smalltalk.send(self, "_environment", []), "_eval_on_", [someCode, smalltalk.send(self, "_receiver", [])]);
  51. return $1;
  52. },
  53. args: ["someCode"],
  54. source: "doIt: someCode\x0a\x0a\x09^ self environment eval: someCode on: self receiver",
  55. messageSends: ["eval:on:", "receiver", "environment"],
  56. referencedClasses: []
  57. }),
  58. smalltalk.HLCodeModel);
  59. smalltalk.addMethod(
  60. "_environment",
  61. smalltalk.method({
  62. selector: "environment",
  63. category: 'accessing',
  64. fn: function () {
  65. var self = this;
  66. var $1;
  67. if (($receiver = self['@environment']) == nil || $receiver == undefined) {
  68. $1 = smalltalk.send(smalltalk.send(smalltalk.HLManager || HLManager, "_current", []), "_environment", []);
  69. } else {
  70. $1 = self['@environment'];
  71. }
  72. return $1;
  73. },
  74. args: [],
  75. source: "environment\x0a\x09^ environment ifNil: [ HLManager current environment ]",
  76. messageSends: ["ifNil:", "environment", "current"],
  77. referencedClasses: ["HLManager"]
  78. }),
  79. smalltalk.HLCodeModel);
  80. smalltalk.addMethod(
  81. "_environment_",
  82. smalltalk.method({
  83. selector: "environment:",
  84. category: 'accessing',
  85. fn: function (anEnvironment) {
  86. var self = this;
  87. self['@environment'] = anEnvironment;
  88. return self;
  89. },
  90. args: ["anEnvironment"],
  91. source: "environment: anEnvironment\x0a\x09environment := anEnvironment",
  92. messageSends: [],
  93. referencedClasses: []
  94. }),
  95. smalltalk.HLCodeModel);
  96. smalltalk.addMethod(
  97. "_receiver",
  98. smalltalk.method({
  99. selector: "receiver",
  100. category: 'accessing',
  101. fn: function () {
  102. var self = this;
  103. var $1;
  104. if (($receiver = self['@receiver']) == nil || $receiver == undefined) {
  105. self['@receiver'] = smalltalk.send(self, "_defaultReceiver", []);
  106. $1 = self['@receiver'];
  107. } else {
  108. $1 = self['@receiver'];
  109. }
  110. return $1;
  111. },
  112. args: [],
  113. source: "receiver\x0a\x09^ receiver ifNil: [ receiver := self defaultReceiver ]",
  114. messageSends: ["ifNil:", "defaultReceiver"],
  115. referencedClasses: []
  116. }),
  117. smalltalk.HLCodeModel);
  118. smalltalk.addMethod(
  119. "_receiver_",
  120. smalltalk.method({
  121. selector: "receiver:",
  122. category: 'accessing',
  123. fn: function (anObject) {
  124. var self = this;
  125. self['@receiver'] = anObject;
  126. return self;
  127. },
  128. args: ["anObject"],
  129. source: "receiver: anObject\x0a\x09receiver := anObject",
  130. messageSends: [],
  131. referencedClasses: []
  132. }),
  133. smalltalk.HLCodeModel);
  134. smalltalk.addMethod(
  135. "_subscribe_",
  136. smalltalk.method({
  137. selector: "subscribe:",
  138. category: 'actions',
  139. fn: function (aWidget) {
  140. var self = this;
  141. smalltalk.send(aWidget, "_subscribeTo_", [smalltalk.send(self, "_announcer", [])]);
  142. return self;
  143. },
  144. args: ["aWidget"],
  145. source: "subscribe: aWidget\x0a\x09aWidget subscribeTo: self announcer",
  146. messageSends: ["subscribeTo:", "announcer"],
  147. referencedClasses: []
  148. }),
  149. smalltalk.HLCodeModel);
  150. smalltalk.addMethod(
  151. "_on_",
  152. smalltalk.method({
  153. selector: "on:",
  154. category: 'actions',
  155. fn: function (anEnvironment) {
  156. var self = this;
  157. var $2, $3, $1;
  158. $2 = smalltalk.send(self, "_new", []);
  159. smalltalk.send($2, "_environment_", [anEnvironment]);
  160. $3 = smalltalk.send($2, "_yourself", []);
  161. $1 = $3;
  162. return $1;
  163. },
  164. args: ["anEnvironment"],
  165. source: "on: anEnvironment\x0a\x0a\x09^ self new\x0a \x09environment: anEnvironment;\x0a yourself",
  166. messageSends: ["environment:", "new", "yourself"],
  167. referencedClasses: []
  168. }),
  169. smalltalk.HLCodeModel.klass);
  170. smalltalk.addClass('HLCodeWidget', smalltalk.HLWidget, ['model', 'wrapper', 'code', 'editor'], 'Helios-Workspace');
  171. smalltalk.addMethod(
  172. "_announcer",
  173. smalltalk.method({
  174. selector: "announcer",
  175. category: 'accessing',
  176. fn: function () {
  177. var self = this;
  178. var $1;
  179. $1 = smalltalk.send(smalltalk.send(self, "_model", []), "_announcer", []);
  180. return $1;
  181. },
  182. args: [],
  183. source: "announcer\x0a\x09^ self model announcer",
  184. messageSends: ["announcer", "model"],
  185. referencedClasses: []
  186. }),
  187. smalltalk.HLCodeWidget);
  188. smalltalk.addMethod(
  189. "_clear",
  190. smalltalk.method({
  191. selector: "clear",
  192. category: 'actions',
  193. fn: function () {
  194. var self = this;
  195. smalltalk.send(self, "_val_", [""]);
  196. return self;
  197. },
  198. args: [],
  199. source: "clear\x0a self val: ''",
  200. messageSends: ["val:"],
  201. referencedClasses: []
  202. }),
  203. smalltalk.HLCodeWidget);
  204. smalltalk.addMethod(
  205. "_contents",
  206. smalltalk.method({
  207. selector: "contents",
  208. category: 'accessing',
  209. fn: function () {
  210. var self = this;
  211. var $1;
  212. $1 = smalltalk.send(self['@editor'], "_getValue", []);
  213. return $1;
  214. },
  215. args: [],
  216. source: "contents\x0a\x09^ editor getValue",
  217. messageSends: ["getValue"],
  218. referencedClasses: []
  219. }),
  220. smalltalk.HLCodeWidget);
  221. smalltalk.addMethod(
  222. "_contents_",
  223. smalltalk.method({
  224. selector: "contents:",
  225. category: 'accessing',
  226. fn: function (aString) {
  227. var self = this;
  228. var $1;
  229. $1 = smalltalk.send(self['@editor'], "_setValue_", [aString]);
  230. return $1;
  231. },
  232. args: ["aString"],
  233. source: "contents: aString\x0a\x09^ editor setValue: aString",
  234. messageSends: ["setValue:"],
  235. referencedClasses: []
  236. }),
  237. smalltalk.HLCodeWidget);
  238. smalltalk.addMethod(
  239. "_currentLine",
  240. smalltalk.method({
  241. selector: "currentLine",
  242. category: 'accessing',
  243. fn: function () {
  244. var self = this;
  245. var $1;
  246. $1 = smalltalk.send(self['@editor'], "_getLine_", [smalltalk.send(smalltalk.send(self['@editor'], "_getCursor", []), "_line", [])]);
  247. return $1;
  248. },
  249. args: [],
  250. source: "currentLine\x0a ^editor getLine: (editor getCursor line)",
  251. messageSends: ["getLine:", "line", "getCursor"],
  252. referencedClasses: []
  253. }),
  254. smalltalk.HLCodeWidget);
  255. smalltalk.addMethod(
  256. "_currentLineOrSelection",
  257. smalltalk.method({
  258. selector: "currentLineOrSelection",
  259. category: 'accessing',
  260. fn: function () {
  261. var self = this;
  262. var $2, $1;
  263. $2 = smalltalk.send(self['@editor'], "_somethingSelected", []);
  264. if (smalltalk.assert($2)) {
  265. $1 = smalltalk.send(self, "_selection", []);
  266. } else {
  267. $1 = smalltalk.send(self, "_currentLine", []);
  268. }
  269. return $1;
  270. },
  271. args: [],
  272. source: "currentLineOrSelection\x0a ^editor somethingSelected\x0a\x09\x09ifFalse: [self currentLine]\x0a\x09\x09ifTrue: [self selection]",
  273. messageSends: ["ifFalse:ifTrue:", "currentLine", "selection", "somethingSelected"],
  274. referencedClasses: []
  275. }),
  276. smalltalk.HLCodeWidget);
  277. smalltalk.addMethod(
  278. "_doIt",
  279. smalltalk.method({
  280. selector: "doIt",
  281. category: 'actions',
  282. fn: function () {
  283. var self = this;
  284. var result;
  285. smalltalk.send(smalltalk.send(self, "_announcer", []), "_announce_", [smalltalk.send(smalltalk.HLDoItRequested || HLDoItRequested, "_on_", [self['@model']])]);
  286. result = smalltalk.send(self['@model'], "_doIt_", [smalltalk.send(self, "_currentLineOrSelection", [])]);
  287. smalltalk.send(smalltalk.send(self, "_announcer", []), "_announce_", [smalltalk.send(smalltalk.HLDoItExecuted || HLDoItExecuted, "_on_", [self['@model']])]);
  288. return result;
  289. },
  290. args: [],
  291. source: "doIt\x0a\x09| result |\x0a\x0a\x09self announcer announce: (HLDoItRequested on: model).\x0a\x0a\x09result:= model doIt: self currentLineOrSelection.\x0a\x0a\x09self announcer announce: (HLDoItExecuted on: model).\x0a\x0a\x09^ result ",
  292. messageSends: ["announce:", "on:", "announcer", "doIt:", "currentLineOrSelection"],
  293. referencedClasses: ["HLDoItRequested", "HLDoItExecuted"]
  294. }),
  295. smalltalk.HLCodeWidget);
  296. smalltalk.addMethod(
  297. "_editor",
  298. smalltalk.method({
  299. selector: "editor",
  300. category: 'actions',
  301. fn: function () {
  302. var self = this;
  303. return self['@editor'];
  304. },
  305. args: [],
  306. source: "editor\x0a\x09^editor",
  307. messageSends: [],
  308. referencedClasses: []
  309. }),
  310. smalltalk.HLCodeWidget);
  311. smalltalk.addMethod(
  312. "_focus",
  313. smalltalk.method({
  314. selector: "focus",
  315. category: 'actions',
  316. fn: function () {
  317. var self = this;
  318. smalltalk.send(smalltalk.send(self, "_editor", []), "_focus", []);
  319. return self;
  320. },
  321. args: [],
  322. source: "focus\x0a self editor focus",
  323. messageSends: ["focus", "editor"],
  324. referencedClasses: []
  325. }),
  326. smalltalk.HLCodeWidget);
  327. smalltalk.addMethod(
  328. "_inspectIt",
  329. smalltalk.method({
  330. selector: "inspectIt",
  331. category: 'actions',
  332. fn: function () {
  333. var self = this;
  334. var newInspector;
  335. smalltalk.send(smalltalk.send(self, "_announcer", []), "_announce_", [smalltalk.send(smalltalk.HLInspectItRequested || HLInspectItRequested, "_on_", [self['@model']])]);
  336. newInspector = smalltalk.send(self, "_makeInspectorOn_", [smalltalk.send(self, "_doIt", [])]);
  337. smalltalk.send(newInspector, "_open", []);
  338. return self;
  339. },
  340. args: [],
  341. source: "inspectIt\x0a\x0a\x09| newInspector |\x0a \x0a\x09self announcer announce: (HLInspectItRequested on: model).\x0a\x09newInspector := self makeInspectorOn: self doIt.\x0a\x09newInspector open",
  342. messageSends: ["announce:", "on:", "announcer", "makeInspectorOn:", "doIt", "open"],
  343. referencedClasses: ["HLInspectItRequested"]
  344. }),
  345. smalltalk.HLCodeWidget);
  346. smalltalk.addMethod(
  347. "_makeInspectorOn_",
  348. smalltalk.method({
  349. selector: "makeInspectorOn:",
  350. category: 'actions',
  351. fn: function (anObject) {
  352. var self = this;
  353. var $2, $3, $1;
  354. $2 = smalltalk.send(smalltalk.HLInspector || HLInspector, "_new", []);
  355. smalltalk.send($2, "_inspect_", [anObject]);
  356. $3 = smalltalk.send($2, "_yourself", []);
  357. $1 = $3;
  358. return $1;
  359. },
  360. args: ["anObject"],
  361. source: "makeInspectorOn: anObject\x0a\x0a\x09^ HLInspector new \x0a\x09\x09inspect: anObject;\x0a\x09\x09yourself",
  362. messageSends: ["inspect:", "new", "yourself"],
  363. referencedClasses: ["HLInspector"]
  364. }),
  365. smalltalk.HLCodeWidget);
  366. smalltalk.addMethod(
  367. "_model",
  368. smalltalk.method({
  369. selector: "model",
  370. category: 'accessing',
  371. fn: function () {
  372. var self = this;
  373. var $1;
  374. if (($receiver = self['@model']) == nil || $receiver == undefined) {
  375. self['@model'] = smalltalk.send(smalltalk.HLCodeModel || HLCodeModel, "_new", []);
  376. $1 = self['@model'];
  377. } else {
  378. $1 = self['@model'];
  379. }
  380. return $1;
  381. },
  382. args: [],
  383. source: "model\x0a\x09^ model ifNil: [ model := HLCodeModel new ]",
  384. messageSends: ["ifNil:", "new"],
  385. referencedClasses: ["HLCodeModel"]
  386. }),
  387. smalltalk.HLCodeWidget);
  388. smalltalk.addMethod(
  389. "_model_",
  390. smalltalk.method({
  391. selector: "model:",
  392. category: 'accessing',
  393. fn: function (aModel) {
  394. var self = this;
  395. self['@model'] = aModel;
  396. return self;
  397. },
  398. args: ["aModel"],
  399. source: "model: aModel\x0a\x09model := aModel",
  400. messageSends: [],
  401. referencedClasses: []
  402. }),
  403. smalltalk.HLCodeWidget);
  404. smalltalk.addMethod(
  405. "_observeWrapper",
  406. smalltalk.method({
  407. selector: "observeWrapper",
  408. category: 'actions',
  409. fn: function () {
  410. var self = this;
  411. smalltalk.send(self['@wrapper'], "_onKeyDown_", [function (e) {return smalltalk.send(self, "_onKeyDown_", [e]);}]);
  412. return self;
  413. },
  414. args: [],
  415. source: "observeWrapper\x0a\x0a wrapper onKeyDown: [ :e | self onKeyDown: e ]\x0a",
  416. messageSends: ["onKeyDown:"],
  417. referencedClasses: []
  418. }),
  419. smalltalk.HLCodeWidget);
  420. smalltalk.addMethod(
  421. "_onDoIt",
  422. smalltalk.method({
  423. selector: "onDoIt",
  424. category: 'reactions',
  425. fn: function () {
  426. var self = this;
  427. smalltalk.send(self, "_doIt", []);
  428. return self;
  429. },
  430. args: [],
  431. source: "onDoIt\x0a\x09\x0a self doIt",
  432. messageSends: ["doIt"],
  433. referencedClasses: []
  434. }),
  435. smalltalk.HLCodeWidget);
  436. smalltalk.addMethod(
  437. "_onInspectIt",
  438. smalltalk.method({
  439. selector: "onInspectIt",
  440. category: 'reactions',
  441. fn: function () {
  442. var self = this;
  443. smalltalk.send(self, "_inspectIt", []);
  444. return self;
  445. },
  446. args: [],
  447. source: "onInspectIt\x0a\x0a\x09self inspectIt",
  448. messageSends: ["inspectIt"],
  449. referencedClasses: []
  450. }),
  451. smalltalk.HLCodeWidget);
  452. smalltalk.addMethod(
  453. "_onKeyDown_",
  454. smalltalk.method({
  455. selector: "onKeyDown:",
  456. category: 'reactions',
  457. fn: function (anEvent) {
  458. var self = this;
  459. if (anEvent.ctrlKey) {
  460. if (anEvent.keyCode === 80) {
  461. self._onPrintIt();
  462. anEvent.preventDefault();
  463. return false;
  464. }
  465. if (anEvent.keyCode === 68) {
  466. self._onDoIt();
  467. anEvent.preventDefault();
  468. return false;
  469. }
  470. if (anEvent.keyCode === 73) {
  471. self._onInspectIt();
  472. anEvent.preventDefault();
  473. return false;
  474. }
  475. }
  476. return self;
  477. },
  478. args: ["anEvent"],
  479. source: "onKeyDown: anEvent\x0a\x0a <if(anEvent.ctrlKey) {\x0a\x09\x09if(anEvent.keyCode === 80) { //ctrl+p\x0a\x09\x09\x09self._onPrintIt();\x0a\x09\x09\x09anEvent.preventDefault();\x0a\x09\x09\x09return false;\x0a\x09\x09}\x0a\x09\x09if(anEvent.keyCode === 68) { //ctrl+d\x0a\x09\x09\x09self._onDoIt();\x0a\x09\x09\x09anEvent.preventDefault();\x0a\x09\x09\x09return false;\x0a\x09\x09}\x0a\x09\x09if(anEvent.keyCode === 73) { //ctrl+i\x0a\x09\x09\x09self._onInspectIt();\x0a\x09\x09\x09anEvent.preventDefault();\x0a\x09\x09\x09return false;\x0a\x09\x09}\x0a\x09}>\x09",
  480. messageSends: [],
  481. referencedClasses: []
  482. }),
  483. smalltalk.HLCodeWidget);
  484. smalltalk.addMethod(
  485. "_onPrintIt",
  486. smalltalk.method({
  487. selector: "onPrintIt",
  488. category: 'reactions',
  489. fn: function () {
  490. var self = this;
  491. smalltalk.send(self, "_printIt", []);
  492. return self;
  493. },
  494. args: [],
  495. source: "onPrintIt\x0a\x0a\x09self printIt",
  496. messageSends: ["printIt"],
  497. referencedClasses: []
  498. }),
  499. smalltalk.HLCodeWidget);
  500. smalltalk.addMethod(
  501. "_print_",
  502. smalltalk.method({
  503. selector: "print:",
  504. category: 'actions',
  505. fn: function (aString) {
  506. var self = this;
  507. var start;
  508. var stop;
  509. start = smalltalk.send(smalltalk.HashedCollection || HashedCollection, "_new", []);
  510. stop = smalltalk.send(smalltalk.HashedCollection || HashedCollection, "_new", []);
  511. smalltalk.send(start, "_at_put_", ["line", smalltalk.send(smalltalk.send(self['@editor'], "_getCursor_", [false]), "_line", [])]);
  512. smalltalk.send(start, "_at_put_", ["ch", smalltalk.send(smalltalk.send(self['@editor'], "_getCursor_", [false]), "_ch", [])]);
  513. smalltalk.send(stop, "_at_put_", ["line", smalltalk.send(start, "_at_", ["line"])]);
  514. smalltalk.send(stop, "_at_put_", ["ch", smalltalk.send(smalltalk.send(smalltalk.send(start, "_at_", ["ch"]), "__plus", [smalltalk.send(aString, "_size", [])]), "__plus", [2])]);
  515. smalltalk.send(self['@editor'], "_replaceSelection_", [smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send(self['@editor'], "_getSelection", []), "__comma", [" "]), "__comma", [aString]), "__comma", [" "])]);
  516. smalltalk.send(self['@editor'], "_setCursor_", [smalltalk.send(self['@editor'], "_getCursor_", [true])]);
  517. smalltalk.send(self['@editor'], "_setSelection_end_", [stop, start]);
  518. return self;
  519. },
  520. args: ["aString"],
  521. source: "print: aString\x0a\x09| start stop |\x0a\x09start := HashedCollection new.\x0a\x09stop := HashedCollection new.\x0a\x09start at: 'line' put: (editor getCursor: false) line.\x0a\x09start at: 'ch' put: (editor getCursor: false) ch.\x0a\x09stop at: 'line' put: (start at: 'line').\x0a\x09stop at: 'ch' put: ((start at: 'ch') + aString size + 2).\x0a\x09editor replaceSelection: (editor getSelection, ' ', aString, ' ').\x0a\x09editor setCursor: (editor getCursor: true).\x0a\x09editor setSelection: stop end: start",
  522. messageSends: ["new", "at:put:", "line", "getCursor:", "ch", "at:", "+", "size", "replaceSelection:", ",", "getSelection", "setCursor:", "setSelection:end:"],
  523. referencedClasses: ["HashedCollection"]
  524. }),
  525. smalltalk.HLCodeWidget);
  526. smalltalk.addMethod(
  527. "_printIt",
  528. smalltalk.method({
  529. selector: "printIt",
  530. category: 'actions',
  531. fn: function () {
  532. var self = this;
  533. var result;
  534. result = smalltalk.send(self, "_doIt", []);
  535. smalltalk.send(smalltalk.send(self, "_announcer", []), "_announce_", [smalltalk.send(smalltalk.HLPrintItRequested || HLPrintItRequested, "_on_", [self['@model']])]);
  536. smalltalk.send(self, "_print_", [smalltalk.send(result, "_printString", [])]);
  537. smalltalk.send(self, "_focus", []);
  538. return self;
  539. },
  540. args: [],
  541. source: "printIt\x0a\x0a\x09| result |\x0a\x0a\x09result:= self doIt.\x0a \x0a\x09self announcer announce: (HLPrintItRequested on: model).\x0a\x0a self print: result printString.\x0a\x09self focus.",
  542. messageSends: ["doIt", "announce:", "on:", "announcer", "print:", "printString", "focus"],
  543. referencedClasses: ["HLPrintItRequested"]
  544. }),
  545. smalltalk.HLCodeWidget);
  546. smalltalk.addMethod(
  547. "_receiver",
  548. smalltalk.method({
  549. selector: "receiver",
  550. category: 'accessing',
  551. fn: function () {
  552. var self = this;
  553. var $1;
  554. $1 = smalltalk.send(smalltalk.send(self, "_model", []), "_receiver", []);
  555. return $1;
  556. },
  557. args: [],
  558. source: "receiver\x0a\x09^ self model receiver",
  559. messageSends: ["receiver", "model"],
  560. referencedClasses: []
  561. }),
  562. smalltalk.HLCodeWidget);
  563. smalltalk.addMethod(
  564. "_receiver_",
  565. smalltalk.method({
  566. selector: "receiver:",
  567. category: 'accessing',
  568. fn: function (anObject) {
  569. var self = this;
  570. smalltalk.send(smalltalk.send(self, "_model", []), "_receiver_", [anObject]);
  571. return self;
  572. },
  573. args: ["anObject"],
  574. source: "receiver: anObject\x0a\x09self model receiver: anObject",
  575. messageSends: ["receiver:", "model"],
  576. referencedClasses: []
  577. }),
  578. smalltalk.HLCodeWidget);
  579. smalltalk.addMethod(
  580. "_renderContentOn_",
  581. smalltalk.method({
  582. selector: "renderContentOn:",
  583. category: 'rendering',
  584. fn: function (html) {
  585. var self = this;
  586. self['@code'] = smalltalk.send(html, "_textarea", []);
  587. smalltalk.send(self, "_setEditorOn_", [smalltalk.send(self['@code'], "_element", [])]);
  588. smalltalk.send(self, "_observeWrapper", []);
  589. return self;
  590. },
  591. args: ["html"],
  592. source: "renderContentOn: html\x0a code := html textarea.\x0a self setEditorOn: code element.\x0a \x0a self observeWrapper",
  593. messageSends: ["textarea", "setEditorOn:", "element", "observeWrapper"],
  594. referencedClasses: []
  595. }),
  596. smalltalk.HLCodeWidget);
  597. smalltalk.addMethod(
  598. "_renderOn_",
  599. smalltalk.method({
  600. selector: "renderOn:",
  601. category: 'rendering',
  602. fn: function (html) {
  603. var self = this;
  604. self['@wrapper'] = smalltalk.send(smalltalk.send(html, "_div", []), "_class_", ["code"]);
  605. smalltalk.send(self, "_observeWrapper", []);
  606. smalltalk.send(self['@wrapper'], "_with_", [function () {self['@code'] = smalltalk.send(html, "_textarea", []);return self['@code'];}]);
  607. smalltalk.send(self, "_setEditorOn_", [smalltalk.send(self['@code'], "_element", [])]);
  608. return self;
  609. },
  610. args: ["html"],
  611. source: "renderOn: html\x0a wrapper := html div class: 'code'.\x0a self observeWrapper.\x0a wrapper with: [code := html textarea].\x0a self setEditorOn: code element.\x0a \x0a",
  612. messageSends: ["class:", "div", "observeWrapper", "with:", "textarea", "setEditorOn:", "element"],
  613. referencedClasses: []
  614. }),
  615. smalltalk.HLCodeWidget);
  616. smalltalk.addMethod(
  617. "_selection",
  618. smalltalk.method({
  619. selector: "selection",
  620. category: 'accessing',
  621. fn: function () {
  622. var self = this;
  623. var $1;
  624. $1 = smalltalk.send(self['@editor'], "_getSelection", []);
  625. return $1;
  626. },
  627. args: [],
  628. source: "selection\x0a\x09^editor getSelection",
  629. messageSends: ["getSelection"],
  630. referencedClasses: []
  631. }),
  632. smalltalk.HLCodeWidget);
  633. smalltalk.addMethod(
  634. "_selectionEnd",
  635. smalltalk.method({
  636. selector: "selectionEnd",
  637. category: 'accessing',
  638. fn: function () {
  639. var self = this;
  640. var $1;
  641. $1 = smalltalk.send(smalltalk.send(self['@code'], "_element", []), "_selectionEnd", []);
  642. return $1;
  643. },
  644. args: [],
  645. source: "selectionEnd\x0a ^code element selectionEnd",
  646. messageSends: ["selectionEnd", "element"],
  647. referencedClasses: []
  648. }),
  649. smalltalk.HLCodeWidget);
  650. smalltalk.addMethod(
  651. "_selectionEnd_",
  652. smalltalk.method({
  653. selector: "selectionEnd:",
  654. category: 'accessing',
  655. fn: function (anInteger) {
  656. var self = this;
  657. smalltalk.send(smalltalk.send(self['@code'], "_element", []), "_selectionEnd_", [anInteger]);
  658. return self;
  659. },
  660. args: ["anInteger"],
  661. source: "selectionEnd: anInteger\x0a code element selectionEnd: anInteger",
  662. messageSends: ["selectionEnd:", "element"],
  663. referencedClasses: []
  664. }),
  665. smalltalk.HLCodeWidget);
  666. smalltalk.addMethod(
  667. "_selectionStart",
  668. smalltalk.method({
  669. selector: "selectionStart",
  670. category: 'accessing',
  671. fn: function () {
  672. var self = this;
  673. var $1;
  674. $1 = smalltalk.send(smalltalk.send(self['@code'], "_element", []), "_selectionStart", []);
  675. return $1;
  676. },
  677. args: [],
  678. source: "selectionStart\x0a ^code element selectionStart",
  679. messageSends: ["selectionStart", "element"],
  680. referencedClasses: []
  681. }),
  682. smalltalk.HLCodeWidget);
  683. smalltalk.addMethod(
  684. "_selectionStart_",
  685. smalltalk.method({
  686. selector: "selectionStart:",
  687. category: 'accessing',
  688. fn: function (anInteger) {
  689. var self = this;
  690. smalltalk.send(smalltalk.send(self['@code'], "_element", []), "_selectionStart_", [anInteger]);
  691. return self;
  692. },
  693. args: ["anInteger"],
  694. source: "selectionStart: anInteger\x0a code element selectionStart: anInteger",
  695. messageSends: ["selectionStart:", "element"],
  696. referencedClasses: []
  697. }),
  698. smalltalk.HLCodeWidget);
  699. smalltalk.addMethod(
  700. "_setEditorOn_",
  701. smalltalk.method({
  702. selector: "setEditorOn:",
  703. category: 'actions',
  704. fn: function (aTextarea) {
  705. var self = this;
  706. self['@editor'] = CodeMirror.fromTextArea(aTextarea, {theme: "amber", lineNumbers: true, enterMode: "flat", matchBrackets: true, electricChars: false});
  707. return self;
  708. },
  709. args: ["aTextarea"],
  710. source: "setEditorOn: aTextarea\x0a\x09<self['@editor'] = CodeMirror.fromTextArea(aTextarea, {\x0a\x09\x09theme: 'amber',\x0a lineNumbers: true,\x0a enterMode: 'flat',\x0a matchBrackets: true,\x0a electricChars: false\x0a\x09})>",
  711. messageSends: [],
  712. referencedClasses: []
  713. }),
  714. smalltalk.HLCodeWidget);
  715. smalltalk.addMethod(
  716. "_val",
  717. smalltalk.method({
  718. selector: "val",
  719. category: 'accessing',
  720. fn: function () {
  721. var self = this;
  722. var $1;
  723. $1 = smalltalk.send(self['@code'], "_getValue", []);
  724. return $1;
  725. },
  726. args: [],
  727. source: "val\x0a\x09^ code getValue",
  728. messageSends: ["getValue"],
  729. referencedClasses: []
  730. }),
  731. smalltalk.HLCodeWidget);
  732. smalltalk.addMethod(
  733. "_val_",
  734. smalltalk.method({
  735. selector: "val:",
  736. category: 'accessing',
  737. fn: function (aString) {
  738. var self = this;
  739. smalltalk.send(self['@code'], "_setValue_", [aString]);
  740. return self;
  741. },
  742. args: ["aString"],
  743. source: "val: aString\x0a code setValue: aString",
  744. messageSends: ["setValue:"],
  745. referencedClasses: []
  746. }),
  747. smalltalk.HLCodeWidget);
  748. smalltalk.addClass('HLWorkspace', smalltalk.HLWidget, ['model', 'codeWidget'], 'Helios-Workspace');
  749. smalltalk.addMethod(
  750. "_codeWidget",
  751. smalltalk.method({
  752. selector: "codeWidget",
  753. category: 'accessing',
  754. fn: function () {
  755. var self = this;
  756. var $2, $3, $1;
  757. if (($receiver = self['@codeWidget']) == nil || $receiver == undefined) {
  758. $2 = smalltalk.send(smalltalk.HLCodeWidget || HLCodeWidget, "_new", []);
  759. smalltalk.send($2, "_model_", [smalltalk.send(smalltalk.send(self, "_model", []), "_code", [])]);
  760. $3 = smalltalk.send($2, "_yourself", []);
  761. self['@codeWidget'] = $3;
  762. $1 = self['@codeWidget'];
  763. } else {
  764. $1 = self['@codeWidget'];
  765. }
  766. return $1;
  767. },
  768. args: [],
  769. source: "codeWidget\x0a\x09^ codeWidget ifNil: [\x0a\x09\x09codeWidget := HLCodeWidget new\x0a \x09\x09model: self model code;\x0a \x09yourself ]",
  770. messageSends: ["ifNil:", "model:", "code", "model", "new", "yourself"],
  771. referencedClasses: ["HLCodeWidget"]
  772. }),
  773. smalltalk.HLWorkspace);
  774. smalltalk.addMethod(
  775. "_model",
  776. smalltalk.method({
  777. selector: "model",
  778. category: 'accessing',
  779. fn: function () {
  780. var self = this;
  781. var $1;
  782. if (($receiver = self['@model']) == nil || $receiver == undefined) {
  783. smalltalk.send(self, "_model_", [smalltalk.send(smalltalk.HLWorkspaceModel || HLWorkspaceModel, "_new", [])]);
  784. $1 = self['@model'];
  785. } else {
  786. $1 = self['@model'];
  787. }
  788. return $1;
  789. },
  790. args: [],
  791. source: "model\x0a\x09^ model ifNil: [ \x0a \x09self model: HLWorkspaceModel new.\x0a\x09\x09model ]",
  792. messageSends: ["ifNil:", "model:", "new"],
  793. referencedClasses: ["HLWorkspaceModel"]
  794. }),
  795. smalltalk.HLWorkspace);
  796. smalltalk.addMethod(
  797. "_model_",
  798. smalltalk.method({
  799. selector: "model:",
  800. category: 'accessing',
  801. fn: function (aModel) {
  802. var self = this;
  803. self['@model'] = aModel;
  804. smalltalk.send(smalltalk.send(self, "_codeWidget", []), "_model_", [smalltalk.send(aModel, "_code", [])]);
  805. smalltalk.send(self, "_observeCodeWidget", []);
  806. return self;
  807. },
  808. args: ["aModel"],
  809. source: "model: aModel\x0a\x09model := aModel.\x0a \x0a self codeWidget model: aModel code.\x0a self observeCodeWidget.\x0a ",
  810. messageSends: ["model:", "code", "codeWidget", "observeCodeWidget"],
  811. referencedClasses: []
  812. }),
  813. smalltalk.HLWorkspace);
  814. smalltalk.addMethod(
  815. "_observeCodeWidget",
  816. smalltalk.method({
  817. selector: "observeCodeWidget",
  818. category: 'actions',
  819. fn: function () {
  820. var self = this;
  821. return self;
  822. },
  823. args: [],
  824. source: "observeCodeWidget\x0a\x0a",
  825. messageSends: [],
  826. referencedClasses: []
  827. }),
  828. smalltalk.HLWorkspace);
  829. smalltalk.addMethod(
  830. "_onDoIt",
  831. smalltalk.method({
  832. selector: "onDoIt",
  833. category: 'reactions',
  834. fn: function () {
  835. var self = this;
  836. return self;
  837. },
  838. args: [],
  839. source: "onDoIt",
  840. messageSends: [],
  841. referencedClasses: []
  842. }),
  843. smalltalk.HLWorkspace);
  844. smalltalk.addMethod(
  845. "_onInspectIt",
  846. smalltalk.method({
  847. selector: "onInspectIt",
  848. category: 'reactions',
  849. fn: function () {
  850. var self = this;
  851. return self;
  852. },
  853. args: [],
  854. source: "onInspectIt",
  855. messageSends: [],
  856. referencedClasses: []
  857. }),
  858. smalltalk.HLWorkspace);
  859. smalltalk.addMethod(
  860. "_onPrintIt",
  861. smalltalk.method({
  862. selector: "onPrintIt",
  863. category: 'reactions',
  864. fn: function () {
  865. var self = this;
  866. return self;
  867. },
  868. args: [],
  869. source: "onPrintIt",
  870. messageSends: [],
  871. referencedClasses: []
  872. }),
  873. smalltalk.HLWorkspace);
  874. smalltalk.addMethod(
  875. "_renderContentOn_",
  876. smalltalk.method({
  877. selector: "renderContentOn:",
  878. category: 'rendering',
  879. fn: function (html) {
  880. var self = this;
  881. smalltalk.send(html, "_with_", [smalltalk.send(self, "_codeWidget", [])]);
  882. return self;
  883. },
  884. args: ["html"],
  885. source: "renderContentOn: html\x0a\x09html with: self codeWidget\x0a ",
  886. messageSends: ["with:", "codeWidget"],
  887. referencedClasses: []
  888. }),
  889. smalltalk.HLWorkspace);
  890. smalltalk.addMethod(
  891. "_canBeOpenAsTab",
  892. smalltalk.method({
  893. selector: "canBeOpenAsTab",
  894. category: 'testing',
  895. fn: function () {
  896. var self = this;
  897. return true;
  898. },
  899. args: [],
  900. source: "canBeOpenAsTab\x0a\x09^ true",
  901. messageSends: [],
  902. referencedClasses: []
  903. }),
  904. smalltalk.HLWorkspace.klass);
  905. smalltalk.addMethod(
  906. "_tabLabel",
  907. smalltalk.method({
  908. selector: "tabLabel",
  909. category: 'accessing',
  910. fn: function () {
  911. var self = this;
  912. return "Workspace";
  913. },
  914. args: [],
  915. source: "tabLabel\x0a\x09^ 'Workspace'",
  916. messageSends: [],
  917. referencedClasses: []
  918. }),
  919. smalltalk.HLWorkspace.klass);
  920. smalltalk.addMethod(
  921. "_tabPriority",
  922. smalltalk.method({
  923. selector: "tabPriority",
  924. category: 'accessing',
  925. fn: function () {
  926. var self = this;
  927. return 10;
  928. },
  929. args: [],
  930. source: "tabPriority\x0a\x09^ 10",
  931. messageSends: [],
  932. referencedClasses: []
  933. }),
  934. smalltalk.HLWorkspace.klass);
  935. smalltalk.addClass('HLWorkspaceModel', smalltalk.Object, ['announcer', 'environment', 'code'], 'Helios-Workspace');
  936. smalltalk.addMethod(
  937. "_announcer",
  938. smalltalk.method({
  939. selector: "announcer",
  940. category: 'accessing',
  941. fn: function () {
  942. var self = this;
  943. var $1;
  944. if (($receiver = self['@announcer']) == nil || $receiver == undefined) {
  945. self['@announcer'] = smalltalk.send(smalltalk.Announcer || Announcer, "_new", []);
  946. $1 = self['@announcer'];
  947. } else {
  948. $1 = self['@announcer'];
  949. }
  950. return $1;
  951. },
  952. args: [],
  953. source: "announcer\x0a\x09^ announcer ifNil: [ announcer := Announcer new ]",
  954. messageSends: ["ifNil:", "new"],
  955. referencedClasses: ["Announcer"]
  956. }),
  957. smalltalk.HLWorkspaceModel);
  958. smalltalk.addMethod(
  959. "_code",
  960. smalltalk.method({
  961. selector: "code",
  962. category: 'accessing',
  963. fn: function () {
  964. var self = this;
  965. var $1;
  966. if (($receiver = self['@code']) == nil || $receiver == undefined) {
  967. $1 = smalltalk.send(smalltalk.HLCodeModel || HLCodeModel, "_on_", [smalltalk.send(self, "_environment", [])]);
  968. } else {
  969. $1 = self['@code'];
  970. }
  971. return $1;
  972. },
  973. args: [],
  974. source: "code\x0a\x09\x22Answers the code model working for this workspace model\x22\x0a\x09^ code ifNil:[ HLCodeModel on: self environment ]",
  975. messageSends: ["ifNil:", "on:", "environment"],
  976. referencedClasses: ["HLCodeModel"]
  977. }),
  978. smalltalk.HLWorkspaceModel);
  979. smalltalk.addMethod(
  980. "_environment",
  981. smalltalk.method({
  982. selector: "environment",
  983. category: 'accessing',
  984. fn: function () {
  985. var self = this;
  986. var $1;
  987. if (($receiver = self['@environment']) == nil || $receiver == undefined) {
  988. $1 = smalltalk.send(smalltalk.send(smalltalk.HLManager || HLManager, "_current", []), "_environment", []);
  989. } else {
  990. $1 = self['@environment'];
  991. }
  992. return $1;
  993. },
  994. args: [],
  995. source: "environment\x0a\x09^ environment ifNil: [ HLManager current environment ]",
  996. messageSends: ["ifNil:", "environment", "current"],
  997. referencedClasses: ["HLManager"]
  998. }),
  999. smalltalk.HLWorkspaceModel);
  1000. smalltalk.addMethod(
  1001. "_environment_",
  1002. smalltalk.method({
  1003. selector: "environment:",
  1004. category: 'accessing',
  1005. fn: function (anEnvironment) {
  1006. var self = this;
  1007. self['@environment'] = anEnvironment;
  1008. return self;
  1009. },
  1010. args: ["anEnvironment"],
  1011. source: "environment: anEnvironment\x0a\x09environment := anEnvironment",
  1012. messageSends: [],
  1013. referencedClasses: []
  1014. }),
  1015. smalltalk.HLWorkspaceModel);
  1016. smalltalk.addMethod(
  1017. "_onKeyDown_",
  1018. smalltalk.method({
  1019. selector: "onKeyDown:",
  1020. category: 'reactions',
  1021. fn: function (anEvent) {
  1022. var self = this;
  1023. if (anEvent.ctrlKey) {
  1024. if (anEvent.keyCode === 80) {
  1025. self._printIt();
  1026. anEvent.preventDefault();
  1027. return false;
  1028. }
  1029. if (anEvent.keyCode === 68) {
  1030. self._doIt();
  1031. anEvent.preventDefault();
  1032. return false;
  1033. }
  1034. if (anEvent.keyCode === 73) {
  1035. self._inspectIt();
  1036. anEvent.preventDefault();
  1037. return false;
  1038. }
  1039. }
  1040. return self;
  1041. },
  1042. args: ["anEvent"],
  1043. source: "onKeyDown: anEvent\x0a\x0a\x09<if(anEvent.ctrlKey) {\x0a\x09\x09if(anEvent.keyCode === 80) { //ctrl+p\x0a\x09\x09\x09self._printIt();\x0a\x09\x09\x09anEvent.preventDefault();\x0a\x09\x09\x09return false;\x0a\x09\x09}\x0a\x09\x09if(anEvent.keyCode === 68) { //ctrl+d\x0a\x09\x09\x09self._doIt();\x0a\x09\x09\x09anEvent.preventDefault();\x0a\x09\x09\x09return false;\x0a\x09\x09}\x0a\x09\x09if(anEvent.keyCode === 73) { //ctrl+i\x0a\x09\x09\x09self._inspectIt();\x0a\x09\x09\x09anEvent.preventDefault();\x0a\x09\x09\x09return false;\x0a\x09\x09}\x0a\x09}>",
  1044. messageSends: [],
  1045. referencedClasses: []
  1046. }),
  1047. smalltalk.HLWorkspaceModel);
  1048. smalltalk.addMethod(
  1049. "_subscribe_",
  1050. smalltalk.method({
  1051. selector: "subscribe:",
  1052. category: 'actions',
  1053. fn: function (aWidget) {
  1054. var self = this;
  1055. smalltalk.send(aWidget, "_subscribeTo_", [smalltalk.send(self, "_announcer", [])]);
  1056. return self;
  1057. },
  1058. args: ["aWidget"],
  1059. source: "subscribe: aWidget\x0a\x09aWidget subscribeTo: self announcer",
  1060. messageSends: ["subscribeTo:", "announcer"],
  1061. referencedClasses: []
  1062. }),
  1063. smalltalk.HLWorkspaceModel);
  1064. smalltalk.addMethod(
  1065. "_on_",
  1066. smalltalk.method({
  1067. selector: "on:",
  1068. category: 'actions',
  1069. fn: function (anEnvironment) {
  1070. var self = this;
  1071. var $2, $3, $1;
  1072. $2 = smalltalk.send(self, "_new", []);
  1073. smalltalk.send($2, "_environment_", [anEnvironment]);
  1074. $3 = smalltalk.send($2, "_yourself", []);
  1075. $1 = $3;
  1076. return $1;
  1077. },
  1078. args: ["anEnvironment"],
  1079. source: "on: anEnvironment\x0a\x0a\x09^ self new\x0a \x09environment: anEnvironment;\x0a yourself",
  1080. messageSends: ["environment:", "new", "yourself"],
  1081. referencedClasses: []
  1082. }),
  1083. smalltalk.HLWorkspaceModel.klass);