private void drawDashedLine(Graphics g, int x1, int y1, int x2, int y2, double dashlength, double spacelength)
        {
                if ((x1 == x2) && (y1 == y2))
                {
                        g.drawLine(x1, y1, x2, y2);
                        return;
                }
                double linelength = Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));
                double yincrement = (y2 - y1) / (linelength / (dashlength + spacelength));
                double xincdashspace = (x2 - x1) / (linelength / (dashlength + spacelength));
                double yincdashspace = (y2 - y1) / (linelength / (dashlength + spacelength));
                double xincdash = (x2 - x1) / (linelength / (dashlength));
                double yincdash = (y2 - y1) / (linelength / (dashlength));
                int counter = 0;
                for (double i = 0; i < linelength - dashlength; i += dashlength + spacelength)
                {
                        g.drawLine((int) (x1 + xincdashspace * counter), (int) (y1 + yincdashspace * counter), (int) (x1 + xincdashspace * counter + xincdash), (int) (y1 + yincdashspace * counter + yincdash));
                        counter++;
                }
                if ((dashlength + spacelength) * counter <= linelength)
                {
                        g.drawLine((int) (x1 + xincdashspace * counter), (int) (y1 + yincdashspace * counter), x2, y2);
                }
        }