PageRenderTime 26ms CodeModel.GetById 23ms RepoModel.GetById 0ms app.codeStats 0ms

/build/tools/droiddoc/templates-pdk/assets/android-developer-reference.js

https://gitlab.com/brian0218/rk3066_r-box_android4.2.2_sdk
JavaScript | 390 lines | 318 code | 43 blank | 29 comment | 93 complexity | 47db3060c144a028d306fe42c48b1319 MD5 | raw file
  1. /* API LEVEL TOGGLE */
  2. addLoadEvent(changeApiLevel);
  3. var API_LEVEL_ENABLED_COOKIE = "api_level_enabled";
  4. var API_LEVEL_COOKIE = "api_level";
  5. var minLevel = 1;
  6. function toggleApiLevelSelector(checkbox) {
  7. var date = new Date();
  8. date.setTime(date.getTime()+(10*365*24*60*60*1000)); // keep this for 10 years
  9. var expiration = date.toGMTString();
  10. if (checkbox.checked) {
  11. $("#apiLevelSelector").removeAttr("disabled");
  12. $("#api-level-toggle label").removeClass("disabled");
  13. writeCookie(API_LEVEL_ENABLED_COOKIE, 1, null, expiration);
  14. } else {
  15. $("#apiLevelSelector").attr("disabled","disabled");
  16. $("#api-level-toggle label").addClass("disabled");
  17. writeCookie(API_LEVEL_ENABLED_COOKIE, 0, null, expiration);
  18. }
  19. changeApiLevel();
  20. }
  21. function buildApiLevelSelector() {
  22. var maxLevel = SINCE_DATA.length;
  23. var userApiLevelEnabled = readCookie(API_LEVEL_ENABLED_COOKIE);
  24. var userApiLevel = readCookie(API_LEVEL_COOKIE);
  25. userApiLevel = userApiLevel == 0 ? maxLevel : userApiLevel; // If there's no cookie (zero), use the max by default
  26. if (userApiLevelEnabled == 0) {
  27. $("#apiLevelSelector").attr("disabled","disabled");
  28. } else {
  29. $("#apiLevelCheckbox").attr("checked","checked");
  30. $("#api-level-toggle label").removeClass("disabled");
  31. }
  32. minLevel = $("body").attr("class");
  33. var select = $("#apiLevelSelector").html("").change(changeApiLevel);
  34. for (var i = maxLevel-1; i >= 0; i--) {
  35. var option = $("<option />").attr("value",""+SINCE_DATA[i]).append(""+SINCE_DATA[i]);
  36. // if (SINCE_DATA[i] < minLevel) option.addClass("absent"); // always false for strings (codenames)
  37. select.append(option);
  38. }
  39. // get the DOM element and use setAttribute cuz IE6 fails when using jquery .attr('selected',true)
  40. var selectedLevelItem = $("#apiLevelSelector option[value='"+userApiLevel+"']").get(0);
  41. selectedLevelItem.setAttribute('selected',true);
  42. }
  43. function changeApiLevel() {
  44. var maxLevel = SINCE_DATA.length;
  45. var userApiLevelEnabled = readCookie(API_LEVEL_ENABLED_COOKIE);
  46. var selectedLevel = maxLevel;
  47. if (userApiLevelEnabled == 0) {
  48. toggleVisisbleApis(selectedLevel, "body");
  49. } else {
  50. selectedLevel = $("#apiLevelSelector option:selected").val();
  51. toggleVisisbleApis(selectedLevel, "body");
  52. var date = new Date();
  53. date.setTime(date.getTime()+(10*365*24*60*60*1000)); // keep this for 10 years
  54. var expiration = date.toGMTString();
  55. writeCookie(API_LEVEL_COOKIE, selectedLevel, null, expiration);
  56. }
  57. if (selectedLevel < minLevel) {
  58. var thing = ($("#jd-header").html().indexOf("package") != -1) ? "package" : "class";
  59. $("#naMessage").show().html("<div><p><strong>This " + thing + " is not available with API Level " + selectedLevel + ".</strong></p>"
  60. + "<p>To use this " + thing + ", your application must specify API Level " + minLevel + " or higher in its manifest "
  61. + "and be compiled against a version of the Android library that supports an equal or higher API Level. To reveal this "
  62. + "document, change the value of the API Level filter above.</p>"
  63. + "<p><a href='" +toRoot+ "guide/appendix/api-levels.html'>What is the API Level?</a></p></div>");
  64. } else {
  65. $("#naMessage").hide();
  66. }
  67. }
  68. function toggleVisisbleApis(selectedLevel, context) {
  69. var apis = $(".api",context);
  70. apis.each(function(i) {
  71. var obj = $(this);
  72. var className = obj.attr("class");
  73. var apiLevelIndex = className.lastIndexOf("-")+1;
  74. var apiLevelEndIndex = className.indexOf(" ", apiLevelIndex);
  75. apiLevelEndIndex = apiLevelEndIndex != -1 ? apiLevelEndIndex : className.length;
  76. var apiLevel = className.substring(apiLevelIndex, apiLevelEndIndex);
  77. if (apiLevel > selectedLevel) obj.addClass("absent").attr("title","Requires API Level "+apiLevel+" or higher");
  78. else obj.removeClass("absent").removeAttr("title");
  79. });
  80. }
  81. /* NAVTREE */
  82. function new_node(me, mom, text, link, children_data, api_level)
  83. {
  84. var node = new Object();
  85. node.children = Array();
  86. node.children_data = children_data;
  87. node.depth = mom.depth + 1;
  88. node.li = document.createElement("li");
  89. mom.get_children_ul().appendChild(node.li);
  90. node.label_div = document.createElement("div");
  91. node.label_div.className = "label";
  92. if (api_level != null) {
  93. $(node.label_div).addClass("api");
  94. $(node.label_div).addClass("api-level-"+api_level);
  95. }
  96. node.li.appendChild(node.label_div);
  97. node.label_div.style.paddingLeft = 10*node.depth + "px";
  98. if (children_data == null) {
  99. // 12 is the width of the triangle and padding extra space
  100. node.label_div.style.paddingLeft = ((10*node.depth)+12) + "px";
  101. } else {
  102. node.label_div.style.paddingLeft = 10*node.depth + "px";
  103. node.expand_toggle = document.createElement("a");
  104. node.expand_toggle.href = "javascript:void(0)";
  105. node.expand_toggle.onclick = function() {
  106. if (node.expanded) {
  107. $(node.get_children_ul()).slideUp("fast");
  108. node.plus_img.src = me.toroot + "assets/images/triangle-closed-small.png";
  109. node.expanded = false;
  110. } else {
  111. expand_node(me, node);
  112. }
  113. };
  114. node.label_div.appendChild(node.expand_toggle);
  115. node.plus_img = document.createElement("img");
  116. node.plus_img.src = me.toroot + "assets/images/triangle-closed-small.png";
  117. node.plus_img.className = "plus";
  118. node.plus_img.border = "0";
  119. node.expand_toggle.appendChild(node.plus_img);
  120. node.expanded = false;
  121. }
  122. var a = document.createElement("a");
  123. node.label_div.appendChild(a);
  124. node.label = document.createTextNode(text);
  125. a.appendChild(node.label);
  126. if (link) {
  127. a.href = me.toroot + link;
  128. } else {
  129. if (children_data != null) {
  130. a.className = "nolink";
  131. a.href = "javascript:void(0)";
  132. a.onclick = node.expand_toggle.onclick;
  133. // This next line shouldn't be necessary. I'll buy a beer for the first
  134. // person who figures out how to remove this line and have the link
  135. // toggle shut on the first try. --joeo@android.com
  136. node.expanded = false;
  137. }
  138. }
  139. node.children_ul = null;
  140. node.get_children_ul = function() {
  141. if (!node.children_ul) {
  142. node.children_ul = document.createElement("ul");
  143. node.children_ul.className = "children_ul";
  144. node.children_ul.style.display = "none";
  145. node.li.appendChild(node.children_ul);
  146. }
  147. return node.children_ul;
  148. };
  149. return node;
  150. }
  151. function expand_node(me, node)
  152. {
  153. if (node.children_data && !node.expanded) {
  154. if (node.children_visited) {
  155. $(node.get_children_ul()).slideDown("fast");
  156. } else {
  157. get_node(me, node);
  158. if ($(node.label_div).hasClass("absent")) $(node.get_children_ul()).addClass("absent");
  159. $(node.get_children_ul()).slideDown("fast");
  160. }
  161. node.plus_img.src = me.toroot + "assets/images/triangle-opened-small.png";
  162. node.expanded = true;
  163. // perform api level toggling because new nodes are new to the DOM
  164. var selectedLevel = $("#apiLevelSelector option:selected").val();
  165. toggleVisisbleApis(selectedLevel, "#side-nav");
  166. }
  167. }
  168. function get_node(me, mom)
  169. {
  170. mom.children_visited = true;
  171. for (var i in mom.children_data) {
  172. var node_data = mom.children_data[i];
  173. mom.children[i] = new_node(me, mom, node_data[0], node_data[1],
  174. node_data[2], node_data[3]);
  175. }
  176. }
  177. function this_page_relative(toroot)
  178. {
  179. var full = document.location.pathname;
  180. var file = "";
  181. if (toroot.substr(0, 1) == "/") {
  182. if (full.substr(0, toroot.length) == toroot) {
  183. return full.substr(toroot.length);
  184. } else {
  185. // the file isn't under toroot. Fail.
  186. return null;
  187. }
  188. } else {
  189. if (toroot != "./") {
  190. toroot = "./" + toroot;
  191. }
  192. do {
  193. if (toroot.substr(toroot.length-3, 3) == "../" || toroot == "./") {
  194. var pos = full.lastIndexOf("/");
  195. file = full.substr(pos) + file;
  196. full = full.substr(0, pos);
  197. toroot = toroot.substr(0, toroot.length-3);
  198. }
  199. } while (toroot != "" && toroot != "/");
  200. return file.substr(1);
  201. }
  202. }
  203. function find_page(url, data)
  204. {
  205. var nodes = data;
  206. var result = null;
  207. for (var i in nodes) {
  208. var d = nodes[i];
  209. if (d[1] == url) {
  210. return new Array(i);
  211. }
  212. else if (d[2] != null) {
  213. result = find_page(url, d[2]);
  214. if (result != null) {
  215. return (new Array(i).concat(result));
  216. }
  217. }
  218. }
  219. return null;
  220. }
  221. function load_navtree_data(toroot) {
  222. var navtreeData = document.createElement("script");
  223. navtreeData.setAttribute("type","text/javascript");
  224. navtreeData.setAttribute("src", toroot+"navtree_data.js");
  225. $("head").append($(navtreeData));
  226. }
  227. function init_default_navtree(toroot) {
  228. init_navtree("nav-tree", toroot, NAVTREE_DATA);
  229. // perform api level toggling because because the whole tree is new to the DOM
  230. var selectedLevel = $("#apiLevelSelector option:selected").val();
  231. toggleVisisbleApis(selectedLevel, "#side-nav");
  232. }
  233. function init_navtree(navtree_id, toroot, root_nodes)
  234. {
  235. var me = new Object();
  236. me.toroot = toroot;
  237. me.node = new Object();
  238. me.node.li = document.getElementById(navtree_id);
  239. me.node.children_data = root_nodes;
  240. me.node.children = new Array();
  241. me.node.children_ul = document.createElement("ul");
  242. me.node.get_children_ul = function() { return me.node.children_ul; };
  243. //me.node.children_ul.className = "children_ul";
  244. me.node.li.appendChild(me.node.children_ul);
  245. me.node.depth = 0;
  246. get_node(me, me.node);
  247. me.this_page = this_page_relative(toroot);
  248. me.breadcrumbs = find_page(me.this_page, root_nodes);
  249. if (me.breadcrumbs != null && me.breadcrumbs.length != 0) {
  250. var mom = me.node;
  251. for (var i in me.breadcrumbs) {
  252. var j = me.breadcrumbs[i];
  253. mom = mom.children[j];
  254. expand_node(me, mom);
  255. }
  256. mom.label_div.className = mom.label_div.className + " selected";
  257. addLoadEvent(function() {
  258. scrollIntoView("nav-tree");
  259. });
  260. }
  261. }
  262. /* TOGGLE INHERITED MEMBERS */
  263. /* Toggle an inherited class (arrow toggle)
  264. * @param linkObj The link that was clicked.
  265. * @param expand 'true' to ensure it's expanded. 'false' to ensure it's closed.
  266. * 'null' to simply toggle.
  267. */
  268. function toggleInherited(linkObj, expand) {
  269. var base = linkObj.getAttribute("id");
  270. var list = document.getElementById(base + "-list");
  271. var summary = document.getElementById(base + "-summary");
  272. var trigger = document.getElementById(base + "-trigger");
  273. var a = $(linkObj);
  274. if ( (expand == null && a.hasClass("closed")) || expand ) {
  275. list.style.display = "none";
  276. summary.style.display = "block";
  277. trigger.src = toRoot + "assets/images/triangle-opened.png";
  278. a.removeClass("closed");
  279. a.addClass("opened");
  280. } else if ( (expand == null && a.hasClass("opened")) || (expand == false) ) {
  281. list.style.display = "block";
  282. summary.style.display = "none";
  283. trigger.src = toRoot + "assets/images/triangle-closed.png";
  284. a.removeClass("opened");
  285. a.addClass("closed");
  286. }
  287. return false;
  288. }
  289. /* Toggle all inherited classes in a single table (e.g. all inherited methods)
  290. * @param linkObj The link that was clicked.
  291. * @param expand 'true' to ensure it's expanded. 'false' to ensure it's closed.
  292. * 'null' to simply toggle.
  293. */
  294. function toggleAllInherited(linkObj, expand) {
  295. var a = $(linkObj);
  296. var table = $(a.parent().parent().parent()); // ugly way to get table/tbody
  297. var expandos = $(".jd-expando-trigger", table);
  298. if ( (expand == null && a.text() == "[Expand]") || expand ) {
  299. expandos.each(function(i) {
  300. toggleInherited(this, true);
  301. });
  302. a.text("[Collapse]");
  303. } else if ( (expand == null && a.text() == "[Collapse]") || (expand == false) ) {
  304. expandos.each(function(i) {
  305. toggleInherited(this, false);
  306. });
  307. a.text("[Expand]");
  308. }
  309. return false;
  310. }
  311. /* Toggle all inherited members in the class (link in the class title)
  312. */
  313. function toggleAllClassInherited() {
  314. var a = $("#toggleAllClassInherited"); // get toggle link from class title
  315. var toggles = $(".toggle-all", $("#doc-content"));
  316. if (a.text() == "[Expand All]") {
  317. toggles.each(function(i) {
  318. toggleAllInherited(this, true);
  319. });
  320. a.text("[Collapse All]");
  321. } else {
  322. toggles.each(function(i) {
  323. toggleAllInherited(this, false);
  324. });
  325. a.text("[Expand All]");
  326. }
  327. return false;
  328. }
  329. /* Expand all inherited members in the class. Used when initiating page search */
  330. function ensureAllInheritedExpanded() {
  331. var toggles = $(".toggle-all", $("#doc-content"));
  332. toggles.each(function(i) {
  333. toggleAllInherited(this, true);
  334. });
  335. $("#toggleAllClassInherited").text("[Collapse All]");
  336. }
  337. /* HANDLE KEY EVENTS
  338. * - Listen for Ctrl+F (Cmd on Mac) and expand all inherited members (to aid page search)
  339. */
  340. var agent = navigator['userAgent'].toLowerCase();
  341. var mac = agent.indexOf("macintosh") != -1;
  342. $(document).keydown( function(e) {
  343. var control = mac ? e.metaKey && !e.ctrlKey : e.ctrlKey; // get ctrl key
  344. if (control && e.which == 70) { // 70 is "F"
  345. ensureAllInheritedExpanded();
  346. }
  347. });