function node(PKey,nodeText) { // private vars var m_PKey=PKey; var m_displayDom=document.createElement("span"); var m_nodeRelations=new Array(); var m_toolbar=null; var m_textControl=null; var m_iconControl=null; var m_contextMenu=null; var m_isCollapsed=false; if (arguments.length >= 1) { return(construct()); } else { this.fromXML=fromXML; return(this); } // properties function getPKey() { return(m_PKey); } function getNodeRelations() { return(m_nodeRelations); } // methods function construct() { // the basic node m_displayDom.setAttribute("id","mmNode_" + m_PKey); m_displayDom.setAttribute("class","node"); m_displayDom.extends(new Publisher()); dragNDrop.activateForObject(m_displayDom); m_contextMenu=addContextMenu(); m_displayDom.appendChild(m_contextMenu); exportFunctions(); // add a toolbar if (!m_toolbar) { m_toolbar=new toolbar(m_displayDom); m_displayDom.appendChild(m_toolbar); m_toolbar.hide(); } if (!m_textControl){ m_textControl=new textControl(nodeText); } m_displayDom.appendChild(m_textControl); m_textControl.addSubscriber(notifyTextUpdate,"changeMode"); if (!m_iconControl) { m_iconControl=new iconControl(); } //m_displayDom.appendChild(document.createElement("br")); m_displayDom.appendChild(m_iconControl); if (m_isCollapsed) {collapse();} m_displayDom.onmouseup=mouseUpHandler; m_displayDom.onmouseover=mouseOverHandler; m_displayDom.onmouseout=mouseOutHandler; document.getElementById('nodes').appendChild(m_displayDom); m_textControl.focus(); return(m_displayDom); } function addContextMenu(){ var contextMenu; var mi=new Array(); for (var i=0;i=0;i--) { if (!m_nodeRelations[i].isMain()) { var nodeRel=m_nodeRelations[i]; deleteNodeRelation(nodeRel); nodeRel.erase(); } } for (var i=m_nodeRelations.length-1;i>=0;i--) { // recursively delete childs following the Main-Links if (m_nodeRelations[i].getParentNode()==m_displayDom) { m_nodeRelations[i].getChildNode().erase(); } } // delete the relation to the parent for (var i=0;i < m_nodeRelations.length;i++) { if (m_nodeRelations[i].getChildNode()==m_displayDom){ m_nodeRelations[i].erase(); } } removeFromRootNodes(); destroy(); } function isRootNode(){ for (var i=0;i < rootNode.length;i++) { if (m_displayDom==rootNode[i]) { return(true); } } return(false); } function removeFromRootNodes(){ // remove current node from the rootnodes for (var i=0;i < rootNode.length;i++) { if (m_displayDom==rootNode[i]) { rootNode.splice(i,1); } } } function destroy(){ m_displayDom.parentNode.removeChild(m_displayDom); } function collapse(){ m_isCollapsed=true; if (!isLeafNode()) { m_displayDom.setAttribute("class","collapsedNode"); } for (var i=0;i < m_nodeRelations.length;i++) { if ((m_nodeRelations[i].isMain()) && (m_nodeRelations[i].getParentNode()==m_displayDom)){ m_nodeRelations[i].getChildNode().collapse(); m_nodeRelations[i].getChildNode().hide(); } } } function hide(){ m_displayDom.style.display="none"; for (var i=0;i < m_nodeRelations.length;i++) { m_nodeRelations[i].hide(); } } function show(){ m_displayDom.style.display="block"; for (var i=0;i < m_nodeRelations.length;i++) { m_nodeRelations[i].show(); } redrawNodeRelations(); } function addNodeRelation(newNodeRel) { if (!hasNodeRelation(newNodeRel)) { m_nodeRelations[m_nodeRelations.length]=newNodeRel; if ((newNodeRel.getChildNode) && (newNodeRel.getChildNode()==m_displayDom) && (newNodeRel.isMain())) { removeFromRootNodes(); } } } function deleteNodeRelation(nodeRel) { for (var i=0;i