/*
 * Class:     sun_awt_windows_WChoicePeer
 * Method:    addItems
 * Signature: ([Ljava/lang/String;I)V
 */
JNIEXPORT void JNICALL
Java_sun_awt_windows_WChoicePeer_addItems(JNIEnv *env, jobject self,
					  jobjectArray items, jint index)
{
    TRY;

    JNI_CHECK_NULL_RETURN(items, "null items");

    PDATA pData;
    jsize i;
    JNI_CHECK_PEER_RETURN(self);

    AwtChoice* c = (AwtChoice*)pData;
    int itemCount = env->GetArrayLength(items);
   if (itemCount > 0) {
       c->SendMessage(WM_SETREDRAW, (WPARAM)FALSE, 0);
       for (i=0; i<itemCount; i++) {
           jstring item = (jstring)env->GetObjectArrayElement(items, i);
           JNI_CHECK_NULL_RETURN(item, "null item");
           c->SendMessage(CB_INSERTSTRING, index+i, JavaStringBuffer(env, item));
	   env->DeleteLocalRef(item);
       }
       c->SendMessage(WM_SETREDRAW, (WPARAM)TRUE, 0);
       InvalidateRect(c->GetHWnd(), NULL, TRUE);
       c->ResetDropDownHeight();
       c->VerifyState();
    }

    CATCH_BAD_ALLOC;
}
void
Java_sun_awt_pocketpc_PPCCheckboxPeer_setLabelNative(JNIEnv *env, jobject self,
                                       jstring label)
{
    CHECK_PEER(self);
    AwtComponent* c = (AwtComponent*) env->GetIntField(self,
                  WCachedIDs.PPCObjectPeer_pDataFID);
    c->SetText(JavaStringBuffer(env, label));
}
JNIEXPORT void JNICALL
Java_sun_awt_pocketpc_PPCChoicePeer_addItem( JNIEnv *env,
        jobject self,
        jstring itemText,
        jint index )
{
    CHECK_PEER( self );
    CHECK_NULL( itemText, "null itemText" );

    AwtChoice *c = PDATA( AwtChoice, self );
    c->SendMessage( CB_INSERTSTRING, index, JavaStringBuffer( env, itemText ) );
    c->ResetDropDownHeight();
#ifdef DEBUG
    c->VerifyState();
#endif // DEBUG
    return;
}
示例#4
0
void AwtCheckbox::VerifyState()
{
    if (AwtToolkit::GetInstance().VerifyComponents() == FALSE) {
        return;
    }

    if (m_callbacksEnabled == FALSE) {
        /*  Component is not fully setup yet. */
        return;
    }

    AwtComponent::VerifyState();
    JNIEnv *env = (JNIEnv *)JNU_GetEnv(jvm, JNI_VERSION_1_2);

    if (env->EnsureLocalCapacity(2) < 0) {
        return;
    }

    jobject target = GetTarget(env);

    /*  Check button style */
    DWORD style = ::GetWindowLong(GetHWnd(), GWL_STYLE);
    DASSERT(style & BS_OWNERDRAW);

    /*  Check label */
    int len = ::GetWindowTextLength(GetHWnd());
    LPTSTR peerStr;
    try {
        peerStr = new TCHAR[len+1];
    } catch (std::bad_alloc&) {
        env->DeleteLocalRef(target);
        throw;
    }

    GetText(peerStr, len+1);
    jstring label = (jstring)env->GetObjectField(target, AwtCheckbox::labelID);
    DASSERT(_tcscmp(peerStr, JavaStringBuffer(env, label)) == 0);
    delete [] peerStr;

    env->DeleteLocalRef(target);
    env->DeleteLocalRef(label);
}
示例#5
0
void AwtLabel::_SetText(void *param)
{
    JNIEnv *env = (JNIEnv *)JNU_GetEnv(jvm, JNI_VERSION_1_2);

    SetTextStruct *sts = (SetTextStruct *)param;
    jobject self = sts->label;
    jstring text = sts->text;

    AwtLabel *l = NULL;

    PDATA pData;
    JNI_CHECK_PEER_GOTO(self, ret);
    l = (AwtLabel *)pData;
    if (::IsWindow(l->GetHWnd()))
    {
        l->SetText(JavaStringBuffer(env, text));
        VERIFY(::InvalidateRect(l->GetHWnd(), NULL, TRUE));
    }
ret:
    env->DeleteGlobalRef(self);
    env->DeleteGlobalRef(text);

    delete sts;
}