jboolean AwtList::_IsSelected(void *param) { JNIEnv *env = (JNIEnv *)JNU_GetEnv(jvm, JNI_VERSION_1_2); SelectElementStruct *ses = (SelectElementStruct *)param; jobject self = ses->list; jint index = ses->index; jboolean result = JNI_FALSE; AwtList *l = NULL; PDATA pData; JNI_CHECK_PEER_GOTO(self, ret); l = (AwtList*)pData; if (::IsWindow(l->GetHWnd())) { result = l->IsItemSelected(index); } ret: env->DeleteGlobalRef(self); delete ses; return result; }
void AwtScrollPane::_SetScrollPos(void *param) { JNIEnv *env = (JNIEnv *)JNU_GetEnv(jvm, JNI_VERSION_1_2); SetScrollPosStruct *spss = (SetScrollPosStruct *)param; jobject self = spss->scrollpane; jint x = spss->x; jint y = spss->y; AwtScrollPane *s = NULL; PDATA pData; JNI_CHECK_PEER_GOTO(self, ret); s = (AwtScrollPane *)pData; if (::IsWindow(s->GetHWnd())) { DTRACE_PRINTLN3("%x: WScrollPanePeer.setScrollPosition(%d, %d)", self, x, y); SCROLLINFO si; ZeroMemory(&si, sizeof(si)); si.fMask = SIF_POS; si.cbSize = sizeof(si); // set x si.nPos = x; ::SetScrollInfo(s->GetHWnd(), SB_HORZ, &si, TRUE); // set y si.nPos = y; ::SetScrollInfo(s->GetHWnd(), SB_VERT, &si, TRUE); } ret: env->DeleteGlobalRef(self); delete spss; }
void AwtLabel::_SetAlignment(void *param) { JNIEnv *env = (JNIEnv *)JNU_GetEnv(jvm, JNI_VERSION_1_2); SetAlignmentStruct *sas = (SetAlignmentStruct *)param; jobject self = sas->label; jint alignment = sas->alignment; AwtLabel *l = NULL; PDATA pData; JNI_CHECK_PEER_GOTO(self, ret); l = (AwtLabel *)pData; if (::IsWindow(l->GetHWnd())) { /* * alignment argument of multifont label is referred to in * WmDrawItem method */ VERIFY(::InvalidateRect(l->GetHWnd(), NULL, TRUE)); } ret: env->DeleteGlobalRef(self); delete sas; }
void AwtScrollPane::_SetSpans(void *param) { JNIEnv *env = (JNIEnv *)JNU_GetEnv(jvm, JNI_VERSION_1_2); SetSpansStruct *sss = (SetSpansStruct *)param; jobject self = sss->scrollpane; jint parentWidth = sss->parentWidth; jint parentHeight = sss->parentHeight; jint childWidth = sss->childWidth; jint childHeight = sss->childHeight; AwtScrollPane *s = NULL; PDATA pData; JNI_CHECK_PEER_GOTO(self, ret); s = (AwtScrollPane *)pData; if (::IsWindow(s->GetHWnd())) { DTRACE_PRINTLN5("%x: WScrollPanePeer.setSpans(%d, %d, %d, %d)", self, parentWidth, parentHeight, childWidth, childHeight); s->RecalcSizes(parentWidth, parentHeight, childWidth, childHeight); s->VerifyState(); } ret: env->DeleteGlobalRef(self); delete sss; }
void AwtScrollbar::_SetValues(void *param) { JNIEnv *env = (JNIEnv *)JNU_GetEnv(jvm, JNI_VERSION_1_2); SetValuesStruct *svs = (SetValuesStruct *)param; jobject self = svs->scrollbar; SCROLLINFO si; si.cbSize = sizeof si; si.fMask = SIF_POS | SIF_PAGE | SIF_RANGE; si.nMin = svs->min; si.nMax = svs->max - 1; si.nPage = svs->visible; si.nPos = svs->value; AwtScrollbar *sb = NULL; PDATA pData; JNI_CHECK_PEER_GOTO(self, ret); sb = (AwtScrollbar *)pData; if (::IsWindow(sb->GetHWnd())) { BOOL update_p = ::IsWindowEnabled(sb->GetHWnd()); // don't redraw if disabled DTRACE_PRINTLN5("AwtScrollbar::SetValues(val = %d, vis = %d,"//(ctd.) " min = %d, max = %d)%s", svs->value, svs->visible, svs->min, svs->max, update_p ? "" : " - NOT redrawing"); ::SetScrollInfo(sb->GetHWnd(), SB_CTL, &si, update_p); } ret: env->DeleteGlobalRef(self); delete svs; }
void AwtList::_AddItems(void *param) { JNIEnv *env = (JNIEnv *)JNU_GetEnv(jvm, JNI_VERSION_1_2); AddItemsStruct *ais = (AddItemsStruct *)param; jobject self = ais->list; jobjectArray items = ais->items; jint index = ais->index; jint width = ais->width; int badAlloc = 0; AwtList *l = NULL; PDATA pData; JNI_CHECK_PEER_GOTO(self, ret); JNI_CHECK_NULL_GOTO(items, "null items", ret); l = (AwtList*)pData; if (::IsWindow(l->GetHWnd())) { int itemCount = env->GetArrayLength(items); if (itemCount > 0) { AwtList* l = (AwtList*)pData; l->SendListMessage(WM_SETREDRAW, (WPARAM)FALSE, 0); for (jsize i=0; i < itemCount; i++) { LPTSTR itemPtr = NULL; jstring item = (jstring)env->GetObjectArrayElement(items, i); if (env->ExceptionCheck()) goto ret; if (item == NULL) goto next_item; itemPtr = (LPTSTR)JNU_GetStringPlatformChars(env, item, 0); if (itemPtr == NULL) { badAlloc = 1; } else { l->InsertString(index+i, itemPtr); JNU_ReleaseStringPlatformChars(env, item, itemPtr); } env->DeleteLocalRef(item); next_item: ; } l->SendListMessage(WM_SETREDRAW, (WPARAM)TRUE, 0); l->InvalidateList(NULL, TRUE); l->CheckMaxWidth(width); } } ret: env->DeleteGlobalRef(self); env->DeleteGlobalRef(items); delete ais; if (badAlloc) { throw std::bad_alloc(); } }
void AwtTextComponent::_SetText(void *param) { JNIEnv *env = (JNIEnv *)JNU_GetEnv(jvm, JNI_VERSION_1_2); SetTextStruct *sts = (SetTextStruct *)param; jobject self = sts->textcomponent; jstring text = sts->text; AwtTextComponent *c = NULL; PDATA pData; JNI_CHECK_PEER_GOTO(self, ret); c = (AwtTextComponent *)pData; if (::IsWindow(c->GetHWnd())) { int length = env->GetStringLength(text); WCHAR* buffer = new WCHAR[length + 1]; env->GetStringRegion(text, 0, length, reinterpret_cast<jchar*>(buffer)); buffer[length] = 0; c->CheckLineSeparator(buffer); c->RemoveCR(buffer); c->SetText(buffer); delete[] buffer; } ret: env->DeleteGlobalRef(self); env->DeleteGlobalRef(text); delete sts; }
void AwtMenuBar::_AddMenu(void *param) { JNIEnv *env = (JNIEnv *)JNU_GetEnv(jvm, JNI_VERSION_1_2); AddMenuStruct *ams = (AddMenuStruct *)param; jobject self = ams->menubar; jobject menu = ams->menu; AwtMenuBar *m = NULL; PDATA pData; JNI_CHECK_PEER_GOTO(self, ret); JNI_CHECK_NULL_GOTO(menu, "null menu", ret); m = (AwtMenuBar *)pData; if (::IsWindow(m->GetOwnerHWnd())) { /* The menu was already created and added during peer creation -- redraw */ m->RedrawMenuBar(); } ret: env->DeleteGlobalRef(self); if (menu != NULL) { env->DeleteGlobalRef(menu); } delete ams; }
jint AwtScrollPane::_GetOffset(void *param) { JNIEnv *env = (JNIEnv *)JNU_GetEnv(jvm, JNI_VERSION_1_2); GetOffsetStruct *gos = (GetOffsetStruct *)param; jobject self = gos->scrollpane; jint orient = gos->orient; jint result = 0; AwtScrollPane *s = NULL; PDATA pData; JNI_CHECK_PEER_GOTO(self, ret); s = (AwtScrollPane *)pData; if (::IsWindow(s->GetHWnd())) { DTRACE_PRINTLN2("%x: WScrollPanePeer.getOffset(%d)", self, orient); s->VerifyState(); int nBar = (orient == java_awt_Adjustable_HORIZONTAL) ? SB_HORZ : SB_VERT; result = s->GetScrollPos(nBar); } ret: env->DeleteGlobalRef(self); delete gos; return result; }
void AwtCheckbox::_SetLabel(void *param) { JNIEnv *env = (JNIEnv *)JNU_GetEnv(jvm, JNI_VERSION_1_2); SetLabelStruct *sls = (SetLabelStruct *)param; jobject checkbox = sls->checkbox; jstring label = sls->label; int badAlloc = 0; AwtCheckbox *c = NULL; PDATA pData; JNI_CHECK_PEER_GOTO(checkbox, done); c = (AwtCheckbox *)pData; if (::IsWindow(c->GetHWnd())) { LPCTSTR labelStr = NULL; // By convension null label means empty string if (label == NULL) { labelStr = TEXT(""); } else { labelStr = JNU_GetStringPlatformChars(env, label, JNI_FALSE); } if (labelStr == NULL) { badAlloc = 1; } else { c->SetText(labelStr); c->VerifyState(); if (label != NULL) { JNU_ReleaseStringPlatformChars(env, label, labelStr); } } } done: env->DeleteGlobalRef(checkbox); if (label != NULL) { env->DeleteGlobalRef(label); } delete sls; if (badAlloc) { throw std::bad_alloc(); } }
/* Create a new AwtLabel object and window. */ AwtLabel* AwtLabel::Create(jobject labelPeer, jobject parent) { JNIEnv *env = (JNIEnv *)JNU_GetEnv(jvm, JNI_VERSION_1_2); jobject target = NULL; AwtLabel* awtLabel = NULL; try { if (env->EnsureLocalCapacity(1) < 0) { return NULL; } PDATA pData; AwtCanvas* awtParent; JNI_CHECK_PEER_GOTO(parent, done); awtParent = (AwtCanvas*)pData; JNI_CHECK_NULL_GOTO(awtParent, "awtParent", done); target = env->GetObjectField(labelPeer, AwtObject::targetID); JNI_CHECK_NULL_GOTO(target, "target", done); awtLabel = new AwtLabel(); { DWORD style = WS_CHILD | WS_CLIPSIBLINGS; DWORD exStyle = 0; if (GetRTLReadingOrder()) exStyle |= WS_EX_RTLREADING; jint x = env->GetIntField(target, AwtComponent::xID); jint y = env->GetIntField(target, AwtComponent::yID); jint width = env->GetIntField(target, AwtComponent::widthID); jint height = env->GetIntField(target, AwtComponent::heightID); awtLabel->CreateHWnd(env, L"", style, exStyle, x, y, width, height, awtParent->GetHWnd(), NULL, ::GetSysColor(COLOR_WINDOWTEXT), ::GetSysColor(COLOR_BTNFACE), labelPeer); } } catch (...) { env->DeleteLocalRef(target); throw; } done: env->DeleteLocalRef(target); return awtLabel; }
void AwtPopupMenu::Show(JNIEnv *env, jobject event, BOOL isTrayIconPopup) { /* * For not TrayIcon popup. * Convert the event's XY to absolute coordinates. The XY is * relative to the origin component, which is passed by PopupMenu * as the event's target. */ if (env->EnsureLocalCapacity(2) < 0) { return; } jobject origin = (env)->GetObjectField(event, AwtEvent::targetID); jobject peerOrigin = GetPeerForTarget(env, origin); PDATA pData; JNI_CHECK_PEER_GOTO(peerOrigin, done); { AwtComponent* awtOrigin = (AwtComponent*)pData; POINT pt; UINT flags = 0; pt.x = (env)->GetIntField(event, AwtEvent::xID); pt.y = (env)->GetIntField(event, AwtEvent::yID); if (!isTrayIconPopup) { ::MapWindowPoints(awtOrigin->GetHWnd(), 0, (LPPOINT)&pt, 1); // Adjust to account for the Inset values RECT rctInsets; awtOrigin->GetInsets(&rctInsets); pt.x -= rctInsets.left; pt.y -= rctInsets.top; flags = TPM_LEFTALIGN | TPM_RIGHTBUTTON; } else { ::SetForegroundWindow(awtOrigin->GetHWnd()); flags = TPM_NONOTIFY | TPM_RIGHTALIGN | TPM_RIGHTBUTTON | TPM_BOTTOMALIGN; } /* Invoke the popup. */ ::TrackPopupMenu(GetHMenu(), flags, pt.x, pt.y, 0, awtOrigin->GetHWnd(), NULL); if (isTrayIconPopup) { ::PostMessage(awtOrigin->GetHWnd(), WM_NULL, 0, 0); } } done: env->DeleteLocalRef(origin); env->DeleteLocalRef(peerOrigin); }
/* Create a new AwtMenuBar object and menu. */ AwtMenuBar* AwtMenuBar::Create(jobject self, jobject framePeer) { JNIEnv *env = (JNIEnv *)JNU_GetEnv(jvm, JNI_VERSION_1_2); jobject target = NULL; AwtMenuBar* menuBar = NULL; try { if (env->EnsureLocalCapacity(1) < 0) { return NULL; } /* target is a java.awt.MenuBar */ target = env->GetObjectField(self, AwtObject::targetID); JNI_CHECK_NULL_GOTO(target, "null target", done); menuBar = new AwtMenuBar(); SetLastError(0); HMENU hMenu = ::CreateMenu(); // fix for 5088782 if (!CheckMenuCreation(env, self, hMenu)) { env->DeleteLocalRef(target); return NULL; } menuBar->SetHMenu(hMenu); menuBar->LinkObjects(env, self); if (framePeer != NULL) { PDATA pData; JNI_CHECK_PEER_GOTO(framePeer, done); menuBar->m_frame = (AwtFrame *)pData; } else { menuBar->m_frame = NULL; } } catch (...) { env->DeleteLocalRef(target); throw; } done: if (target != NULL) { env->DeleteLocalRef(target); } return menuBar; }
void AwtList::_UpdateMaxItemWidth(void *param) { JNIEnv *env = (JNIEnv *)JNU_GetEnv(jvm, JNI_VERSION_1_2); jobject self = (jobject)param; AwtList *l = NULL; PDATA pData; JNI_CHECK_PEER_GOTO(self, ret); l = (AwtList *)pData; if (::IsWindow(l->GetHWnd())) { l->UpdateMaxItemWidth(); } ret: env->DeleteGlobalRef(self); }
void AwtLabel::_LazyPaint(void *param) { JNIEnv *env = (JNIEnv *)JNU_GetEnv(jvm, JNI_VERSION_1_2); jobject self = (jobject)param; AwtLabel *l = NULL; PDATA pData; JNI_CHECK_PEER_GOTO(self, ret); l = (AwtLabel *)pData; if (::IsWindow(l->GetHWnd())) { l->LazyPaint(); } ret: env->DeleteGlobalRef(self); }
void AwtCheckbox::_SetState(void *param) { JNIEnv *env = (JNIEnv *)JNU_GetEnv(jvm, JNI_VERSION_1_2); SetStateStruct *sss = (SetStateStruct *)param; jobject checkbox = sss->checkbox; jboolean state = sss->state; AwtCheckbox *c = NULL; PDATA pData; JNI_CHECK_PEER_GOTO(checkbox, done); c = (AwtCheckbox *)pData; if (::IsWindow(c->GetHWnd())) { /* * when multifont and group checkbox receive setState native * method, it must be redraw to display correct check mark */ jobject target = env->GetObjectField(checkbox, AwtObject::targetID); jobject group = env->GetObjectField(target, AwtCheckbox::groupID); HWND hWnd = c->GetHWnd(); if (group != NULL) { RECT rect; VERIFY(::GetWindowRect(hWnd, &rect)); VERIFY(::ScreenToClient(hWnd, (LPPOINT)&rect)); VERIFY(::ScreenToClient(hWnd, ((LPPOINT)&rect) + 1)); VERIFY(::InvalidateRect(hWnd, &rect,TRUE)); VERIFY(::UpdateWindow(hWnd)); } else { c->SendMessage(BM_SETCHECK, (WPARAM)(state ? BST_CHECKED : BST_UNCHECKED)); VERIFY(::InvalidateRect(hWnd, NULL, FALSE)); } c->VerifyState(); env->DeleteLocalRef(target); env->DeleteLocalRef(group); } done: env->DeleteGlobalRef(checkbox); delete sss; }
void AwtCheckbox::_SetCheckboxGroup(void *param) { JNIEnv *env = (JNIEnv *)JNU_GetEnv(jvm, JNI_VERSION_1_2); jobject *jos = (jobject *)param; jobject checkbox = jos[0]; jobject group = jos[1]; AwtCheckbox *c = NULL; PDATA pData; JNI_CHECK_PEER_GOTO(checkbox, done); c = (AwtCheckbox *)pData; if (::IsWindow(c->GetHWnd())) { /* #ifdef DEBUG if (group != NULL) { DASSERT(IsInstanceOf((HObject*)group, "java/awt/CheckboxGroup")); } #endif */ long style = c->GetStyle(); if (group == NULL) { style = style & ~BS_AUTORADIOBUTTON; style = style | BS_AUTOCHECKBOX; } else { style = style & ~BS_AUTOCHECKBOX; style = style | BS_AUTORADIOBUTTON; } c->SetStyle(style); c->SendMessage(BM_SETSTYLE, (WPARAM)BS_OWNERDRAW, (LPARAM)TRUE); c->VerifyState(); } done: env->DeleteGlobalRef(checkbox); if (group != NULL) { env->DeleteGlobalRef(group); } delete[] jos; }
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; } }
void AwtScrollPane::_SetInsets(void *param) { JNIEnv *env = (JNIEnv *)JNU_GetEnv(jvm, JNI_VERSION_1_2); jobject self = (jobject)param; AwtScrollPane *s = NULL; PDATA pData; JNI_CHECK_PEER_GOTO(self, ret); s = (AwtScrollPane *)pData; if (::IsWindow(s->GetHWnd())) { DTRACE_PRINTLN1("%x: WScrollPanePeer.setInsets()", self); s->SetInsets(env); s->VerifyState(); } ret: env->DeleteGlobalRef(self); }
void AwtCanvas::_SetEraseBackground(void *param) { JNIEnv *env = (JNIEnv *)JNU_GetEnv(jvm, JNI_VERSION_1_2); SetEraseBackgroundStruct *sebs = (SetEraseBackgroundStruct *)param; jobject canvas = sebs->canvas; jboolean doErase = sebs->doErase; jboolean doEraseOnResize = sebs->doEraseOnResize; PDATA pData; JNI_CHECK_PEER_GOTO(canvas, ret); AwtCanvas *c = (AwtCanvas*)pData; c->m_eraseBackground = doErase; c->m_eraseBackgroundOnResize = doEraseOnResize; ret: env->DeleteGlobalRef(canvas); delete sebs; }
jint AwtList::_GetMaxWidth(void *param) { JNIEnv *env = (JNIEnv *)JNU_GetEnv(jvm, JNI_VERSION_1_2); jobject self = (jobject)param; jint result = 0; AwtList *l = NULL; PDATA pData; JNI_CHECK_PEER_GOTO(self, ret); l = (AwtList *)pData; if (::IsWindow(l->GetHWnd())) { result = l->GetMaxWidth(); } ret: env->DeleteGlobalRef(self); return result; }
void AwtTextComponent::_EnableEditing(void *param) { JNIEnv *env = (JNIEnv *)JNU_GetEnv(jvm, JNI_VERSION_1_2); EnableEditingStruct *ees = (EnableEditingStruct *)param; jobject self = ees->textcomponent; jboolean on = ees->on; AwtTextComponent *c = NULL; PDATA pData; JNI_CHECK_PEER_GOTO(self, ret); c = (AwtTextComponent *)pData; if (::IsWindow(c->GetHWnd())) { c->SendMessage(EM_SETREADONLY, !on); } ret: env->DeleteGlobalRef(self); delete ees; }
void AwtList::_MakeVisible(void *param) { JNIEnv *env = (JNIEnv *)JNU_GetEnv(jvm, JNI_VERSION_1_2); SelectElementStruct *ses = (SelectElementStruct *)param; jobject self = ses->list; jint index = ses->index; AwtList *l = NULL; PDATA pData; JNI_CHECK_PEER_GOTO(self, ret); l = (AwtList*)pData; if (::IsWindow(l->GetHWnd())) { l->SendListMessage(LB_SETTOPINDEX, index); } ret: env->DeleteGlobalRef(self); delete ses; }
jint AwtTextComponent::_GetSelectionEnd(void *param) { JNIEnv *env = (JNIEnv *)JNU_GetEnv(jvm, JNI_VERSION_1_2); jobject self = (jobject)param; jint result = 0; AwtTextComponent *c = NULL; PDATA pData; JNI_CHECK_PEER_GOTO(self, ret); c = (AwtTextComponent *)pData; if (::IsWindow(c->GetHWnd())) { long end; c->SendMessage(EM_GETSEL, 0, (LPARAM)&end); result = c->getJavaSelPos(end); } ret: env->DeleteGlobalRef(self); return result; }
AwtMenuItem* AwtMenuBar::GetItem(jobject target, long index) { JNIEnv *env = (JNIEnv *)JNU_GetEnv(jvm, JNI_VERSION_1_2); if (env->EnsureLocalCapacity(2) < 0) { return NULL; } jobject menu = env->CallObjectMethod(target, AwtMenuBar::getMenuMID,index); if (!menu) return NULL; // menu item was removed concurrently DASSERT(!safe_ExceptionOccurred(env)); jobject menuItemPeer = GetPeerForTarget(env, menu); PDATA pData; JNI_CHECK_PEER_GOTO(menuItemPeer, done); AwtMenuItem* awtMenuItem = (AwtMenuItem*)pData; done: env->DeleteLocalRef(menu); env->DeleteLocalRef(menuItemPeer); return awtMenuItem; }
void AwtList::_SetMultipleSelections(void *param) { JNIEnv *env = (JNIEnv *)JNU_GetEnv(jvm, JNI_VERSION_1_2); SetMultipleSelectionsStruct *sms = (SetMultipleSelectionsStruct *)param; jobject self = sms->list; jboolean on = sms->on; AwtList *l = NULL; PDATA pData; JNI_CHECK_PEER_GOTO(self, ret); l = (AwtList*)pData; if (::IsWindow(l->GetHWnd())) { AwtToolkit::GetInstance().SendMessage(WM_AWT_LIST_SETMULTISELECT, (WPARAM)self, on); } ret: env->DeleteGlobalRef(self); delete sms; }
void AwtTextField::_SetEchoChar(void *param) { JNIEnv *env = (JNIEnv *)JNU_GetEnv(jvm, JNI_VERSION_1_2); SetEchoCharStruct *secs = (SetEchoCharStruct *)param; jobject self = secs->textfield; jchar echo = secs->echoChar; AwtTextField *c = NULL; PDATA pData; JNI_CHECK_PEER_GOTO(self, ret); c = (AwtTextField *)pData; if (::IsWindow(c->GetHWnd())) { c->SendMessage(EM_SETPASSWORDCHAR, echo); // Fix for 4307281: force redraw so that changes will take effect VERIFY(::InvalidateRect(c->GetHWnd(), NULL, FALSE)); } ret: env->DeleteGlobalRef(self); delete secs; }
void AwtTextComponent::_Select(void *param) { JNIEnv *env = (JNIEnv *)JNU_GetEnv(jvm, JNI_VERSION_1_2); SelectStruct *ss = (SelectStruct *)param; jobject self = ss->textcomponent; jint start = ss->start; jint end = ss->end; AwtTextComponent *c = NULL; PDATA pData; JNI_CHECK_PEER_GOTO(self, ret); c = (AwtTextComponent *)pData; if (::IsWindow(c->GetHWnd())) { c->SetSelRange(start, end); c->SendMessage(EM_SCROLLCARET); } ret: env->DeleteGlobalRef(self); delete ss; }
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; }
void AwtList::_DelItems(void *param) { JNIEnv *env = (JNIEnv *)JNU_GetEnv(jvm, JNI_VERSION_1_2); DelItemsStruct *dis = (DelItemsStruct *)param; jobject self = dis->list; jint start = dis->start; jint end = dis->end; AwtList *l = NULL; PDATA pData; JNI_CHECK_PEER_GOTO(self, ret); l = (AwtList*)pData; if (::IsWindow(l->GetHWnd())) { int count = l->GetCount(); if (start == 0 && end == count) { l->SendListMessage(LB_RESETCONTENT); } else { for (int i = start; i <= end; i++) { l->SendListMessage(LB_DELETESTRING, start); } } l->UpdateMaxItemWidth(); } ret: env->DeleteGlobalRef(self); delete dis; }