contextMenu.js 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215
  1. /****************************************************************
  2. ** Licensed Materials - Property of IBM
  3. **
  4. ** BI and PM: qs
  5. **
  6. ** (C) Copyright IBM Corp. 2001, 2015
  7. **
  8. ** US Government Users Restricted Rights - Use, duplication or
  9. ** disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
  10. *****************************************************************/
  11. // Copyright (C) 2008 Cognos ULC, an IBM Company. All Rights Reserved.
  12. // Cognos and the Cognos logo are trademarks of Cognos ULC (formerly Cognos Incorporated) in the United States and/or other countries. IBM and the IBM logo are trademarks of International Business Machines Corporation in the United States, or other countries, or both. Other company, product, or service names may be trademarks or service marks of others.
  13. var contextMenuWidth;
  14. var contextMenuHeight;
  15. var contextMenuCornerActive;
  16. function getContextMenu(sMenuType, bValidateId)
  17. {
  18. var bSkipValidateId = (bValidateId !== true);
  19. var activeContextMenu = null;
  20. if (typeof sMenuType != "string")
  21. {
  22. sMenuType = "";
  23. }
  24. if (sMenuType.indexOf("FILTER") >= 0)
  25. {
  26. if (sMenuType.indexOf("ICON") >= 0)
  27. {
  28. if (bSkipValidateId || document.getElementById("filterIconContextMenu") == null)
  29. {
  30. activeContextMenu = cf.gQsFilterIconContextMenu;
  31. }
  32. }
  33. else
  34. {
  35. if (bSkipValidateId || document.getElementById("filterContextMenu") == null)
  36. {
  37. activeContextMenu = cf.gQsFiltersContextMenu;
  38. }
  39. }
  40. }
  41. else if (sMenuType.indexOf("SORT") >= 0)
  42. {
  43. if (sMenuType.indexOf("ICON") >= 0)
  44. {
  45. if (bSkipValidateId || document.getElementById("sortIconContextMenu") == null)
  46. {
  47. activeContextMenu = cf.gQsSortIconContextMenu;
  48. }
  49. }
  50. else
  51. {
  52. if (bSkipValidateId || document.getElementById("sortContextMenu") == null)
  53. {
  54. activeContextMenu = cf.gQsSortsContextMenu;
  55. }
  56. }
  57. }
  58. else if (sMenuType.indexOf("SUPPRESS") >= 0)
  59. {
  60. if (sMenuType.indexOf("ICON") >= 0)
  61. {
  62. if (bSkipValidateId || document.getElementById("suppressIconContextMenu") == null)
  63. {
  64. activeContextMenu = cf.gQsSuppressIconContextMenu;
  65. }
  66. }
  67. else
  68. {
  69. if (bSkipValidateId || document.getElementById("suppressContextMenu") == null)
  70. {
  71. activeContextMenu = cf.gQsSuppressContextMenu;
  72. }
  73. }
  74. }
  75. else if (sMenuType.indexOf("METADATATREE") >= 0)
  76. {
  77. activeContextMenu = cf.gQsMetadataTreeContextMenu;
  78. }
  79. else if ((typeof goSelectionController == "object" && goSelectionController !== null && goSelectionController.getSelectedChartArea() != null) || (typeof goWindowManager != "undefined" && goWindowManager.getReportManager().getCVSelectionController() != null && goWindowManager.getReportManager().getCVSelectionController().hasSelectedChartNodes()))
  80. {
  81. if (bSkipValidateId || document.getElementById("chartContextMenu") == null)
  82. {
  83. activeContextMenu = cf.gQsChartContextMenu;
  84. }
  85. }
  86. else
  87. {
  88. if (bSkipValidateId || document.getElementById("contextMenu") == null)
  89. {
  90. activeContextMenu = cf.gQsContextMenu;
  91. }
  92. }
  93. return activeContextMenu;
  94. };
  95. function populateContextMenu(sMenuType)
  96. {
  97. var rf = getReportFrame();
  98. var cf = getConfigFrame();
  99. var rfd = rf.document;
  100. var rfdb = rfd.body;
  101. frameClicked();
  102. var activeContextMenu = getContextMenu(sMenuType, true);
  103. if (activeContextMenu)
  104. {
  105. activeContextMenu.setHTMLContainer(rfdb);
  106. activeContextMenu.draw();
  107. menu = activeContextMenu.getHTMLDiv();
  108. if (menu.attachEvent)
  109. {
  110. menu.attachEvent("oncontextmenu", function(){return false;});
  111. menu.attachEvent("onmouseout", function(){rfdb.attachEvent("onmouseup", frameClicked);});
  112. rfdb.attachEvent("onmouseout", function(){if(typeof dialogOnClick == "function") setTimeout(dialogOnClick, 1000);});
  113. rfdb.attachEvent("onmousedown", function(e){if(e.srcElement.className == "filterSubtitleIcon")frameClicked();
  114. if(e.srcElement.id == "__BODY__") frameClicked();});
  115. }
  116. else
  117. {
  118. menu.addEventListener("contextmenu", function(e) {e.preventDefault();e.stopPropagation();}, true);
  119. rfdb.addEventListener("mouseout", function(){if(typeof dialogOnClick == "function") setTimeout(dialogOnClick, 1000); } , true);
  120. rfdb.addEventListener("mousedown", function(e){if(e.target.className == "filterSubtitleIcon")frameClicked();}, false);
  121. window.addEventListener("mousedown", function(e) {if(e.target.toString().indexOf("XULElement") > -1) frameClicked();}, true);
  122. parent.window.addEventListener("mousedown", function(e) {if(e.target.toString().indexOf("XULElement") > -1) frameClicked();}, true);
  123. }
  124. }
  125. rfdb.onclick = frameClicked;
  126. rfdb.ondblclick = frameClicked;
  127. cf.document.body.onmousedown = frameClicked;
  128. };
  129. function moveContextMenu(event, sMenuType)
  130. {
  131. var cf = getConfigFrame();
  132. var activeContextMenu = getContextMenu(sMenuType, false);
  133. if (activeContextMenu)
  134. {
  135. activeContextMenu.setXCoord(event.clientX + CMenu_getScrollingPosition().x);
  136. activeContextMenu.setYCoord(event.clientY + CMenu_getScrollingPosition().y);
  137. activeContextMenu.show();
  138. }
  139. };
  140. function dialogOnClick()
  141. {
  142. var dfdb = null;
  143. if(getDialogFrame)
  144. dfdb = getDialogFrame().document.body;
  145. if(dfdb)
  146. {
  147. if (dfdb.attachEvent)
  148. {
  149. dfdb.attachEvent("oncontextmenu", frameClicked);
  150. dfdb.attachEvent("onmouseup", frameClicked);
  151. }
  152. else
  153. {
  154. dfdb.addEventListener("contextmenu", frameClicked, true);
  155. dfdb.addEventListener("mouseup", frameClicked, true);
  156. }
  157. }
  158. else
  159. setTimeout(dialogOnClick, 250);
  160. };
  161. function frameClicked()
  162. {
  163. if(typeof getConfigFrame != "undefined")
  164. {
  165. cf = getConfigFrame();
  166. cf.gQsContextMenu.remove();
  167. cf.gQsChartContextMenu.remove();
  168. cf.gQsFiltersContextMenu.remove();
  169. cf.gQsFilterIconContextMenu.remove();
  170. cf.gQsSortsContextMenu.remove();
  171. cf.gQsSortIconContextMenu.remove();
  172. cf.gQsSuppressContextMenu.remove();
  173. cf.gQsSuppressIconContextMenu.remove();
  174. }
  175. };