From a78c99dddf05ca7068af3d58c60eabc1d6f80468 Mon Sep 17 00:00:00 2001 From: Oliver Bolte Date: Tue, 1 Jun 2004 08:13:40 +0000 Subject: INTEGRATION: CWS jl6 (1.17.10); FILE MERGED 2004/05/04 14:49:06 jl 1.17.10.5: #116645# applets and j2re1.5 2004/04/30 08:36:26 jl 1.17.10.4: #i20052# 2004/04/28 13:50:26 jl 1.17.10.3: RESYNC: (1.17-1.18); FILE MERGED 2004/03/18 07:43:35 jl 1.17.10.2: #115008# widget.h is only included on unx 2004/03/03 08:52:52 jl 1.17.10.1: #115008# prototype for embedding applet without plugin.jar --- sj2/source/jscpp/sjapplet_impl.cxx | 141 ++++++++++++++++++++++--------------- 1 file changed, 85 insertions(+), 56 deletions(-) (limited to 'sj2') diff --git a/sj2/source/jscpp/sjapplet_impl.cxx b/sj2/source/jscpp/sjapplet_impl.cxx index 9fe178650b..d5292f5020 100644 --- a/sj2/source/jscpp/sjapplet_impl.cxx +++ b/sj2/source/jscpp/sjapplet_impl.cxx @@ -2,9 +2,9 @@ * * $RCSfile: sjapplet_impl.cxx,v $ * - * $Revision: 1.18 $ + * $Revision: 1.19 $ * - * last change: $Author: kz $ $Date: 2004-03-25 14:56:11 $ + * last change: $Author: obo $ $Date: 2004-06-01 09:13:40 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -80,18 +80,18 @@ #include #include + + +using namespace ::rtl; using namespace ::osl; using namespace ::utl; #ifdef SOLAR_JAVA using namespace ::com::sun::star::java; #endif // SOLAR_JAVA - using namespace ::com::sun::star::lang; using namespace ::com::sun::star::uno; - -#define OUSTR( x ) ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( x )) - +namespace css = ::com::sun::star; #ifdef SOLAR_JAVA static void testJavaException(JNIEnv * pEnv) throw(com::sun::star::uno::RuntimeException) @@ -115,7 +115,7 @@ static void testJavaException(JNIEnv * pEnv) throw(com::sun::star::uno::Runtime pEnv->ReleaseStringChars(jsMessage, jcMessage); } - throw RuntimeException(ouMessage, Reference()); + throw css::uno::RuntimeException(ouMessage, css::uno::Reference()); } } #else // !SOLAR_JAVA @@ -134,43 +134,64 @@ struct EmbeddedWindow { void dispose(JNIEnv * pEnv); }; -EmbeddedWindow::EmbeddedWindow(JNIEnv * pEnv, SystemEnvData const * pEnvData) throw(com::sun::star::uno::RuntimeException) +EmbeddedWindow::EmbeddedWindow(JNIEnv * pEnv, SystemEnvData const * pEnvData) + throw(com::sun::star::uno::RuntimeException) : _joWindow(0) { - jclass jcToolkit = pEnv->FindClass("java/awt/Toolkit"); testJavaException(pEnv); - jmethodID jmToolkit_getDefaultToolkit = pEnv->GetStaticMethodID( - jcToolkit, "getDefaultToolkit", "()Ljava/awt/Toolkit;" ); testJavaException(pEnv); - pEnv->CallStaticObjectMethod(jcToolkit, jmToolkit_getDefaultToolkit); testJavaException(pEnv); - - jclass jcMotifAppletViewer = pEnv->FindClass( - "sun/plugin/navig/motif/MotifAppletViewer"); - if(pEnv->ExceptionOccurred()) - { - pEnv->ExceptionClear(); - jcMotifAppletViewer = pEnv->FindClass( - "sun/plugin/viewer/MNetscapePluginContext"); testJavaException(pEnv); - } - - jclass jcClassLoader = pEnv->FindClass("java/lang/ClassLoader"); testJavaException(pEnv); - jmethodID jmClassLoader_loadLibrary = pEnv->GetStaticMethodID( - jcClassLoader, "loadLibrary", - "(Ljava/lang/Class;Ljava/lang/String;Z)V" ); testJavaException(pEnv); - jstring jsplugin = pEnv->NewStringUTF("javaplugin_jni"); testJavaException(pEnv); - pEnv->CallStaticVoidMethod(jcClassLoader, jmClassLoader_loadLibrary, - jcMotifAppletViewer, jsplugin, JNI_FALSE); testJavaException(pEnv); - - jmethodID jmMotifAppletViewer_getWidget = pEnv->GetStaticMethodID( - jcMotifAppletViewer, "getWidget", "(IIIII)I" ); testJavaException(pEnv); - jint ji_widget = pEnv->CallStaticIntMethod(jcMotifAppletViewer, + try + { //java < 1.5 + jclass jcToolkit = pEnv->FindClass("java/awt/Toolkit"); testJavaException(pEnv); + jmethodID jmToolkit_getDefaultToolkit = pEnv->GetStaticMethodID( + jcToolkit, "getDefaultToolkit", "()Ljava/awt/Toolkit;" ); testJavaException(pEnv); + pEnv->CallStaticObjectMethod(jcToolkit, jmToolkit_getDefaultToolkit); testJavaException(pEnv); + + jclass jcMotifAppletViewer = pEnv->FindClass( + "sun/plugin/navig/motif/MotifAppletViewer"); + if(pEnv->ExceptionOccurred()) + { + pEnv->ExceptionClear(); + jcMotifAppletViewer = pEnv->FindClass( + "sun/plugin/viewer/MNetscapePluginContext"); testJavaException(pEnv); + } + + jclass jcClassLoader = pEnv->FindClass("java/lang/ClassLoader"); testJavaException(pEnv); + jmethodID jmClassLoader_loadLibrary = pEnv->GetStaticMethodID( + jcClassLoader, "loadLibrary", + "(Ljava/lang/Class;Ljava/lang/String;Z)V" ); testJavaException(pEnv); + jstring jsplugin = pEnv->NewStringUTF("javaplugin_jni"); testJavaException(pEnv); + pEnv->CallStaticVoidMethod(jcClassLoader, jmClassLoader_loadLibrary, + jcMotifAppletViewer, jsplugin, JNI_FALSE); testJavaException(pEnv); + + jmethodID jmMotifAppletViewer_getWidget = pEnv->GetStaticMethodID( + jcMotifAppletViewer, "getWidget", "(IIIII)I" ); testJavaException(pEnv); + jint ji_widget = pEnv->CallStaticIntMethod(jcMotifAppletViewer, jmMotifAppletViewer_getWidget, pEnvData->aWindow, 0, 0, 1, 1); testJavaException(pEnv); + jclass jcFrame = pEnv->FindClass("sun/awt/motif/MEmbeddedFrame"); testJavaException(pEnv); + jmethodID jmFrame_rinit = pEnv->GetMethodID(jcFrame, "", "(J)V" ); testJavaException(pEnv); + jobject joFrame = pEnv->AllocObject(jcFrame); testJavaException(pEnv); + pEnv->CallVoidMethod(joFrame, jmFrame_rinit, (jlong)ji_widget); testJavaException(pEnv); + _joWindow = pEnv->NewGlobalRef(joFrame); + } + catch (RuntimeException & ) + { + } - jclass jcFrame = pEnv->FindClass("sun/awt/motif/MEmbeddedFrame"); testJavaException(pEnv); - jmethodID jmFrame_rinit = pEnv->GetMethodID(jcFrame, "", "(J)V" ); testJavaException(pEnv); - - jobject joFrame = pEnv->AllocObject(jcFrame); testJavaException(pEnv); - pEnv->CallVoidMethod(joFrame, jmFrame_rinit, (jlong)ji_widget); testJavaException(pEnv); - + if (_joWindow) + return; + //try Java > 1.5 +#ifdef SOLARIS + jclass jcFrame = pEnv->FindClass("sun/awt/motif/MEmbeddedFrame"); testJavaException(pEnv); + jobject joFrame = pEnv->AllocObject(jcFrame); testJavaException(pEnv); + jmethodID jmFrame_rinit = pEnv->GetMethodID(jcFrame, "", "(JZ)V" ); testJavaException(pEnv); + pEnv->CallVoidMethod(joFrame, jmFrame_rinit, (jlong) pEnvData->aWindow, JNI_FALSE); testJavaException(pEnv); + _joWindow = pEnv->NewGlobalRef(joFrame); +#elif LINUX + jclass jcFrame = pEnv->FindClass("sun/awt/X11/XEmbeddedFrame"); testJavaException(pEnv); + jobject joFrame = pEnv->AllocObject(jcFrame); testJavaException(pEnv); + jmethodID jmFrame_rinit = pEnv->GetMethodID(jcFrame, "", "(J)V" ); testJavaException(pEnv); + pEnv->CallVoidMethod(joFrame, jmFrame_rinit, (jlong) pEnvData->aWindow); testJavaException(pEnv); _joWindow = pEnv->NewGlobalRef(joFrame); +#endif } #else @@ -262,7 +283,7 @@ SjApplet2_Impl::~SjApplet2_Impl() throw() } void SjApplet2_Impl::init(Window * pParentWin, - const Reference & smgr, + const css::uno::Reference & smgr, const INetURLObject & rDocBase, const SvCommandList & rCmdList) throw(com::sun::star::uno::RuntimeException) @@ -294,8 +315,9 @@ void SjApplet2_Impl::init(Window * pParentWin, OSL_TRACE("SjApplet2_Impl::init - mainUrl: %s\n", tmp.getStr()); #endif - Reference_xJavaVM = Reference(smgr->createInstance( - OUSTR("com.sun.star.java.JavaVirtualMachine")), UNO_QUERY); + css::uno::Reference_xJavaVM = + css::uno::Reference(smgr->createInstance( + rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.java.JavaVirtualMachine"))), UNO_QUERY); Sequence processID(17); rtl_getGlobalProcessId((sal_uInt8 *)processID.getArray()); processID[16] = 0; @@ -368,8 +390,9 @@ void SjApplet2_Impl::init(Window * pParentWin, catch(jvmaccess::VirtualMachine::AttachGuard::CreationException & ) { throw RuntimeException( - OUSTR("sjapplet_impl.cxx: Could not create jvmaccess::" - "VirtualMachine::AttachGuard!"), 0); + rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( + "sjapplet_impl.cxx: Could not create jvmaccess::" + "VirtualMachine::AttachGuard!")), 0); } #else // !SOLAR_JAVA @@ -401,8 +424,9 @@ void SjApplet2_Impl::setSize(const Size & rSize) throw(com::sun::star::uno::Runt catch (jvmaccess::VirtualMachine::AttachGuard::CreationException &) { throw RuntimeException( - OUSTR("SjApplet2_Impl::setSize, Could not create jvmaccess::" - "VirtualMachine::AttachGuard!"), 0); + rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( + "SjApplet2_Impl::setSize, Could not create jvmaccess::" + "VirtualMachine::AttachGuard!")), 0); } #else // !SOLAR_JAVA throwException(); @@ -427,8 +451,9 @@ void SjApplet2_Impl::restart() throw(com::sun::star::uno::RuntimeException) catch (jvmaccess::VirtualMachine::AttachGuard::CreationException &) { throw RuntimeException( - OUSTR("SjApplet2_Impl::restart, Could not create jvmaccess::" - "VirtualMachine::AttachGuard!"), 0); + rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( + "SjApplet2_Impl::restart, Could not create jvmaccess::" + "VirtualMachine::AttachGuard!")), 0); } #else // !SOLAR_JAVA throwException(); @@ -453,8 +478,9 @@ void SjApplet2_Impl::reload() throw(com::sun::star::uno::RuntimeException) catch (jvmaccess::VirtualMachine::AttachGuard::CreationException &) { throw RuntimeException( - OUSTR("SjApplet2_Impl::reload, Could not create jvmaccess::" - "VirtualMachine::AttachGuard!"), 0); + rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( + "SjApplet2_Impl::reload, Could not create jvmaccess::" + "VirtualMachine::AttachGuard!")), 0); } #else // !SOLAR_JAVA throwException(); @@ -479,8 +505,9 @@ void SjApplet2_Impl::start() throw(com::sun::star::uno::RuntimeException) catch (jvmaccess::VirtualMachine::AttachGuard::CreationException &) { throw RuntimeException( - OUSTR("SjApplet2_Impl::restart, Could not create jvmaccess::" - "VirtualMachine::AttachGuard!"), 0); + rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( + "SjApplet2_Impl::restart, Could not create jvmaccess::" + "VirtualMachine::AttachGuard!")), 0); } #else // !SOLAR_JAVA throwException(); @@ -505,8 +532,9 @@ void SjApplet2_Impl::stop() throw(com::sun::star::uno::RuntimeException) catch (jvmaccess::VirtualMachine::AttachGuard::CreationException &) { throw RuntimeException( - OUSTR("SjApplet2_Impl::restart, Could not create jvmaccess::" - "VirtualMachine::AttachGuard!"), 0); + rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( + "SjApplet2_Impl::restart, Could not create jvmaccess::" + "VirtualMachine::AttachGuard!")), 0); } #else // !SOLAR_JAVA throwException(); @@ -561,8 +589,9 @@ void SjApplet2_Impl::close() throw(com::sun::star::uno::RuntimeException) catch (jvmaccess::VirtualMachine::AttachGuard::CreationException &) { throw RuntimeException( - OUSTR("SjApplet2_Impl::close, Could not create jvmaccess::" - "VirtualMachine::AttachGuard!"), 0); + rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( + "SjApplet2_Impl::close, Could not create jvmaccess::" + "VirtualMachine::AttachGuard!")), 0); } #else // !SOLAR_JAVA throwException(); -- cgit v1.2.3