You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
457 lines
11 KiB
457 lines
11 KiB
/* |
|
File: JavaControl.h |
|
|
|
Contains: interface to embedding Java code in a Carbon Control |
|
|
|
Version: QuickTime 7.3 |
|
|
|
Copyright: (c) 2007 (c) 2000-2001 by Apple Computer, Inc., all rights reserved. |
|
|
|
Bugs?: For bug reports, consult the following page on |
|
the World Wide Web: |
|
|
|
http://developer.apple.com/bugreporter/ |
|
|
|
*/ |
|
#ifndef __MACTYPES__ |
|
#include <MacTypes.h> |
|
#endif |
|
|
|
#ifndef __CONTROLS__ |
|
#include <Controls.h> |
|
#endif |
|
|
|
#ifndef __MACWINDOWS__ |
|
#include <MacWindows.h> |
|
#endif |
|
|
|
#include <JavaVM/jni.h> |
|
|
|
|
|
#if PRAGMA_ONCE |
|
#pragma once |
|
#endif |
|
|
|
#ifdef __cplusplus |
|
extern "C" { |
|
#endif |
|
|
|
#if PRAGMA_IMPORT |
|
#pragma import on |
|
#endif |
|
|
|
|
|
/* |
|
* Summary: |
|
* JavaControl Embedding errors |
|
* |
|
* Discussion: |
|
* The following are all errors which can be returned from the |
|
* routines contained in this file. Most are self explanatory. |
|
*/ |
|
enum { |
|
errJavaEmbeddingNotYetImplemented = -9950, |
|
errJavaEmbeddingIntializationFailed = -9962, /* previously errClassConstructorNotFound, errClassNotFound, and errMethodNotFound*/ |
|
errJavaEmbeddingMissingURL = -9955, /* previously errMissingURL*/ |
|
errJavaEmbeddingCouldNotCreateApplet = -9956, /* previously errCouldNotCreateApplet*/ |
|
errJavaEmbeddingCouldNotEmbedFrame = -9957, /* previously errCouldNotEmbedFrame */ |
|
errJavaEmbeddingCouldNotConvertURL = -9958, /* previously errCouldNotConvertURL*/ |
|
errJavaEmbeddingNotAFrame = -9959, /* previously errNotAFrame*/ |
|
errJavaEmbeddingControlNotEmbedded = -9960, /* previously errControlNotEmbedded*/ |
|
errJavaEmbeddingExceptionThrown = -9961, /* previously errExceptionThrown*/ |
|
errJavaEmbeddingJavaDisabled = -9963 |
|
}; |
|
|
|
|
|
|
|
/* |
|
* MoveAndClipJavaControl() |
|
* |
|
* Summary: |
|
* Positions the control in the containing window, and sets the clip |
|
* bounds for drawing. |
|
* |
|
* Discussion: |
|
* All coordinates are local to the host window, and 0,0 is the top |
|
* left corner of the content area of the host window - just below |
|
* the title bar. |
|
* Usually a call to MoveAndClipJavaControl is followed by a call to |
|
* DrawJavaControl. |
|
* |
|
* Parameters: |
|
* |
|
* env: |
|
* The JNI Environment for the current thread. |
|
* |
|
* theControl: |
|
* The Java control (applet). |
|
* |
|
* posX: |
|
* The x position of the control. |
|
* |
|
* posY: |
|
* The y position of the control. |
|
* |
|
* clipX: |
|
* The left of the clip region. |
|
* |
|
* clipY: |
|
* The top of the clip region. |
|
* |
|
* clipWidth: |
|
* The width of the clip region. (Notice this is not right, but |
|
* width) |
|
* |
|
* clipHeight: |
|
* The height of the clip region. (Notice this is not bottom, but |
|
* height) |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: not available |
|
* CarbonLib: not available |
|
* Mac OS X: in version 10.1 and later |
|
*/ |
|
EXTERN_API_C( OSStatus ) |
|
MoveAndClipJavaControl( |
|
JNIEnv * env, |
|
ControlRef theControl, |
|
int posX, |
|
int posY, |
|
int clipX, |
|
int clipY, |
|
int clipWidth, |
|
int clipHeight); |
|
|
|
|
|
/* |
|
* SizeJavaControl() |
|
* |
|
* Summary: |
|
* Sets the size of the Java control. |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: not available |
|
* CarbonLib: not available |
|
* Mac OS X: in version 10.1 and later |
|
*/ |
|
EXTERN_API_C( OSStatus ) |
|
SizeJavaControl( |
|
JNIEnv * env, |
|
ControlRef theControl, |
|
int width, |
|
int height); |
|
|
|
|
|
/* |
|
* ShowHideJavaControl() |
|
* |
|
* Summary: |
|
* Makes a Java control visible or invisible. |
|
* |
|
* Parameters: |
|
* |
|
* env: |
|
* The JNI Environment for the current thread. |
|
* |
|
* theControl: |
|
* The Java control (applet). |
|
* |
|
* visible: |
|
* True shows the control. |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: not available |
|
* CarbonLib: not available |
|
* Mac OS X: in version 10.1 and later |
|
*/ |
|
EXTERN_API_C( OSStatus ) |
|
ShowHideJavaControl( |
|
JNIEnv * env, |
|
ControlRef theControl, |
|
Boolean visible); |
|
|
|
|
|
/* |
|
* StopJavaControlAsyncDrawing() |
|
* |
|
* Summary: |
|
* Stops a Java applet from drawing asynchonously. |
|
* |
|
* Discussion: |
|
* Many applets are used for animation and they draw themselves at |
|
* times other than when the control is drawn. In order to handle |
|
* things like live resize and scrolling a host app must be able to |
|
* suspend asynchronous drawing otherwise a draw may occur before |
|
* the host app is able to reposition/reclip the control thus |
|
* causing drawing in the wrong location. When async drawing is off |
|
* normal paint events in an applet are ignored. Only |
|
* DrawJavaControl events are allowed to paint. This allows |
|
* temporary fine grained control of when an applet can paint, and |
|
* should only be used when needed. |
|
* |
|
* Parameters: |
|
* |
|
* env: |
|
* The JNI Environment for the current thread. |
|
* |
|
* theControl: |
|
* The Java control (applet). |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: not available |
|
* CarbonLib: not available |
|
* Mac OS X: in version 10.1 and later |
|
*/ |
|
EXTERN_API_C( OSStatus ) |
|
StopJavaControlAsyncDrawing( |
|
JNIEnv * env, |
|
ControlRef theControl); |
|
|
|
|
|
/* |
|
* RestartJavaControlAsyncDrawing() |
|
* |
|
* Summary: |
|
* Allows a Java applet to draw asynchonously. |
|
* |
|
* Discussion: |
|
* This should be called when it is safe again for an applet to draw |
|
* asynchronously. See StopJavaControlAsyncDrawing. |
|
* |
|
* Parameters: |
|
* |
|
* env: |
|
* The JNI Environment for the current thread. |
|
* |
|
* theControl: |
|
* The Java control (applet). |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: not available |
|
* CarbonLib: not available |
|
* Mac OS X: in version 10.1 and later |
|
*/ |
|
EXTERN_API_C( OSStatus ) |
|
RestartJavaControlAsyncDrawing( |
|
JNIEnv * env, |
|
ControlRef theControl); |
|
|
|
|
|
/* |
|
* DrawJavaControl() |
|
* |
|
* Summary: |
|
* Causes a Java control that to be drawn. |
|
* |
|
* Discussion: |
|
* This should be called whenever the host app needs the |
|
* applet/control to be redrawn. In the case where Async drawing is |
|
* paused, DrawJavaControl will still cause the applet to draw. So |
|
* if the host app is stopping async drawing for something like live |
|
* scrolling, if there are convenient times the host app should call |
|
* DrawJavaControl (usually after a call to MoveAndClipJavaControl) |
|
* to provide some feedback to the user. |
|
* |
|
* Parameters: |
|
* |
|
* env: |
|
* The JNI Environment for the current thread. |
|
* |
|
* theControl: |
|
* The corresponding Java control (applet) that is to be drawn. |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: not available |
|
* CarbonLib: not available |
|
* Mac OS X: in version 10.1 and later |
|
*/ |
|
EXTERN_API_C( OSStatus ) |
|
DrawJavaControl( |
|
JNIEnv * env, |
|
ControlRef theControl); |
|
|
|
|
|
|
|
/* |
|
======================================================================================== |
|
UTILITY API - functions to determine the status of a window or control |
|
======================================================================================== |
|
*/ |
|
|
|
/* |
|
* GetJavaWindowFromWindow() |
|
* |
|
* Discussion: |
|
* Given a native Carbon window this returns the corresponding Java |
|
* window. |
|
* |
|
* Parameters: |
|
* |
|
* env: |
|
* The JNI Environment for the current thread. |
|
* |
|
* inMacWindow: |
|
* A reference to a native window. |
|
* |
|
* outJavaWindow: |
|
* Returns a JNI global ref. Call env->DeleteGlobalRef() on it |
|
* when done. |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: not available |
|
* CarbonLib: not available |
|
* Mac OS X: in version 10.1 and later |
|
*/ |
|
EXTERN_API_C( OSStatus ) |
|
GetJavaWindowFromWindow( |
|
JNIEnv * env, |
|
WindowRef inMacWindow, |
|
jobject * outJavaWindow); |
|
|
|
|
|
/* |
|
* GetWindowFromJavaWindow() |
|
* |
|
* Discussion: |
|
* Given a Java window this returns the corresponding native Carbon |
|
* window. |
|
* |
|
* Parameters: |
|
* |
|
* env: |
|
* The JNI Environment for the current thread. |
|
* |
|
* inJavaWindow: |
|
* A reference to a Java window. |
|
* |
|
* outMacWindow: |
|
* The corresponding native window. |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: not available |
|
* CarbonLib: not available |
|
* Mac OS X: in version 10.1 and later |
|
*/ |
|
EXTERN_API_C( OSStatus ) |
|
GetWindowFromJavaWindow( |
|
JNIEnv * env, |
|
jobject inJavaWindow, |
|
WindowRef * outMacWindow); |
|
|
|
|
|
/* |
|
* GetJavaFrameFromControl() |
|
* |
|
* Discussion: |
|
* Given an embedded control this returns the corresponding Java |
|
* applet frame. |
|
* |
|
* Parameters: |
|
* |
|
* env: |
|
* The JNI Environment for the current thread. |
|
* |
|
* inMacControl: |
|
* A reference to the control for the applet. |
|
* |
|
* outJavaFrame: |
|
* Returns a JNI global ref. Call env->DeleteGlobalRef() on it |
|
* when done. |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: not available |
|
* CarbonLib: not available |
|
* Mac OS X: in version 10.1 and later |
|
*/ |
|
EXTERN_API_C( OSStatus ) |
|
GetJavaFrameFromControl( |
|
JNIEnv * env, |
|
ControlRef inMacControl, |
|
jobject * outJavaFrame); |
|
|
|
|
|
/* |
|
* GetControlFromJavaFrame() |
|
* |
|
* Discussion: |
|
* Given a Java applet frame reference this returns the embedded |
|
* control. |
|
* |
|
* Parameters: |
|
* |
|
* env: |
|
* The JNI Environment for the current thread. |
|
* |
|
* inJavaFrame: |
|
* The applet reference obtained from CreateJavaApplet. |
|
* |
|
* outMacControl: |
|
* A reference to the control for the applet. |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: not available |
|
* CarbonLib: not available |
|
* Mac OS X: in version 10.1 and later |
|
*/ |
|
EXTERN_API_C( OSStatus ) |
|
GetControlFromJavaFrame( |
|
JNIEnv * env, |
|
jobject inJavaFrame, |
|
ControlRef * outMacControl); |
|
|
|
|
|
|
|
/* |
|
* CreateJavaControl() |
|
* |
|
* Discussion: |
|
* Creates a control for the specified applet whose content is drawn |
|
* and events processed by java. |
|
* All communication to this control should be through the APIs |
|
* specified here in JavaControl.h. |
|
* |
|
* Parameters: |
|
* |
|
* env: |
|
* The JNI Environment for the current thread. |
|
* |
|
* inNativeWindow: |
|
* The carbon window that will host the applet. |
|
* |
|
* inBounds: |
|
* The starting location for the applet. |
|
* |
|
* inAppletFrame: |
|
* The applet reference obtained from CreateJavaApplet. |
|
* |
|
* inVisible: |
|
* True if the applet should start out hidden. |
|
* |
|
* outControl: |
|
* A reference to the control that is created for the applet. |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: not available |
|
* CarbonLib: not available |
|
* Mac OS X: in version 10.1 and later |
|
*/ |
|
EXTERN_API_C( OSStatus ) |
|
CreateJavaControl( |
|
JNIEnv * env, |
|
WindowRef inNativeWindow, |
|
const Rect * inBounds, |
|
jobject inAppletFrame, |
|
Boolean inVisible, |
|
ControlRef * outControl); |
|
|
|
|
|
|
|
#ifdef PRAGMA_IMPORT_OFF |
|
#pragma import off |
|
#elif PRAGMA_IMPORT |
|
#pragma import reset |
|
#endif |
|
|
|
#ifdef __cplusplus |
|
} |
|
#endif
|
|
|