webgui/www/extras/assetManager/ContextMenu.js
2005-01-21 19:17:50 +00:00

91 lines
3.3 KiB
JavaScript

//--------Constructor--------------------
//document.write('<div id="contextMenu" class="contextMenu"></div>');
//Constructor for a context menu
function ContextMenu() {
this.render = ContextMenu_render;
this.hide = ContextMenu_hide;
this.owner = null;
this.contextMenu = document.getElementById("contextMenu");
this.contextMenu.oncontextmenu=new function() {return false;};
this.contextMenu.onmousedown=new function() {return false;};
this.contextMenu.onmouseup=new function() {return false;};
this.nameArray = new Array();
}
//Container used by the render method to delimit context menu items
function ContextMenuItem(cminame,cmilink) {
this.name = cminame;
this.link = cmilink;
}
//---------Method Implementations -------------
//renders the context menu based on the contextMenuItemArray and owner.
function ContextMenu_render(contextMenuItemArray,x,y,owner) {
// manager.tools.showObject(this.contextMenu);
// alert("top = " + this.contextMenu.className);
this.owner = owner;
var html='<table border="0">';
for (var i=0;i<contextMenuItemArray.length;i++) {
var name = "contextMenuItem" + i + new Date().getTime();
html+='<tr>';
html+=' <td>'
if (contextMenuItemArray[i].link == "") {
html+=contextMenuItemArray[i].name;
}else {
html+='<a href="' + contextMenuItemArray[i].link + '"><div id="' + name + '" class="contextMenuTab">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;' + contextMenuItemArray[i].name + '</div></a>';
}
html+='</td>';
html+='</tr>';
this.nameArray[this.nameArray.length] = name;
}
html+='</table>';
this.contextMenu.innerHTML = html;
for (var k=0;k<this.nameArray.length;k++) {
if (document.getElementById(this.nameArray[k])) {
document.getElementById(this.nameArray[k]).onmouseover=new Function("document.getElementById('" + this.nameArray[k] + "').className='contextMenuTabOver'");
document.getElementById(this.nameArray[k]).onmouseout=new Function("document.getElementById('" + this.nameArray[k] + "').className='contextMenuTab'");
}
}
if (y > parseInt(this.contextMenu.offsetHeight)) {
this.contextMenu.style.top = (y + manager.display.documentElement.scrollTop - this.contextMenu.offsetHeight -1) + "px";
// this.contextMenu.style.top = (y + window.scrollY - this.contextMenu.offsetHeight -1) + "px";
}else {
this.contextMenu.style.top = (y + manager.display.documentElement.scrollTop + 3) + "px";
// this.contextMenu.style.top = (y + window.scrollY + 3) + "px";
}
this.contextMenu.style.left= (x + manager.display.documentElement.scrollLeft) + "px";
// this.contextMenu.style.left= (x + window.scrollX) + "px";
manager.display.bringToFront(this.contextMenu);
//alert(this.contextMenu.style.top);
manager.tools.showObject(this.contextMenu);
}
//hides the context menu
function ContextMenu_hide() {
for (var k=0;k<this.nameArray.length;k++) {
if (document.getElementById(this.nameArray[k])) {
document.getElementById(this.nameArray[k]).onmouseover="";
document.getElementById(this.nameArray[k]).onmouseout="";
}
}
this.contextMenu.style.visibility="hidden";
}