@Override
    public void paintComponent(Graphics ink) {
        super.paintComponent(ink);

        Graphics2D inkLining = (Graphics2D) ink;

        if (start != null && end != null && !editMode2) {
            BasicStroke stroke = new BasicStroke(1);
            Shape strokedShape = stroke.createStrokedShape(inkLine);
            inkLining.draw(strokedShape);
            inkLining.fill(strokedShape);
        }

        for (Edge e : currentGraph.getEdges()) {
            switch (graph) {
                case uw:
                    e.draw_Edge(ink);
                    break;
                case dw:
                    e.draw_DEdge(ink);
                    break;
                default:
                    break;
            }
        }

        for (GraphNode gn : currentGraph.getNodes()) {
            gn.drawNode(ink);
        }

        if (selection != null) {
            selection.drawSelection(ink);
        }
    }