jsduck 0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (388) hide show
  1. data/.gitignore +1 -0
  2. data/COPYING +674 -0
  3. data/README.md +197 -0
  4. data/Rakefile +23 -0
  5. data/bin/jsduck +63 -0
  6. data/jsduck.gemspec +21 -0
  7. data/lib/jsduck/aggregator.rb +104 -0
  8. data/lib/jsduck/app.rb +89 -0
  9. data/lib/jsduck/cfg_table.rb +21 -0
  10. data/lib/jsduck/class.rb +116 -0
  11. data/lib/jsduck/doc_formatter.rb +69 -0
  12. data/lib/jsduck/doc_parser.rb +277 -0
  13. data/lib/jsduck/event_table.rb +33 -0
  14. data/lib/jsduck/lexer.rb +193 -0
  15. data/lib/jsduck/long_params.rb +31 -0
  16. data/lib/jsduck/merger.rb +286 -0
  17. data/lib/jsduck/method_table.rb +45 -0
  18. data/lib/jsduck/page.rb +56 -0
  19. data/lib/jsduck/parser.rb +195 -0
  20. data/lib/jsduck/property_table.rb +21 -0
  21. data/lib/jsduck/short_params.rb +28 -0
  22. data/lib/jsduck/table.rb +109 -0
  23. data/lib/jsduck/tree.rb +104 -0
  24. data/lib/jsduck/tree_icons.rb +19 -0
  25. data/template/index.html +45 -0
  26. data/template/resources/TabCloseMenu.js +150 -0
  27. data/template/resources/block-bottom.gif +0 -0
  28. data/template/resources/block-top.gif +0 -0
  29. data/template/resources/class.gif +0 -0
  30. data/template/resources/cmp.gif +0 -0
  31. data/template/resources/collapse-all.gif +0 -0
  32. data/template/resources/config.gif +0 -0
  33. data/template/resources/css/ext-all.css +6789 -0
  34. data/template/resources/css/xtheme-gray.css +1654 -0
  35. data/template/resources/docs.css +359 -0
  36. data/template/resources/docs.gif +0 -0
  37. data/template/resources/docs.js +672 -0
  38. data/template/resources/event.gif +0 -0
  39. data/template/resources/expand-all.gif +0 -0
  40. data/template/resources/expand-bg-over.gif +0 -0
  41. data/template/resources/expand-bg.gif +0 -0
  42. data/template/resources/expand-members.gif +0 -0
  43. data/template/resources/ext-all.js +11 -0
  44. data/template/resources/ext-base.js +7 -0
  45. data/template/resources/extanim32.gif +0 -0
  46. data/template/resources/fav.gif +0 -0
  47. data/template/resources/favicon.ico +0 -0
  48. data/template/resources/hd-bg.png +0 -0
  49. data/template/resources/hide-inherited.gif +0 -0
  50. data/template/resources/images/default/box/corners-blue.gif +0 -0
  51. data/template/resources/images/default/box/corners.gif +0 -0
  52. data/template/resources/images/default/box/l-blue.gif +0 -0
  53. data/template/resources/images/default/box/l.gif +0 -0
  54. data/template/resources/images/default/box/r-blue.gif +0 -0
  55. data/template/resources/images/default/box/r.gif +0 -0
  56. data/template/resources/images/default/box/tb-blue.gif +0 -0
  57. data/template/resources/images/default/box/tb.gif +0 -0
  58. data/template/resources/images/default/button/arrow.gif +0 -0
  59. data/template/resources/images/default/button/btn.gif +0 -0
  60. data/template/resources/images/default/button/group-cs.gif +0 -0
  61. data/template/resources/images/default/button/group-lr.gif +0 -0
  62. data/template/resources/images/default/button/group-tb.gif +0 -0
  63. data/template/resources/images/default/button/s-arrow-b-noline.gif +0 -0
  64. data/template/resources/images/default/button/s-arrow-b.gif +0 -0
  65. data/template/resources/images/default/button/s-arrow-bo.gif +0 -0
  66. data/template/resources/images/default/button/s-arrow-noline.gif +0 -0
  67. data/template/resources/images/default/button/s-arrow-o.gif +0 -0
  68. data/template/resources/images/default/button/s-arrow.gif +0 -0
  69. data/template/resources/images/default/dd/drop-add.gif +0 -0
  70. data/template/resources/images/default/dd/drop-no.gif +0 -0
  71. data/template/resources/images/default/dd/drop-yes.gif +0 -0
  72. data/template/resources/images/default/editor/tb-sprite.gif +0 -0
  73. data/template/resources/images/default/form/checkbox.gif +0 -0
  74. data/template/resources/images/default/form/clear-trigger.gif +0 -0
  75. data/template/resources/images/default/form/clear-trigger.psd +0 -0
  76. data/template/resources/images/default/form/date-trigger.gif +0 -0
  77. data/template/resources/images/default/form/date-trigger.psd +0 -0
  78. data/template/resources/images/default/form/error-tip-corners.gif +0 -0
  79. data/template/resources/images/default/form/exclamation.gif +0 -0
  80. data/template/resources/images/default/form/radio.gif +0 -0
  81. data/template/resources/images/default/form/search-trigger.gif +0 -0
  82. data/template/resources/images/default/form/search-trigger.psd +0 -0
  83. data/template/resources/images/default/form/text-bg.gif +0 -0
  84. data/template/resources/images/default/form/trigger-square.gif +0 -0
  85. data/template/resources/images/default/form/trigger-square.psd +0 -0
  86. data/template/resources/images/default/form/trigger-tpl.gif +0 -0
  87. data/template/resources/images/default/form/trigger.gif +0 -0
  88. data/template/resources/images/default/form/trigger.psd +0 -0
  89. data/template/resources/images/default/gradient-bg.gif +0 -0
  90. data/template/resources/images/default/grid/arrow-left-white.gif +0 -0
  91. data/template/resources/images/default/grid/arrow-right-white.gif +0 -0
  92. data/template/resources/images/default/grid/col-move-bottom.gif +0 -0
  93. data/template/resources/images/default/grid/col-move-top.gif +0 -0
  94. data/template/resources/images/default/grid/columns.gif +0 -0
  95. data/template/resources/images/default/grid/dirty.gif +0 -0
  96. data/template/resources/images/default/grid/done.gif +0 -0
  97. data/template/resources/images/default/grid/drop-no.gif +0 -0
  98. data/template/resources/images/default/grid/drop-yes.gif +0 -0
  99. data/template/resources/images/default/grid/footer-bg.gif +0 -0
  100. data/template/resources/images/default/grid/grid-blue-hd.gif +0 -0
  101. data/template/resources/images/default/grid/grid-blue-split.gif +0 -0
  102. data/template/resources/images/default/grid/grid-hrow.gif +0 -0
  103. data/template/resources/images/default/grid/grid-loading.gif +0 -0
  104. data/template/resources/images/default/grid/grid-split.gif +0 -0
  105. data/template/resources/images/default/grid/grid-vista-hd.gif +0 -0
  106. data/template/resources/images/default/grid/grid3-hd-btn.gif +0 -0
  107. data/template/resources/images/default/grid/grid3-hrow-over.gif +0 -0
  108. data/template/resources/images/default/grid/grid3-hrow.gif +0 -0
  109. data/template/resources/images/default/grid/grid3-special-col-bg.gif +0 -0
  110. data/template/resources/images/default/grid/grid3-special-col-sel-bg.gif +0 -0
  111. data/template/resources/images/default/grid/group-by.gif +0 -0
  112. data/template/resources/images/default/grid/group-collapse.gif +0 -0
  113. data/template/resources/images/default/grid/group-expand-sprite.gif +0 -0
  114. data/template/resources/images/default/grid/group-expand.gif +0 -0
  115. data/template/resources/images/default/grid/hd-pop.gif +0 -0
  116. data/template/resources/images/default/grid/hmenu-asc.gif +0 -0
  117. data/template/resources/images/default/grid/hmenu-desc.gif +0 -0
  118. data/template/resources/images/default/grid/hmenu-lock.gif +0 -0
  119. data/template/resources/images/default/grid/hmenu-lock.png +0 -0
  120. data/template/resources/images/default/grid/hmenu-unlock.gif +0 -0
  121. data/template/resources/images/default/grid/hmenu-unlock.png +0 -0
  122. data/template/resources/images/default/grid/invalid_line.gif +0 -0
  123. data/template/resources/images/default/grid/loading.gif +0 -0
  124. data/template/resources/images/default/grid/mso-hd.gif +0 -0
  125. data/template/resources/images/default/grid/nowait.gif +0 -0
  126. data/template/resources/images/default/grid/page-first-disabled.gif +0 -0
  127. data/template/resources/images/default/grid/page-first.gif +0 -0
  128. data/template/resources/images/default/grid/page-last-disabled.gif +0 -0
  129. data/template/resources/images/default/grid/page-last.gif +0 -0
  130. data/template/resources/images/default/grid/page-next-disabled.gif +0 -0
  131. data/template/resources/images/default/grid/page-next.gif +0 -0
  132. data/template/resources/images/default/grid/page-prev-disabled.gif +0 -0
  133. data/template/resources/images/default/grid/page-prev.gif +0 -0
  134. data/template/resources/images/default/grid/pick-button.gif +0 -0
  135. data/template/resources/images/default/grid/refresh.gif +0 -0
  136. data/template/resources/images/default/grid/row-check-sprite.gif +0 -0
  137. data/template/resources/images/default/grid/row-expand-sprite.gif +0 -0
  138. data/template/resources/images/default/grid/row-over.gif +0 -0
  139. data/template/resources/images/default/grid/row-sel.gif +0 -0
  140. data/template/resources/images/default/grid/sort-hd.gif +0 -0
  141. data/template/resources/images/default/grid/sort_asc.gif +0 -0
  142. data/template/resources/images/default/grid/sort_desc.gif +0 -0
  143. data/template/resources/images/default/grid/wait.gif +0 -0
  144. data/template/resources/images/default/layout/collapse.gif +0 -0
  145. data/template/resources/images/default/layout/expand.gif +0 -0
  146. data/template/resources/images/default/layout/gradient-bg.gif +0 -0
  147. data/template/resources/images/default/layout/mini-bottom.gif +0 -0
  148. data/template/resources/images/default/layout/mini-left.gif +0 -0
  149. data/template/resources/images/default/layout/mini-right.gif +0 -0
  150. data/template/resources/images/default/layout/mini-top.gif +0 -0
  151. data/template/resources/images/default/layout/ns-collapse.gif +0 -0
  152. data/template/resources/images/default/layout/ns-expand.gif +0 -0
  153. data/template/resources/images/default/layout/panel-close.gif +0 -0
  154. data/template/resources/images/default/layout/panel-title-bg.gif +0 -0
  155. data/template/resources/images/default/layout/panel-title-light-bg.gif +0 -0
  156. data/template/resources/images/default/layout/stick.gif +0 -0
  157. data/template/resources/images/default/layout/stuck.gif +0 -0
  158. data/template/resources/images/default/layout/tab-close-on.gif +0 -0
  159. data/template/resources/images/default/layout/tab-close.gif +0 -0
  160. data/template/resources/images/default/menu/checked.gif +0 -0
  161. data/template/resources/images/default/menu/group-checked.gif +0 -0
  162. data/template/resources/images/default/menu/item-over.gif +0 -0
  163. data/template/resources/images/default/menu/menu-parent.gif +0 -0
  164. data/template/resources/images/default/menu/menu.gif +0 -0
  165. data/template/resources/images/default/menu/unchecked.gif +0 -0
  166. data/template/resources/images/default/panel/corners-sprite.gif +0 -0
  167. data/template/resources/images/default/panel/left-right.gif +0 -0
  168. data/template/resources/images/default/panel/light-hd.gif +0 -0
  169. data/template/resources/images/default/panel/tool-sprite-tpl.gif +0 -0
  170. data/template/resources/images/default/panel/tool-sprites.gif +0 -0
  171. data/template/resources/images/default/panel/tools-sprites-trans.gif +0 -0
  172. data/template/resources/images/default/panel/top-bottom.gif +0 -0
  173. data/template/resources/images/default/panel/top-bottom.png +0 -0
  174. data/template/resources/images/default/panel/white-corners-sprite.gif +0 -0
  175. data/template/resources/images/default/panel/white-left-right.gif +0 -0
  176. data/template/resources/images/default/panel/white-top-bottom.gif +0 -0
  177. data/template/resources/images/default/progress/progress-bg.gif +0 -0
  178. data/template/resources/images/default/qtip/bg.gif +0 -0
  179. data/template/resources/images/default/qtip/close.gif +0 -0
  180. data/template/resources/images/default/qtip/tip-anchor-sprite.gif +0 -0
  181. data/template/resources/images/default/qtip/tip-sprite.gif +0 -0
  182. data/template/resources/images/default/s.gif +0 -0
  183. data/template/resources/images/default/shadow-c.png +0 -0
  184. data/template/resources/images/default/shadow-lr.png +0 -0
  185. data/template/resources/images/default/shadow.png +0 -0
  186. data/template/resources/images/default/shared/blue-loading.gif +0 -0
  187. data/template/resources/images/default/shared/calendar.gif +0 -0
  188. data/template/resources/images/default/shared/glass-bg.gif +0 -0
  189. data/template/resources/images/default/shared/hd-sprite.gif +0 -0
  190. data/template/resources/images/default/shared/large-loading.gif +0 -0
  191. data/template/resources/images/default/shared/left-btn.gif +0 -0
  192. data/template/resources/images/default/shared/loading-balls.gif +0 -0
  193. data/template/resources/images/default/shared/right-btn.gif +0 -0
  194. data/template/resources/images/default/shared/warning.gif +0 -0
  195. data/template/resources/images/default/sizer/e-handle-dark.gif +0 -0
  196. data/template/resources/images/default/sizer/e-handle.gif +0 -0
  197. data/template/resources/images/default/sizer/ne-handle-dark.gif +0 -0
  198. data/template/resources/images/default/sizer/ne-handle.gif +0 -0
  199. data/template/resources/images/default/sizer/nw-handle-dark.gif +0 -0
  200. data/template/resources/images/default/sizer/nw-handle.gif +0 -0
  201. data/template/resources/images/default/sizer/s-handle-dark.gif +0 -0
  202. data/template/resources/images/default/sizer/s-handle.gif +0 -0
  203. data/template/resources/images/default/sizer/se-handle-dark.gif +0 -0
  204. data/template/resources/images/default/sizer/se-handle.gif +0 -0
  205. data/template/resources/images/default/sizer/square.gif +0 -0
  206. data/template/resources/images/default/sizer/sw-handle-dark.gif +0 -0
  207. data/template/resources/images/default/sizer/sw-handle.gif +0 -0
  208. data/template/resources/images/default/slider/slider-bg.png +0 -0
  209. data/template/resources/images/default/slider/slider-thumb.png +0 -0
  210. data/template/resources/images/default/slider/slider-v-bg.png +0 -0
  211. data/template/resources/images/default/slider/slider-v-thumb.png +0 -0
  212. data/template/resources/images/default/tabs/scroll-left.gif +0 -0
  213. data/template/resources/images/default/tabs/scroll-right.gif +0 -0
  214. data/template/resources/images/default/tabs/scroller-bg.gif +0 -0
  215. data/template/resources/images/default/tabs/tab-btm-inactive-left-bg.gif +0 -0
  216. data/template/resources/images/default/tabs/tab-btm-inactive-right-bg.gif +0 -0
  217. data/template/resources/images/default/tabs/tab-btm-left-bg.gif +0 -0
  218. data/template/resources/images/default/tabs/tab-btm-over-left-bg.gif +0 -0
  219. data/template/resources/images/default/tabs/tab-btm-over-right-bg.gif +0 -0
  220. data/template/resources/images/default/tabs/tab-btm-right-bg.gif +0 -0
  221. data/template/resources/images/default/tabs/tab-close.gif +0 -0
  222. data/template/resources/images/default/tabs/tab-strip-bg.gif +0 -0
  223. data/template/resources/images/default/tabs/tab-strip-bg.png +0 -0
  224. data/template/resources/images/default/tabs/tab-strip-btm-bg.gif +0 -0
  225. data/template/resources/images/default/tabs/tabs-sprite.gif +0 -0
  226. data/template/resources/images/default/toolbar/bg.gif +0 -0
  227. data/template/resources/images/default/toolbar/btn-arrow-light.gif +0 -0
  228. data/template/resources/images/default/toolbar/btn-arrow.gif +0 -0
  229. data/template/resources/images/default/toolbar/btn-over-bg.gif +0 -0
  230. data/template/resources/images/default/toolbar/gray-bg.gif +0 -0
  231. data/template/resources/images/default/toolbar/more.gif +0 -0
  232. data/template/resources/images/default/toolbar/tb-bg.gif +0 -0
  233. data/template/resources/images/default/toolbar/tb-btn-sprite.gif +0 -0
  234. data/template/resources/images/default/toolbar/tb-xl-btn-sprite.gif +0 -0
  235. data/template/resources/images/default/toolbar/tb-xl-sep.gif +0 -0
  236. data/template/resources/images/default/tree/arrows.gif +0 -0
  237. data/template/resources/images/default/tree/drop-add.gif +0 -0
  238. data/template/resources/images/default/tree/drop-between.gif +0 -0
  239. data/template/resources/images/default/tree/drop-no.gif +0 -0
  240. data/template/resources/images/default/tree/drop-over.gif +0 -0
  241. data/template/resources/images/default/tree/drop-under.gif +0 -0
  242. data/template/resources/images/default/tree/drop-yes.gif +0 -0
  243. data/template/resources/images/default/tree/elbow-end-minus-nl.gif +0 -0
  244. data/template/resources/images/default/tree/elbow-end-minus.gif +0 -0
  245. data/template/resources/images/default/tree/elbow-end-plus-nl.gif +0 -0
  246. data/template/resources/images/default/tree/elbow-end-plus.gif +0 -0
  247. data/template/resources/images/default/tree/elbow-end.gif +0 -0
  248. data/template/resources/images/default/tree/elbow-line.gif +0 -0
  249. data/template/resources/images/default/tree/elbow-minus-nl.gif +0 -0
  250. data/template/resources/images/default/tree/elbow-minus.gif +0 -0
  251. data/template/resources/images/default/tree/elbow-plus-nl.gif +0 -0
  252. data/template/resources/images/default/tree/elbow-plus.gif +0 -0
  253. data/template/resources/images/default/tree/elbow.gif +0 -0
  254. data/template/resources/images/default/tree/folder-open.gif +0 -0
  255. data/template/resources/images/default/tree/folder.gif +0 -0
  256. data/template/resources/images/default/tree/leaf.gif +0 -0
  257. data/template/resources/images/default/tree/loading.gif +0 -0
  258. data/template/resources/images/default/tree/s.gif +0 -0
  259. data/template/resources/images/default/window/icon-error.gif +0 -0
  260. data/template/resources/images/default/window/icon-info.gif +0 -0
  261. data/template/resources/images/default/window/icon-question.gif +0 -0
  262. data/template/resources/images/default/window/icon-warning.gif +0 -0
  263. data/template/resources/images/default/window/left-corners.png +0 -0
  264. data/template/resources/images/default/window/left-corners.psd +0 -0
  265. data/template/resources/images/default/window/left-right.png +0 -0
  266. data/template/resources/images/default/window/left-right.psd +0 -0
  267. data/template/resources/images/default/window/right-corners.png +0 -0
  268. data/template/resources/images/default/window/right-corners.psd +0 -0
  269. data/template/resources/images/default/window/top-bottom.png +0 -0
  270. data/template/resources/images/default/window/top-bottom.psd +0 -0
  271. data/template/resources/images/gray/button/btn-arrow.gif +0 -0
  272. data/template/resources/images/gray/button/btn-sprite.gif +0 -0
  273. data/template/resources/images/gray/button/btn.gif +0 -0
  274. data/template/resources/images/gray/button/group-cs.gif +0 -0
  275. data/template/resources/images/gray/button/group-lr.gif +0 -0
  276. data/template/resources/images/gray/button/group-tb.gif +0 -0
  277. data/template/resources/images/gray/button/s-arrow-bo.gif +0 -0
  278. data/template/resources/images/gray/button/s-arrow-o.gif +0 -0
  279. data/template/resources/images/gray/form/clear-trigger.gif +0 -0
  280. data/template/resources/images/gray/form/date-trigger.gif +0 -0
  281. data/template/resources/images/gray/form/search-trigger.gif +0 -0
  282. data/template/resources/images/gray/form/trigger-square.gif +0 -0
  283. data/template/resources/images/gray/form/trigger.gif +0 -0
  284. data/template/resources/images/gray/gradient-bg.gif +0 -0
  285. data/template/resources/images/gray/grid/col-move-bottom.gif +0 -0
  286. data/template/resources/images/gray/grid/col-move-top.gif +0 -0
  287. data/template/resources/images/gray/grid/grid3-hd-btn.gif +0 -0
  288. data/template/resources/images/gray/grid/grid3-hrow-over.gif +0 -0
  289. data/template/resources/images/gray/grid/grid3-hrow-over2.gif +0 -0
  290. data/template/resources/images/gray/grid/grid3-hrow.gif +0 -0
  291. data/template/resources/images/gray/grid/grid3-hrow2.gif +0 -0
  292. data/template/resources/images/gray/grid/grid3-special-col-bg.gif +0 -0
  293. data/template/resources/images/gray/grid/grid3-special-col-bg2.gif +0 -0
  294. data/template/resources/images/gray/grid/grid3-special-col-sel-bg.gif +0 -0
  295. data/template/resources/images/gray/grid/group-collapse.gif +0 -0
  296. data/template/resources/images/gray/grid/group-expand-sprite.gif +0 -0
  297. data/template/resources/images/gray/grid/group-expand.gif +0 -0
  298. data/template/resources/images/gray/grid/page-first.gif +0 -0
  299. data/template/resources/images/gray/grid/page-last.gif +0 -0
  300. data/template/resources/images/gray/grid/page-next.gif +0 -0
  301. data/template/resources/images/gray/grid/page-prev.gif +0 -0
  302. data/template/resources/images/gray/grid/refresh.gif +0 -0
  303. data/template/resources/images/gray/grid/row-expand-sprite.gif +0 -0
  304. data/template/resources/images/gray/grid/sort_asc.gif +0 -0
  305. data/template/resources/images/gray/grid/sort_desc.gif +0 -0
  306. data/template/resources/images/gray/menu/group-checked.gif +0 -0
  307. data/template/resources/images/gray/menu/item-over-disabled.gif +0 -0
  308. data/template/resources/images/gray/menu/item-over.gif +0 -0
  309. data/template/resources/images/gray/menu/menu-parent.gif +0 -0
  310. data/template/resources/images/gray/panel/corners-sprite.gif +0 -0
  311. data/template/resources/images/gray/panel/left-right.gif +0 -0
  312. data/template/resources/images/gray/panel/light-hd.gif +0 -0
  313. data/template/resources/images/gray/panel/tool-sprite-tpl.gif +0 -0
  314. data/template/resources/images/gray/panel/tool-sprites.gif +0 -0
  315. data/template/resources/images/gray/panel/tools-sprites-trans.gif +0 -0
  316. data/template/resources/images/gray/panel/top-bottom.gif +0 -0
  317. data/template/resources/images/gray/panel/top-bottom.png +0 -0
  318. data/template/resources/images/gray/panel/white-corners-sprite.gif +0 -0
  319. data/template/resources/images/gray/panel/white-left-right.gif +0 -0
  320. data/template/resources/images/gray/panel/white-top-bottom.gif +0 -0
  321. data/template/resources/images/gray/progress/progress-bg.gif +0 -0
  322. data/template/resources/images/gray/qtip/bg.gif +0 -0
  323. data/template/resources/images/gray/qtip/close.gif +0 -0
  324. data/template/resources/images/gray/qtip/tip-anchor-sprite.gif +0 -0
  325. data/template/resources/images/gray/qtip/tip-sprite.gif +0 -0
  326. data/template/resources/images/gray/s.gif +0 -0
  327. data/template/resources/images/gray/shared/hd-sprite.gif +0 -0
  328. data/template/resources/images/gray/shared/left-btn.gif +0 -0
  329. data/template/resources/images/gray/shared/right-btn.gif +0 -0
  330. data/template/resources/images/gray/sizer/e-handle.gif +0 -0
  331. data/template/resources/images/gray/sizer/ne-handle.gif +0 -0
  332. data/template/resources/images/gray/sizer/nw-handle.gif +0 -0
  333. data/template/resources/images/gray/sizer/s-handle.gif +0 -0
  334. data/template/resources/images/gray/sizer/se-handle.gif +0 -0
  335. data/template/resources/images/gray/sizer/square.gif +0 -0
  336. data/template/resources/images/gray/sizer/sw-handle.gif +0 -0
  337. data/template/resources/images/gray/slider/slider-thumb.png +0 -0
  338. data/template/resources/images/gray/slider/slider-v-thumb.png +0 -0
  339. data/template/resources/images/gray/tabs/scroll-left.gif +0 -0
  340. data/template/resources/images/gray/tabs/scroll-right.gif +0 -0
  341. data/template/resources/images/gray/tabs/scroller-bg.gif +0 -0
  342. data/template/resources/images/gray/tabs/tab-btm-inactive-left-bg.gif +0 -0
  343. data/template/resources/images/gray/tabs/tab-btm-inactive-right-bg.gif +0 -0
  344. data/template/resources/images/gray/tabs/tab-btm-left-bg.gif +0 -0
  345. data/template/resources/images/gray/tabs/tab-btm-over-left-bg.gif +0 -0
  346. data/template/resources/images/gray/tabs/tab-btm-over-right-bg.gif +0 -0
  347. data/template/resources/images/gray/tabs/tab-btm-right-bg.gif +0 -0
  348. data/template/resources/images/gray/tabs/tab-close.gif +0 -0
  349. data/template/resources/images/gray/tabs/tab-strip-bg.gif +0 -0
  350. data/template/resources/images/gray/tabs/tab-strip-bg.png +0 -0
  351. data/template/resources/images/gray/tabs/tab-strip-btm-bg.gif +0 -0
  352. data/template/resources/images/gray/tabs/tabs-sprite.gif +0 -0
  353. data/template/resources/images/gray/toolbar/bg.gif +0 -0
  354. data/template/resources/images/gray/toolbar/btn-arrow-light.gif +0 -0
  355. data/template/resources/images/gray/toolbar/btn-arrow.gif +0 -0
  356. data/template/resources/images/gray/toolbar/btn-over-bg.gif +0 -0
  357. data/template/resources/images/gray/toolbar/gray-bg.gif +0 -0
  358. data/template/resources/images/gray/toolbar/more.gif +0 -0
  359. data/template/resources/images/gray/toolbar/tb-bg.gif +0 -0
  360. data/template/resources/images/gray/toolbar/tb-btn-sprite.gif +0 -0
  361. data/template/resources/images/gray/tree/arrows.gif +0 -0
  362. data/template/resources/images/gray/tree/elbow-end-minus-nl.gif +0 -0
  363. data/template/resources/images/gray/tree/elbow-end-minus.gif +0 -0
  364. data/template/resources/images/gray/tree/elbow-end-plus-nl.gif +0 -0
  365. data/template/resources/images/gray/tree/elbow-end-plus.gif +0 -0
  366. data/template/resources/images/gray/window/icon-error.gif +0 -0
  367. data/template/resources/images/gray/window/icon-info.gif +0 -0
  368. data/template/resources/images/gray/window/icon-question.gif +0 -0
  369. data/template/resources/images/gray/window/icon-warning.gif +0 -0
  370. data/template/resources/images/gray/window/left-corners.png +0 -0
  371. data/template/resources/images/gray/window/left-corners.pspimage +0 -0
  372. data/template/resources/images/gray/window/left-right.png +0 -0
  373. data/template/resources/images/gray/window/right-corners.png +0 -0
  374. data/template/resources/images/gray/window/top-bottom.png +0 -0
  375. data/template/resources/inherited.gif +0 -0
  376. data/template/resources/member-collapsed.gif +0 -0
  377. data/template/resources/member-expanded.gif +0 -0
  378. data/template/resources/member-hover.gif +0 -0
  379. data/template/resources/method.gif +0 -0
  380. data/template/resources/pkg-closed.gif +0 -0
  381. data/template/resources/pkg-open.gif +0 -0
  382. data/template/resources/pkg.gif +0 -0
  383. data/template/resources/prop.gif +0 -0
  384. data/template/resources/s.gif +0 -0
  385. data/template/resources/static.gif +0 -0
  386. data/template/resources/style.css +302 -0
  387. data/template/welcome.html +45 -0
  388. metadata +481 -0
