@Override
    public void draw_me(Graphics g)
    {
        Graphics2D g2d = (Graphics2D) g.create();
        int thickness = 2;
        BasicStroke bs = new BasicStroke(thickness);
        g2d.setStroke(bs);
        if (selected)
        {
            g2d.setColor(Color.GREEN);
        } else
        {
            g2d.setColor(Color.BLACK);
        }
        if (start != null && end != null)
        {
            g2d.drawLine(start.x, start.y, end.x, end.y);
            //arrow head
            Polygon arrowHead = new Polygon();  
            arrowHead.addPoint( 0,5);
            arrowHead.addPoint( -5, -5);
            arrowHead.addPoint( 5,-5);
            
            AffineTransform tx = new AffineTransform();
            Line2D.Double line = new Line2D.Double(start.x,start.y,end.x,end.y);
            
            tx.setToIdentity();
            double angle = Math.atan2(line.y2-line.y1, line.x2-line.x1);
            tx.translate(line.x2, line.y2);
            tx.rotate((angle-Math.PI/2d));  
            g2d.setTransform(tx);   
            g2d.fill(arrowHead);
            
        }
        
        g2d.dispose();
    }