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.
424 lines
11 KiB
424 lines
11 KiB
5 years ago
|
/*
|
||
|
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
|