@Override
	public void paint (Graphics g, JComponent c) {
		int w = c.getWidth();
		int h = c.getHeight();

		// Paint the view.
		super.paint (g, c);

		if (!this.mIsRunning) {
			return;
		}

		Graphics2D g2 = (Graphics2D)g.create();

		float fade = (float)this.mFadeCount / (float)this.mFadeLimit;
		// Gray it out.
		Composite urComposite = g2.getComposite();
		g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, .25f * fade));
		g2.fillRect(0, 0, w, h);
		g2.setComposite(urComposite);

		// Paint the wait indicator.
		int s = Math.min(w, h) / 5;
		int cx = w / 2;
		int cy = h / 2;

		g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
		g2.setStroke(new BasicStroke(s / 4, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND));
		g2.setPaint(Color.WHITE);
		g2.rotate(Math.PI * this.mAngle / 180, cx, cy);
		for (int i = 0; i < 12; i++) {
			float scale = (12.0f - (float)i) / 12.0f;
			g2.drawLine(cx + s, cy, cx + s * 2, cy);
			g2.rotate(-Math.PI / 6, cx, cy);
			g2.setComposite(AlphaComposite.getInstance(
					AlphaComposite.SRC_OVER, scale * fade));
		}

		g2.dispose();
	}