public void mouseDragged( MouseEvent e ) {
        double currX = e.getX();
        double currY = e.getY();
        double currDist = graphDist(currX,currY);

        if (mouseOverN!=null)
            lastAngle = getMouseAngle(mouseOverN.drawx, mouseOverN.drawy);
        else
            lastAngle = getMouseAngle(tempNode.drawx, tempNode.drawy);

        double currentAngle = getMouseAngle(currX, currY);
        if(lastAngle>currentAngle+Math.PI) currentAngle+=Math.PI*2; //Avoids bug at x==0
        else if(currentAngle>lastAngle+Math.PI) lastAngle+=Math.PI*2;

        if (currDist>60) rotateScroll.incrementRotateAngle((currentAngle-lastAngle));

        tgPanel.updateDrawPositions(); //Rotate, but don't redraw
        tgPanel.updateGraphSize(); //Just in case.  Mostly effects H+V Scrollbars

        if(tempNode!=null) tgPanel.updateDrawPos(tempNode); //The temporary node is not part of the graph,
                                                            //So it needs to be updated individually
        TGPoint2D lastMousePos;
        if(mouseOverN!=null)
            lastMousePos = new TGPoint2D(mouseOverN.drawx, mouseOverN.drawy);
        else
            lastMousePos = new TGPoint2D(tempNode.drawx, tempNode.drawy);

        TGPoint2D newPos = new TGPoint2D(currX,currY);

        if (!hvScroll.scrolling) hvScroll.scrollAtoB(lastMousePos, newPos); //Scroll the node to the mouse

        this.tgPanel.repaintAfterMove();

        if(tempNode!=null) tgPanel.updateDrawPos(tempNode); //The temporary node is not part of the graph,
                                                            //So it needs to be updated individually
    }