public void paintComponent(Graphics g) {
		Graphics2D g2d = (Graphics2D) g;

		g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
				RenderingHints.VALUE_ANTIALIAS_ON);

		if (image != null) {
			AlphaComposite alpha = AlphaComposite.getInstance(
					AlphaComposite.SRC_OVER, 1);
			g2d.setComposite(alpha);
			g2d.drawImage(image, getLocation().x + 5, getLocation().y + 5,
					getWidth() - 10, getHeight() - 10, this);
		}

		if (invisibleConnections > 0) {
			String number = String.valueOf(invisibleConnections);
			int x = getLocation().x + 1;
			int y = getLocation().y + getHeight() - 2;
			Rectangle2D stringBouds = g2d.getFontMetrics().getStringBounds(
					number, g2d);

			g2d.setColor(invisibleCounterBackground);
			g2d.fillRect(x, y - (int) stringBouds.getHeight() + 2,
					(int) stringBouds.getWidth() + 4, (int) stringBouds
							.getHeight());
			g2d.setColor(invisibleCounterBorder);
			g2d.drawRect(x, y - (int) stringBouds.getHeight() + 2,
					(int) stringBouds.getWidth() + 4, (int) stringBouds
							.getHeight());

			g2d.setColor(invisibleCounterForeground);
			g2d.drawString(String.valueOf(invisibleConnections), x + 3, y);
		}

		if (selected || mouseInside || image == null) {
			AlphaComposite alpha = AlphaComposite.getInstance(
					AlphaComposite.SRC_OVER, 0.5f);
			g2d.setComposite(alpha);
			g2d.setColor(iconSelectionColor);
			g2d.drawRoundRect(getLocation().x, getLocation().y, getWidth() - 1,
					getHeight() - 1, 5, 5);
		}

		if (selected) {
			AlphaComposite alpha = AlphaComposite.getInstance(
					AlphaComposite.SRC_OVER, 0.2f);
			g2d.setComposite(alpha);
			g2d.setColor(iconSelectionColor);
			g2d.fillRoundRect(getLocation().x, getLocation().y, getWidth(),
					getHeight(), 5, 5);
		}

		if (mouseInside) {
			AlphaComposite alpha = AlphaComposite.getInstance(
					AlphaComposite.SRC_OVER, 0.1f);
			g2d.setComposite(alpha);
			g2d.setColor(iconSelectionColor);
			g2d.fillRoundRect(getLocation().x, getLocation().y, getWidth(),
					getHeight(), 5, 5);
		}

	}