/*
 * 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;
}
JNIEXPORT void JNICALL
Java_sun_awt_pocketpc_PPCChoicePeer_select( JNIEnv *env,
        jobject self,
        jint index )
{
    CHECK_PEER( self );
    AwtChoice *c = PDATA( AwtChoice, self );
    c->SendMessage( CB_SETCURSEL, index );
    return;
}
/*
 * Class:     sun_awt_windows_WChoicePeer
 * Method:    select
 * Signature: (I)V
 */
JNIEXPORT void JNICALL
Java_sun_awt_windows_WChoicePeer_select(JNIEnv *env, jobject self,
					jint index)
{
    TRY;

    PDATA pData;
    JNI_CHECK_PEER_RETURN(self);
    AwtChoice* c = (AwtChoice*)pData;
    c->SendMessage(CB_SETCURSEL, index);

    CATCH_BAD_ALLOC;
}
/*
 * Class:     sun_awt_windows_WChoicePeer
 * Method:    removeAll
 * Signature: ()V
 */
JNIEXPORT void JNICALL
Java_sun_awt_windows_WChoicePeer_removeAll(JNIEnv *env, jobject self)
{
    TRY;

    PDATA pData;
    JNI_CHECK_PEER_RETURN(self);
    AwtChoice* c = (AwtChoice *)pData;
    c->SendMessage(CB_RESETCONTENT, 0, 0);
    c->ResetDropDownHeight();
    c->VerifyState();

    CATCH_BAD_ALLOC;
}
JNIEXPORT void JNICALL
Java_sun_awt_pocketpc_PPCChoicePeer_remove( JNIEnv *env,
        jobject self,
        jint index )
{
    CHECK_PEER( self );
    AwtChoice* c = PDATA( AwtChoice, self );
    c->SendMessage( CB_DELETESTRING, index, 0 );
    c->ResetDropDownHeight();
#ifdef DEBUG
    c->VerifyState();
#endif // DEBUG
    return;
}
/*
 * Class:     sun_awt_windows_WChoicePeer
 * Method:    remove
 * Signature: (I)V
 */
JNIEXPORT void JNICALL
Java_sun_awt_windows_WChoicePeer_remove(JNIEnv *env, jobject self,
					jint index)
{
    TRY;

    PDATA pData;
    JNI_CHECK_PEER_RETURN(self);
    AwtChoice* c = (AwtChoice *)pData;
    c->SendMessage(CB_DELETESTRING, index, 0);
    c->ResetDropDownHeight();
    c->VerifyState();

    CATCH_BAD_ALLOC;
}
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;
}