/Frameworks/AppKit/browser.platform/CPScrollView.j

http://github.com/jfahrenkrug/MapKit-HelloWorld · Unknown · 377 lines · 377 code · 0 blank · 0 comment · 0 complexity · 44ca593d9ebc6785215c76784f9768bd MD5 · raw file

  1. i;8;CPView.ji;12;CPClipView.ji;12;CPScroller.jc;14690;
  2. var _1=objj_allocateClassPair(CPView,"CPScrollView"),_2=_1.isa;
  3. class_addIvars(_1,[new objj_ivar("_contentView"),new objj_ivar("_hasVerticalScroller"),new objj_ivar("_hasHorizontalScroller"),new objj_ivar("_autohidesScrollers"),new objj_ivar("_verticalScroller"),new objj_ivar("_horizontalScroller"),new objj_ivar("_recursionCount"),new objj_ivar("_verticalLineScroll"),new objj_ivar("_verticalPageScroll"),new objj_ivar("_horizontalLineScroll"),new objj_ivar("_horizontalPageScroll")]);
  4. objj_registerClassPair(_1);
  5. objj_addClassForBundle(_1,objj_getBundleWithPath(OBJJ_CURRENT_BUNDLE.path));
  6. class_addMethods(_1,[new objj_method(sel_getUid("initWithFrame:"),function(_3,_4,_5){
  7. with(_3){
  8. _3=objj_msgSendSuper({receiver:_3,super_class:objj_getClass("CPView")},"initWithFrame:",_5);
  9. if(_3){
  10. _verticalLineScroll=10;
  11. _verticalPageScroll=10;
  12. _horizontalLineScroll=10;
  13. _horizontalPageScroll=10;
  14. _contentView=objj_msgSend(objj_msgSend(CPClipView,"alloc"),"initWithFrame:",objj_msgSend(_3,"bounds"));
  15. objj_msgSend(_3,"addSubview:",_contentView);
  16. objj_msgSend(_3,"setHasVerticalScroller:",YES);
  17. objj_msgSend(_3,"setHasHorizontalScroller:",YES);
  18. }
  19. return _3;
  20. }
  21. }),new objj_method(sel_getUid("contentSize"),function(_6,_7){
  22. with(_6){
  23. return objj_msgSend(_contentView,"frame").size;
  24. }
  25. }),new objj_method(sel_getUid("documentView"),function(_8,_9){
  26. with(_8){
  27. return objj_msgSend(_contentView,"documentView");
  28. }
  29. }),new objj_method(sel_getUid("setContentView:"),function(_a,_b,_c){
  30. with(_a){
  31. if(!_c){
  32. return;
  33. }
  34. var _d=objj_msgSend(_c,"documentView");
  35. if(_d){
  36. objj_msgSend(_d,"removeFromSuperview");
  37. }
  38. objj_msgSend(_contentView,"removeFromSuperview");
  39. var _e=objj_msgSend(_a,"contentSize");
  40. _contentView=_c;
  41. objj_msgSend(_contentView,"setFrame:",CGRectMake(0,0,_e.width,_e.height));
  42. objj_msgSend(_contentView,"setDocumentView:",_d);
  43. objj_msgSend(_a,"addSubview:",_contentView);
  44. }
  45. }),new objj_method(sel_getUid("contentView"),function(_f,_10){
  46. with(_f){
  47. return _contentView;
  48. }
  49. }),new objj_method(sel_getUid("setDocumentView:"),function(_11,_12,_13){
  50. with(_11){
  51. objj_msgSend(_contentView,"setDocumentView:",_13);
  52. objj_msgSend(_11,"reflectScrolledClipView:",_contentView);
  53. }
  54. }),new objj_method(sel_getUid("reflectScrolledClipView:"),function(_14,_15,_16){
  55. with(_14){
  56. if(_contentView!==_16){
  57. return;
  58. }
  59. if(_recursionCount>5){
  60. return;
  61. }
  62. ++_recursionCount;
  63. var _17=objj_msgSend(_14,"documentView");
  64. if(!_17){
  65. if(_autohidesScrollers){
  66. objj_msgSend(_verticalScroller,"setHidden:",YES);
  67. objj_msgSend(_horizontalScroller,"setHidden:",YES);
  68. }else{
  69. }
  70. objj_msgSend(_contentView,"setFrame:",objj_msgSend(_14,"bounds"));
  71. --_recursionCount;
  72. return;
  73. }
  74. var _18=objj_msgSend(_17,"frame"),_19=objj_msgSend(_14,"bounds"),_1a=objj_msgSend(_contentView,"bounds").origin,_1b={width:CPRectGetWidth(_18)-CPRectGetWidth(_19),height:CPRectGetHeight(_18)-CPRectGetHeight(_19)},_1c=(!_autohidesScrollers||_1b.height>0)&&_hasVerticalScroller,_1d=(!_autohidesScrollers||_1b.width>0)&&_hasHorizontalScroller,_1e=!objj_msgSend(_verticalScroller,"isHidden"),_1f=!objj_msgSend(_horizontalScroller,"isHidden"),_20=(objj_msgSend(_verticalScroller,"frame").size.width);
  75. horizontalScrollerHeight=(objj_msgSend(_horizontalScroller,"frame").size.height);
  76. if(_autohidesScrollers){
  77. if(_1c){
  78. _1d=(!_autohidesScrollers||_1b.width>-_20)&&_hasHorizontalScroller;
  79. }
  80. if(_1d){
  81. _1c=(!_autohidesScrollers||_1b.height>-horizontalScrollerHeight)&&_hasVerticalScroller;
  82. }
  83. }
  84. objj_msgSend(_verticalScroller,"setHidden:",!_1c);
  85. objj_msgSend(_verticalScroller,"setEnabled:",_1b.height>0);
  86. objj_msgSend(_horizontalScroller,"setHidden:",!_1d);
  87. objj_msgSend(_horizontalScroller,"setEnabled:",_1b.width>0);
  88. if(_1c){
  89. var _21=CPRectGetHeight(_19);
  90. if(_1d){
  91. _21-=horizontalScrollerHeight;
  92. }
  93. _1b.width+=_20;
  94. _19.size.width-=_20;
  95. objj_msgSend(_verticalScroller,"setFloatValue:knobProportion:",(_1b.height<=0)?0:_1a.y/_1b.height,CPRectGetHeight(_19)/CPRectGetHeight(_18));
  96. objj_msgSend(_verticalScroller,"setFrame:",CPRectMake(CPRectGetMaxX(_19),0,_20,_21));
  97. }else{
  98. if(_1e){
  99. objj_msgSend(_verticalScroller,"setFloatValue:knobProportion:",0,1);
  100. }
  101. }
  102. if(_1d){
  103. _1b.height+=horizontalScrollerHeight;
  104. _19.size.height-=horizontalScrollerHeight;
  105. objj_msgSend(_horizontalScroller,"setFloatValue:knobProportion:",(_1b.width<=0)?0:_1a.x/_1b.width,CPRectGetWidth(_19)/CPRectGetWidth(_18));
  106. objj_msgSend(_horizontalScroller,"setFrame:",CPRectMake(0,CPRectGetMaxY(_19),CPRectGetWidth(_19),horizontalScrollerHeight));
  107. }else{
  108. if(_1f){
  109. objj_msgSend(_horizontalScroller,"setFloatValue:knobProportion:",0,1);
  110. }
  111. }
  112. objj_msgSend(_contentView,"setFrame:",_19);
  113. --_recursionCount;
  114. }
  115. }),new objj_method(sel_getUid("setHorizontalScroller:"),function(_22,_23,_24){
  116. with(_22){
  117. if(_horizontalScroller===_24){
  118. return;
  119. }
  120. objj_msgSend(_horizontalScroller,"removeFromSuperview");
  121. objj_msgSend(_horizontalScroller,"setTarget:",nil);
  122. objj_msgSend(_horizontalScroller,"setAction:",nil);
  123. _horizontalScroller=_24;
  124. objj_msgSend(_horizontalScroller,"setTarget:",_22);
  125. objj_msgSend(_horizontalScroller,"setAction:",sel_getUid("_horizontalScrollerDidScroll:"));
  126. objj_msgSend(_22,"addSubview:",_horizontalScroller);
  127. objj_msgSend(_22,"reflectScrolledClipView:",_contentView);
  128. }
  129. }),new objj_method(sel_getUid("horizontalScroller"),function(_25,_26){
  130. with(_25){
  131. return _horizontalScroller;
  132. }
  133. }),new objj_method(sel_getUid("setHasHorizontalScroller:"),function(_27,_28,_29){
  134. with(_27){
  135. if(_hasHorizontalScroller===_29){
  136. return;
  137. }
  138. _hasHorizontalScroller=_29;
  139. if(_hasHorizontalScroller&&!_horizontalScroller){
  140. objj_msgSend(_27,"setHorizontalScroller:",objj_msgSend(objj_msgSend(CPScroller,"alloc"),"initWithFrame:",CGRectMake(0,0,CPRectGetWidth(objj_msgSend(_27,"bounds")),objj_msgSend(CPScroller,"scrollerWidth"))));
  141. }else{
  142. if(!_hasHorizontalScroller&&_horizontalScroller){
  143. objj_msgSend(_horizontalScroller,"setHidden:",YES);
  144. objj_msgSend(_27,"reflectScrolledClipView:",_contentView);
  145. }
  146. }
  147. }
  148. }),new objj_method(sel_getUid("hasHorizontalScroller"),function(_2a,_2b){
  149. with(_2a){
  150. return _hasHorizontalScroller;
  151. }
  152. }),new objj_method(sel_getUid("setVerticalScroller:"),function(_2c,_2d,_2e){
  153. with(_2c){
  154. if(_verticalScroller===_2e){
  155. return;
  156. }
  157. objj_msgSend(_verticalScroller,"removeFromSuperview");
  158. objj_msgSend(_verticalScroller,"setTarget:",nil);
  159. objj_msgSend(_verticalScroller,"setAction:",nil);
  160. _verticalScroller=_2e;
  161. objj_msgSend(_verticalScroller,"setTarget:",_2c);
  162. objj_msgSend(_verticalScroller,"setAction:",sel_getUid("_verticalScrollerDidScroll:"));
  163. objj_msgSend(_2c,"addSubview:",_verticalScroller);
  164. objj_msgSend(_2c,"reflectScrolledClipView:",_contentView);
  165. }
  166. }),new objj_method(sel_getUid("verticalScroller"),function(_2f,_30){
  167. with(_2f){
  168. return _verticalScroller;
  169. }
  170. }),new objj_method(sel_getUid("setHasVerticalScroller:"),function(_31,_32,_33){
  171. with(_31){
  172. if(_hasVerticalScroller===_33){
  173. return;
  174. }
  175. _hasVerticalScroller=_33;
  176. if(_hasVerticalScroller&&!_verticalScroller){
  177. objj_msgSend(_31,"setVerticalScroller:",objj_msgSend(objj_msgSend(CPScroller,"alloc"),"initWithFrame:",CPRectMake(0,0,objj_msgSend(CPScroller,"scrollerWidth"),CPRectGetHeight(objj_msgSend(_31,"bounds")))));
  178. }else{
  179. if(!_hasVerticalScroller&&_verticalScroller){
  180. objj_msgSend(_verticalScroller,"setHidden:",YES);
  181. objj_msgSend(_31,"reflectScrolledClipView:",_contentView);
  182. }
  183. }
  184. }
  185. }),new objj_method(sel_getUid("hasVerticalScroller"),function(_34,_35){
  186. with(_34){
  187. return _hasVerticalScroller;
  188. }
  189. }),new objj_method(sel_getUid("setAutohidesScrollers:"),function(_36,_37,_38){
  190. with(_36){
  191. if(_autohidesScrollers==_38){
  192. return;
  193. }
  194. _autohidesScrollers=_38;
  195. objj_msgSend(_36,"reflectScrolledClipView:",_contentView);
  196. }
  197. }),new objj_method(sel_getUid("autohidesScrollers"),function(_39,_3a){
  198. with(_39){
  199. return _autohidesScrollers;
  200. }
  201. }),new objj_method(sel_getUid("_verticalScrollerDidScroll:"),function(_3b,_3c,_3d){
  202. with(_3b){
  203. var _3e=objj_msgSend(_3d,"floatValue"),_3f=objj_msgSend(objj_msgSend(_contentView,"documentView"),"frame");
  204. contentBounds=objj_msgSend(_contentView,"bounds");
  205. switch(objj_msgSend(_verticalScroller,"hitPart")){
  206. case CPScrollerDecrementLine:
  207. contentBounds.origin.y-=_verticalLineScroll;
  208. break;
  209. case CPScrollerIncrementLine:
  210. contentBounds.origin.y+=_verticalLineScroll;
  211. break;
  212. case CPScrollerDecrementPage:
  213. contentBounds.origin.y-=(contentBounds.size.height)-_verticalPageScroll;
  214. break;
  215. case CPScrollerIncrementPage:
  216. contentBounds.origin.y+=(contentBounds.size.height)-_verticalPageScroll;
  217. break;
  218. case CPScrollerKnobSlot:
  219. case CPScrollerKnob:
  220. default:
  221. contentBounds.origin.y=_3e*((_3f.size.height)-(contentBounds.size.height));
  222. }
  223. objj_msgSend(_contentView,"scrollToPoint:",contentBounds.origin);
  224. }
  225. }),new objj_method(sel_getUid("_horizontalScrollerDidScroll:"),function(_40,_41,_42){
  226. with(_40){
  227. var _43=objj_msgSend(_42,"floatValue"),_44=objj_msgSend(objj_msgSend(_40,"documentView"),"frame"),_45=objj_msgSend(_contentView,"bounds");
  228. switch(objj_msgSend(_horizontalScroller,"hitPart")){
  229. case CPScrollerDecrementLine:
  230. _45.origin.x-=_horizontalLineScroll;
  231. break;
  232. case CPScrollerIncrementLine:
  233. _45.origin.x+=_horizontalLineScroll;
  234. break;
  235. case CPScrollerDecrementPage:
  236. _45.origin.x-=(_45.size.width)-_horizontalPageScroll;
  237. break;
  238. case CPScrollerIncrementPage:
  239. _45.origin.x+=(_45.size.width)-_horizontalPageScroll;
  240. break;
  241. case CPScrollerKnobSlot:
  242. case CPScrollerKnob:
  243. default:
  244. _45.origin.x=_43*((_44.size.width)-(_45.size.width));
  245. }
  246. objj_msgSend(_contentView,"scrollToPoint:",_45.origin);
  247. }
  248. }),new objj_method(sel_getUid("tile"),function(_46,_47){
  249. with(_46){
  250. }
  251. }),new objj_method(sel_getUid("resizeSubviewsWithOldSize:"),function(_48,_49,_4a){
  252. with(_48){
  253. objj_msgSend(_48,"reflectScrolledClipView:",_contentView);
  254. }
  255. }),new objj_method(sel_getUid("setLineScroll:"),function(_4b,_4c,_4d){
  256. with(_4b){
  257. objj_msgSend(_4b,"setHorizonalLineScroll:",_4d);
  258. objj_msgSend(_4b,"setVerticalLineScroll:",_4d);
  259. }
  260. }),new objj_method(sel_getUid("lineScroll"),function(_4e,_4f){
  261. with(_4e){
  262. return objj_msgSend(_4e,"horizontalLineScroll");
  263. }
  264. }),new objj_method(sel_getUid("setHorizontalLineScroll:"),function(_50,_51,_52){
  265. with(_50){
  266. _horizontalLineScroll=_52;
  267. }
  268. }),new objj_method(sel_getUid("horizontalLineScroll"),function(_53,_54){
  269. with(_53){
  270. return _horizontalLineScroll;
  271. }
  272. }),new objj_method(sel_getUid("setVerticalLineScroll:"),function(_55,_56,_57){
  273. with(_55){
  274. _verticalLineScroll=_57;
  275. }
  276. }),new objj_method(sel_getUid("verticalLineScroll"),function(_58,_59){
  277. with(_58){
  278. return _verticalLineScroll;
  279. }
  280. }),new objj_method(sel_getUid("setPageScroll:"),function(_5a,_5b,_5c){
  281. with(_5a){
  282. objj_msgSend(_5a,"setHorizontalPageScroll:",_5c);
  283. objj_msgSend(_5a,"setVerticalPageScroll:",_5c);
  284. }
  285. }),new objj_method(sel_getUid("pageScroll"),function(_5d,_5e){
  286. with(_5d){
  287. return objj_msgSend(_5d,"horizontalPageScroll");
  288. }
  289. }),new objj_method(sel_getUid("setHorizontalPageScroll:"),function(_5f,_60,_61){
  290. with(_5f){
  291. _horizontalPageScroll=_61;
  292. }
  293. }),new objj_method(sel_getUid("horizontalPageScroll"),function(_62,_63){
  294. with(_62){
  295. return _horizontalPageScroll;
  296. }
  297. }),new objj_method(sel_getUid("setVerticalPageScroll:"),function(_64,_65,_66){
  298. with(_64){
  299. _verticalPageScroll=_66;
  300. }
  301. }),new objj_method(sel_getUid("verticalPageScroll"),function(_67,_68){
  302. with(_67){
  303. return _verticalPageScroll;
  304. }
  305. }),new objj_method(sel_getUid("scrollWheel:"),function(_69,_6a,_6b){
  306. with(_69){
  307. var _6c=objj_msgSend(_verticalScroller,"floatValue"),_6d=objj_msgSend(objj_msgSend(_69,"documentView"),"frame"),_6e=objj_msgSend(_contentView,"bounds");
  308. _6e.origin.x+=objj_msgSend(_6b,"deltaX")*_horizontalLineScroll;
  309. _6e.origin.y+=objj_msgSend(_6b,"deltaY")*_verticalLineScroll;
  310. objj_msgSend(_contentView,"scrollToPoint:",_6e.origin);
  311. }
  312. }),new objj_method(sel_getUid("keyDown:"),function(_6f,_70,_71){
  313. with(_6f){
  314. var _72=objj_msgSend(_71,"keyCode"),_73=objj_msgSend(_verticalScroller,"floatValue"),_74=objj_msgSend(objj_msgSend(_6f,"documentView"),"frame"),_75=objj_msgSend(_contentView,"bounds");
  315. switch(_72){
  316. case 33:
  317. _75.origin.y-=(_75.size.height)-_verticalPageScroll;
  318. break;
  319. case 34:
  320. _75.origin.y+=(_75.size.height)-_verticalPageScroll;
  321. break;
  322. case 38:
  323. _75.origin.y-=_verticalLineScroll;
  324. break;
  325. case 40:
  326. _75.origin.y+=_verticalLineScroll;
  327. break;
  328. case 37:
  329. _75.origin.x-=_horizontalLineScroll;
  330. break;
  331. case 49:
  332. _75.origin.x+=_horizontalLineScroll;
  333. break;
  334. default:
  335. return objj_msgSendSuper({receiver:_6f,super_class:objj_getClass("CPView")},"keyDown:",_71);
  336. }
  337. objj_msgSend(_contentView,"scrollToPoint:",_75.origin);
  338. }
  339. })]);
  340. var _76="CPScrollViewContentView",_77="CPScrollViewVLineScroll",_78="CPScrollViewHLineScroll",_79="CPScrollViewVPageScroll",_7a="CPScrollViewHPageScroll",_7b="CPScrollViewHasVScroller",_7c="CPScrollViewHasHScroller",_7d="CPScrollViewVScroller",_7e="CPScrollViewHScroller",_7f="CPScrollViewAutohidesScroller";
  341. var _1=objj_getClass("CPScrollView");
  342. if(!_1){
  343. objj_exception_throw(new objj_exception(OBJJClassNotFoundException,"*** Could not find definition for class \"CPScrollView\""));
  344. }
  345. var _2=_1.isa;
  346. class_addMethods(_1,[new objj_method(sel_getUid("initWithCoder:"),function(_80,_81,_82){
  347. with(_80){
  348. if(_80=objj_msgSendSuper({receiver:_80,super_class:objj_getClass("CPView")},"initWithCoder:",_82)){
  349. _verticalLineScroll=objj_msgSend(_82,"decodeFloatForKey:",_77);
  350. _verticalPageScroll=objj_msgSend(_82,"decodeFloatForKey:",_79);
  351. _horizontalLineScroll=objj_msgSend(_82,"decodeFloatForKey:",_78);
  352. _horizontalPageScroll=objj_msgSend(_82,"decodeFloatForKey:",_7a);
  353. _contentView=objj_msgSend(_82,"decodeObjectForKey:",_76);
  354. _verticalScroller=objj_msgSend(_82,"decodeObjectForKey:",_7d);
  355. _horizontalScroller=objj_msgSend(_82,"decodeObjectForKey:",_7e);
  356. _hasVerticalScroller=objj_msgSend(_82,"decodeBoolForKey:",_7b);
  357. _hasHorizontalScroller=objj_msgSend(_82,"decodeBoolForKey:",_7c);
  358. _autohidesScrollers=objj_msgSend(_82,"decodeBoolForKey:",_7f);
  359. objj_msgSend(objj_msgSend(CPRunLoop,"currentRunLoop"),"performSelector:target:argument:order:modes:",sel_getUid("reflectScrolledClipView:"),_80,_contentView,0,[CPDefaultRunLoopMode]);
  360. }
  361. return _80;
  362. }
  363. }),new objj_method(sel_getUid("encodeWithCoder:"),function(_83,_84,_85){
  364. with(_83){
  365. objj_msgSendSuper({receiver:_83,super_class:objj_getClass("CPView")},"encodeWithCoder:",_85);
  366. objj_msgSend(_85,"encodeObject:forKey:",_contentView,_76);
  367. objj_msgSend(_85,"encodeObject:forKey:",_verticalScroller,_7d);
  368. objj_msgSend(_85,"encodeObject:forKey:",_horizontalScroller,_7e);
  369. objj_msgSend(_85,"encodeFloat:forKey:",_verticalLineScroll,_77);
  370. objj_msgSend(_85,"encodeFloat:forKey:",_verticalPageScroll,_79);
  371. objj_msgSend(_85,"encodeFloat:forKey:",_horizontalLineScroll,_78);
  372. objj_msgSend(_85,"encodeFloat:forKey:",_horizontalPageScroll,_7a);
  373. objj_msgSend(_85,"encodeBool:forKey:",_hasVerticalScroller,_7b);
  374. objj_msgSend(_85,"encodeBool:forKey:",_hasHorizontalScroller,_7c);
  375. objj_msgSend(_85,"encodeBool:forKey:",_autohidesScrollers,_7f);
  376. }
  377. })]);