public Dimension getPreferredSize() {
		if (movie == null) return DEFAULT_SIZE;
		try {
			Method getNaturalBoundsRect = movieClass.getMethod("getNaturalBoundsRect", new Class[0]);
			Method getWidth = qdRectClass.getMethod("getWidth", new Class[0]);
			Method getHeight = qdRectClass.getMethod("getHeight", new Class[0]);
			Object rect = getNaturalBoundsRect.invoke(movie, new Object[0]);
			int width = ((Integer) getWidth.invoke(rect, new Object[0])).intValue();
			int height = ((Integer) getHeight.invoke(rect, new Object[0])).intValue();
			Dimension size = new Dimension(width, height + getControllerHeight());
			return size;
		} catch (Exception ex) {
			throw new ErrorException(ex);
		}
	}