JNIEXPORT jstring JNICALL
Java_sun_awt_pocketpc_PPCTextComponentPeer_getText (JNIEnv *env, 
                                                    jobject thisObj)
{
    CHECK_PEER_RETURN(thisObj);
    int len;
    AwtTextComponent* c = PDATA(AwtTextComponent, thisObj);

    len = c->GetTextLength();
    jstring js;
    if (len == 0) {
        // Make java null string
        jchar *jc = new jchar[0];
	js = env->NewString(jc, 0);
	delete [] jc;
        ASSERT(!env->ExceptionCheck());
    } else {
#ifndef UNICODE
       char* buffer = new char[len+1];
       c->GetText(buffer, len+1);
       AwtTextComponent::RemoveCR(buffer);
       js = env->NewString(buffer, wcslen(buf)); // convert to unicode. right???
       delete[] buffer;
#else
       TCHAR *buffer = new TCHAR[len+1];
       c->GetText(buffer, len+1);
       AwtTextComponent::RemoveCR(buffer);
       js = TO_JSTRING((LPWSTR)buffer);
       //js = env->NewString(buffer, wcslen(buffer));
       delete[] buffer;
#endif
    }
    return js;
}
jstring AwtTextComponent::_GetText(void *param)
{
    JNIEnv *env = (JNIEnv *)JNU_GetEnv(jvm, JNI_VERSION_1_2);

    jobject self = (jobject)param;

    AwtTextComponent *c = NULL;
    jstring result = NULL;

    PDATA pData;
    JNI_CHECK_PEER_GOTO(self, ret);

    c = (AwtTextComponent *)pData;
    if (::IsWindow(c->GetHWnd()))
    {
        int len = ::GetWindowTextLength(c->GetHWnd());
        if (len == 0) {
            /* Make java null string */
            jchar *jc = new jchar[0];
            result = env->NewString(jc, 0);
            delete [] jc;
        } else {
            WCHAR* buf = new WCHAR[len + 1];
            c->GetText(buf, len + 1);
            c->RemoveCR(buf);
            result = JNU_NewStringPlatform(env, buf);
            delete [] buf;
        }
    }
ret:
    env->DeleteGlobalRef(self);

    if (result != NULL)
    {
        jstring globalRef = (jstring)env->NewGlobalRef(result);
        env->DeleteLocalRef(result);
        return globalRef;
    }
    else
    {
        return NULL;
    }
}