summaryrefslogtreecommitdiff
path: root/sj2/source/jscpp/sjapplet_impl.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'sj2/source/jscpp/sjapplet_impl.cxx')
-rw-r--r--sj2/source/jscpp/sjapplet_impl.cxx617
1 files changed, 0 insertions, 617 deletions
diff --git a/sj2/source/jscpp/sjapplet_impl.cxx b/sj2/source/jscpp/sjapplet_impl.cxx
deleted file mode 100644
index fdae4863a80a..000000000000
--- a/sj2/source/jscpp/sjapplet_impl.cxx
+++ /dev/null
@@ -1,617 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: sjapplet_impl.cxx,v $
- * $Revision: 1.32 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#include "sjapplet_impl.hxx"
-
-#ifdef WNT
-#include <tools/prewin.h>
-#include <windows.h>
-#include <tools/postwin.h>
-#elif (defined QUARTZ)
-#include "premac.h"
-#include <Cocoa/Cocoa.h>
-#include "postmac.h"
-#elif (defined UNX)
-#include <tools/prex.h>
-#include "X11/Xlib.h"
-#include <tools/postx.h>
-#endif
-
-#include "rtl/ustring.hxx"
-#include <rtl/process.h>
-#include <osl/mutex.hxx>
-
-#include <tools/urlobj.hxx>
-#include <tools/debug.hxx>
-
-#include <svtools/ownlist.hxx>
-
-#include <vcl/svapp.hxx>
-#include <vcl/window.hxx>
-#include <vcl/wrkwin.hxx>
-#include <vcl/syschild.hxx>
-#include <vcl/sysdata.hxx>
-#include <com/sun/star/java/XJavaVM.hpp>
-#include "com/sun/star/lang/XMultiComponentFactory.hpp"
-#include "com/sun/star/uno/XComponentContext.hpp"
-#include "jvmaccess/classpath.hxx"
-
-using namespace ::rtl;
-using namespace ::osl;
-#ifdef SOLAR_JAVA
-using namespace ::com::sun::star::java;
-#endif // SOLAR_JAVA
-using namespace ::com::sun::star::lang;
-using namespace ::com::sun::star::uno;
-
-namespace css = ::com::sun::star;
-#ifdef SOLAR_JAVA
-
-static void testJavaException(JNIEnv * pEnv) throw(com::sun::star::uno::RuntimeException)
-{
- jthrowable jtThrowable = pEnv->ExceptionOccurred();
- if(jtThrowable) { // is it a java exception ?
-#if OSL_DEBUG_LEVEL > 1
- pEnv->ExceptionDescribe();
-#endif
- pEnv->ExceptionClear();
-
- jclass jcThrowable = pEnv->FindClass("java/lang/Throwable");
- jmethodID jmThrowable_getMessage = pEnv->GetMethodID(jcThrowable, "getMessage", "()Ljava/lang/String;");
-
- jstring jsMessage = (jstring)pEnv->CallObjectMethod(jtThrowable, jmThrowable_getMessage);
-
- rtl::OUString ouMessage;
- if(jsMessage) {
- const jchar * jcMessage = pEnv->GetStringChars(jsMessage, NULL);
- ouMessage = rtl::OUString(jcMessage);
- pEnv->ReleaseStringChars(jsMessage, jcMessage);
- }
-
- throw css::uno::RuntimeException(ouMessage, css::uno::Reference<XInterface>());
- }
-}
-#else // !SOLAR_JAVA
-static void throwException() throw(com::sun::star::uno::RuntimeException)
-{
- throw css::uno::RuntimeException(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Java applets not supported.")), css::uno::Reference<XInterface>());
-}
-#endif
-
-#ifdef SOLAR_JAVA
-#if defined (UNX) && !defined(QUARTZ)
-struct EmbeddedWindow {
- jobject _joWindow;
-
- EmbeddedWindow(JNIEnv * pEnv, SystemEnvData const * pEnvData) throw(com::sun::star::uno::RuntimeException);
- void dispose(JNIEnv * pEnv);
-};
-
-EmbeddedWindow::EmbeddedWindow(JNIEnv * pEnv, SystemEnvData const * pEnvData)
- throw(com::sun::star::uno::RuntimeException) : _joWindow(0)
-{
- // ensure that all operations for the window contained in pEnvData
- // have been processed by the Xserver since java will access that
- // window by a separate connection to the Xserver
- XSync( (Display*)pEnvData->pDisplay, False);
- 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, "<init>", "(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 & )
- {
- }
-
- 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, "<init>", "(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, "<init>", "(J)V" ); testJavaException(pEnv);
-
- pEnv->CallVoidMethod(joFrame, jmFrame_rinit, (jlong) pEnvData->aWindow); testJavaException(pEnv);
- _joWindow = pEnv->NewGlobalRef(joFrame);
-#endif
-}
-
-#else // UNX && !QUARTZ
-
-struct EmbeddedWindow {
-jobject _joWindow;
-
-EmbeddedWindow(JNIEnv * pEnv, SystemEnvData const * pEnvData) throw(com::sun::star::uno::RuntimeException);
-void dispose(JNIEnv * pEnv);
-};
-
-
-#ifdef WNT
-EmbeddedWindow::EmbeddedWindow(JNIEnv * pEnv, SystemEnvData const * pEnvData) throw(com::sun::star::uno::RuntimeException)
-{
-jclass jcFrame = pEnv->FindClass("sun/awt/windows/WEmbeddedFrame"); testJavaException(pEnv);
-jmethodID jmFrame_rinit = pEnv->GetMethodID(jcFrame, "<init>", "(I)V"); testJavaException(pEnv);
-
-jobject joFrame = pEnv->AllocObject(jcFrame); testJavaException(pEnv);
-pEnv->CallVoidMethod(joFrame, jmFrame_rinit, (jint)pEnvData->hWnd); testJavaException(pEnv);
-
-_joWindow = pEnv->NewGlobalRef(joFrame);
-}
-
-#elif defined QUARTZ
-EmbeddedWindow::EmbeddedWindow(JNIEnv * pEnv, SystemEnvData const * pEnvData) throw(com::sun::star::uno::RuntimeException)
-{
- /* The WNT code (above) that this code derives from, may be using quite old
- ways of interacting with native windows. More modern approaches seems to
- point towards JAWT_* and com.apple.eawt */
-#if 0
-// FIXME: this is not going to work on cocoa
-jclass jcFrame = pEnv->FindClass("apple/awt/CEmbeddedFrame"); testJavaException(pEnv);
-jmethodID jmFrame_rinit = pEnv->GetMethodID(jcFrame, "<init>", "(I)V"); testJavaException(pEnv);
-
-jobject joFrame = pEnv->AllocObject(jcFrame); testJavaException(pEnv);
-pEnv->CallVoidMethod(joFrame, jmFrame_rinit, (jint)pEnvData->pView); testJavaException(pEnv);
-
-_joWindow = pEnv->NewGlobalRef(joFrame);
-#endif
-}
-
-#else
-
-EmbeddedWindow::EmbeddedWindow(JNIEnv * pEnv, SystemEnvData const * pEnvData) throw(com::sun::star::uno::RuntimeException)
-{
-jclass jcFrame = pEnv->FindClass("java/awt/Frame"); testJavaException(pEnv);
-jmethodID jmFrame_rinit = pEnv->GetMethodID(jcFrame, "<init>", "()V"); testJavaException(pEnv);
-jobject joFrame = pEnv->AllocObject(jcFrame); testJavaException(pEnv);
-pEnv->CallVoidMethod(joFrame, jmFrame_rinit); testJavaException(pEnv);
-
-_joWindow = pEnv->NewGlobalRef(joFrame);
-}
-
-#endif
-
-#endif // UNX && !QUARTZ
-
-void EmbeddedWindow::dispose(JNIEnv * pEnv)
-{
-jclass jcWindow = pEnv->FindClass("java/awt/Window"); testJavaException(pEnv);
-jmethodID jmWindow_dispose = pEnv->GetMethodID(jcWindow, "dispose", "()V" ); testJavaException(pEnv);
-
-pEnv->CallVoidMethod(_joWindow, jmWindow_dispose); testJavaException(pEnv);
-pEnv->DeleteGlobalRef(_joWindow);
-
-_joWindow = 0;
-}
-#endif // SOLAR_JAVA
-
-
-#ifdef SOLAR_JAVA
-SjApplet2_Impl::SjApplet2_Impl() throw(com::sun::star::uno::RuntimeException)
- :
- _joAppletExecutionContext(0),
- _jcAppletExecutionContext(0)
-
-{}
-#else // !SOLAR_JAVA
-SjApplet2_Impl::SjApplet2_Impl() throw(com::sun::star::uno::RuntimeException)
-{}
-#endif
-
-
-SjApplet2_Impl::~SjApplet2_Impl() throw()
-{
-#ifdef SOLAR_JAVA
- if (_joAppletExecutionContext)
- {
- try
- {
- if ( ! _virtualMachine.is())
- return;
- jvmaccess::VirtualMachine::AttachGuard vmAttachGuard(_virtualMachine);
- JNIEnv * pEnv = vmAttachGuard.getEnvironment();
- _pEmbeddedWindow->dispose(pEnv);
- delete _pEmbeddedWindow;
-
- pEnv->DeleteGlobalRef(_joAppletExecutionContext);
- pEnv->DeleteGlobalRef(_jcAppletExecutionContext);
- }
- catch (jvmaccess::VirtualMachine::AttachGuard::CreationException &)
- {
- }
- }
-#endif
-}
-
-void SjApplet2_Impl::init(
- Window * pParentWin,
- css::uno::Reference< css::uno::XComponentContext > const & context,
- const INetURLObject & rDocBase, const SvCommandList & rCmdList)
- throw(com::sun::star::uno::RuntimeException)
-{
-#ifdef SOLAR_JAVA
- _pParentWin = pParentWin;
-
-
- // Java URL erzeugen
- rtl::OUString url = rDocBase.GetMainURL(INetURLObject::DECODE_TO_IURI);
-
- if(!url.getLength())
- url = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("file:///"));
-
- if (url.getLength()) {
- //WorkAround, weil Java mit dem | nicht zurecht kommt
- if(rDocBase.GetProtocol() == INET_PROT_FILE && url.pData->buffer[9] == INET_ENC_DELIM_TOKEN) {
- rtl::OUString tmp = url.copy(0, 9);
- tmp += String(INET_DELIM_TOKEN);
- tmp += url.copy(10);
-
- url = tmp;
- }
- }
-
-
-#if OSL_DEBUG_LEVEL > 1
- rtl::OString tmp = rtl::OUStringToOString(url, RTL_TEXTENCODING_ASCII_US);
- OSL_TRACE("SjApplet2_Impl::init - mainUrl: %s\n", tmp.getStr());
-#endif
-
- css::uno::Reference<XJavaVM> _xJavaVM = css::uno::Reference<XJavaVM>(
- (css::uno::Reference< css::lang::XMultiComponentFactory >(
- context->getServiceManager(), css::uno::UNO_QUERY_THROW)->
- createInstanceWithContext(
- rtl::OUString(
- RTL_CONSTASCII_USTRINGPARAM(
- "com.sun.star.java.JavaVirtualMachine")),
- context)),
- UNO_QUERY);
- Sequence<sal_Int8> processID(17);
- rtl_getGlobalProcessId((sal_uInt8 *)processID.getArray());
- processID[16] = 0;
-
- OSL_ENSURE(sizeof (sal_Int64)
- >= sizeof (jvmaccess::VirtualMachine *),
- "Pointer cannot be represented as sal_Int64");
- sal_Int64 nPointer = reinterpret_cast< sal_Int64 >(
- static_cast< jvmaccess::VirtualMachine * >(0));
- _xJavaVM->getJavaVM(processID) >>= nPointer;
- _virtualMachine = reinterpret_cast< jvmaccess::VirtualMachine * >(nPointer);
- if (!_virtualMachine.is())
- return;
-
- try
- {
- jvmaccess::VirtualMachine::AttachGuard vmAttachGuard(_virtualMachine);
-
- JNIEnv * pEnv = vmAttachGuard.getEnvironment();
-
- _jcAppletExecutionContext = jvmaccess::ClassPath::loadClass(
- context, pEnv,
- rtl::OUString(
- RTL_CONSTASCII_USTRINGPARAM(
- "vnd.sun.star.expand:$ORIGIN/classes/classes.jar")),
- rtl::OUString(
- RTL_CONSTASCII_USTRINGPARAM(
- "stardiv.applet.AppletExecutionContext")));
- testJavaException(pEnv);
- _jcAppletExecutionContext = (jclass) pEnv->NewGlobalRef(_jcAppletExecutionContext ); testJavaException(pEnv);
-
- jclass jcURL = pEnv->FindClass("java/net/URL"); testJavaException(pEnv);
- jmethodID jmURL_rinit = pEnv->GetMethodID(jcURL, "<init>", "(Ljava/lang/String;)V"); testJavaException(pEnv);
- jobject joDocBase = pEnv->AllocObject(jcURL); testJavaException(pEnv);
- jstring jsURL = pEnv->NewString(url.getStr(), url.getLength()); testJavaException(pEnv);
- pEnv->CallVoidMethod(joDocBase, jmURL_rinit, jsURL); testJavaException(pEnv);
-
- jclass jcHashtable = pEnv->FindClass("java/util/Hashtable"); testJavaException(pEnv);
- jmethodID jmHashtable_rinit = pEnv->GetMethodID(jcHashtable, "<init>", "()V"); testJavaException(pEnv);
- jmethodID jmHashtable_put = pEnv->GetMethodID(jcHashtable, "put",
- "(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;"); testJavaException(pEnv);
- jobject joParameters = pEnv->AllocObject(jcHashtable); testJavaException(pEnv);
- pEnv->CallVoidMethod(joParameters, jmHashtable_rinit); testJavaException(pEnv);
-
- for(sal_uInt32 i = 0; i < rCmdList.Count(); ++i) {
- const SvCommand & rCmd = rCmdList[i];
- String aCmd = rCmd.GetCommand();
- String aLoweredCmd = aCmd.ToLowerAscii();
-
-#if OSL_DEBUG_LEVEL > 1
- rtl::OUString command = aCmd;
- rtl::OUString value = rCmd.GetArgument();
- rtl::OString cmd_tmp = rtl::OUStringToOString(command, RTL_TEXTENCODING_ASCII_US);
- rtl::OString value_tmp = rtl::OUStringToOString(value, RTL_TEXTENCODING_ASCII_US);
- OSL_TRACE("command: %s=%s", cmd_tmp.getStr(), value_tmp.getStr());
-#endif
- jstring jsCommand = pEnv->NewString(aLoweredCmd.GetBuffer(), aLoweredCmd.Len()); testJavaException(pEnv);
- jstring jsArg = pEnv->NewString(rCmd.GetArgument().GetBuffer(), rCmd.GetArgument().Len()); testJavaException(pEnv);
- pEnv->CallObjectMethod(joParameters, jmHashtable_put, jsCommand, jsArg); testJavaException(pEnv);
- }
-
- SystemEnvData const * pEnvData = ((SystemChildWindow *)pParentWin)->GetSystemData();
- _pEmbeddedWindow = new EmbeddedWindow(pEnv, pEnvData);
-
- jmethodID jmAppletExecutionContext_rinit = pEnv->GetMethodID(_jcAppletExecutionContext, "<init>",
- "(Ljava/net/URL;Ljava/util/Hashtable;Ljava/awt/Container;J)V"); testJavaException(pEnv);
- jmethodID jmAppletExecutionContext_init = pEnv->GetMethodID(_jcAppletExecutionContext, "init", "()V"); testJavaException(pEnv);
- jmethodID jmAppletExecutionContext_startUp = pEnv->GetMethodID(_jcAppletExecutionContext, "startUp", "()V"); testJavaException(pEnv);
-
- _joAppletExecutionContext = pEnv->AllocObject(_jcAppletExecutionContext); testJavaException(pEnv);
- _joAppletExecutionContext = pEnv->NewGlobalRef(_joAppletExecutionContext); testJavaException(pEnv);
- pEnv->CallVoidMethod(_joAppletExecutionContext, jmAppletExecutionContext_rinit,
- joDocBase, joParameters, _pEmbeddedWindow->_joWindow, (jlong)0); testJavaException(pEnv);
- pEnv->CallVoidMethod(_joAppletExecutionContext, jmAppletExecutionContext_init); testJavaException(pEnv);
- pEnv->CallVoidMethod(_joAppletExecutionContext, jmAppletExecutionContext_startUp); testJavaException(pEnv);
-
- }
- catch(jvmaccess::VirtualMachine::AttachGuard::CreationException & )
- {
- throw RuntimeException(
- rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(
- "sjapplet_impl.cxx: Could not create jvmaccess::"
- "VirtualMachine::AttachGuard!")), 0);
- }
-
-#else // !SOLAR_JAVA
- throwException();
-#endif
-}
-
-void SjApplet2_Impl::setSize(const Size & rSize) throw(com::sun::star::uno::RuntimeException)
-{
-
-#ifdef SOLAR_JAVA
- try
- {
- if ( ! _virtualMachine.is())
- return;
- jvmaccess::VirtualMachine::AttachGuard vmAttachGuard(_virtualMachine);
- JNIEnv * pEnv = vmAttachGuard.getEnvironment();
-
- _pParentWin->SetSizePixel(rSize);
-
- jmethodID jmAppletExecutionContext_resize = pEnv->GetMethodID(
- _jcAppletExecutionContext, "appletResize", "(II)V");
- testJavaException(pEnv);
- pEnv->CallVoidMethod(_joAppletExecutionContext,
- jmAppletExecutionContext_resize, (jint)rSize.Width(),
- (jint)rSize.Height());
- testJavaException(pEnv);
- }
- catch (jvmaccess::VirtualMachine::AttachGuard::CreationException &)
- {
- throw RuntimeException(
- rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(
- "SjApplet2_Impl::setSize, Could not create jvmaccess::"
- "VirtualMachine::AttachGuard!")), 0);
- }
-#else // !SOLAR_JAVA
- throwException();
-#endif
-}
-
-void SjApplet2_Impl::restart() throw(com::sun::star::uno::RuntimeException)
-{
-#ifdef SOLAR_JAVA
- try
- {
- if ( ! _virtualMachine.is())
- return;
- jvmaccess::VirtualMachine::AttachGuard vmAttachGuard(_virtualMachine);
- JNIEnv * pEnv = vmAttachGuard.getEnvironment();
- jmethodID jmAppletExecutionContext_restart = pEnv->GetMethodID(
- _jcAppletExecutionContext, "restart", "()V");
- testJavaException(pEnv);
- pEnv->CallVoidMethod(_joAppletExecutionContext, jmAppletExecutionContext_restart);
- testJavaException(pEnv);
- }
- catch (jvmaccess::VirtualMachine::AttachGuard::CreationException &)
- {
- throw RuntimeException(
- rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(
- "SjApplet2_Impl::restart, Could not create jvmaccess::"
- "VirtualMachine::AttachGuard!")), 0);
- }
-#else // !SOLAR_JAVA
- throwException();
-#endif
-}
-
-void SjApplet2_Impl::reload() throw(com::sun::star::uno::RuntimeException)
-{
-#ifdef SOLAR_JAVA
- try
- {
- if ( ! _virtualMachine.is())
- return;
- jvmaccess::VirtualMachine::AttachGuard vmAttachGuard(_virtualMachine);
- JNIEnv * pEnv = vmAttachGuard.getEnvironment();
- jmethodID jmAppletExecutionContext_reload = pEnv->GetMethodID(
- _jcAppletExecutionContext, "reload", "()V");
- testJavaException(pEnv);
- pEnv->CallVoidMethod(_joAppletExecutionContext, jmAppletExecutionContext_reload);
- testJavaException(pEnv);
- }
- catch (jvmaccess::VirtualMachine::AttachGuard::CreationException &)
- {
- throw RuntimeException(
- rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(
- "SjApplet2_Impl::reload, Could not create jvmaccess::"
- "VirtualMachine::AttachGuard!")), 0);
- }
-#else // !SOLAR_JAVA
- throwException();
-#endif
-}
-
-void SjApplet2_Impl::start() throw(com::sun::star::uno::RuntimeException)
-{
-#ifdef SOLAR_JAVA
- try
- {
- if ( ! _virtualMachine.is())
- return;
- jvmaccess::VirtualMachine::AttachGuard vmAttachGuard(_virtualMachine);
- JNIEnv * pEnv = vmAttachGuard.getEnvironment();
- jmethodID jmAppletExecutionContext_sendStart = pEnv->GetMethodID(
- _jcAppletExecutionContext, "sendStart", "()V");
- testJavaException(pEnv);
- pEnv->CallVoidMethod(_joAppletExecutionContext, jmAppletExecutionContext_sendStart);
- testJavaException(pEnv);
- }
- catch (jvmaccess::VirtualMachine::AttachGuard::CreationException &)
- {
- throw RuntimeException(
- rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(
- "SjApplet2_Impl::restart, Could not create jvmaccess::"
- "VirtualMachine::AttachGuard!")), 0);
- }
-#else // !SOLAR_JAVA
- throwException();
-#endif
-}
-
-void SjApplet2_Impl::stop() throw(com::sun::star::uno::RuntimeException)
-{
-#ifdef SOLAR_JAVA
- try
- {
- if ( ! _virtualMachine.is())
- return;
- jvmaccess::VirtualMachine::AttachGuard vmAttachGuard(_virtualMachine);
- JNIEnv * pEnv = vmAttachGuard.getEnvironment();
- jmethodID jmAppletExecutionContext_sendStop = pEnv->GetMethodID(
- _jcAppletExecutionContext, "sendStop", "()V");
- testJavaException(pEnv);
- pEnv->CallVoidMethod(_joAppletExecutionContext, jmAppletExecutionContext_sendStop);
- testJavaException(pEnv);
- }
- catch (jvmaccess::VirtualMachine::AttachGuard::CreationException &)
- {
- throw RuntimeException(
- rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(
- "SjApplet2_Impl::restart, Could not create jvmaccess::"
- "VirtualMachine::AttachGuard!")), 0);
- }
-#else // !SOLAR_JAVA
- throwException();
-#endif
-}
-
-void SjApplet2_Impl::close() throw(com::sun::star::uno::RuntimeException)
-{
-#ifdef SOLAR_JAVA
- try
- {
- if ( ! _virtualMachine.is())
- return;
- jvmaccess::VirtualMachine::AttachGuard vmAttachGuard(_virtualMachine);
- JNIEnv * pEnv = vmAttachGuard.getEnvironment();
-
- jmethodID jmAppletExecutionContext_shutdown = pEnv->GetMethodID(
- _jcAppletExecutionContext, "shutdown", "()V");
- testJavaException(pEnv);
- pEnv->CallVoidMethod(_joAppletExecutionContext, jmAppletExecutionContext_shutdown);
- testJavaException(pEnv);
-
- jmethodID jmWaitForDispose= pEnv->GetMethodID(
- _jcAppletExecutionContext,"waitForDispose","()V");
- testJavaException(pEnv);
- //blocks until the applet has destroyed itself and the container was disposed
- //(stardiv.applet.AppletExecutionContext.dispose)
- pEnv->CallVoidMethod(_joAppletExecutionContext, jmWaitForDispose);
-
- // now that the applet is disposed, we dispose the AppletExecutionContext, that will end the thread
- // which dispatches the applet methods, such as init, start, stop , destroy.
- jmethodID jmAppletExecutionContext_dispose= pEnv->GetMethodID(
- _jcAppletExecutionContext,"dispose", "()V");
- testJavaException(pEnv);
- pEnv->CallVoidMethod(_joAppletExecutionContext, jmAppletExecutionContext_dispose);
- testJavaException(pEnv);
-
- if( _pParentWin )
- {
- WorkWindow* pAppWin = Application::GetAppWindow();
- if(pAppWin)
- {
- while(_pParentWin->GetChildCount())
- {
- Window* pChild = _pParentWin->GetChild(0);
- pChild->Show( FALSE );
- pChild->SetParent( pAppWin );
- }
- }
- }
- }
- catch (jvmaccess::VirtualMachine::AttachGuard::CreationException &)
- {
- throw RuntimeException(
- rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(
- "SjApplet2_Impl::close, Could not create jvmaccess::"
- "VirtualMachine::AttachGuard!")), 0);
- }
-#else // !SOLAR_JAVA
- throwException();
-#endif
-}
-