41 */ 42 JNIEXPORT jboolean JNICALL Java_sun_awt_windows_WTaskbarPeer_nativeInit 43 (JNIEnv *env, jclass) 44 { 45 if (SUCCEEDED(::CoCreateInstance(CLSID_TaskbarList, NULL, 46 CLSCTX_INPROC_SERVER, IID_ITaskbarList, (LPVOID *)&m_Taskbar))) { 47 return JNI_TRUE; 48 } else { 49 return JNI_FALSE; 50 } 51 } 52 53 /* 54 * Class: sun_awt_windows_WTaskbarPeer 55 * Method: setProgressValue 56 * Signature: (JI)V 57 */ 58 JNIEXPORT void JNICALL Java_sun_awt_windows_WTaskbarPeer_setProgressValue 59 (JNIEnv *, jobject, jlong window, jint value) 60 { 61 m_Taskbar->SetProgressValue((HWND)window, value, 100); 62 } 63 64 65 66 /* 67 * Class: sun_awt_windows_WTaskbarPeer 68 * Method: setProgressState 69 * Signature: (JI)V 70 */ 71 JNIEXPORT void JNICALL Java_sun_awt_windows_WTaskbarPeer_setProgressState 72 (JNIEnv *env, jobject, jlong window, jobject state) 73 { 74 TBPFLAG flag = TBPF_NOPROGRESS; 75 76 static jmethodID nameMID = NULL; 77 if (!nameMID) { 78 jclass stateCls = env->FindClass("java/awt/Taskbar$State"); 79 CHECK_NULL(stateCls); 80 nameMID = env->GetMethodID(stateCls, "name", "()Ljava/lang/String;"); 81 CHECK_NULL(nameMID); 82 } 83 jstring value = (jstring) env->CallObjectMethod(state, nameMID); 84 CHECK_NULL(value); 85 const char* valueNative = env->GetStringUTFChars(value, 0); 86 if (valueNative) { 87 if (strcmp(valueNative, "OFF") == 0) { 88 flag = TBPF_NOPROGRESS; 89 } else if (strcmp(valueNative, "NORMAL") == 0) { 90 flag = TBPF_NORMAL; 91 } else if (strcmp(valueNative, "PAUSED") == 0) { 92 flag = TBPF_PAUSED; 93 } else if (strcmp(valueNative, "INDETERMINATE") == 0) { 94 flag = TBPF_INDETERMINATE; 95 } else if (strcmp(valueNative, "ERROR") == 0) { 96 flag = TBPF_ERROR; 97 } 98 env->ReleaseStringUTFChars(value, valueNative); 99 m_Taskbar->SetProgressState((HWND)window, flag); 100 } 101 } 102 103 /* 104 * Class: sun_awt_windows_WTaskbarPeer 105 * Method: flashWindow 106 * Signature: (JZ)V 107 */ 108 JNIEXPORT void JNICALL Java_sun_awt_windows_WTaskbarPeer_flashWindow 109 (JNIEnv *, jobject, jlong window) 110 { | 41 */ 42 JNIEXPORT jboolean JNICALL Java_sun_awt_windows_WTaskbarPeer_nativeInit 43 (JNIEnv *env, jclass) 44 { 45 if (SUCCEEDED(::CoCreateInstance(CLSID_TaskbarList, NULL, 46 CLSCTX_INPROC_SERVER, IID_ITaskbarList, (LPVOID *)&m_Taskbar))) { 47 return JNI_TRUE; 48 } else { 49 return JNI_FALSE; 50 } 51 } 52 53 /* 54 * Class: sun_awt_windows_WTaskbarPeer 55 * Method: setProgressValue 56 * Signature: (JI)V 57 */ 58 JNIEXPORT void JNICALL Java_sun_awt_windows_WTaskbarPeer_setProgressValue 59 (JNIEnv *, jobject, jlong window, jint value) 60 { 61 if (value < 0 || value > 100) { 62 m_Taskbar->SetProgressState((HWND)window, TBPF_NOPROGRESS); 63 } else { 64 m_Taskbar->SetProgressValue((HWND)window, value, 100); 65 } 66 } 67 68 69 70 /* 71 * Class: sun_awt_windows_WTaskbarPeer 72 * Method: setProgressState 73 * Signature: (JI)V 74 */ 75 JNIEXPORT void JNICALL Java_sun_awt_windows_WTaskbarPeer_setProgressState 76 (JNIEnv *env, jobject, jlong window, jobject state) 77 { 78 TBPFLAG flag = TBPF_NOPROGRESS; 79 80 static jmethodID nameMID = NULL; 81 if (!nameMID) { 82 jclass stateCls = env->FindClass("java/awt/Taskbar$State"); 83 CHECK_NULL(stateCls); 84 nameMID = env->GetMethodID(stateCls, "name", "()Ljava/lang/String;"); 85 CHECK_NULL(nameMID); 86 } 87 jstring value = (jstring) env->CallObjectMethod(state, nameMID); 88 CHECK_NULL(value); 89 const char* valueNative = env->GetStringUTFChars(value, 0); 90 if (valueNative) { 91 if (strcmp(valueNative, "OFF") == 0) { 92 flag = TBPF_NOPROGRESS; 93 } else if (strcmp(valueNative, "NORMAL") == 0) { 94 flag = TBPF_NORMAL; 95 96 // Switching from TBPF_INDETERMINATE to TBPF_NORMAL has no effect 97 m_Taskbar->SetProgressState((HWND)window, TBPF_PAUSED); 98 } else if (strcmp(valueNative, "PAUSED") == 0) { 99 flag = TBPF_PAUSED; 100 } else if (strcmp(valueNative, "INDETERMINATE") == 0) { 101 flag = TBPF_INDETERMINATE; 102 } else if (strcmp(valueNative, "ERROR") == 0) { 103 flag = TBPF_ERROR; 104 } 105 env->ReleaseStringUTFChars(value, valueNative); 106 m_Taskbar->SetProgressState((HWND)window, flag); 107 } 108 } 109 110 /* 111 * Class: sun_awt_windows_WTaskbarPeer 112 * Method: flashWindow 113 * Signature: (JZ)V 114 */ 115 JNIEXPORT void JNICALL Java_sun_awt_windows_WTaskbarPeer_flashWindow 116 (JNIEnv *, jobject, jlong window) 117 { |