< prev index next >

src/windows/native/sun/windows/awt_Button.cpp

Print this page
rev 12527 : 8165543: Better window framing
Reviewed-by: serb


  48 /* java.awt.Button fields */
  49 jfieldID AwtButton::labelID;
  50 
  51 
  52 /************************************************************************
  53  * AwtButton methods
  54  */
  55 
  56 AwtButton::AwtButton() {
  57     leftButtonDown = FALSE;
  58 }
  59 
  60 /* System provided button class */
  61 LPCTSTR AwtButton::GetClassName() {
  62     return TEXT("BUTTON");
  63 }
  64 
  65 /* Create a new AwtButton object and window. */
  66 AwtButton* AwtButton::Create(jobject self, jobject parent)
  67 {

  68     JNIEnv *env = (JNIEnv *)JNU_GetEnv(jvm, JNI_VERSION_1_2);
  69 
  70     /* the result */
  71     AwtButton *c = NULL;
  72 
  73     jobject target = NULL;
  74     jstring label = NULL;
  75 
  76     try {
  77         LPCWSTR labelStr;
  78         DWORD style;
  79         DWORD exStyle = 0;
  80         jint x, y, height, width;
  81 
  82         if (env->EnsureLocalCapacity(2) < 0) {
  83             return NULL;
  84         }
  85 
  86         PDATA pData;
  87         AwtCanvas* awtParent;
  88 
  89         JNI_CHECK_PEER_GOTO(parent, done);
  90         awtParent = (AwtCanvas*)pData;
  91         JNI_CHECK_NULL_GOTO(awtParent, "awtParent", done);
  92 
  93         target = env->GetObjectField(self, AwtObject::targetID);
  94         JNI_CHECK_NULL_GOTO(target, "target", done);
  95 
  96         c = new AwtButton();
  97 
  98         label = (jstring)env->GetObjectField(target, AwtButton::labelID);
  99 
 100         x = env->GetIntField(target, AwtComponent::xID);
 101         y = env->GetIntField(target, AwtComponent::yID);
 102         width = env->GetIntField(target, AwtComponent::widthID);
 103         height = env->GetIntField(target, AwtComponent::heightID);
 104 
 105         if (label == NULL) {
 106             labelStr = L"";
 107         } else {
 108             labelStr = JNU_GetStringPlatformChars(env, label, JNI_FALSE);
 109         }
 110         style = 0;
 111 


 357     if (cls == NULL) {
 358         return;
 359     }
 360     AwtButton::labelID = env->GetFieldID(cls, "label", "Ljava/lang/String;");
 361     DASSERT(AwtButton::labelID != NULL);
 362 
 363     CATCH_BAD_ALLOC;
 364 }
 365 
 366 /*
 367  * Class:     sun_awt_windows_WButtonPeer
 368  * Method:    setLabel
 369  * Signature: (Ljava/lang/String;)V
 370  */
 371 JNIEXPORT void JNICALL
 372 Java_sun_awt_windows_WButtonPeer_setLabel(JNIEnv *env, jobject self,
 373                                           jstring label)
 374 {
 375     TRY;
 376 
 377     PDATA pData;
 378     JNI_CHECK_PEER_RETURN(self);
 379 
 380     SetLabelStruct *sls = new SetLabelStruct;
 381     sls->button = env->NewGlobalRef(self);
 382     sls->label = (label != NULL) ? (jstring)env->NewGlobalRef(label) : NULL;
 383 
 384     AwtToolkit::GetInstance().SyncCall(AwtButton::_SetLabel, sls);
 385     // global refs and sls are deleted in _SetLabel()
 386 
 387     CATCH_BAD_ALLOC;
 388 }
 389 
 390 /*
 391  * Class:     sun_awt_windows_WButtonPeer
 392  * Method:    create
 393  * Signature: (Lsun/awt/windows/WComponentPeer;)V
 394  */
 395 JNIEXPORT void JNICALL
 396 Java_sun_awt_windows_WButtonPeer_create(JNIEnv *env, jobject self,
 397                                         jobject parent)
 398 {
 399     TRY;
 400 
 401     PDATA pData;
 402     JNI_CHECK_PEER_RETURN(parent);
 403 
 404     AwtToolkit::CreateComponent(
 405         self, parent, (AwtToolkit::ComponentFactory)AwtButton::Create);
 406 
 407     JNI_CHECK_PEER_CREATION_RETURN(self);
 408 
 409     CATCH_BAD_ALLOC;
 410 }
 411 
 412 }  /* extern "C" */


  48 /* java.awt.Button fields */
  49 jfieldID AwtButton::labelID;
  50 
  51 
  52 /************************************************************************
  53  * AwtButton methods
  54  */
  55 
  56 AwtButton::AwtButton() {
  57     leftButtonDown = FALSE;
  58 }
  59 
  60 /* System provided button class */
  61 LPCTSTR AwtButton::GetClassName() {
  62     return TEXT("BUTTON");
  63 }
  64 
  65 /* Create a new AwtButton object and window. */
  66 AwtButton* AwtButton::Create(jobject self, jobject parent)
  67 {
  68     DASSERT(AwtToolkit::IsMainThread());
  69     JNIEnv *env = (JNIEnv *)JNU_GetEnv(jvm, JNI_VERSION_1_2);
  70 
  71     /* the result */
  72     AwtButton *c = NULL;
  73 
  74     jobject target = NULL;
  75     jstring label = NULL;
  76 
  77     try {
  78         LPCWSTR labelStr;
  79         DWORD style;
  80         DWORD exStyle = 0;
  81         jint x, y, height, width;
  82 
  83         if (env->EnsureLocalCapacity(2) < 0) {
  84             return NULL;
  85         }
  86 
  87         PDATA pData;
  88         AwtCanvas* awtParent;
  89 
  90         JNI_CHECK_PEER_GOTO(parent, done);
  91         awtParent = (AwtCanvas*)pData;

  92 
  93         target = env->GetObjectField(self, AwtObject::targetID);
  94         JNI_CHECK_NULL_GOTO(target, "target", done);
  95 
  96         c = new AwtButton();
  97 
  98         label = (jstring)env->GetObjectField(target, AwtButton::labelID);
  99 
 100         x = env->GetIntField(target, AwtComponent::xID);
 101         y = env->GetIntField(target, AwtComponent::yID);
 102         width = env->GetIntField(target, AwtComponent::widthID);
 103         height = env->GetIntField(target, AwtComponent::heightID);
 104 
 105         if (label == NULL) {
 106             labelStr = L"";
 107         } else {
 108             labelStr = JNU_GetStringPlatformChars(env, label, JNI_FALSE);
 109         }
 110         style = 0;
 111 


 357     if (cls == NULL) {
 358         return;
 359     }
 360     AwtButton::labelID = env->GetFieldID(cls, "label", "Ljava/lang/String;");
 361     DASSERT(AwtButton::labelID != NULL);
 362 
 363     CATCH_BAD_ALLOC;
 364 }
 365 
 366 /*
 367  * Class:     sun_awt_windows_WButtonPeer
 368  * Method:    setLabel
 369  * Signature: (Ljava/lang/String;)V
 370  */
 371 JNIEXPORT void JNICALL
 372 Java_sun_awt_windows_WButtonPeer_setLabel(JNIEnv *env, jobject self,
 373                                           jstring label)
 374 {
 375     TRY;
 376 



 377     SetLabelStruct *sls = new SetLabelStruct;
 378     sls->button = env->NewGlobalRef(self);
 379     sls->label = (label != NULL) ? (jstring)env->NewGlobalRef(label) : NULL;
 380 
 381     AwtToolkit::GetInstance().SyncCall(AwtButton::_SetLabel, sls);
 382     // global refs and sls are deleted in _SetLabel()
 383 
 384     CATCH_BAD_ALLOC;
 385 }
 386 
 387 /*
 388  * Class:     sun_awt_windows_WButtonPeer
 389  * Method:    create
 390  * Signature: (Lsun/awt/windows/WComponentPeer;)V
 391  */
 392 JNIEXPORT void JNICALL
 393 Java_sun_awt_windows_WButtonPeer_create(JNIEnv *env, jobject self,
 394                                         jobject parent)
 395 {
 396     TRY;
 397 



 398     AwtToolkit::CreateComponent(
 399         self, parent, (AwtToolkit::ComponentFactory)AwtButton::Create);


 400 
 401     CATCH_BAD_ALLOC;
 402 }
 403 
 404 }  /* extern "C" */
< prev index next >