139 awtMenuItem->MeasureItem(hDC, measureInfo);
140 }
141
142 int AwtMenuBar::CountItem(jobject menuBar)
143 {
144 JNIEnv *env = (JNIEnv *)JNU_GetEnv(jvm, JNI_VERSION_1_2);
145 jint nCount = env->CallIntMethod(menuBar, AwtMenuBar::getMenuCountMID);
146 DASSERT(!safe_ExceptionOccurred(env));
147
148 return nCount;
149 }
150
151 AwtMenuItem* AwtMenuBar::GetItem(jobject target, long index)
152 {
153 JNIEnv *env = (JNIEnv *)JNU_GetEnv(jvm, JNI_VERSION_1_2);
154 if (env->EnsureLocalCapacity(2) < 0) {
155 return NULL;
156 }
157
158 jobject menu = env->CallObjectMethod(target, AwtMenuBar::getMenuMID,index);
159 DASSERT(!safe_ExceptionOccurred(env));
160
161 jobject menuItemPeer = GetPeerForTarget(env, menu);
162 PDATA pData;
163 JNI_CHECK_PEER_RETURN_NULL(menuItemPeer);
164 AwtMenuItem* awtMenuItem = (AwtMenuItem*)pData;
165
166 env->DeleteLocalRef(menu);
167 env->DeleteLocalRef(menuItemPeer);
168
169 return awtMenuItem;
170 }
171
172 void AwtMenuBar::DrawItem(DRAWITEMSTRUCT& drawInfo)
173 {
174 DASSERT(drawInfo.CtlType == ODT_MENU);
175 AwtMenu::DrawItems(drawInfo);
176 }
177
178 void AwtMenuBar::MeasureItem(HDC hDC,
179 MEASUREITEMSTRUCT& measureInfo)
180 {
181 DASSERT(measureInfo.CtlType == ODT_MENU);
182 AwtMenu::MeasureItem(hDC, measureInfo);
183 }
184
185 void AwtMenuBar::AddItem(AwtMenuItem* item)
|
139 awtMenuItem->MeasureItem(hDC, measureInfo);
140 }
141
142 int AwtMenuBar::CountItem(jobject menuBar)
143 {
144 JNIEnv *env = (JNIEnv *)JNU_GetEnv(jvm, JNI_VERSION_1_2);
145 jint nCount = env->CallIntMethod(menuBar, AwtMenuBar::getMenuCountMID);
146 DASSERT(!safe_ExceptionOccurred(env));
147
148 return nCount;
149 }
150
151 AwtMenuItem* AwtMenuBar::GetItem(jobject target, long index)
152 {
153 JNIEnv *env = (JNIEnv *)JNU_GetEnv(jvm, JNI_VERSION_1_2);
154 if (env->EnsureLocalCapacity(2) < 0) {
155 return NULL;
156 }
157
158 jobject menu = env->CallObjectMethod(target, AwtMenuBar::getMenuMID,index);
159 if (!menu) return NULL; // menu item was removed concurrently
160 DASSERT(!safe_ExceptionOccurred(env));
161
162 jobject menuItemPeer = GetPeerForTarget(env, menu);
163 PDATA pData;
164 JNI_CHECK_PEER_GOTO(menuItemPeer, done);
165
166 AwtMenuItem* awtMenuItem = (AwtMenuItem*)pData;
167
168 done:
169 env->DeleteLocalRef(menu);
170 env->DeleteLocalRef(menuItemPeer);
171
172 return awtMenuItem;
173 }
174
175 void AwtMenuBar::DrawItem(DRAWITEMSTRUCT& drawInfo)
176 {
177 DASSERT(drawInfo.CtlType == ODT_MENU);
178 AwtMenu::DrawItems(drawInfo);
179 }
180
181 void AwtMenuBar::MeasureItem(HDC hDC,
182 MEASUREITEMSTRUCT& measureInfo)
183 {
184 DASSERT(measureInfo.CtlType == ODT_MENU);
185 AwtMenu::MeasureItem(hDC, measureInfo);
186 }
187
188 void AwtMenuBar::AddItem(AwtMenuItem* item)
|