src/windows/native/sun/windows/awt_FileDialog.cpp

Print this page




 355             if (dlgerr == FNERR_INVALIDFILENAME) {
 356                 _tcscpy(fileBuffer, TEXT(""));
 357                 if (mode == java_awt_FileDialog_LOAD) {
 358                     result = AwtFileDialog::GetOpenFileName(&ofn);
 359                 } else {
 360                     result = AwtFileDialog::GetSaveFileName(&ofn);
 361                 }
 362             }
 363         }
 364 
 365         AwtDialog::CheckUninstallModalHook();
 366 
 367         DASSERT(env->GetLongField(peer, AwtComponent::hwndID) == 0L);
 368 
 369         AwtDialog::ModalActivateNextWindow(NULL, target, peer);
 370 
 371         VERIFY(::SetCurrentDirectory(currentDirectory));
 372 
 373         // Report result to peer.
 374         if (result) {
 375             jint length = (jint)GetBufferLength(ofn.lpstrFile, ofn.nMaxFile);


 376             jcharArray jnames = env->NewCharArray(length);
 377             env->SetCharArrayRegion(jnames, 0, length, (jchar*)ofn.lpstrFile);
 378 
 379             env->CallVoidMethod(peer, AwtFileDialog::handleSelectedMID, jnames);
 380             env->DeleteLocalRef(jnames);
 381         } else {
 382             env->CallVoidMethod(peer, AwtFileDialog::handleCancelMID);
 383         }
 384         DASSERT(!safe_ExceptionOccurred(env));
 385     } catch (...) {
 386 
 387         env->DeleteLocalRef(target);
 388         env->DeleteLocalRef(parent);
 389         env->DeleteLocalRef(title);
 390         env->DeleteLocalRef(directory);
 391         env->DeleteLocalRef(file);
 392         env->DeleteLocalRef(fileFilter);
 393         env->DeleteGlobalRef(peer);
 394 
 395         delete[] currentDirectory;




 355             if (dlgerr == FNERR_INVALIDFILENAME) {
 356                 _tcscpy(fileBuffer, TEXT(""));
 357                 if (mode == java_awt_FileDialog_LOAD) {
 358                     result = AwtFileDialog::GetOpenFileName(&ofn);
 359                 } else {
 360                     result = AwtFileDialog::GetSaveFileName(&ofn);
 361                 }
 362             }
 363         }
 364 
 365         AwtDialog::CheckUninstallModalHook();
 366 
 367         DASSERT(env->GetLongField(peer, AwtComponent::hwndID) == 0L);
 368 
 369         AwtDialog::ModalActivateNextWindow(NULL, target, peer);
 370 
 371         VERIFY(::SetCurrentDirectory(currentDirectory));
 372 
 373         // Report result to peer.
 374         if (result) {
 375             jint length = multipleMode
 376                     ? (jint)GetBufferLength(ofn.lpstrFile, ofn.nMaxFile)
 377                     : (jint)_tcslen(ofn.lpstrFile);
 378             jcharArray jnames = env->NewCharArray(length);
 379             env->SetCharArrayRegion(jnames, 0, length, (jchar*)ofn.lpstrFile);
 380 
 381             env->CallVoidMethod(peer, AwtFileDialog::handleSelectedMID, jnames);
 382             env->DeleteLocalRef(jnames);
 383         } else {
 384             env->CallVoidMethod(peer, AwtFileDialog::handleCancelMID);
 385         }
 386         DASSERT(!safe_ExceptionOccurred(env));
 387     } catch (...) {
 388 
 389         env->DeleteLocalRef(target);
 390         env->DeleteLocalRef(parent);
 391         env->DeleteLocalRef(title);
 392         env->DeleteLocalRef(directory);
 393         env->DeleteLocalRef(file);
 394         env->DeleteLocalRef(fileFilter);
 395         env->DeleteGlobalRef(peer);
 396 
 397         delete[] currentDirectory;