This fix enables the adding of bookmarks and bookmark folders.
* Due to the vagaries of the mozilla RDF implementation, folders and * bookmark entries are handled differently. For Folders, we don't * create a nativeRDFNode at the outset. Rather, we just create the * properties table and stock it with the known keys, then wait for the * nativeRDFNode to be created en addBookmark. * The adding of bookmark folders is done through the RDF DoCommand * interface. The DoCommand interface creates the nsIRDFResource on * your behalf. We use an nsIRDFObserver to obtain the created resource * as the DoCommand executes. The following files are in this fix. A src_moz/wsRDFObserver.cpp A src_moz/wsRDFObserver.h M classes_spec/org/mozilla/webclient/BookmarkEntry.java M classes_spec/org/mozilla/webclient/test/EMWindow.java M classes_spec/org/mozilla/webclient/wrapper_native/BookmarkEntryImpl.java M classes_spec/org/mozilla/webclient/wrapper_native/BookmarksImpl.java M classes_spec/org/mozilla/webclient/wrapper_native/RDFTreeNode.java M src_moz/Makefile.win M src_moz/Makefile.in M src_moz/RDFActionEvents.cpp M src_moz/RDFActionEvents.h M src_moz/RDFTreeNode.cpp M src_moz/rdf_util.cpp M src_moz/rdf_util.h M src_moz/motif/NativeLoaderStub.cpp M src_share/jni_util.cpp M src_share/jni_util.h git-svn-id: svn://10.0.0.236/branches/JAVADEV_RTM_20001102@83504 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
@@ -217,10 +217,11 @@ Java_org_mozilla_webclient_wrapper_1native_RDFTreeNode_nativeToString
|
||||
JNIEXPORT void JNICALL
|
||||
Java_org_mozilla_webclient_wrapper_1native_RDFTreeNode_nativeInsertElementAt
|
||||
(JNIEnv *env, jobject obj, jint webShellPtr, jint parentRDFNode,
|
||||
jint childRDFNode, jint childIndex)
|
||||
jint childRDFNode, jobject childProps, jint childIndex)
|
||||
{
|
||||
WebShellInitContext* initContext = (WebShellInitContext *) webShellPtr;
|
||||
void * voidResult = nsnull;
|
||||
jobject propsGlobalRef;
|
||||
|
||||
if (initContext == nsnull) {
|
||||
::util_ThrowExceptionToJava(env, "Exception: null webShellPtr passed to nativeInsertElementAt");
|
||||
@@ -229,20 +230,60 @@ Java_org_mozilla_webclient_wrapper_1native_RDFTreeNode_nativeInsertElementAt
|
||||
if (!initContext->initComplete) {
|
||||
::util_ThrowExceptionToJava(env, "Exception: can't InsertElementAt");
|
||||
}
|
||||
propsGlobalRef = ::util_NewGlobalRef(env, childProps);
|
||||
wsRDFInsertElementAtEvent *actionEvent =
|
||||
new wsRDFInsertElementAtEvent(initContext,
|
||||
(PRUint32) parentRDFNode,
|
||||
(PRUint32) childRDFNode,
|
||||
(void *) propsGlobalRef,
|
||||
(PRUint32) childIndex);
|
||||
PLEvent * event = (PLEvent*) *actionEvent;
|
||||
|
||||
voidResult = ::util_PostSynchronousEvent(initContext, event);
|
||||
::util_DeleteGlobalRef(env, propsGlobalRef);
|
||||
if (NS_FAILED((nsresult) voidResult)) {
|
||||
::util_ThrowExceptionToJava(env, "Exception: Can't InsertElementAt");
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
JNIEXPORT jint JNICALL
|
||||
Java_org_mozilla_webclient_wrapper_1native_RDFTreeNode_nativeNewFolder
|
||||
(JNIEnv *env, jobject obj, jint webShellPtr, jint parentRDFNode,
|
||||
jobject childProps)
|
||||
{
|
||||
WebShellInitContext* initContext = (WebShellInitContext *) webShellPtr;
|
||||
void * voidResult = nsnull;
|
||||
jobject propsGlobalRef;
|
||||
jint retVal = 0;
|
||||
|
||||
if (initContext == nsnull) {
|
||||
::util_ThrowExceptionToJava(env, "Exception: null webShellPtr passed to nativeNewFolder");
|
||||
}
|
||||
|
||||
if (!initContext->initComplete || !childProps) {
|
||||
::util_ThrowExceptionToJava(env, "Exception: can't NewFolder");
|
||||
}
|
||||
propsGlobalRef = ::util_NewGlobalRef(env, childProps);
|
||||
if (!propsGlobalRef) {
|
||||
::util_ThrowExceptionToJava(env, "Exception: can't NewFolder");
|
||||
}
|
||||
|
||||
wsRDFNewFolderEvent *actionEvent =
|
||||
new wsRDFNewFolderEvent(initContext,
|
||||
(PRUint32) parentRDFNode,
|
||||
(void *) propsGlobalRef,
|
||||
(PRUint32 *) &retVal);
|
||||
PLEvent * event = (PLEvent*) *actionEvent;
|
||||
|
||||
voidResult = ::util_PostSynchronousEvent(initContext, event);
|
||||
::util_DeleteGlobalRef(env, propsGlobalRef);
|
||||
if (NS_FAILED((nsresult) voidResult)) {
|
||||
::util_ThrowExceptionToJava(env, "Exception: Can't do NewFolder");
|
||||
}
|
||||
return retVal;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user