/** Please refer to JSR 234 for more details. */
  public void setSpherical(int aAzimuth, int aElevation, int aRadius) {
    checkValid();

    if (aRadius < MIN_RADIUS) {
      throw new IllegalArgumentException("Radius cannot be less than zero");
    }

    int err = _setSpherical(iEventSource, iControlHandle, aAzimuth, aElevation, aRadius);

    NativeError.check(err);
  }
  /** Please refer to JSR 234 for more details. */
  public int[] getCartesian() {
    checkValid();

    int[] error = new int[1];
    int[] location = _getCartesian(iEventSource, iControlHandle, error);
    if (location == null) {
      throw new OutOfMemoryError("Unable to obtain coordinates");
    }

    NativeError.check(error[0]);

    return location;
  }
  /** Please refer to JSR 234 for more details. */
  public void setPriority(int aPriority) {
    checkValid();

    int priority = aPriority;
    // Panning value that is out of range is set to the valid range.
    if (aPriority < MIN_PRIORITY || aPriority > MAX_PRIORITY) {
      throw new IllegalArgumentException("Priority must be between 0 and 100");
    }

    // Priority setting in native side returns a system wide error code.
    int error = _setPriority(iEventSource, iControlHandle, aPriority);
    NativeError.check(error);
  }
  /** Please refer to JSR 234 for more details. */
  public void setCartesian(int aX, int aY, int aZ) {
    checkValid();

    int err = _setCartesian(iEventSource, iControlHandle, aX, aY, aZ);
    NativeError.check(err);
  }