/* * The contents of this file are subject to the Mozilla 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/MPL/ * * 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 Sun Microsystems, * Inc. Portions created by Sun are * Copyright (C) 1999 Sun Microsystems, Inc. All * Rights Reserved. * * Contributor(s): */ #include #include "PlugletViewWindows.h" #include "PlugletEngine.h" jclass PlugletViewWindows::clazz = NULL; jmethodID PlugletViewWindows::initMID = NULL; PlugletViewWindows::PlugletViewWindows() { hWND = NULL; frame = NULL; isCreated = FALSE; } void PlugletViewWindows::Initialize() { JNIEnv *env = PlugletEngine::GetJNIEnv(); clazz = env->FindClass("sun/awt/windows/WEmbeddedFrame"); if (!clazz) { env->ExceptionDescribe(); return; } initMID = env->GetMethodID(clazz, "", "(I)V"); if (!initMID) { env->ExceptionDescribe(); clazz = NULL; return; } } PRBool PlugletViewWindows::SetWindow(nsPluginWindow* window) { if (!window || !window->window) { if (isCreated) { isCreated = FALSE; hWND = NULL; frame = NULL; return TRUE; } } if (hWND == reinterpret_cast(window->window) && isCreated) { return PR_FALSE; } DWORD dwStyle = ::GetWindowLong(reinterpret_cast(window->window), GWL_STYLE); SetWindowLong(reinterpret_cast(window->window), GWL_STYLE, dwStyle | WS_CHILD | WS_CLIPSIBLINGS | WS_CLIPCHILDREN); if(!clazz) { Initialize(); if (!clazz) { return PR_FALSE; } } JNIEnv *env = PlugletEngine::GetJNIEnv(); frame = env->NewObject(clazz,initMID,(jint)window->window); if (!frame) { env->ExceptionDescribe(); } hWND = (HWND) window->window; isCreated = TRUE; return PR_TRUE; } jobject PlugletViewWindows::GetJObject() { return frame; }