@@ -0,0 +1,359 @@
1
+ body {
2
+ font: normal 12px helvetica,arial,verdana,tahoma,sans-serif;
3
+ }
4
+ html, body {
5
+ margin:0;
6
+ padding:0;
7
+ border:0 none;
8
+ overflow:hidden;
9
+ height:100%;
10
+ width:100%;
11
+ }
12
+ #class .loading-indicator{
13
+ font-size:12px;
14
+ height:18px;
15
+ }
16
+
17
+
18
+ #docs .top-toolbar{
19
+ border:0 none;
20
+ border-top:1px solid #d0d0d0;
21
+ background:transparent;
22
+ }
23
+ #docs .top-toolbar button {
24
+
25
+ }
26
+ .x-panel-noborder {
27
+ border: 0 none;
28
+ }
29
+ #header {
30
+ height: 44px;
31
+ }
32
+ #header h1 {
33
+ float: left;
34
+ margin-left: 20px;
35
+ font-size: 20px;
36
+ line-height: 44px;
37
+ color: #444;
38
+ font-weight: normal;
39
+ }
40
+ #header strong {
41
+ font-weight: bold;
42
+ padding-right: 20px;
43
+ }
44
+ #header p {
45
+ float: right;
46
+ margin: 15px 15px 0 0;
47
+ color: #ccc;
48
+ }
49
+
50
+ .docs-header .x-panel-body {
51
+ background:transparent;
52
+ }
53
+
54
+ #header .api-title {
55
+ font:normal 16px helvetica, arial, tahoma, sans-serif;
56
+ color:black;
57
+ margin:5px;
58
+ }
59
+
60
+ .loading-indicator {
61
+ font-size:11px;
62
+ background-image:url(images/default/grid/loading.gif);
63
+ background-repeat: no-repeat;
64
+ background-position:top left;
65
+ padding-left:20px;
66
+ height:18px;
67
+ text-align:left;
68
+ }
69
+
70
+ #doc-body .loading-indicator {
71
+ font:bold 13px Helvetica, Arial, Tahoma, Verdana, sans-serif;
72
+ position:absolute;
73
+ top:35%;
74
+ left:43%;
75
+ color:#444;
76
+ background-image:url(images/default/shared/large-loading.gif);
77
+ background-repeat: no-repeat;
78
+ background-position:left 5px;
79
+ padding:10px 10px 10px 38px;
80
+ text-align:left;
81
+ }
82
+ a#welcome-link{
83
+ background:#fff url(docs.gif) no-repeat 0px 0px;
84
+ padding-left:18px;
85
+ }
86
+ #loading-mask{
87
+ position:absolute;
88
+ left:0;
89
+ top:0;
90
+ width:100%;
91
+ height:100%;
92
+ z-index:20000;
93
+ background-color:white;
94
+ }
95
+ #loading{
96
+ position:absolute;
97
+ left:45%;
98
+ top:40%;
99
+ padding:2px;
100
+ z-index:20001;
101
+ height:auto;
102
+ }
103
+ #loading img {
104
+ margin-bottom:5px;
105
+ }
106
+ #loading .loading-indicator{
107
+ background:white;
108
+ color:#555;
109
+ font:bold 13px helvetica,arial,tahoma,sans-serif;
110
+ padding:10px;
111
+ margin:0;
112
+ text-align:center;
113
+ height:auto;
114
+ }
115
+ #api-tree a span {
116
+ font-family:helvetica,arial,verdana,tahoma,sans-serif;
117
+ font-size:11px;
118
+ }
119
+ #api-tree .cls a:hover span {
120
+ text-decoration:underline;
121
+ }
122
+ #api-tree .x-panel-body {
123
+ background-color:white;
124
+ position:relative;
125
+ padding:3px;
126
+ }
127
+ #api-tree .cls{
128
+ border:1px solid #fff;
129
+ }
130
+
131
+ #api-tree .x-tree-selected {
132
+ border:1px dotted #a3bae9;
133
+ background:#DFE8F6;
134
+ }
135
+ #api-tree .x-tree-node .x-tree-selected a span{
136
+ background:transparent;
137
+ color:#1E4176;
138
+ font-weight:bold;
139
+ }
140
+
141
+ a {
142
+ color: #1E4176;
143
+ }
144
+ a:link {
145
+ color: #1E4176;
146
+ text-decoration: none;
147
+ }
148
+
149
+ a:visited {
150
+ color: #555;
151
+ text-decoration: none;
152
+ }
153
+
154
+ a:hover {
155
+ text-decoration: underline;
156
+ color: #15428b;
157
+ }
158
+
159
+ #welcome {
160
+ position:relative;
161
+ top:0;
162
+ left: 0;
163
+ zoom:1;
164
+ }
165
+ .col{
166
+ margin:0 250px 0 10px;
167
+ zoom:1;
168
+ padding: 10px 0;
169
+ }
170
+
171
+ .col-last {
172
+ width: 220px;
173
+ position:absolute;
174
+ right:10px;
175
+ top:10px;
176
+ }
177
+
178
+ .block{
179
+ margin-bottom:10px;
180
+ }
181
+ .block-title{
182
+ color: #1E4176;
183
+ font:normal 18px helvetica,arial,tahoma,verdana,sans-serif;
184
+ letter-spacing:-1px;
185
+ padding: 4px;
186
+ padding-left: 8px;
187
+ }
188
+ .block-body{
189
+ padding:8px;
190
+ padding-top:2px;
191
+ }
192
+ .block-body b{
193
+ color:#333333;
194
+ font-size:11px;
195
+ }
196
+ .block-body em {
197
+ display:block;
198
+ margin-top:5px;
199
+ font-size:11px;
200
+ color:gray;
201
+ text-align:right;
202
+ }
203
+ .list{
204
+ list-style: square;
205
+ padding-left:20px;
206
+ margin-top:5px;
207
+ }
208
+
209
+ .res-block {
210
+ padding-top:5px;
211
+ background:transparent url(block-top.gif) no-repeat;
212
+ width:210px;
213
+ margin-bottom:15px;
214
+ }
215
+ .res-block-inner {
216
+ padding:6px 11px;
217
+ background:transparent url(block-bottom.gif) no-repeat left bottom;
218
+ }
219
+
220
+ .res-block h3 {
221
+ /* font: bold 12px tahoma,arial,sans-serif; */
222
+ color:#555;
223
+ margin-bottom:8px;
224
+ }
225
+
226
+ .res-block ul {
227
+ list-style-type: disc;
228
+ margin-left:15px;
229
+ /* font: normal 12px tahoma,arial,sans-serif; */
230
+ color:#555;
231
+ }
232
+
233
+ .res-block ul li {
234
+ margin:0 0 5px 3px;
235
+ }
236
+
237
+ .hide-inherited .inherited {
238
+ display:none;
239
+ }
240
+
241
+ #doc-body .x-tab-panel-body {
242
+ background:#fff url(images/default/form/text-bg.gif) repeat-x 0 0;
243
+ }
244
+ #doc-body .x-panel-body, #doc-body .body-wrap {
245
+ background:transparent !important;
246
+ }
247
+ .icon-cls {
248
+ background-image: url(class.gif) !important;
249
+ }
250
+ .icon-event {
251
+ background-image: url(event.gif) !important;
252
+ }
253
+ .icon-config {
254
+ background-image: url(config.gif) !important;
255
+ }
256
+ .icon-prop {
257
+ background-image: url(prop.gif) !important;
258
+ }
259
+ .icon-method {
260
+ background-image: url(method.gif) !important;
261
+ }
262
+ .icon-cmp {
263
+ background-image: url(cmp.gif) !important;
264
+ }
265
+ .icon-pkg {
266
+ background-image: url(pkg.gif) !important;
267
+ }
268
+ .icon-fav {
269
+ background-image: url(fav.gif) !important;
270
+ }
271
+ .icon-static {
272
+ background-image: url(static.gif) !important;
273
+ }
274
+ .icon-docs {
275
+ background-image: url(docs.gif) !important;
276
+ }
277
+ .icon-expand-all {
278
+ background-image: url(expand-all.gif) !important;
279
+ }
280
+ .icon-collapse-all {
281
+ background-image: url(collapse-all.gif) !important;
282
+ }
283
+ .icon-expand-members {
284
+ background-image: url(expand-members.gif) !important;
285
+ }
286
+ .icon-hide-inherited {
287
+ background-image: url(hide-inherited.gif) !important;
288
+ }
289
+
290
+ #legend li {
291
+ line-height:16px;
292
+ }
293
+ .item-icon {
294
+ vertical-align:top;
295
+ width:16px;
296
+ height:16px;
297
+ margin-right:6px;
298
+ }
299
+ .ext-ie .item-icon {
300
+ vertical-align:middle;
301
+ }
302
+ h3.home-title {
303
+ margin:5px 0;
304
+ font:bold 13px helvetica,arial,tahoma,sans-serif;
305
+ color:#444;
306
+ }
307
+
308
+ .search-item {
309
+ margin:5px 5px 9px;
310
+ padding:0 5px 10px 0;
311
+ }
312
+
313
+ .search-item .member {
314
+ font:bold 12px helvetica,arial,tahoma,sans-serif;
315
+ color:#444;
316
+ margin:5px;
317
+ overflow:hidden;
318
+ white-space:nowrap;
319
+ zoom:1;
320
+ }
321
+
322
+ .search-item .cls {
323
+ font:normal 12px helvetica,arial,tahoma,sans-serif;
324
+ color:#444;
325
+ margin:5px;
326
+ overflow:hidden;
327
+ text-align:left;
328
+ white-space:nowrap;
329
+ zoom:1;
330
+ }
331
+ .search-item p {
332
+ font:normal 11px helvetica,arial,tahoma,sans-serif;
333
+ clear:both;
334
+ margin: 0 5px 5px 28px;
335
+ color:#444;
336
+ zoom:1;
337
+ }
338
+ #search .loading-indicator {
339
+ position:static !important;
340
+ }
341
+ #search h3 {
342
+ font:normal 12px helvetica,arial,tahoma,sans-serif;
343
+ color:#444;
344
+ margin:10px;
345
+ }
346
+ .inner-link .item-icon, .bookmark .item-icon{
347
+ margin-right:3px;
348
+ }
349
+ .inner-link, .bookmark {
350
+ margin-left:10px;
351
+ }
352
+
353
+ .x-viewport body {
354
+ background: #ededed url(hd-bg.png) repeat-x !important;
355
+ }
356
+
357
+ .x-border-layout-ct {
358
+ background:none;
359
+ }
Binary file
@@ -0,0 +1,672 @@
1
+ Ext.BLANK_IMAGE_URL = 'resources/s.gif';
2
+
3
+ Docs = {};
4
+
5
+ ApiPanel = function() {
6
+ ApiPanel.superclass.constructor.call(this, {
7
+ id:'api-tree',
8
+ region:'west',
9
+ split:true,
10
+ header: false,
11
+ width: 280,
12
+ minSize: 175,
13
+ maxSize: 500,
14
+ collapsible: true,
15
+ margins:'0 0 5 5',
16
+ cmargins:'0 0 0 0',
17
+ rootVisible:false,
18
+ lines:false,
19
+ autoScroll:true,
20
+ animCollapse:false,
21
+ animate: false,
22
+ collapseMode:'mini',
23
+ loader: new Ext.tree.TreeLoader({
24
+ preloadChildren: true,
25
+ clearOnLoad: false
26
+ }),
27
+ root: new Ext.tree.AsyncTreeNode({
28
+ text:'Ext JS',
29
+ id:'root',
30
+ expanded:true,
31
+ children:[Docs.classData]
32
+ }),
33
+ collapseFirst:false
34
+ });
35
+ // no longer needed!
36
+ //new Ext.tree.TreeSorter(this, {folderSort:true,leafAttr:'isClass'});
37
+
38
+ this.getSelectionModel().on('beforeselect', function(sm, node){
39
+ return node.isLeaf();
40
+ });
41
+ };
42
+
43
+ Ext.extend(ApiPanel, Ext.tree.TreePanel, {
44
+ initComponent: function(){
45
+ this.hiddenPkgs = [];
46
+ Ext.apply(this, {
47
+ tbar:[ ' ',
48
+ new Ext.form.TextField({
49
+ width: 200,
50
+ emptyText:'Find a Class',
51
+ enableKeyEvents: true,
52
+ listeners:{
53
+ render: function(f){
54
+ this.filter = new Ext.tree.TreeFilter(this, {
55
+ clearBlank: true,
56
+ autoClear: true
57
+ });
58
+ },
59
+ keydown: {
60
+ fn: this.filterTree,
61
+ buffer: 350,
62
+ scope: this
63
+ },
64
+ scope: this
65
+ }
66
+ }), ' ', ' ',
67
+ {
68
+ iconCls: 'icon-expand-all',
69
+ tooltip: 'Expand All',
70
+ handler: function(){ this.root.expand(true); },
71
+ scope: this
72
+ }, '-', {
73
+ iconCls: 'icon-collapse-all',
74
+ tooltip: 'Collapse All',
75
+ handler: function(){ this.root.collapse(true); },
76
+ scope: this
77
+ }]
78
+ })
79
+ ApiPanel.superclass.initComponent.call(this);
80
+ },
81
+ filterTree: function(t, e){
82
+ var text = t.getValue();
83
+ Ext.each(this.hiddenPkgs, function(n){
84
+ n.ui.show();
85
+ });
86
+ if(!text){
87
+ this.filter.clear();
88
+ return;
89
+ }
90
+ this.expandAll();
91
+
92
+ var re = new RegExp('^' + Ext.escapeRe(text), 'i');
93
+ this.filter.filterBy(function(n){
94
+ return !n.attributes.isClass || re.test(n.text);
95
+ });
96
+
97
+ // hide empty packages that weren't filtered
98
+ this.hiddenPkgs = [];
99
+ var me = this;
100
+ this.root.cascade(function(n){
101
+ if(!n.attributes.isClass && n.ui.ctNode.offsetHeight < 3){
102
+ n.ui.hide();
103
+ me.hiddenPkgs.push(n);
104
+ }
105
+ });
106
+ },
107
+ selectClass : function(cls){
108
+ if(cls){
109
+ var parts = cls.split('.');
110
+ var last = parts.length-1;
111
+ var res = [];
112
+ var pkg = [];
113
+ for(var i = 0; i < last; i++){ // things get nasty - static classes can have .
114
+ var p = parts[i];
115
+ var fc = p.charAt(0);
116
+ var staticCls = fc.toUpperCase() == fc;
117
+ if(p == 'Ext' || !staticCls){
118
+ pkg.push(p);
119
+ res[i] = 'pkg-'+pkg.join('.');
120
+ }else if(staticCls){
121
+ --last;
122
+ res.splice(i, 1);
123
+ }
124
+ }
125
+ res[last] = cls;
126
+
127
+ this.selectPath('/root/apidocs/'+res.join('/'));
128
+ }
129
+ }
130
+ });
131
+
132
+
133
+ DocPanel = Ext.extend(Ext.Panel, {
134
+ closable: true,
135
+ autoScroll:true,
136
+
137
+ initComponent : function(){
138
+ var ps = this.cclass.split('.');
139
+ this.title = ps[ps.length-1];
140
+ Ext.apply(this,{
141
+ tbar: ['->',{
142
+ text: 'Config Options',
143
+ handler: this.scrollToMember.createDelegate(this, ['configs']),
144
+ iconCls: 'icon-config'
145
+ },'-',{
146
+ text: 'Properties',
147
+ handler: this.scrollToMember.createDelegate(this, ['props']),
148
+ iconCls: 'icon-prop'
149
+ }, '-',{
150
+ text: 'Methods',
151
+ handler: this.scrollToMember.createDelegate(this, ['methods']),
152
+ iconCls: 'icon-method'
153
+ }, '-',{
154
+ text: 'Events',
155
+ handler: this.scrollToMember.createDelegate(this, ['events']),
156
+ iconCls: 'icon-event'
157
+ }, '-',{
158
+ text: 'Direct Link',
159
+ handler: this.directLink,
160
+ scope: this,
161
+ iconCls: 'icon-fav'
162
+ }, '-',{
163
+ tooltip:'Hide Inherited Members',
164
+ iconCls: 'icon-hide-inherited',
165
+ enableToggle: true,
166
+ scope: this,
167
+ toggleHandler : function(b, pressed){
168
+ this.body[pressed ? 'addClass' : 'removeClass']('hide-inherited');
169
+ }
170
+ }, '-', {
171
+ tooltip:'Expand All Members',
172
+ iconCls: 'icon-expand-members',
173
+ enableToggle: true,
174
+ scope: this,
175
+ toggleHandler : function(b, pressed){
176
+ this.body[pressed ? 'addClass' : 'removeClass']('full-details');
177
+ }
178
+ }]
179
+ });
180
+ DocPanel.superclass.initComponent.call(this);
181
+ },
182
+
183
+ directLink : function(){
184
+ var link = String.format(
185
+ "<a href=\"{0}\" target=\"_blank\">{0}</a>",
186
+ document.location.href+'?class='+this.cclass
187
+ );
188
+ Ext.Msg.alert('Direct Link to ' + this.cclass,link);
189
+ },
190
+
191
+ scrollToMember : function(member){
192
+ var el = Ext.fly(this.cclass + '-' + member);
193
+ if(el){
194
+ var top = (el.getOffsetsTo(this.body)[1]) + this.body.dom.scrollTop;
195
+ this.body.scrollTo('top', top-25, {duration:0.75, callback: this.hlMember.createDelegate(this, [member])});
196
+ }
197
+ },
198
+
199
+ scrollToSection : function(id){
200
+ var el = Ext.getDom(id);
201
+ if(el){
202
+ var top = (Ext.fly(el).getOffsetsTo(this.body)[1]) + this.body.dom.scrollTop;
203
+ this.body.scrollTo('top', top-25, {duration:0.5, callback: function(){
204
+ Ext.fly(el).next('h2').pause(0.2).highlight('#8DB2E3', {attr:'color'});
205
+ }});
206
+ }
207
+ },
208
+
209
+ hlMember : function(member){
210
+ var el = Ext.fly(this.cclass + '-' + member);
211
+ if(el){
212
+ if (tr = el.up('tr')) {
213
+ tr.highlight('#cadaf9');
214
+ }
215
+ }
216
+ }
217
+ });
218
+
219
+
220
+ MainPanel = function(){
221
+
222
+ this.searchStore = new Ext.data.Store({
223
+ proxy: new Ext.data.ScriptTagProxy({
224
+ url: 'http://extjs.com/playpen/api.php'
225
+ }),
226
+ reader: new Ext.data.JsonReader({
227
+ root: 'data'
228
+ },
229
+ ['cls', 'member', 'type', 'doc']
230
+ ),
231
+ baseParams: {},
232
+ listeners: {
233
+ 'beforeload' : function(){
234
+ this.baseParams.qt = Ext.getCmp('search-type').getValue();
235
+ }
236
+ }
237
+ });
238
+
239
+ MainPanel.superclass.constructor.call(this, {
240
+ id:'doc-body',
241
+ region:'center',
242
+ margins:'0 5 5 0',
243
+ resizeTabs: true,
244
+ minTabWidth: 135,
245
+ tabWidth: 135,
246
+ plugins: new Ext.ux.TabCloseMenu(),
247
+ enableTabScroll: true,
248
+ activeTab: 0,
249
+
250
+ items: {
251
+ id:'welcome-panel',
252
+ title: 'API Home',
253
+ autoLoad: {url: 'welcome.html', callback: this.initSearch, scope: this},
254
+ iconCls:'icon-docs',
255
+ autoScroll: true,
256
+ tbar: [
257
+ 'Search: ', ' ',
258
+ new Ext.ux.SelectBox({
259
+ listClass:'x-combo-list-small',
260
+ width:90,
261
+ value:'Starts with',
262
+ id:'search-type',
263
+ store: new Ext.data.SimpleStore({
264
+ fields: ['text'],
265
+ expandData: true,
266
+ data : ['Starts with', 'Ends with', 'Any match']
267
+ }),
268
+ displayField: 'text'
269
+ }), ' ',
270
+ new Ext.app.SearchField({
271
+ width:240,
272
+ store: this.searchStore,
273
+ paramName: 'q'
274
+ })
275
+ ]
276
+ }
277
+ });
278
+ };
279
+
280
+ Ext.extend(MainPanel, Ext.TabPanel, {
281
+
282
+ initEvents : function(){
283
+ MainPanel.superclass.initEvents.call(this);
284
+ this.body.on('click', this.onClick, this);
285
+ },
286
+
287
+ onClick: function(e, target){
288
+ if(target = e.getTarget('a:not(.exi)', 3)){
289
+ var cls = Ext.fly(target).getAttributeNS('ext', 'cls');
290
+ e.stopEvent();
291
+ if(cls){
292
+ var member = Ext.fly(target).getAttributeNS('ext', 'member');
293
+ this.loadClass(target.href, cls, member);
294
+ }else if(target.className == 'inner-link'){
295
+ this.getActiveTab().scrollToSection(target.href.split('#')[1]);
296
+ }else{
297
+ window.open(target.href);
298
+ }
299
+ }else if(target = e.getTarget('.micon', 2)){
300
+ e.stopEvent();
301
+ var tr = Ext.fly(target.parentNode);
302
+ if(tr.hasClass('expandable')){
303
+ tr.toggleClass('expanded');
304
+ }
305
+ }
306
+ },
307
+
308
+ loadClass : function(href, cls, member){
309
+ var id = 'docs-' + cls;
310
+ var tab = this.getComponent(id);
311
+ if(tab){
312
+ this.setActiveTab(tab);
313
+ if(member){
314
+ tab.scrollToMember(member);
315
+ }
316
+ }else{
317
+ var autoLoad = {url: href};
318
+ if(member){
319
+ autoLoad.callback = function(){
320
+ Ext.getCmp(id).scrollToMember(member);
321
+ }
322
+ }
323
+ var p = this.add(new DocPanel({
324
+ id: id,
325
+ cclass : cls,
326
+ autoLoad: autoLoad,
327
+ iconCls: Docs.icons[cls]
328
+ }));
329
+ this.setActiveTab(p);
330
+ }
331
+ },
332
+
333
+ initSearch : function(){
334
+ // Custom rendering Template for the View
335
+ var resultTpl = new Ext.XTemplate(
336
+ '<tpl for=".">',
337
+ '<div class="search-item">',
338
+ '<a class="member" ext:cls="{cls}" ext:member="{member}" href="output/{cls}.html">',
339
+ '<img src="../resources/images/default/s.gif" class="item-icon icon-{type}"/>{member}',
340
+ '</a> ',
341
+ '<a class="cls" ext:cls="{cls}" href="output/{cls}.html">{cls}</a>',
342
+ '<p>{doc}</p>',
343
+ '</div></tpl>'
344
+ );
345
+
346
+ var p = new Ext.DataView({
347
+ applyTo: 'search',
348
+ tpl: resultTpl,
349
+ loadingText:'Searching...',
350
+ store: this.searchStore,
351
+ itemSelector: 'div.search-item',
352
+ emptyText: '<h3>Use the search field above to search the Ext API for classes, properties, config options, methods and events.</h3>'
353
+ });
354
+ },
355
+
356
+ doSearch : function(e){
357
+ var k = e.getKey();
358
+ if(!e.isSpecialKey()){
359
+ var text = e.target.value;
360
+ if(!text){
361
+ this.searchStore.baseParams.q = '';
362
+ this.searchStore.removeAll();
363
+ }else{
364
+ this.searchStore.baseParams.q = text;
365
+ this.searchStore.reload();
366
+ }
367
+ }
368
+ }
369
+ });
370
+
371
+
372
+ Ext.onReady(function(){
373
+
374
+ Ext.QuickTips.init();
375
+
376
+ var api = new ApiPanel();
377
+ var mainPanel = new MainPanel();
378
+
379
+ api.on('click', function(node, e){
380
+ if(node.isLeaf()){
381
+ e.stopEvent();
382
+ mainPanel.loadClass(node.attributes.href, node.id);
383
+ }
384
+ });
385
+
386
+ mainPanel.on('tabchange', function(tp, tab){
387
+ api.selectClass(tab.cclass);
388
+ });
389
+
390
+ var viewport = new Ext.Viewport({
391
+ layout:'border',
392
+ items:[ {
393
+ cls: 'docs-header',
394
+ height: 44,
395
+ region:'north',
396
+ xtype:'box',
397
+ el:'header',
398
+ border:false,
399
+ margins: '0 0 5 0'
400
+ }, api, mainPanel ]
401
+ });
402
+
403
+ api.expandPath('/root/apidocs');
404
+
405
+ // allow for link in
406
+ var page = window.location.href.split('?')[1];
407
+ if(page){
408
+ var ps = Ext.urlDecode(page);
409
+ var cls = ps['class'];
410
+ mainPanel.loadClass('output/' + cls + '.html', cls, ps.member);
411
+ }
412
+
413
+ viewport.doLayout();
414
+
415
+ setTimeout(function(){
416
+ Ext.get('loading').remove();
417
+ Ext.get('loading-mask').fadeOut({remove:true});
418
+ }, 250);
419
+
420
+ });
421
+
422
+
423
+ Ext.app.SearchField = Ext.extend(Ext.form.TwinTriggerField, {
424
+ initComponent : function(){
425
+ if(!this.store.baseParams){
426
+ this.store.baseParams = {};
427
+ }
428
+ Ext.app.SearchField.superclass.initComponent.call(this);
429
+ this.on('specialkey', function(f, e){
430
+ if(e.getKey() == e.ENTER){
431
+ this.onTrigger2Click();
432
+ }
433
+ }, this);
434
+ },
435
+
436
+ validationEvent:false,
437
+ validateOnBlur:false,
438
+ trigger1Class:'x-form-clear-trigger',
439
+ trigger2Class:'x-form-search-trigger',
440
+ hideTrigger1:true,
441
+ width:180,
442
+ hasSearch : false,
443
+ paramName : 'query',
444
+
445
+ onTrigger1Click : function(){
446
+ if(this.hasSearch){
447
+ this.store.baseParams[this.paramName] = '';
448
+ this.store.removeAll();
449
+ this.el.dom.value = '';
450
+ this.triggers[0].hide();
451
+ this.hasSearch = false;
452
+ this.focus();
453
+ }
454
+ },
455
+
456
+ onTrigger2Click : function(){
457
+ var v = this.getRawValue();
458
+ if(v.length < 1){
459
+ this.onTrigger1Click();
460
+ return;
461
+ }
462
+ if(v.length < 2){
463
+ Ext.Msg.alert('Invalid Search', 'You must enter a minimum of 2 characters to search the API');
464
+ return;
465
+ }
466
+ this.store.baseParams[this.paramName] = v;
467
+ var o = {start: 0};
468
+ this.store.reload({params:o});
469
+ this.hasSearch = true;
470
+ this.triggers[0].show();
471
+ this.focus();
472
+ }
473
+ });
474
+
475
+
476
+ /**
477
+ * Makes a ComboBox more closely mimic an HTML SELECT. Supports clicking and dragging
478
+ * through the list, with item selection occurring when the mouse button is released.
479
+ * When used will automatically set {@link #editable} to false and call {@link Ext.Element#unselectable}
480
+ * on inner elements. Re-enabling editable after calling this will NOT work.
481
+ *
482
+ * @author Corey Gilmore
483
+ * http://extjs.com/forum/showthread.php?t=6392
484
+ *
485
+ * @history 2007-07-08 jvs
486
+ * Slight mods for Ext 2.0
487
+ */
488
+ Ext.ux.SelectBox = function(config){
489
+ this.searchResetDelay = 1000;
490
+ config = config || {};
491
+ config = Ext.apply(config || {}, {
492
+ editable: false,
493
+ forceSelection: true,
494
+ rowHeight: false,
495
+ lastSearchTerm: false,
496
+ triggerAction: 'all',
497
+ mode: 'local'
498
+ });
499
+
500
+ Ext.ux.SelectBox.superclass.constructor.apply(this, arguments);
501
+
502
+ this.lastSelectedIndex = this.selectedIndex || 0;
503
+ };
504
+
505
+ Ext.extend(Ext.ux.SelectBox, Ext.form.ComboBox, {
506
+ lazyInit: false,
507
+ initEvents : function(){
508
+ Ext.ux.SelectBox.superclass.initEvents.apply(this, arguments);
509
+ // you need to use keypress to capture upper/lower case and shift+key, but it doesn't work in IE
510
+ this.el.on('keydown', this.keySearch, this, true);
511
+ this.cshTask = new Ext.util.DelayedTask(this.clearSearchHistory, this);
512
+ },
513
+
514
+ keySearch : function(e, target, options) {
515
+ var raw = e.getKey();
516
+ var key = String.fromCharCode(raw);
517
+ var startIndex = 0;
518
+
519
+ if( !this.store.getCount() ) {
520
+ return;
521
+ }
522
+
523
+ switch(raw) {
524
+ case Ext.EventObject.HOME:
525
+ e.stopEvent();
526
+ this.selectFirst();
527
+ return;
528
+
529
+ case Ext.EventObject.END:
530
+ e.stopEvent();
531
+ this.selectLast();
532
+ return;
533
+
534
+ case Ext.EventObject.PAGEDOWN:
535
+ this.selectNextPage();
536
+ e.stopEvent();
537
+ return;
538
+
539
+ case Ext.EventObject.PAGEUP:
540
+ this.selectPrevPage();
541
+ e.stopEvent();
542
+ return;
543
+ }
544
+
545
+ // skip special keys other than the shift key
546
+ if( (e.hasModifier() && !e.shiftKey) || e.isNavKeyPress() || e.isSpecialKey() ) {
547
+ return;
548
+ }
549
+ if( this.lastSearchTerm == key ) {
550
+ startIndex = this.lastSelectedIndex;
551
+ }
552
+ this.search(this.displayField, key, startIndex);
553
+ this.cshTask.delay(this.searchResetDelay);
554
+ },
555
+
556
+ onRender : function(ct, position) {
557
+ this.store.on('load', this.calcRowsPerPage, this);
558
+ Ext.ux.SelectBox.superclass.onRender.apply(this, arguments);
559
+ if( this.mode == 'local' ) {
560
+ this.calcRowsPerPage();
561
+ }
562
+ },
563
+
564
+ onSelect : function(record, index, skipCollapse){
565
+ if(this.fireEvent('beforeselect', this, record, index) !== false){
566
+ this.setValue(record.data[this.valueField || this.displayField]);
567
+ if( !skipCollapse ) {
568
+ this.collapse();
569
+ }
570
+ this.lastSelectedIndex = index + 1;
571
+ this.fireEvent('select', this, record, index);
572
+ }
573
+ },
574
+
575
+ render : function(ct) {
576
+ Ext.ux.SelectBox.superclass.render.apply(this, arguments);
577
+ if( Ext.isSafari ) {
578
+ this.el.swallowEvent('mousedown', true);
579
+ }
580
+ this.el.unselectable();
581
+ this.innerList.unselectable();
582
+ this.trigger.unselectable();
583
+ this.innerList.on('mouseup', function(e, target, options) {
584
+ if( target.id && target.id == this.innerList.id ) {
585
+ return;
586
+ }
587
+ this.onViewClick();
588
+ }, this);
589
+
590
+ this.innerList.on('mouseover', function(e, target, options) {
591
+ if( target.id && target.id == this.innerList.id ) {
592
+ return;
593
+ }
594
+ this.lastSelectedIndex = this.view.getSelectedIndexes()[0] + 1;
595
+ this.cshTask.delay(this.searchResetDelay);
596
+ }, this);
597
+
598
+ this.trigger.un('click', this.onTriggerClick, this);
599
+ this.trigger.on('mousedown', function(e, target, options) {
600
+ e.preventDefault();
601
+ this.onTriggerClick();
602
+ }, this);
603
+
604
+ this.on('collapse', function(e, target, options) {
605
+ Ext.getDoc().un('mouseup', this.collapseIf, this);
606
+ }, this, true);
607
+
608
+ this.on('expand', function(e, target, options) {
609
+ Ext.getDoc().on('mouseup', this.collapseIf, this);
610
+ }, this, true);
611
+ },
612
+
613
+ clearSearchHistory : function() {
614
+ this.lastSelectedIndex = 0;
615
+ this.lastSearchTerm = false;
616
+ },
617
+
618
+ selectFirst : function() {
619
+ this.focusAndSelect(this.store.data.first());
620
+ },
621
+
622
+ selectLast : function() {
623
+ this.focusAndSelect(this.store.data.last());
624
+ },
625
+
626
+ selectPrevPage : function() {
627
+ if( !this.rowHeight ) {
628
+ return;
629
+ }
630
+ var index = Math.max(this.selectedIndex-this.rowsPerPage, 0);
631
+ this.focusAndSelect(this.store.getAt(index));
632
+ },
633
+
634
+ selectNextPage : function() {
635
+ if( !this.rowHeight ) {
636
+ return;
637
+ }
638
+ var index = Math.min(this.selectedIndex+this.rowsPerPage, this.store.getCount() - 1);
639
+ this.focusAndSelect(this.store.getAt(index));
640
+ },
641
+
642
+ search : function(field, value, startIndex) {
643
+ field = field || this.displayField;
644
+ this.lastSearchTerm = value;
645
+ var index = this.store.find.apply(this.store, arguments);
646
+ if( index !== -1 ) {
647
+ this.focusAndSelect(index);
648
+ }
649
+ },
650
+
651
+ focusAndSelect : function(record) {
652
+ var index = typeof record === 'number' ? record : this.store.indexOf(record);
653
+ this.select(index, this.isExpanded());
654
+ this.onSelect(this.store.getAt(record), index, this.isExpanded());
655
+ },
656
+
657
+ calcRowsPerPage : function() {
658
+ if( this.store.getCount() ) {
659
+ this.rowHeight = Ext.fly(this.view.getNode(0)).getHeight();
660
+ this.rowsPerPage = this.maxHeight / this.rowHeight;
661
+ } else {
662
+ this.rowHeight = false;
663
+ }
664
+ }
665
+
666
+ });
667
+
668
+ Ext.Ajax.on('requestcomplete', function(ajax, xhr, o){
669
+ if(typeof urchinTracker == 'function' && o && o.url){
670
+ urchinTracker(o.url);
671
+ }
672
+ });