class CGraphEditNode extends CGraphDisplayNode { var _color; function CGraphEditNode() { useHandCursor = false; last1Click = 0; last2Click = 0; onReleaseOutside = onRelease; // graphic.num.text.type = 'input'; graphic.num.text.selectable = true; graphic.num.text.maxChars = 2; graphic.num.text.restrict = '0-9'; graphic.num.text.owner = this; graphic.num.text.onKillFocus = function () { this.owner.editNodeName(); } // editMode = owner.editMode; } function editNodeName() { var nName = Number(graphic.num.text.text); if (isNaN(nName)) nName = 0; if (nName != owner.getNodeName(nName)) { graphic.num.text.text = node.attributes.name; return false; } graphic.num.text.text = nName; node.attributes.name = nName; } /*+ Button Extent Level 1 */ var last2Click, last1Click, thisClick, clickType; function onPress() { thisClick = (new Date()).getTime(); if (last1Click + 500 < thisClick) { clickType = 'single'; last1Click = thisClick; onSinglePress(); } else if (last2Click + 500 < thisClick) { clickType = 'double'; last2Click = thisClick; onDoublePress(); } else { clickType = 'triple'; last1Click = 0; last2Click = 0; onTriplePress(); } } function onRelease() { if (clickType == 'single') { onSingleRelease(); } else if (clickType == 'double') { onDoubleRelease(); } else { onTripleRelease(); } } /*+ Button Extent Level 2 */ var editMode; var _mousemoved; function onSinglePress() { if (editMode == 'create') { this.startDrag(false, 0, 0, owner.area._width, owner.area._height); _mousemoved = false; onMouseMove = __SingleMouseMove; } } function onSingleRelease() { if (editMode == 'create') { this.stopDrag(); delete onMouseMove; redraw(); if (_mousemoved == false && owner.editOptions.disallowNodeNameEditing !== true) { Selection.setFocus(graphic.num.text); Selection.setSelection(graphic.num.text.length, graphic.num.text.length); } } } function __SingleMouseMove() { _mousemoved = true; var iLink = owner.data.links.firstChild; while (iLink) { if (iLink.attributes.nodex == node.attributes.id || iLink.attributes.nodey == node.attributes.id) { owner.masked.links['Link_'+iLink.attributes.nodex+'_'+iLink.attributes.nodey].redraw(); } iLink = iLink.nextSibling; } node.attributes.x = owner.getRelativeX(_x); node.attributes.y = owner.getRelativeY(_y); } var _lastxmouse, _lastymouse; function onDoublePress() { if (editMode == 'create' || editMode == 'highlight') { _lastxmouse = _xmouse; _lastymouse = _ymouse; onMouseMove = __DoubleMouseMove; // owner.pLinkAttributes = { nodex: node.attributes.id }; } } function onDoubleRelease() { if (editMode == 'create' || editMode == 'highlight') { delete onMouseMove; clear(); // var iNode = owner.data.nodes.firstChild; while (iNode) { if (owner.masked.nodes['Node'+iNode.attributes.id].hitTest(_root._xmouse, _root._ymouse, true)) { break; } iNode = iNode.nextSibling; } owner.pLinkAttributes.nodey = iNode.attributes.id; owner.pLinkAttributes.cost = Math.round(Math.sqrt((_xmouse-_lastxmouse)*(_xmouse-_lastxmouse)+(_ymouse-_lastymouse)*(_ymouse-_lastymouse))); owner.pLinkAttributes.cost = Math.round(owner.getRelativeX(owner.pLinkAttributes.cost)); if (owner.pLinkAttributes.cost > 99) owner.pLinkAttributes.cost = 99; if (editMode == 'create') { if (owner.createNewLink() === false) owner.removeLink(); // link creation / deletion } else if (editMode == 'highlight') { if (owner.getLink() instanceof MovieClip) owner.getLink().highlight(); // toggle highlight } } } function __DoubleMouseMove() { clear(); lineStyle(0, 0x990000, 25); moveTo(_lastxmouse, _lastymouse); lineTo(_xmouse, _ymouse); } function onTriplePress() { } function onTripleRelease() { if (editMode == 'create') { owner.removeNode(node); } } }