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.
423 lines
11 KiB
423 lines
11 KiB
/* |
|
File: JavaApplet.h |
|
|
|
Contains: interface to embedding a Java Applet 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 __CFDICTIONARY__ |
|
#include <CFDictionary.h> |
|
#endif |
|
|
|
#ifndef __CFSTRING__ |
|
#include <CFString.h> |
|
#endif |
|
|
|
#ifndef __CFURL__ |
|
#include <CFURL.h> |
|
#endif |
|
|
|
#ifndef __JAVACONTROL__ |
|
#include <JavaControl.h> |
|
#endif |
|
|
|
|
|
|
|
|
|
|
|
#if PRAGMA_ONCE |
|
#pragma once |
|
#endif |
|
|
|
#ifdef __cplusplus |
|
extern "C" { |
|
#endif |
|
|
|
#if PRAGMA_IMPORT |
|
#pragma import on |
|
#endif |
|
|
|
#if PRAGMA_STRUCT_ALIGN |
|
#pragma options align=mac68k |
|
#elif PRAGMA_STRUCT_PACKPUSH |
|
#pragma pack(push, 2) |
|
#elif PRAGMA_STRUCT_PACK |
|
#pragma pack(2) |
|
#endif |
|
|
|
#if PRAGMA_ENUM_ALWAYSINT |
|
#if defined(__fourbyteints__) && !__fourbyteints__ |
|
#define __JAVAAPPLET__RESTORE_TWOBYTEINTS |
|
#pragma fourbyteints on |
|
#endif |
|
#pragma enumsalwaysint on |
|
#elif PRAGMA_ENUM_OPTIONS |
|
#pragma option enum=int |
|
#elif PRAGMA_ENUM_PACK |
|
#if __option(pack_enums) |
|
#define __JAVAAPPLET__RESTORE_PACKED_ENUMS |
|
#pragma options(!pack_enums) |
|
#endif |
|
#endif |
|
|
|
|
|
/* |
|
* AppletDescriptor |
|
* |
|
* Discussion: |
|
* The structure for describing applet. This is used as the |
|
* definition of the applet to create when you call CreateJavaApplet. |
|
*/ |
|
struct AppletDescriptor { |
|
CFURLRef docBase; |
|
CFURLRef codeBase; |
|
|
|
/* |
|
* The attributes found in the <applet ...> tag formatted as a |
|
* CFDictionary of CFStrings. For attributes like height and width |
|
* they should be in screen coordinates. some Applets define them as |
|
* % (for example 90%) and should be converted to pixels before put |
|
* into the dictionary. |
|
*/ |
|
CFDictionaryRef htmlAttrs; |
|
|
|
/* |
|
* The parameters to the applet formatted as a CFDictionary of |
|
* CFStrings. These are typically found in <param ...> tags inside of |
|
* the applet tag. |
|
*/ |
|
CFDictionaryRef appletParams; |
|
}; |
|
typedef struct AppletDescriptor AppletDescriptor; |
|
|
|
/* |
|
* AppletArena |
|
* |
|
* Discussion: |
|
* This is an opaque type that represents an AppletArena - an applet |
|
* arena represents a single classloader, so all applets that share |
|
* an arena share a common classloader. |
|
*/ |
|
typedef struct OpaqueAppletArena* AppletArena; |
|
/* |
|
kUniqueArena is the value to pass to CreateJavaApplet if you want the applet to be created |
|
in a unique arena. A unique arena is one which is guaranteed not to be shared with |
|
any other applet running in this Java VM. This is the appropriate default value to |
|
pass to CreateJavaApplet. |
|
*/ |
|
#define kUniqueArena ((AppletArena)NULL) |
|
|
|
/* |
|
* JE_ShowDocumentCallback |
|
* |
|
* Discussion: |
|
* Type of a callback function used for show document (link) message |
|
* from an applet. |
|
* |
|
* Parameters: |
|
* |
|
* applet: |
|
* The applet which sent this show document message. |
|
* |
|
* url: |
|
* The url to load. |
|
* |
|
* windowName: |
|
* A string definition of where to open the url. Null means open |
|
* in place, other strings are defined in the HTML spec, like |
|
* "_top" means the parent window of the applet if it happens to |
|
* be in a frame, etc. |
|
* |
|
* userData: |
|
* Data specified when this callback was registered using |
|
* RegisterShowDocumentCallback. |
|
*/ |
|
typedef CALLBACK_API_C( void , JE_ShowDocumentCallback )(jobject applet, CFURLRef url, CFStringRef windowName, void *userData); |
|
|
|
/* |
|
* JE_SetStatusCallback |
|
* |
|
* Discussion: |
|
* Type of a callback function used for a status message from an |
|
* applet. |
|
* |
|
* Parameters: |
|
* |
|
* applet: |
|
* The applet which sent this status message. |
|
* |
|
* statusMessage: |
|
* The message to be displayed. |
|
* |
|
* userData: |
|
* Data specified when this callback was registered using |
|
* RegisterStatusCallback. |
|
*/ |
|
typedef CALLBACK_API_C( void , JE_SetStatusCallback )(jobject applet, CFStringRef statusMessage, void *userData); |
|
/* |
|
* GetEmbeddingVMParams() |
|
* |
|
* Discussion: |
|
* Gets a set of VM params that can be passed to JNI_CreateJavaVM. |
|
* These params are optimized for Java embedding, and also contain |
|
* all user-specified options. |
|
* |
|
* Parameters: |
|
* |
|
* ioJavaVMInitArgs: |
|
* A Java VM initialization argument structure that you create. |
|
* This function will clear any fields set in the structure and |
|
* filled in with new data on completion. |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: not available |
|
* CarbonLib: not available |
|
* Mac OS X: in version 10.1 and later |
|
*/ |
|
EXTERN_API_C( OSStatus ) |
|
GetEmbeddingVMParams(JavaVMInitArgs * ioJavaVMInitArgs); |
|
|
|
|
|
/* |
|
* CreateAppletArena() |
|
* |
|
* Discussion: |
|
* Create an applet arena. By default each applet you create will |
|
* have its own "arena". By creating an applet arena, and passing |
|
* that arena into two or more CreateJavaApplet calls, those applets |
|
* will share a single classloader and thus be able to communicate |
|
* with each other through static objects. |
|
* |
|
* Parameters: |
|
* |
|
* outNewArena: |
|
* The newly created applet arena. |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: not available |
|
* CarbonLib: not available |
|
* Mac OS X: in version 10.1 and later |
|
*/ |
|
EXTERN_API_C( OSStatus ) |
|
CreateAppletArena(AppletArena * outNewArena); |
|
|
|
|
|
|
|
/* |
|
* CreateJavaApplet() |
|
* |
|
* Discussion: |
|
* Creates a java applet from a descriptor. |
|
* |
|
* Parameters: |
|
* |
|
* env: |
|
* The JNI environment for the current thread. |
|
* |
|
* applet: |
|
* A full descriptor of the applet being loaded. See |
|
* AppletDescriptor. |
|
* |
|
* trusted: |
|
* Whether this applet should be loaded as trusted. |
|
* |
|
* arena: |
|
* The arena for this applet. If this is set to null then a new |
|
* arena will be created. This is the typcial case for applets. |
|
* |
|
* outJavaFrame: |
|
* Returns JNI global ref. Used for registering callbacks and |
|
* creating controls. 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 ) |
|
CreateJavaApplet( |
|
JNIEnv * env, |
|
AppletDescriptor applet, |
|
Boolean trusted, |
|
AppletArena arena, /* can be NULL */ |
|
jobject * outJavaFrame); |
|
|
|
|
|
|
|
/* |
|
* AppletState |
|
* |
|
* Summary: |
|
* Constants that are passed to SetJavaAppletState. |
|
*/ |
|
enum AppletState { |
|
kAppletStart = 1, /* Starts the applet processing 3.*/ |
|
kAppletStop = 2, /* Halts the applet, but it can be started again.*/ |
|
kAppletDestroy = 4 /* Tears down the applet.*/ |
|
}; |
|
typedef enum AppletState AppletState; |
|
|
|
|
|
/* |
|
* SetJavaAppletState() |
|
* |
|
* Discussion: |
|
* Sets the state of the current applet as defined by the applet |
|
* spec. Applets can be started and stopped many times, but |
|
* destroying them is final. |
|
* |
|
* Parameters: |
|
* |
|
* env: |
|
* The JNI environment for the current VM and thread. |
|
* |
|
* inAppletFrame: |
|
* The applet to register the status callback (from |
|
* CreateJavaApplet). |
|
* |
|
* inNewState: |
|
* Host defined data passed into showStatusFunction. |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: not available |
|
* CarbonLib: not available |
|
* Mac OS X: in version 10.1 and later |
|
*/ |
|
EXTERN_API_C( OSStatus ) |
|
SetJavaAppletState( |
|
JNIEnv * env, |
|
jobject inAppletFrame, |
|
AppletState inNewState); |
|
|
|
|
|
|
|
/* |
|
* RegisterStatusCallback() |
|
* |
|
* Discussion: |
|
* Registers your function that will be called to update the |
|
* applet's status area. Status typically is put in a web browser as |
|
* a text area at the bottom of the page. |
|
* |
|
* Note that this callback will be called from a preemptive thread, |
|
* and if the host application is using cooperative threads they |
|
* will need to push this into their own event system in order to |
|
* handle this correctly. |
|
* |
|
* Parameters: |
|
* |
|
* env: |
|
* The JNI environment for the current VM and thread. |
|
* |
|
* inJavaFrame: |
|
* The applet to register the status callback (from |
|
* CreateJavaApplet). |
|
* |
|
* showStatusFunction: |
|
* The function that will be called when the applet calls |
|
* showStatus(...). |
|
* |
|
* userData: |
|
* Host defined data passed into showStatusFunction. |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: not available |
|
* CarbonLib: not available |
|
* Mac OS X: in version 10.1 and later |
|
*/ |
|
EXTERN_API_C( OSStatus ) |
|
RegisterStatusCallback( |
|
JNIEnv * env, |
|
jobject inJavaFrame, |
|
JE_SetStatusCallback showStatusFunction, |
|
void * userData); |
|
|
|
|
|
|
|
/* |
|
* RegisterShowDocumentCallback() |
|
* |
|
* Discussion: |
|
* Registers your function that will be called when the applet |
|
* behaves like a hyperlink. This will be called to move an |
|
* embedding host application to a new URL. |
|
* |
|
* Note that this callback will be called from a preemptive thread, |
|
* and if the host application is using cooperative threads they |
|
* will need to push this into their own event system in order to |
|
* handle this correctly. |
|
* |
|
* Parameters: |
|
* |
|
* env: |
|
* The JNI environment for the current VM and thread. |
|
* |
|
* inJavaFrame: |
|
* The applet to register the show document callback (from |
|
* CreateJavaApplet). |
|
* |
|
* showDocumentFunction: |
|
* The function that will be called when the applet calls |
|
* showDocument(). |
|
* |
|
* userData: |
|
* Host defined data passed into showDocumentFunction. |
|
* |
|
* Result: |
|
* An operating system status code. |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: not available |
|
* CarbonLib: not available |
|
* Mac OS X: in version 10.1 and later |
|
*/ |
|
EXTERN_API_C( OSStatus ) |
|
RegisterShowDocumentCallback( |
|
JNIEnv * env, |
|
jobject inJavaFrame, |
|
JE_ShowDocumentCallback showDocumentFunction, |
|
void * userData); |
|
|
|
|
|
|
|
|
|
#if PRAGMA_ENUM_ALWAYSINT |
|
#pragma enumsalwaysint reset |
|
#ifdef __JAVAAPPLET__RESTORE_TWOBYTEINTS |
|
#pragma fourbyteints off |
|
#endif |
|
#elif PRAGMA_ENUM_OPTIONS |
|
#pragma option enum=reset |
|
#elif defined(__JAVAAPPLET__RESTORE_PACKED_ENUMS) |
|
#pragma options(pack_enums) |
|
#endif |
|
|
|
#if PRAGMA_STRUCT_ALIGN |
|
#pragma options align=reset |
|
#elif PRAGMA_STRUCT_PACKPUSH |
|
#pragma pack(pop) |
|
#elif PRAGMA_STRUCT_PACK |
|
#pragma pack() |
|
#endif |
|
|
|
#ifdef PRAGMA_IMPORT_OFF |
|
#pragma import off |
|
#elif PRAGMA_IMPORT |
|
#pragma import reset |
|
#endif |
|
|
|
#ifdef __cplusplus |
|
} |
|
#endif
|
|
|