XFormsContextMenu.js 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177
  1. XFormsContextMenu.prototype = new XFormsElement;
  2. function XFormsContextMenu (strParentId, strId, strTag, strNodeset, strLabel, strFunctionName, bEvent)
  3. {
  4. if (!strId)
  5. {
  6. return;
  7. }
  8. XFormsElement.call(this, strParentId, strId, strTag);
  9. this.m_strNodeset = strNodeset;
  10. this.m_strLabel = strLabel;
  11. this.m_strFunctionName = strFunctionName;
  12. this.m_bEvent = bEvent;
  13. };
  14. XFormsContextMenu.prototype.init = function ()
  15. {
  16. XFormsElement.prototype.init.call(this);
  17. };
  18. XFormsContextMenu.prototype.createContextMenu = function (nLeft, nTop)
  19. {
  20. var strRef = this.m_strNodeset;
  21. var objInstance = model.getInstance();
  22. var xlNode;
  23. var bCheckInstance = false;
  24. if (objInstance)
  25. {
  26. var xnRoot = objInstance.documentElement;
  27. if (xnRoot)
  28. {
  29. xlNode = xnRoot.selectNodes(strRef);
  30. if (xlNode)
  31. {
  32. for (var i = 0; i < xlNode.length; i++)
  33. {
  34. var xnNode = xlNode.item(i);
  35. var xnLabel = xnNode.selectSingleNode(this.m_strLabel);
  36. var xnFunction = xnNode.selectSingleNode(this.m_strFunctionName);
  37. if (xnLabel && xnFunction)
  38. {
  39. bCheckInstance = true;
  40. break;
  41. }
  42. }
  43. }
  44. }
  45. }
  46. if (!bCheckInstance) return;
  47. var xnContextMenu = document.createElement("table");
  48. xnContextMenu.id = "HE___TF_ContextMenu";
  49. xnContextMenu.cellSpacing = 0;
  50. xnContextMenu.cellPadding = 0;
  51. xnContextMenu.style.position = "absolute";
  52. xnContextMenu.style.left = nLeft+"px";
  53. xnContextMenu.style.top = nTop+"px";
  54. xnContextMenu.style.border = "1px solid #A0A0A0";
  55. xnContextMenu.style.backgroundColor = "#F0F0F0";
  56. xnContextMenu.style.fontFamily = Lan_DefaultFontFamily;
  57. xnContextMenu.style.fontSize = "9pt";
  58. xnContextMenu.style.color = "#000000";
  59. xnContextMenu.style.cursor = "default";
  60. var xnContextMenuTbody = document.createElement("tbody");
  61. for (var i = 0; i < xlNode.length; i++)
  62. {
  63. var xnNode = xlNode.item(i);
  64. var xnLabel = xnNode.selectSingleNode(this.m_strLabel);
  65. var xnFunction = xnNode.selectSingleNode(this.m_strFunctionName);
  66. if (!xnLabel || !xnFunction)
  67. {
  68. continue;
  69. }
  70. var strLabel = XmlLib.getTextValue(xnLabel);
  71. var strFunction = XmlLib.getTextValue(xnFunction);
  72. if (strFunction == "")
  73. {
  74. var xnContextMenuTR1 = document.createElement("tr");
  75. var xnContextMenuTD11 = document.createElement("td");
  76. xnContextMenuTD11.style.width = "28px";
  77. xnContextMenuTD11.style.height = "1px";
  78. var xnContextMenuTD12 = document.createElement("td");
  79. xnContextMenuTD12.style.width = "1px";
  80. xnContextMenuTD12.style.backgroundColor = "#E2E3E3";
  81. var xnContextMenuTD13 = document.createElement("td");
  82. xnContextMenuTD13.style.width = "1px";
  83. xnContextMenuTD13.style.backgroundColor = "#FFFFFF";
  84. var xnContextMenuTD14 = document.createElement("td");
  85. xnContextMenuTD14.style.width = "120px";
  86. xnContextMenuTD14.style.backgroundColor = "#E2E3E3";
  87. xnContextMenuTR1.appendChild(xnContextMenuTD11);
  88. xnContextMenuTR1.appendChild(xnContextMenuTD12);
  89. xnContextMenuTR1.appendChild(xnContextMenuTD13);
  90. xnContextMenuTR1.appendChild(xnContextMenuTD14);
  91. xnContextMenuTbody.appendChild(xnContextMenuTR1);
  92. var xnContextMenuTR2 = document.createElement("tr");
  93. var xnContextMenuTD21 = document.createElement("td");
  94. xnContextMenuTD21.style.width = "28px";
  95. xnContextMenuTD21.style.height = "1px";
  96. var xnContextMenuTD22 = document.createElement("td");
  97. xnContextMenuTD22.style.width = "1px";
  98. xnContextMenuTD22.style.backgroundColor = "#E2E3E3";
  99. var xnContextMenuTD23 = document.createElement("td");
  100. xnContextMenuTD23.style.width = "1px";
  101. xnContextMenuTD23.style.backgroundColor = "#FFFFFF";
  102. var xnContextMenuTD24 = document.createElement("td");
  103. xnContextMenuTD24.style.width = "120px";
  104. xnContextMenuTD24.style.backgroundColor = "#FFFFFF";
  105. xnContextMenuTR2.appendChild(xnContextMenuTD21);
  106. xnContextMenuTR2.appendChild(xnContextMenuTD22);
  107. xnContextMenuTR2.appendChild(xnContextMenuTD23);
  108. xnContextMenuTR2.appendChild(xnContextMenuTD24);
  109. xnContextMenuTbody.appendChild(xnContextMenuTR2);
  110. }
  111. else
  112. {
  113. var xnContextMenuTR = document.createElement("tr");
  114. xnContextMenuTR.setAttribute("function", strFunction);
  115. xnContextMenuTR.onmouseover = function () {this.style.backgroundColor = "#D3E9FE";};
  116. xnContextMenuTR.onmouseout = function () {this.style.backgroundColor = "";};
  117. xnContextMenuTR.onclick = function ()
  118. {
  119. try
  120. {
  121. if (body.children.item("__TF_ContextMenu").m_bEvent)
  122. {
  123. body.dispatch("onmenu", this.getAttribute("function"));
  124. }
  125. else
  126. {
  127. eval(this.getAttribute("function")+"()");
  128. }
  129. window.top.document.body.removeChild(window.top.document.getElementById("HE___TF_ContextMenu"));
  130. }
  131. catch (e)
  132. {
  133. window.top.document.body.removeChild(window.top.document.getElementById("HE___TF_ContextMenu"));
  134. }
  135. };
  136. var xnContextMenuTD1 = document.createElement("td");
  137. xnContextMenuTD1.style.width = "28px";
  138. xnContextMenuTD1.style.height = "23px";
  139. var xnContextMenuTD2 = document.createElement("td");
  140. xnContextMenuTD2.style.width = "1px";
  141. xnContextMenuTD2.style.backgroundColor = "#E2E3E3";
  142. var xnContextMenuTD3 = document.createElement("td");
  143. xnContextMenuTD3.style.width = "1px";
  144. xnContextMenuTD3.style.backgroundColor = "#FFFFFF";
  145. var xnContextMenuTD4 = document.createElement("td");
  146. xnContextMenuTD4.style.width = "120px";
  147. xnContextMenuTD4.style.paddingLeft = "5px";
  148. xnContextMenuTD4.style.paddingRight = "10px";
  149. var xnContextMenuText = document.createElement("nobr");
  150. xnContextMenuText.innerHTML = strLabel;
  151. xnContextMenuTD4.appendChild(xnContextMenuText);
  152. xnContextMenuTR.appendChild(xnContextMenuTD1);
  153. xnContextMenuTR.appendChild(xnContextMenuTD2);
  154. xnContextMenuTR.appendChild(xnContextMenuTD3);
  155. xnContextMenuTR.appendChild(xnContextMenuTD4);
  156. xnContextMenuTbody.appendChild(xnContextMenuTR);
  157. }
  158. }
  159. xnContextMenu.appendChild(xnContextMenuTbody);
  160. window.top.document.body.appendChild(xnContextMenu);
  161. };