Mozilla/mozilla/java/webclient/src_moz/win32/Win32BrowserControlCanvas.cpp
edburns%acm.org 3d7dee72f2 r=edburns
Author: Ron Capelli <capelli@acm.org>

The following files are updated to allow use of IBM Java 1.3.x
JVMs on Linux.  Instead of statically linking libjawt.lib, the
code now dynamically links libjawt.so and then libawt.so only
if needed (similar to previous change for win32).  It should
work on Solaris, but we couldn't test that here.

    mozilla/java/webclient/src_moz/Makefile.in
    mozilla/java/webclient/src_moz/gtk/GtkBrowserControlCanvas.cpp

The following files are changed to support the ant 'clean'
target for src_ie.

    mozilla/java/webclient/build.xml
    mozilla/java/webclient/src_ie/Makefile.in

The following files are changed to disable the CurrentPage(2)
interface for IE, since it will be a while before that can be
made to work.  With these changes, IE embeds smoothly with
Navigation and History interfaces working nicely to some degree.

    mozilla/java/webclient/src_ie/WrapperFactoryImpl.cpp

mozilla/java/webclient/classes_spec/org/mozilla/webclient/test/EMWindow.java

The following file is changed so that it does not depend on
Mozilla, allowing it to be shared cleanly for IE.

    mozilla/java/webclient/src_moz/win32/Win32BrowserControlCanvas.cpp

The following file is changed to correct the list of makefiles
that need to be configured for Webclient.

    mozilla/java/makefiles

Finally, please delete the following files from CVS.

    mozilla/java/webclient/src_ie/build.xml
    mozilla/java/webclient/src_ie/Makefile.win


git-svn-id: svn://10.0.0.236/trunk@142382 18797224-902f-48f8-a5cc-f745e15eee43
2003-05-13 20:22:13 +00:00

129 lines
3.9 KiB
C++

/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
*
* The contents of this file are subject to the Netscape Public
* License Version 1.1 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.mozilla.org/NPL/
*
* Software distributed under the License is distributed on an "AS
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
* implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code is mozilla.org code.
*
* The Initial Developer of the Original Code is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All
* Rights Reserved.
*
* Contributor(s): Ashu Kulkarni
* Ron Capelli (capelli@us.ibm.com)
*/
/*
* Win32BrowserControlCanvas.cpp
*/
#include <jni.h>
#include <jawt_md.h>
#include <jawt.h>
typedef jboolean (JNICALL *PJAWT_GETAWT)(JNIEnv*, JAWT*);
#include "Win32BrowserControlCanvas.h"
#include "jni_util.h" //for throwing Exceptions to Java
/*
* Class: org_mozilla_webclient_wrapper_0005fnative_win32_Win32BrowserControlCanvas
* Method: getHandleToPeer
* Signature: ()I
*/
JNIEXPORT jint JNICALL Java_org_mozilla_webclient_wrapper_1native_win32_Win32BrowserControlCanvas_getHandleToPeer
(JNIEnv *env, jobject canvas) {
JAWT awt;
JAWT_DrawingSurface* ds;
JAWT_DrawingSurfaceInfo* dsi;
JAWT_Win32DrawingSurfaceInfo* dsi_win;
HWND handle_win;
HMODULE _hAWT; // JAWT module handle
jint lock;
PJAWT_GETAWT pJAWT_GetAWT; // JAWT_GetAWT function pointer
//Get the AWT
_hAWT = LoadLibrary("jawt.dll");
if (!_hAWT) {
printf(" +++ No jawt.dll... Trying awt.dll +++ \n");
_hAWT = LoadLibrary("awt.dll"); // IBM Java 1.3.x packages JAWT_GetAWT in awt.dll
}
if (!_hAWT) {
printf(" +++ JAWT DLL Not Found +++ \n");
::util_ThrowExceptionToJava(env, "Exception: JAWT DLL Not Found");
return 0;
}
pJAWT_GetAWT = (PJAWT_GETAWT)GetProcAddress(_hAWT, "_JAWT_GetAWT@8");
if (!pJAWT_GetAWT) {
printf(" +++ JAWT_GetAWT Entry Not Found +++ \n");
::util_ThrowExceptionToJava(env, "Exception: JAWT_GetAWT Entry Not Found");
FreeLibrary(_hAWT);
return 0;
}
awt.version = JAWT_VERSION_1_3;
if (pJAWT_GetAWT(env, &awt) == JNI_FALSE) {
printf(" +++ AWT Not Found +++ \n");
::util_ThrowExceptionToJava(env, "Exception: AWT Not Found");
FreeLibrary(_hAWT);
return 0;
}
//Get the Drawing Surface
ds = awt.GetDrawingSurface(env, canvas);
if (ds == NULL) {
printf(" +++ NULL Drawing Surface +++ \n");
::util_ThrowExceptionToJava(env, "Exception: Null Drawing Surface");
FreeLibrary(_hAWT);
return 0;
}
//Lock the Drawing Surface
lock = ds->Lock(ds);
if ((lock & JAWT_LOCK_ERROR) != 0) {
printf(" +++ Error Locking Surface +++ \n");
::util_ThrowExceptionToJava(env, "Exception: Error Locking Surface");
awt.FreeDrawingSurface(ds);
FreeLibrary(_hAWT);
return 0;
}
//Get the Drawing Surface info
dsi = ds->GetDrawingSurfaceInfo(ds);
if (dsi == NULL) {
printf(" +++ Error Getting Surface Info +++ \n");
::util_ThrowExceptionToJava(env, "Exception: Error Getting Surface Info");
ds->Unlock(ds);
awt.FreeDrawingSurface(ds);
FreeLibrary(_hAWT);
return 0;
}
//Get the Platform specific Drawing Info
dsi_win = (JAWT_Win32DrawingSurfaceInfo*)dsi->platformInfo;
//Get the Handle to the Native Drawing Surface info
handle_win = (HWND) dsi_win->hwnd;
//Clean up after us
ds->FreeDrawingSurfaceInfo(dsi);
ds->Unlock(ds);
awt.FreeDrawingSurface(ds);
FreeLibrary(_hAWT);
//return the native peer handle
return (jint) handle_win;
}