@Override
    public void draw(Graphics2D g2) {
        g2.setStroke(lineStroke);
        Color oldColour = g2.getColor();
        FontMetrics fontMetrics = g2.getFontMetrics();
        if(fontMetrics.stringWidth( getLabel()) > 25){
            size = fontMetrics.stringWidth( getLabel()) + 6;
        } else {
            size = 25;
        }
        
        g2.setColor(getNodeColour());
        g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, 
                            RenderingHints.VALUE_ANTIALIAS_ON);
        g2.draw(new Ellipse2D.Double(getPositionX(), getPositionY(), size, size));
        
        g2.setColor(Color.BLACK);
        g2.drawString(getLabel(), getPositionX() + size/2 - fontMetrics.stringWidth(getLabel())/2, getPositionY() + size/2);
        
        g2.setColor(oldColour);
    }