Helios-Layout.js 28 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868
  1. define(["amber/boot", "require", "amber/core/Kernel-Objects", "amber/web/Web", "helios/Helios-Core"], function($boot,requirejs){"use strict";
  2. var $core=$boot.api,nil=$boot.nilAsValue,$nil=$boot.nilAsReceiver,$recv=$boot.asReceiver,$globals=$boot.globals;
  3. var $pkg = $core.addPackage("Helios-Layout");
  4. $pkg.innerEval = function (expr) { return eval(expr); };
  5. $pkg.transport = {"type":"amd","amdNamespace":"helios"};
  6. $core.addClass("HLContainer", $globals.HLWidget, ["splitter"], "Helios-Layout");
  7. $core.addMethod(
  8. $core.method({
  9. selector: "renderOn:",
  10. protocol: "rendering",
  11. //>>excludeStart("ide", pragmas.excludeIdeData);
  12. args: ["html"],
  13. source: "renderOn: html\x0a\x09html div \x0a \x09class: 'tool_container'; \x0a with: self splitter",
  14. referencedClasses: [],
  15. //>>excludeEnd("ide");
  16. pragmas: [],
  17. messageSends: ["class:", "div", "with:", "splitter"]
  18. }, function ($methodClass){ return function (html){
  19. var self=this,$self=this;
  20. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21. return $core.withContext(function($ctx1) {
  22. //>>excludeEnd("ctx");
  23. var $1;
  24. $1=$recv(html)._div();
  25. $recv($1)._class_("tool_container");
  26. $recv($1)._with_($self._splitter());
  27. return self;
  28. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29. }, function($ctx1) {$ctx1.fill(self,"renderOn:",{html:html})});
  30. //>>excludeEnd("ctx");
  31. }; }),
  32. $globals.HLContainer);
  33. $core.addMethod(
  34. $core.method({
  35. selector: "splitter",
  36. protocol: "accessing",
  37. //>>excludeStart("ide", pragmas.excludeIdeData);
  38. args: [],
  39. source: "splitter\x0a\x09^ splitter",
  40. referencedClasses: [],
  41. //>>excludeEnd("ide");
  42. pragmas: [],
  43. messageSends: []
  44. }, function ($methodClass){ return function (){
  45. var self=this,$self=this;
  46. return $self.splitter;
  47. }; }),
  48. $globals.HLContainer);
  49. $core.addMethod(
  50. $core.method({
  51. selector: "splitter:",
  52. protocol: "accessing",
  53. //>>excludeStart("ide", pragmas.excludeIdeData);
  54. args: ["aSplitter"],
  55. source: "splitter: aSplitter\x0a\x09splitter := aSplitter",
  56. referencedClasses: [],
  57. //>>excludeEnd("ide");
  58. pragmas: [],
  59. messageSends: []
  60. }, function ($methodClass){ return function (aSplitter){
  61. var self=this,$self=this;
  62. $self.splitter=aSplitter;
  63. return self;
  64. }; }),
  65. $globals.HLContainer);
  66. $core.addMethod(
  67. $core.method({
  68. selector: "with:",
  69. protocol: "instance creation",
  70. //>>excludeStart("ide", pragmas.excludeIdeData);
  71. args: ["aSplitter"],
  72. source: "with: aSplitter\x0a\x09^ self new \x0a \x09splitter: aSplitter; \x0a yourself",
  73. referencedClasses: [],
  74. //>>excludeEnd("ide");
  75. pragmas: [],
  76. messageSends: ["splitter:", "new", "yourself"]
  77. }, function ($methodClass){ return function (aSplitter){
  78. var self=this,$self=this;
  79. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80. return $core.withContext(function($ctx1) {
  81. //>>excludeEnd("ctx");
  82. var $1;
  83. $1=$self._new();
  84. $recv($1)._splitter_(aSplitter);
  85. return $recv($1)._yourself();
  86. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  87. }, function($ctx1) {$ctx1.fill(self,"with:",{aSplitter:aSplitter})});
  88. //>>excludeEnd("ctx");
  89. }; }),
  90. $globals.HLContainer.a$cls);
  91. $core.addClass("HLSplitter", $globals.Widget, ["firstWidget", "secondWidget", "firstPane", "secondPane", "splitter"], "Helios-Layout");
  92. $core.addMethod(
  93. $core.method({
  94. selector: "cssClass",
  95. protocol: "accessing",
  96. //>>excludeStart("ide", pragmas.excludeIdeData);
  97. args: [],
  98. source: "cssClass\x0a\x09^ 'splitter'",
  99. referencedClasses: [],
  100. //>>excludeEnd("ide");
  101. pragmas: [],
  102. messageSends: []
  103. }, function ($methodClass){ return function (){
  104. var self=this,$self=this;
  105. return "splitter";
  106. }; }),
  107. $globals.HLSplitter);
  108. $core.addMethod(
  109. $core.method({
  110. selector: "firstWidget",
  111. protocol: "accessing",
  112. //>>excludeStart("ide", pragmas.excludeIdeData);
  113. args: [],
  114. source: "firstWidget\x0a\x09^ firstWidget",
  115. referencedClasses: [],
  116. //>>excludeEnd("ide");
  117. pragmas: [],
  118. messageSends: []
  119. }, function ($methodClass){ return function (){
  120. var self=this,$self=this;
  121. return $self.firstWidget;
  122. }; }),
  123. $globals.HLSplitter);
  124. $core.addMethod(
  125. $core.method({
  126. selector: "firstWidget:",
  127. protocol: "accessing",
  128. //>>excludeStart("ide", pragmas.excludeIdeData);
  129. args: ["aWidget"],
  130. source: "firstWidget: aWidget\x0a\x09firstWidget := aWidget",
  131. referencedClasses: [],
  132. //>>excludeEnd("ide");
  133. pragmas: [],
  134. messageSends: []
  135. }, function ($methodClass){ return function (aWidget){
  136. var self=this,$self=this;
  137. $self.firstWidget=aWidget;
  138. return self;
  139. }; }),
  140. $globals.HLSplitter);
  141. $core.addMethod(
  142. $core.method({
  143. selector: "isHeliosSplitter",
  144. protocol: "testing",
  145. //>>excludeStart("ide", pragmas.excludeIdeData);
  146. args: [],
  147. source: "isHeliosSplitter\x0a\x09^ true",
  148. referencedClasses: [],
  149. //>>excludeEnd("ide");
  150. pragmas: [],
  151. messageSends: []
  152. }, function ($methodClass){ return function (){
  153. var self=this,$self=this;
  154. return true;
  155. }; }),
  156. $globals.HLSplitter);
  157. $core.addMethod(
  158. $core.method({
  159. selector: "panesCssClass",
  160. protocol: "rendering",
  161. //>>excludeStart("ide", pragmas.excludeIdeData);
  162. args: [],
  163. source: "panesCssClass\x0a\x09^ 'panes'",
  164. referencedClasses: [],
  165. //>>excludeEnd("ide");
  166. pragmas: [],
  167. messageSends: []
  168. }, function ($methodClass){ return function (){
  169. var self=this,$self=this;
  170. return "panes";
  171. }; }),
  172. $globals.HLSplitter);
  173. $core.addMethod(
  174. $core.method({
  175. selector: "renderOn:",
  176. protocol: "rendering",
  177. //>>excludeStart("ide", pragmas.excludeIdeData);
  178. args: ["html"],
  179. source: "renderOn: html\x0a\x09html div class: self panesCssClass; with: [\x0a\x09\x09firstPane := html div class: 'pane'; with: self firstWidget.\x0a \x09splitter := html div class: self cssClass.\x0a \x09secondPane := html div class: 'pane'; with: self secondWidget ].\x0a \x0a\x09self setupSplitter",
  180. referencedClasses: [],
  181. //>>excludeEnd("ide");
  182. pragmas: [],
  183. messageSends: ["class:", "div", "panesCssClass", "with:", "firstWidget", "cssClass", "secondWidget", "setupSplitter"]
  184. }, function ($methodClass){ return function (html){
  185. var self=this,$self=this;
  186. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  187. return $core.withContext(function($ctx1) {
  188. //>>excludeEnd("ctx");
  189. var $1,$2,$3;
  190. $1=[$recv(html)._div()
  191. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  192. ,$ctx1.sendIdx["div"]=1
  193. //>>excludeEnd("ctx");
  194. ][0];
  195. [$recv($1)._class_($self._panesCssClass())
  196. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  197. ,$ctx1.sendIdx["class:"]=1
  198. //>>excludeEnd("ctx");
  199. ][0];
  200. [$recv($1)._with_((function(){
  201. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  202. return $core.withContext(function($ctx2) {
  203. //>>excludeEnd("ctx");
  204. $2=[$recv(html)._div()
  205. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  206. ,$ctx2.sendIdx["div"]=2
  207. //>>excludeEnd("ctx");
  208. ][0];
  209. [$recv($2)._class_("pane")
  210. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  211. ,$ctx2.sendIdx["class:"]=2
  212. //>>excludeEnd("ctx");
  213. ][0];
  214. $self.firstPane=[$recv($2)._with_($self._firstWidget())
  215. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  216. ,$ctx2.sendIdx["with:"]=2
  217. //>>excludeEnd("ctx");
  218. ][0];
  219. $self.splitter=[$recv([$recv(html)._div()
  220. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  221. ,$ctx2.sendIdx["div"]=3
  222. //>>excludeEnd("ctx");
  223. ][0])._class_($self._cssClass())
  224. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  225. ,$ctx2.sendIdx["class:"]=3
  226. //>>excludeEnd("ctx");
  227. ][0];
  228. $3=$recv(html)._div();
  229. $recv($3)._class_("pane");
  230. $self.secondPane=$recv($3)._with_($self._secondWidget());
  231. return $self.secondPane;
  232. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  233. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  234. //>>excludeEnd("ctx");
  235. }))
  236. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  237. ,$ctx1.sendIdx["with:"]=1
  238. //>>excludeEnd("ctx");
  239. ][0];
  240. $self._setupSplitter();
  241. return self;
  242. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  243. }, function($ctx1) {$ctx1.fill(self,"renderOn:",{html:html})});
  244. //>>excludeEnd("ctx");
  245. }; }),
  246. $globals.HLSplitter);
  247. $core.addMethod(
  248. $core.method({
  249. selector: "resize",
  250. protocol: "rendering",
  251. //>>excludeStart("ide", pragmas.excludeIdeData);
  252. args: [],
  253. source: "resize",
  254. referencedClasses: [],
  255. //>>excludeEnd("ide");
  256. pragmas: [],
  257. messageSends: []
  258. }, function ($methodClass){ return function (){
  259. var self=this,$self=this;
  260. return self;
  261. }; }),
  262. $globals.HLSplitter);
  263. $core.addMethod(
  264. $core.method({
  265. selector: "secondWidget",
  266. protocol: "accessing",
  267. //>>excludeStart("ide", pragmas.excludeIdeData);
  268. args: [],
  269. source: "secondWidget\x0a\x09^ secondWidget",
  270. referencedClasses: [],
  271. //>>excludeEnd("ide");
  272. pragmas: [],
  273. messageSends: []
  274. }, function ($methodClass){ return function (){
  275. var self=this,$self=this;
  276. return $self.secondWidget;
  277. }; }),
  278. $globals.HLSplitter);
  279. $core.addMethod(
  280. $core.method({
  281. selector: "secondWidget:",
  282. protocol: "accessing",
  283. //>>excludeStart("ide", pragmas.excludeIdeData);
  284. args: ["aWidget"],
  285. source: "secondWidget: aWidget\x0a\x09secondWidget := aWidget",
  286. referencedClasses: [],
  287. //>>excludeEnd("ide");
  288. pragmas: [],
  289. messageSends: []
  290. }, function ($methodClass){ return function (aWidget){
  291. var self=this,$self=this;
  292. $self.secondWidget=aWidget;
  293. return self;
  294. }; }),
  295. $globals.HLSplitter);
  296. $core.addMethod(
  297. $core.method({
  298. selector: "setupSplitter",
  299. protocol: "rendering",
  300. //>>excludeStart("ide", pragmas.excludeIdeData);
  301. args: [],
  302. source: "setupSplitter",
  303. referencedClasses: [],
  304. //>>excludeEnd("ide");
  305. pragmas: [],
  306. messageSends: []
  307. }, function ($methodClass){ return function (){
  308. var self=this,$self=this;
  309. return self;
  310. }; }),
  311. $globals.HLSplitter);
  312. $core.addMethod(
  313. $core.method({
  314. selector: "with:with:",
  315. protocol: "instance creation",
  316. //>>excludeStart("ide", pragmas.excludeIdeData);
  317. args: ["aWidget", "anotherWidget"],
  318. source: "with: aWidget with: anotherWidget\x0a\x09^ self new\x0a \x09\x09firstWidget: aWidget;\x0a secondWidget: anotherWidget;\x0a yourself",
  319. referencedClasses: [],
  320. //>>excludeEnd("ide");
  321. pragmas: [],
  322. messageSends: ["firstWidget:", "new", "secondWidget:", "yourself"]
  323. }, function ($methodClass){ return function (aWidget,anotherWidget){
  324. var self=this,$self=this;
  325. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  326. return $core.withContext(function($ctx1) {
  327. //>>excludeEnd("ctx");
  328. var $1;
  329. $1=$self._new();
  330. $recv($1)._firstWidget_(aWidget);
  331. $recv($1)._secondWidget_(anotherWidget);
  332. return $recv($1)._yourself();
  333. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  334. }, function($ctx1) {$ctx1.fill(self,"with:with:",{aWidget:aWidget,anotherWidget:anotherWidget})});
  335. //>>excludeEnd("ctx");
  336. }; }),
  337. $globals.HLSplitter.a$cls);
  338. $core.addClass("HLHorizontalSplitter", $globals.HLSplitter, [], "Helios-Layout");
  339. $core.addMethod(
  340. $core.method({
  341. selector: "cssClass",
  342. protocol: "accessing",
  343. //>>excludeStart("ide", pragmas.excludeIdeData);
  344. args: [],
  345. source: "cssClass\x0a\x09^ super cssClass, ' horizontal'",
  346. referencedClasses: [],
  347. //>>excludeEnd("ide");
  348. pragmas: [],
  349. messageSends: [",", "cssClass"]
  350. }, function ($methodClass){ return function (){
  351. var self=this,$self=this;
  352. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  353. return $core.withContext(function($ctx1) {
  354. //>>excludeEnd("ctx");
  355. return $recv([(
  356. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  357. $ctx1.supercall = true,
  358. //>>excludeEnd("ctx");
  359. ($methodClass.superclass||$boot.nilAsClass).fn.prototype._cssClass.call($self))
  360. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  361. ,$ctx1.supercall = false
  362. //>>excludeEnd("ctx");
  363. ][0]).__comma(" horizontal");
  364. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  365. }, function($ctx1) {$ctx1.fill(self,"cssClass",{})});
  366. //>>excludeEnd("ctx");
  367. }; }),
  368. $globals.HLHorizontalSplitter);
  369. $core.addMethod(
  370. $core.method({
  371. selector: "panesCssClass",
  372. protocol: "accessing",
  373. //>>excludeStart("ide", pragmas.excludeIdeData);
  374. args: [],
  375. source: "panesCssClass\x0a\x09^ super panesCssClass, ' horizontal'",
  376. referencedClasses: [],
  377. //>>excludeEnd("ide");
  378. pragmas: [],
  379. messageSends: [",", "panesCssClass"]
  380. }, function ($methodClass){ return function (){
  381. var self=this,$self=this;
  382. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  383. return $core.withContext(function($ctx1) {
  384. //>>excludeEnd("ctx");
  385. return $recv([(
  386. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  387. $ctx1.supercall = true,
  388. //>>excludeEnd("ctx");
  389. ($methodClass.superclass||$boot.nilAsClass).fn.prototype._panesCssClass.call($self))
  390. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  391. ,$ctx1.supercall = false
  392. //>>excludeEnd("ctx");
  393. ][0]).__comma(" horizontal");
  394. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  395. }, function($ctx1) {$ctx1.fill(self,"panesCssClass",{})});
  396. //>>excludeEnd("ctx");
  397. }; }),
  398. $globals.HLHorizontalSplitter);
  399. $core.addMethod(
  400. $core.method({
  401. selector: "resize",
  402. protocol: "actions",
  403. //>>excludeStart("ide", pragmas.excludeIdeData);
  404. args: [],
  405. source: "resize\x0a\x09self resize: (splitter asJQuery css: 'top')",
  406. referencedClasses: [],
  407. //>>excludeEnd("ide");
  408. pragmas: [],
  409. messageSends: ["resize:", "css:", "asJQuery"]
  410. }, function ($methodClass){ return function (){
  411. var self=this,$self=this;
  412. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  413. return $core.withContext(function($ctx1) {
  414. //>>excludeEnd("ctx");
  415. $self._resize_($recv($recv($self.splitter)._asJQuery())._css_("top"));
  416. return self;
  417. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  418. }, function($ctx1) {$ctx1.fill(self,"resize",{})});
  419. //>>excludeEnd("ctx");
  420. }; }),
  421. $globals.HLHorizontalSplitter);
  422. $core.addMethod(
  423. $core.method({
  424. selector: "resize:",
  425. protocol: "actions",
  426. //>>excludeStart("ide", pragmas.excludeIdeData);
  427. args: ["anInteger"],
  428. source: "resize: anInteger\x0a\x09| container size offset percentage |\x0a \x0a container := firstPane asJQuery parent.\x0a\x09offset := firstPane asJQuery offset top.\x0a size := container height.\x0a\x09\x0a\x09percentage := (size - (anInteger - offset)) / size * 100.\x0a\x09percentage := 80 min: (percentage max: 20).\x0a\x09\x0a firstPane asJQuery css: 'bottom' put: percentage asString, '%'.\x0a\x09\x0a\x09splitter asJQuery css: 'top' put: (100 - percentage) asString, '%'.\x0a\x09secondPane asJQuery css: 'top' put: (100 - percentage) asString, '%'",
  429. referencedClasses: [],
  430. //>>excludeEnd("ide");
  431. pragmas: [],
  432. messageSends: ["parent", "asJQuery", "top", "offset", "height", "*", "/", "-", "min:", "max:", "css:put:", ",", "asString"]
  433. }, function ($methodClass){ return function (anInteger){
  434. var self=this,$self=this;
  435. var container,size,offset,percentage;
  436. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  437. return $core.withContext(function($ctx1) {
  438. //>>excludeEnd("ctx");
  439. container=$recv([$recv($self.firstPane)._asJQuery()
  440. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  441. ,$ctx1.sendIdx["asJQuery"]=1
  442. //>>excludeEnd("ctx");
  443. ][0])._parent();
  444. offset=$recv($recv([$recv($self.firstPane)._asJQuery()
  445. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  446. ,$ctx1.sendIdx["asJQuery"]=2
  447. //>>excludeEnd("ctx");
  448. ][0])._offset())._top();
  449. size=$recv(container)._height();
  450. percentage=$recv($recv([$recv(size).__minus([$recv(anInteger).__minus(offset)
  451. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  452. ,$ctx1.sendIdx["-"]=2
  453. //>>excludeEnd("ctx");
  454. ][0])
  455. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  456. ,$ctx1.sendIdx["-"]=1
  457. //>>excludeEnd("ctx");
  458. ][0]).__slash(size)).__star((100));
  459. percentage=(80)._min_($recv(percentage)._max_((20)));
  460. [$recv([$recv($self.firstPane)._asJQuery()
  461. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  462. ,$ctx1.sendIdx["asJQuery"]=3
  463. //>>excludeEnd("ctx");
  464. ][0])._css_put_("bottom",[$recv([$recv(percentage)._asString()
  465. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  466. ,$ctx1.sendIdx["asString"]=1
  467. //>>excludeEnd("ctx");
  468. ][0]).__comma("%")
  469. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  470. ,$ctx1.sendIdx[","]=1
  471. //>>excludeEnd("ctx");
  472. ][0])
  473. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  474. ,$ctx1.sendIdx["css:put:"]=1
  475. //>>excludeEnd("ctx");
  476. ][0];
  477. [$recv([$recv($self.splitter)._asJQuery()
  478. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  479. ,$ctx1.sendIdx["asJQuery"]=4
  480. //>>excludeEnd("ctx");
  481. ][0])._css_put_("top",[$recv([$recv([(100).__minus(percentage)
  482. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  483. ,$ctx1.sendIdx["-"]=3
  484. //>>excludeEnd("ctx");
  485. ][0])._asString()
  486. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  487. ,$ctx1.sendIdx["asString"]=2
  488. //>>excludeEnd("ctx");
  489. ][0]).__comma("%")
  490. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  491. ,$ctx1.sendIdx[","]=2
  492. //>>excludeEnd("ctx");
  493. ][0])
  494. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  495. ,$ctx1.sendIdx["css:put:"]=2
  496. //>>excludeEnd("ctx");
  497. ][0];
  498. $recv($recv($self.secondPane)._asJQuery())._css_put_("top",$recv($recv((100).__minus(percentage))._asString()).__comma("%"));
  499. return self;
  500. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  501. }, function($ctx1) {$ctx1.fill(self,"resize:",{anInteger:anInteger,container:container,size:size,offset:offset,percentage:percentage})});
  502. //>>excludeEnd("ctx");
  503. }; }),
  504. $globals.HLHorizontalSplitter);
  505. $core.addMethod(
  506. $core.method({
  507. selector: "setupSplitter",
  508. protocol: "rendering",
  509. //>>excludeStart("ide", pragmas.excludeIdeData);
  510. args: [],
  511. source: "setupSplitter\x0a\x09splitter asJQuery draggable: #{ \x0a \x09'axis' -> 'y'. \x0a 'containment' -> splitter asJQuery parent.\x0a 'helper' -> 'clone'.\x0a 'start' -> [ :e :ui | self startResizing: ui helper ].\x0a 'drag' -> [ :e :ui | self resize: ui offset top ] }",
  512. referencedClasses: [],
  513. //>>excludeEnd("ide");
  514. pragmas: [],
  515. messageSends: ["draggable:", "asJQuery", "parent", "startResizing:", "helper", "resize:", "top", "offset"]
  516. }, function ($methodClass){ return function (){
  517. var self=this,$self=this;
  518. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  519. return $core.withContext(function($ctx1) {
  520. //>>excludeEnd("ctx");
  521. $recv([$recv($self.splitter)._asJQuery()
  522. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  523. ,$ctx1.sendIdx["asJQuery"]=1
  524. //>>excludeEnd("ctx");
  525. ][0])._draggable_($globals.HashedCollection._newFromPairs_(["axis","y","containment",$recv($recv($self.splitter)._asJQuery())._parent(),"helper","clone","start",(function(e,ui){
  526. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  527. return $core.withContext(function($ctx2) {
  528. //>>excludeEnd("ctx");
  529. return $self._startResizing_($recv(ui)._helper());
  530. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  531. }, function($ctx2) {$ctx2.fillBlock({e:e,ui:ui},$ctx1,1)});
  532. //>>excludeEnd("ctx");
  533. }),"drag",(function(e,ui){
  534. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  535. return $core.withContext(function($ctx2) {
  536. //>>excludeEnd("ctx");
  537. return $self._resize_($recv($recv(ui)._offset())._top());
  538. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  539. }, function($ctx2) {$ctx2.fillBlock({e:e,ui:ui},$ctx1,2)});
  540. //>>excludeEnd("ctx");
  541. })]));
  542. return self;
  543. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  544. }, function($ctx1) {$ctx1.fill(self,"setupSplitter",{})});
  545. //>>excludeEnd("ctx");
  546. }; }),
  547. $globals.HLHorizontalSplitter);
  548. $core.addMethod(
  549. $core.method({
  550. selector: "startResizing:",
  551. protocol: "actions",
  552. //>>excludeStart("ide", pragmas.excludeIdeData);
  553. args: ["aSplitter"],
  554. source: "startResizing: aSplitter\x0a\x09aSplitter width: splitter asJQuery width",
  555. referencedClasses: [],
  556. //>>excludeEnd("ide");
  557. pragmas: [],
  558. messageSends: ["width:", "width", "asJQuery"]
  559. }, function ($methodClass){ return function (aSplitter){
  560. var self=this,$self=this;
  561. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  562. return $core.withContext(function($ctx1) {
  563. //>>excludeEnd("ctx");
  564. $recv(aSplitter)._width_($recv($recv($self.splitter)._asJQuery())._width());
  565. return self;
  566. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  567. }, function($ctx1) {$ctx1.fill(self,"startResizing:",{aSplitter:aSplitter})});
  568. //>>excludeEnd("ctx");
  569. }; }),
  570. $globals.HLHorizontalSplitter);
  571. $core.addClass("HLVerticalSplitter", $globals.HLSplitter, [], "Helios-Layout");
  572. $core.addMethod(
  573. $core.method({
  574. selector: "cssClass",
  575. protocol: "accessing",
  576. //>>excludeStart("ide", pragmas.excludeIdeData);
  577. args: [],
  578. source: "cssClass\x0a\x09^ super cssClass, ' vertical'",
  579. referencedClasses: [],
  580. //>>excludeEnd("ide");
  581. pragmas: [],
  582. messageSends: [",", "cssClass"]
  583. }, function ($methodClass){ return function (){
  584. var self=this,$self=this;
  585. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  586. return $core.withContext(function($ctx1) {
  587. //>>excludeEnd("ctx");
  588. return $recv([(
  589. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  590. $ctx1.supercall = true,
  591. //>>excludeEnd("ctx");
  592. ($methodClass.superclass||$boot.nilAsClass).fn.prototype._cssClass.call($self))
  593. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  594. ,$ctx1.supercall = false
  595. //>>excludeEnd("ctx");
  596. ][0]).__comma(" vertical");
  597. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  598. }, function($ctx1) {$ctx1.fill(self,"cssClass",{})});
  599. //>>excludeEnd("ctx");
  600. }; }),
  601. $globals.HLVerticalSplitter);
  602. $core.addMethod(
  603. $core.method({
  604. selector: "panesCssClass",
  605. protocol: "accessing",
  606. //>>excludeStart("ide", pragmas.excludeIdeData);
  607. args: [],
  608. source: "panesCssClass\x0a\x09^ super panesCssClass, ' vertical'",
  609. referencedClasses: [],
  610. //>>excludeEnd("ide");
  611. pragmas: [],
  612. messageSends: [",", "panesCssClass"]
  613. }, function ($methodClass){ return function (){
  614. var self=this,$self=this;
  615. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  616. return $core.withContext(function($ctx1) {
  617. //>>excludeEnd("ctx");
  618. return $recv([(
  619. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  620. $ctx1.supercall = true,
  621. //>>excludeEnd("ctx");
  622. ($methodClass.superclass||$boot.nilAsClass).fn.prototype._panesCssClass.call($self))
  623. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  624. ,$ctx1.supercall = false
  625. //>>excludeEnd("ctx");
  626. ][0]).__comma(" vertical");
  627. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  628. }, function($ctx1) {$ctx1.fill(self,"panesCssClass",{})});
  629. //>>excludeEnd("ctx");
  630. }; }),
  631. $globals.HLVerticalSplitter);
  632. $core.addMethod(
  633. $core.method({
  634. selector: "resize",
  635. protocol: "actions",
  636. //>>excludeStart("ide", pragmas.excludeIdeData);
  637. args: [],
  638. source: "resize\x0a\x09self resize: (splitter asJQuery css: 'left')",
  639. referencedClasses: [],
  640. //>>excludeEnd("ide");
  641. pragmas: [],
  642. messageSends: ["resize:", "css:", "asJQuery"]
  643. }, function ($methodClass){ return function (){
  644. var self=this,$self=this;
  645. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  646. return $core.withContext(function($ctx1) {
  647. //>>excludeEnd("ctx");
  648. $self._resize_($recv($recv($self.splitter)._asJQuery())._css_("left"));
  649. return self;
  650. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  651. }, function($ctx1) {$ctx1.fill(self,"resize",{})});
  652. //>>excludeEnd("ctx");
  653. }; }),
  654. $globals.HLVerticalSplitter);
  655. $core.addMethod(
  656. $core.method({
  657. selector: "resize:",
  658. protocol: "actions",
  659. //>>excludeStart("ide", pragmas.excludeIdeData);
  660. args: ["anInteger"],
  661. source: "resize: anInteger\x0a\x09| container size offset percentage |\x0a \x0a container := firstPane asJQuery parent.\x0a\x09offset := firstPane asJQuery offset left.\x0a size := container width.\x0a\x09\x0a\x09percentage := (size - (anInteger - offset)) / size * 100.\x0a\x09percentage := 80 min: (percentage max: 20).\x0a\x09\x0a firstPane asJQuery css: 'right' put: percentage asString, '%'.\x0a\x09\x0a\x09splitter asJQuery css: 'left' put: (100 - percentage) asString, '%'.\x0a\x09secondPane asJQuery css: 'left' put: (100 - percentage) asString, '%'",
  662. referencedClasses: [],
  663. //>>excludeEnd("ide");
  664. pragmas: [],
  665. messageSends: ["parent", "asJQuery", "left", "offset", "width", "*", "/", "-", "min:", "max:", "css:put:", ",", "asString"]
  666. }, function ($methodClass){ return function (anInteger){
  667. var self=this,$self=this;
  668. var container,size,offset,percentage;
  669. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  670. return $core.withContext(function($ctx1) {
  671. //>>excludeEnd("ctx");
  672. container=$recv([$recv($self.firstPane)._asJQuery()
  673. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  674. ,$ctx1.sendIdx["asJQuery"]=1
  675. //>>excludeEnd("ctx");
  676. ][0])._parent();
  677. offset=$recv($recv([$recv($self.firstPane)._asJQuery()
  678. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  679. ,$ctx1.sendIdx["asJQuery"]=2
  680. //>>excludeEnd("ctx");
  681. ][0])._offset())._left();
  682. size=$recv(container)._width();
  683. percentage=$recv($recv([$recv(size).__minus([$recv(anInteger).__minus(offset)
  684. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  685. ,$ctx1.sendIdx["-"]=2
  686. //>>excludeEnd("ctx");
  687. ][0])
  688. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  689. ,$ctx1.sendIdx["-"]=1
  690. //>>excludeEnd("ctx");
  691. ][0]).__slash(size)).__star((100));
  692. percentage=(80)._min_($recv(percentage)._max_((20)));
  693. [$recv([$recv($self.firstPane)._asJQuery()
  694. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  695. ,$ctx1.sendIdx["asJQuery"]=3
  696. //>>excludeEnd("ctx");
  697. ][0])._css_put_("right",[$recv([$recv(percentage)._asString()
  698. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  699. ,$ctx1.sendIdx["asString"]=1
  700. //>>excludeEnd("ctx");
  701. ][0]).__comma("%")
  702. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  703. ,$ctx1.sendIdx[","]=1
  704. //>>excludeEnd("ctx");
  705. ][0])
  706. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  707. ,$ctx1.sendIdx["css:put:"]=1
  708. //>>excludeEnd("ctx");
  709. ][0];
  710. [$recv([$recv($self.splitter)._asJQuery()
  711. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  712. ,$ctx1.sendIdx["asJQuery"]=4
  713. //>>excludeEnd("ctx");
  714. ][0])._css_put_("left",[$recv([$recv([(100).__minus(percentage)
  715. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  716. ,$ctx1.sendIdx["-"]=3
  717. //>>excludeEnd("ctx");
  718. ][0])._asString()
  719. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  720. ,$ctx1.sendIdx["asString"]=2
  721. //>>excludeEnd("ctx");
  722. ][0]).__comma("%")
  723. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  724. ,$ctx1.sendIdx[","]=2
  725. //>>excludeEnd("ctx");
  726. ][0])
  727. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  728. ,$ctx1.sendIdx["css:put:"]=2
  729. //>>excludeEnd("ctx");
  730. ][0];
  731. $recv($recv($self.secondPane)._asJQuery())._css_put_("left",$recv($recv((100).__minus(percentage))._asString()).__comma("%"));
  732. return self;
  733. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  734. }, function($ctx1) {$ctx1.fill(self,"resize:",{anInteger:anInteger,container:container,size:size,offset:offset,percentage:percentage})});
  735. //>>excludeEnd("ctx");
  736. }; }),
  737. $globals.HLVerticalSplitter);
  738. $core.addMethod(
  739. $core.method({
  740. selector: "setupSplitter",
  741. protocol: "rendering",
  742. //>>excludeStart("ide", pragmas.excludeIdeData);
  743. args: [],
  744. source: "setupSplitter\x0a\x09splitter asJQuery draggable: #{ \x0a \x09'axis' -> 'x'. \x0a 'containment' -> splitter asJQuery parent.\x0a 'helper' -> 'clone'.\x0a 'start' -> [ :e :ui | self startResizing: ui helper ].\x0a 'drag' -> [ :e :ui | self resize: (ui offset left) ] }",
  745. referencedClasses: [],
  746. //>>excludeEnd("ide");
  747. pragmas: [],
  748. messageSends: ["draggable:", "asJQuery", "parent", "startResizing:", "helper", "resize:", "left", "offset"]
  749. }, function ($methodClass){ return function (){
  750. var self=this,$self=this;
  751. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  752. return $core.withContext(function($ctx1) {
  753. //>>excludeEnd("ctx");
  754. $recv([$recv($self.splitter)._asJQuery()
  755. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  756. ,$ctx1.sendIdx["asJQuery"]=1
  757. //>>excludeEnd("ctx");
  758. ][0])._draggable_($globals.HashedCollection._newFromPairs_(["axis","x","containment",$recv($recv($self.splitter)._asJQuery())._parent(),"helper","clone","start",(function(e,ui){
  759. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  760. return $core.withContext(function($ctx2) {
  761. //>>excludeEnd("ctx");
  762. return $self._startResizing_($recv(ui)._helper());
  763. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  764. }, function($ctx2) {$ctx2.fillBlock({e:e,ui:ui},$ctx1,1)});
  765. //>>excludeEnd("ctx");
  766. }),"drag",(function(e,ui){
  767. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  768. return $core.withContext(function($ctx2) {
  769. //>>excludeEnd("ctx");
  770. return $self._resize_($recv($recv(ui)._offset())._left());
  771. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  772. }, function($ctx2) {$ctx2.fillBlock({e:e,ui:ui},$ctx1,2)});
  773. //>>excludeEnd("ctx");
  774. })]));
  775. return self;
  776. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  777. }, function($ctx1) {$ctx1.fill(self,"setupSplitter",{})});
  778. //>>excludeEnd("ctx");
  779. }; }),
  780. $globals.HLVerticalSplitter);
  781. $core.addMethod(
  782. $core.method({
  783. selector: "startResizing:",
  784. protocol: "actions",
  785. //>>excludeStart("ide", pragmas.excludeIdeData);
  786. args: ["aSplitter"],
  787. source: "startResizing: aSplitter\x0a\x09aSplitter height: splitter asJQuery height",
  788. referencedClasses: [],
  789. //>>excludeEnd("ide");
  790. pragmas: [],
  791. messageSends: ["height:", "height", "asJQuery"]
  792. }, function ($methodClass){ return function (aSplitter){
  793. var self=this,$self=this;
  794. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  795. return $core.withContext(function($ctx1) {
  796. //>>excludeEnd("ctx");
  797. $recv(aSplitter)._height_($recv($recv($self.splitter)._asJQuery())._height());
  798. return self;
  799. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  800. }, function($ctx1) {$ctx1.fill(self,"startResizing:",{aSplitter:aSplitter})});
  801. //>>excludeEnd("ctx");
  802. }; }),
  803. $globals.HLVerticalSplitter);
  804. $core.addMethod(
  805. $core.method({
  806. selector: "isHeliosSplitter",
  807. protocol: "*Helios-Layout",
  808. //>>excludeStart("ide", pragmas.excludeIdeData);
  809. args: [],
  810. source: "isHeliosSplitter\x0a\x09^ false",
  811. referencedClasses: [],
  812. //>>excludeEnd("ide");
  813. pragmas: [],
  814. messageSends: []
  815. }, function ($methodClass){ return function (){
  816. var self=this,$self=this;
  817. return false;
  818. }; }),
  819. $globals.Object);
  820. });