d334b96bd8429899cd87b91fac72d9feae35a5f1.svn-base 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  1. /*
  2. * Ext JS Library 2.0 Copyright(c) 2006-2007, Ext JS, LLC. licensing@extjs.com
  3. *
  4. * http://extjs.com/license
  5. */
  6. Ext.menu.MenuMgr = function() {
  7. var F, D, C = {}, A = false, K = allGetServerTime();
  8. function M() {
  9. F = {};
  10. D = new Ext.util.MixedCollection();
  11. Ext.getDoc().addKeyListener(27, function() {
  12. if (D.length > 0) {
  13. H()
  14. }
  15. })
  16. }
  17. function H() {
  18. if (D && D.length > 0) {
  19. var N = D.clone();
  20. N.each(function(O) {
  21. O.hide()
  22. })
  23. }
  24. }
  25. function E(N) {
  26. D.remove(N);
  27. if (D.length < 1) {
  28. Ext.getDoc().un("mousedown", L);
  29. A = false
  30. }
  31. }
  32. function J(N) {
  33. var O = D.last();
  34. K = allGetServerTime();
  35. D.add(N);
  36. if (!A) {
  37. Ext.getDoc().on("mousedown", L);
  38. A = true
  39. }
  40. if (N.parentMenu) {
  41. N.getEl().setZIndex(parseInt(N.parentMenu.getEl()
  42. .getStyle("z-index"), 10)
  43. + 3);
  44. N.parentMenu.activeChild = N
  45. } else {
  46. if (O && O.isVisible()) {
  47. N.getEl().setZIndex(parseInt(O.getEl().getStyle("z-index"), 10)
  48. + 3)
  49. }
  50. }
  51. }
  52. function B(N) {
  53. if (N.activeChild) {
  54. N.activeChild.hide()
  55. }
  56. if (N.autoHideTimer) {
  57. clearTimeout(N.autoHideTimer);
  58. delete N.autoHideTimer
  59. }
  60. }
  61. function G(N) {
  62. var O = N.parentMenu;
  63. if (!O && !N.allowOtherMenus) {
  64. H()
  65. } else {
  66. if (O && O.activeChild) {
  67. O.activeChild.hide()
  68. }
  69. }
  70. }
  71. function L(N) {
  72. if (K.getElapsed() > 50 && D.length > 0 && !N.getTarget(".x-menu")) {
  73. H()
  74. }
  75. }
  76. function I(O, R) {
  77. if (R) {
  78. var Q = C[O.group];
  79. for (var P = 0, N = Q.length; P < N; P++) {
  80. if (Q[P] != O) {
  81. Q[P].setChecked(false)
  82. }
  83. }
  84. }
  85. }
  86. return {
  87. hideAll : function() {
  88. H()
  89. },
  90. register : function(O) {
  91. if (!F) {
  92. M()
  93. }
  94. F[O.id] = O;
  95. O.on("beforehide", B);
  96. O.on("hide", E);
  97. O.on("beforeshow", G);
  98. O.on("show", J);
  99. var N = O.group;
  100. if (N && O.events["checkchange"]) {
  101. if (!C[N]) {
  102. C[N] = []
  103. }
  104. C[N].push(O);
  105. O.on("checkchange", onCheck)
  106. }
  107. },
  108. get : function(N) {
  109. if (typeof N == "string") {
  110. return F[N]
  111. } else {
  112. if (N.events) {
  113. return N
  114. } else {
  115. if (typeof N.length == "number") {
  116. return new Ext.menu.Menu({
  117. items : N
  118. })
  119. } else {
  120. return new Ext.menu.Menu(N)
  121. }
  122. }
  123. }
  124. },
  125. unregister : function(O) {
  126. delete F[O.id];
  127. O.un("beforehide", B);
  128. O.un("hide", E);
  129. O.un("beforeshow", G);
  130. O.un("show", J);
  131. var N = O.group;
  132. if (N && O.events["checkchange"]) {
  133. C[N].remove(O);
  134. O.un("checkchange", onCheck)
  135. }
  136. },
  137. registerCheckable : function(N) {
  138. var O = N.group;
  139. if (O) {
  140. if (!C[O]) {
  141. C[O] = []
  142. }
  143. C[O].push(N);
  144. N.on("beforecheckchange", I)
  145. }
  146. },
  147. unregisterCheckable : function(N) {
  148. var O = N.group;
  149. if (O) {
  150. C[O].remove(N);
  151. N.un("beforecheckchange", I)
  152. }
  153. },
  154. getCheckedItem : function(P) {
  155. var Q = C[P];
  156. if (Q) {
  157. for (var O = 0, N = Q.length; O < N; O++) {
  158. if (Q[O].checked) {
  159. return Q[O]
  160. }
  161. }
  162. }
  163. return null
  164. },
  165. setCheckedItem : function(P, R) {
  166. var Q = C[P];
  167. if (Q) {
  168. for (var O = 0, N = Q.length; O < N; O++) {
  169. if (Q[O].id == R) {
  170. Q[O].setChecked(true)
  171. }
  172. }
  173. }
  174. return null
  175. }
  176. }
  177. }();