< prev index next >

src/java.desktop/windows/native/libawt/windows/awt_Menu.cpp

Print this page




 222 {
 223     awtMenuItem->MeasureItem(hDC, measureInfo);
 224 }
 225 
 226 int AwtMenu::CountItem(jobject target)
 227 {
 228     JNIEnv *env = (JNIEnv *)JNU_GetEnv(jvm, JNI_VERSION_1_2);
 229     jint nCount = env->CallIntMethod(target, AwtMenu::countItemsMID);
 230     DASSERT(!safe_ExceptionOccurred(env));
 231     return nCount;
 232 }
 233 
 234 AwtMenuItem* AwtMenu::GetItem(jobject target, jint index)
 235 {
 236     JNIEnv *env = (JNIEnv *)JNU_GetEnv(jvm, JNI_VERSION_1_2);
 237     if (env->EnsureLocalCapacity(2) < 0) {
 238         return NULL;
 239     }
 240     jobject menuItem = env->CallObjectMethod(target, AwtMenu::getItemMID,
 241                                              index);

 242     DASSERT(!safe_ExceptionOccurred(env));
 243 
 244     jobject wMenuItemPeer = GetPeerForTarget(env, menuItem);
 245 
 246     PDATA pData;
 247     AwtMenuItem* awtMenuItem = NULL;
 248 
 249     JNI_CHECK_PEER_GOTO(wMenuItemPeer, done);
 250     awtMenuItem = (AwtMenuItem*)pData;
 251 
 252  done:
 253     env->DeleteLocalRef(menuItem);
 254     env->DeleteLocalRef(wMenuItemPeer);
 255 
 256     return awtMenuItem;
 257 }
 258 
 259 void AwtMenu::DrawItems(DRAWITEMSTRUCT& drawInfo)
 260 {
 261     JNIEnv *env = (JNIEnv *)JNU_GetEnv(jvm, JNI_VERSION_1_2);
 262     if (env->EnsureLocalCapacity(1) < 0) {
 263         return;
 264     }
 265     /* target is a java.awt.Menu */
 266     jobject target = GetTarget(env);
 267 
 268     int nCount = CountItem(target);
 269     for (int i = 0; i < nCount; i++) {
 270         AwtMenuItem* awtMenuItem = GetItem(target, i);
 271         if (awtMenuItem != NULL) {
 272             SendDrawItem(awtMenuItem, drawInfo);
 273         }
 274     }
 275     env->DeleteLocalRef(target);
 276 }
 277 
 278 void AwtMenu::DrawItem(DRAWITEMSTRUCT& drawInfo)
 279 {
 280     DASSERT(drawInfo.CtlType == ODT_MENU);
 281 
 282     if (drawInfo.itemID == GetID()) {
 283         DrawSelf(drawInfo);
 284         return;
 285     }
 286     DrawItems(drawInfo);
 287 }
 288 
 289 void AwtMenu::MeasureItems(HDC hDC, MEASUREITEMSTRUCT& measureInfo)
 290 {
 291     JNIEnv *env = (JNIEnv *)JNU_GetEnv(jvm, JNI_VERSION_1_2);
 292     if (env->EnsureLocalCapacity(1) < 0) {
 293         return;
 294     }
 295    /* target is a java.awt.Menu */
 296     jobject target = GetTarget(env);

 297     int nCount = CountItem(target);
 298     for (int i = 0; i < nCount; i++) {
 299         AwtMenuItem* awtMenuItem = GetItem(target, i);
 300         if (awtMenuItem != NULL) {
 301             SendMeasureItem(awtMenuItem, hDC, measureInfo);
 302         }
 303     }
 304     env->DeleteLocalRef(target);
 305 }
 306 
 307 void AwtMenu::MeasureItem(HDC hDC, MEASUREITEMSTRUCT& measureInfo)
 308 {
 309     DASSERT(measureInfo.CtlType == ODT_MENU);
 310 
 311     if (measureInfo.itemID == GetID()) {
 312         MeasureSelf(hDC, measureInfo);
 313         return;
 314     }
 315 
 316     MeasureItems(hDC, measureInfo);
 317 }
 318 




 222 {
 223     awtMenuItem->MeasureItem(hDC, measureInfo);
 224 }
 225 
 226 int AwtMenu::CountItem(jobject target)
 227 {
 228     JNIEnv *env = (JNIEnv *)JNU_GetEnv(jvm, JNI_VERSION_1_2);
 229     jint nCount = env->CallIntMethod(target, AwtMenu::countItemsMID);
 230     DASSERT(!safe_ExceptionOccurred(env));
 231     return nCount;
 232 }
 233 
 234 AwtMenuItem* AwtMenu::GetItem(jobject target, jint index)
 235 {
 236     JNIEnv *env = (JNIEnv *)JNU_GetEnv(jvm, JNI_VERSION_1_2);
 237     if (env->EnsureLocalCapacity(2) < 0) {
 238         return NULL;
 239     }
 240     jobject menuItem = env->CallObjectMethod(target, AwtMenu::getItemMID,
 241                                              index);
 242     if (!menuItem) return NULL; // menu item was removed concurrently
 243     DASSERT(!safe_ExceptionOccurred(env));
 244 
 245     jobject wMenuItemPeer = GetPeerForTarget(env, menuItem);
 246 
 247     PDATA pData;
 248     AwtMenuItem* awtMenuItem = NULL;
 249 
 250     JNI_CHECK_PEER_GOTO(wMenuItemPeer, done);
 251     awtMenuItem = (AwtMenuItem*)pData;
 252 
 253  done:
 254     env->DeleteLocalRef(menuItem);
 255     env->DeleteLocalRef(wMenuItemPeer);
 256 
 257     return awtMenuItem;
 258 }
 259 
 260 void AwtMenu::DrawItems(DRAWITEMSTRUCT& drawInfo)
 261 {
 262     JNIEnv *env = (JNIEnv *)JNU_GetEnv(jvm, JNI_VERSION_1_2);
 263     if (env->EnsureLocalCapacity(1) < 0) {
 264         return;
 265     }
 266     /* target is a java.awt.Menu */
 267     jobject target = GetTarget(env);
 268     if(!target || env->ExceptionCheck()) return;
 269     int nCount = CountItem(target);
 270     for (int i = 0; i < nCount && !env->ExceptionCheck(); i++) {
 271         AwtMenuItem* awtMenuItem = GetItem(target, i);
 272         if (awtMenuItem != NULL) {
 273             SendDrawItem(awtMenuItem, drawInfo);
 274         }
 275     }
 276     env->DeleteLocalRef(target);
 277 }
 278 
 279 void AwtMenu::DrawItem(DRAWITEMSTRUCT& drawInfo)
 280 {
 281     DASSERT(drawInfo.CtlType == ODT_MENU);
 282 
 283     if (drawInfo.itemID == GetID()) {
 284         DrawSelf(drawInfo);
 285         return;
 286     }
 287     DrawItems(drawInfo);
 288 }
 289 
 290 void AwtMenu::MeasureItems(HDC hDC, MEASUREITEMSTRUCT& measureInfo)
 291 {
 292     JNIEnv *env = (JNIEnv *)JNU_GetEnv(jvm, JNI_VERSION_1_2);
 293     if (env->EnsureLocalCapacity(1) < 0) {
 294         return;
 295     }
 296    /* target is a java.awt.Menu */
 297     jobject target = GetTarget(env);
 298         if(!target || env->ExceptionCheck()) return;
 299     int nCount = CountItem(target);
 300     for (int i = 0; i < nCount && !env->ExceptionCheck(); i++) {
 301         AwtMenuItem* awtMenuItem = GetItem(target, i);
 302         if (awtMenuItem != NULL) {
 303             SendMeasureItem(awtMenuItem, hDC, measureInfo);
 304         }
 305     }
 306     env->DeleteLocalRef(target);
 307 }
 308 
 309 void AwtMenu::MeasureItem(HDC hDC, MEASUREITEMSTRUCT& measureInfo)
 310 {
 311     DASSERT(measureInfo.CtlType == ODT_MENU);
 312 
 313     if (measureInfo.itemID == GetID()) {
 314         MeasureSelf(hDC, measureInfo);
 315         return;
 316     }
 317 
 318     MeasureItems(hDC, measureInfo);
 319 }
 320 


< prev index next >