public void mouseMoved(MouseEvent Event) {
        boolean needRepaint = false;
        if (null != this.vertexToDelete) {
            this.deleteVertex(this.vertexToDelete);
            this.selectedVertex = null;
        }
        if (null != this.movingVertex) {
            this.selectedVertex = null;
            this.position.get(this.movingVertex).setLocation(Event.getPoint());
            needRepaint = true;
        } else {
            if (null != this.selectedEdge) {
                if (!this.underEdge(Event.getPoint(), this.selectedEdge)) {
                    this.selectedEdge = null;


                    needRepaint = true;
                }
            }
            if (null != this.selectedVertex) {
                if (!this.underVertex(Event.getPoint(), this.selectedVertex)) {
                    this.selectedVertex = null;
                    needRepaint = true;
                }
            }
            Vertex[] Edge = this.underEdge(Event.getPoint());
            if (null != Edge) {
                this.selectedEdge = Edge;
                needRepaint = true;
            } else {
                Vertex Vertex = this.underVertex(Event.getPoint());
                if (null != Vertex) {
                    this.selectedVertex = Vertex;
                    needRepaint = true;
                }
            }
        }
        if (needRepaint) {
            repaint();
        }
    }