public Object PlugletTagInfo.getDOMElement();
(It is possible to use JavaDOM from pluglets now.)
a=idk@eng.sun.com
r=sdv@sparc.spb.su
This commit is contained in:
idk%eng.sun.com 2000-02-16 00:03:38 +00:00
Родитель 34d719c42b
Коммит 707030a57c
5 изменённых файлов: 77 добавлений и 25 удалений

Просмотреть файл

@ -39,4 +39,22 @@ public interface PlugletTagInfo {
* @return Returns the value of the named attribute as a <code>String</code>.
*/
public String getAttribute(String name);
/**
* Returns the DOM element corresponding to the tag which references
* this pluglet in the document.
*
* REMINDERS:
* <ul>
* <li> You need to have JavaDOM installed.
* (see http://www.mozilla.org/projects/blacwood/dom)
* </li>
* <li>
* You need to cast return value to org.w3c.dom.Element
* </li>
* </ul>
* @return Return org.w3c.dom.Element correspondig to the tag
*/
public Object getDOMElement();
}

Просмотреть файл

@ -52,6 +52,7 @@ public class PlugletTagInfo2Impl implements PlugletTagInfo2 {
}
return result;
}
public native Object getDOMElement();
public native String getParameter(String name);
/* Get the type of the HTML tag that was used ot instantiate this
* pluglet. Currently supported tags are EMBED, APPLET and OBJECT.

Просмотреть файл

@ -1,4 +1,4 @@
/*
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
* 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
@ -23,6 +23,9 @@
#include "PlugletLog.h"
static jfieldID peerFID = NULL;
static jclass DOMAccessorImpl = NULL;
static jmethodID getElementByHandle = NULL;
/*
* Class: org_mozilla_pluglet_mozilla_PlugletTagInfo2Impl
* Method: getAttributesArray
@ -95,6 +98,41 @@ JNIEXPORT jstring JNICALL Java_org_mozilla_pluglet_mozilla_PlugletTagInfo2Impl_g
return env->NewStringUTF(result);
}
/*
* Class: org_mozilla_pluglet_mozilla_PlugletTagInfo2Impl
* Method: getDOMElement
* Signature: ()Ljava/lang/Object;
*/
JNIEXPORT jobject JNICALL Java_org_mozilla_pluglet_mozilla_PlugletTagInfo2Impl_getDOMElement
(JNIEnv *env, jobject jthis) {
PR_LOG(PlugletLog::log, PR_LOG_DEBUG,
("PlugletTagInfo2Impl.getDOMElement\n"));
if ( !DOMAccessorImpl ) {
DOMAccessorImpl = env->FindClass("org/mozilla/dom/DOMAccessorImpl");
if (!DOMAccessorImpl) {
return NULL;
}
DOMAccessorImpl = (jclass) env->NewGlobalRef(DOMAccessorImpl); // nb who is going to Delete this ref
if (!DOMAccessorImpl) {
return NULL;
}
getElementByHandle = env->GetStaticMethodID(DOMAccessorImpl,"getElementByHandle","(J)Lorg/w3c/dom/Element;");
if (!getElementByHandle) {
DOMAccessorImpl = NULL;
return NULL;
}
}
nsIPluginTagInfo2 * info = (nsIPluginTagInfo2*)env->GetLongField(jthis, peerFID);
nsIDOMElement * elem = NULL;
if (!info
|| NS_FAILED(info->GetDOMElement(&elem))) {
return NULL;
}
return env->CallStaticObjectMethod(DOMAccessorImpl,getElementByHandle,(jlong) elem);
}
/*
* Class: org_mozilla_pluglet_mozilla_PlugletTagInfo2Impl
* Method: getParametersArray

Просмотреть файл

@ -1,23 +1,3 @@
/*
* 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):
*/
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class org_mozilla_pluglet_mozilla_PlugletTagInfo2Impl */
@ -47,10 +27,18 @@ JNIEXPORT jstring JNICALL Java_org_mozilla_pluglet_mozilla_PlugletTagInfo2Impl_g
* Class: org_mozilla_pluglet_mozilla_PlugletTagInfo2Impl
* Method: getParametersArray
* Signature: ()[[Ljava/lang/String;
*/
*/
JNIEXPORT jobjectArray JNICALL Java_org_mozilla_pluglet_mozilla_PlugletTagInfo2Impl_getParametersArray
(JNIEnv *, jobject);
/*
* Class: org_mozilla_pluglet_mozilla_PlugletTagInfo2Impl
* Method: getDOMElement
* Signature: ()Ljava/lang/Object;
*/
JNIEXPORT jobject JNICALL Java_org_mozilla_pluglet_mozilla_PlugletTagInfo2Impl_getDOMElement
(JNIEnv *, jobject);
/*
* Class: org_mozilla_pluglet_mozilla_PlugletTagInfo2Impl
* Method: getParameter

Просмотреть файл

@ -178,6 +178,13 @@ void PlugletEngine::StartJVM(void) {
("PlugletEngine::StartJVM\n"));
JNIEnv *env = NULL;
jint res;
jsize jvmCount;
JNI_GetCreatedJavaVMs(&jvm, 1, &jvmCount);
if (jvmCount) {
PR_LOG(PlugletLog::log, PR_LOG_DEBUG,
("PlugletEngine::StartJVM we have running jvm. We do not need to start another one\n"));
return;
}
JDK1_1InitArgs vm_args;
char classpath[1024];
JNI_GetDefaultJavaVMInitArgs(&vm_args);
@ -186,7 +193,7 @@ void PlugletEngine::StartJVM(void) {
sprintf(classpath, "%s%c%s",
vm_args.classpath, PATH_SEPARATOR, PR_GetEnv("CLASSPATH"));
PR_LOG(PlugletLog::log, PR_LOG_DEBUG,
("PlugletEngine::StartJVM classpath=%s\n",classpath));
("PlugletEngine::StartJVM classpath=%s\n",classpath));
char **props = new char*[2];
props[0]="java.compiler=NONE";
props[1]=0;
@ -195,10 +202,10 @@ void PlugletEngine::StartJVM(void) {
/* Create the Java VM */
res = JNI_CreateJavaVM(&jvm, &env, &vm_args);
if(res < 0 ) {
PR_LOG(PlugletLog::log, PR_LOG_DEBUG,
PR_LOG(PlugletLog::log, PR_LOG_DEBUG,
("PlugletEngine::StartJVM JNI_CreateJavaVM failed \n"));
} else {
PR_LOG(PlugletLog::log, PR_LOG_DEBUG,
PR_LOG(PlugletLog::log, PR_LOG_DEBUG,
("PlugletEngine::StartJVM jvm was started \n"));
}
}