INT_PTR CALLBACK __stopProperty()

in src/native/windows/apps/prunmgr/prunmgr.c [1420:1579]


INT_PTR CALLBACK __stopProperty(HWND hDlg,
                                UINT uMessage,
                                WPARAM wParam,
                                LPARAM lParam)
{
    LPPSHNOTIFY lpShn;
    LPWSTR      lpBuf, b;
    DWORD       v;

    switch (uMessage) {
        case WM_INITDIALOG:
            {
                startPage = 5;
                if (!bpropCentered)
                    apxCenterWindow(GetParent(hDlg), NULL);
                bpropCentered = TRUE;

                ComboBox_AddStringW(GetDlgItem(hDlg, IDC_PPSMODE), L"exe");
                ComboBox_AddStringW(GetDlgItem(hDlg, IDC_PPSMODE), L"jvm");
                ComboBox_AddStringW(GetDlgItem(hDlg, IDC_PPSMODE), _s_java);

                if ((lpBuf = apxRegistryGetStringW(hRegserv, APXREG_PARAMSOFTWARE,
                                                   _s_stop, L"Class")) != NULL) {
                    SetDlgItemTextW(hDlg, IDC_PPSCLASS, lpBuf);
                    apxFree(lpBuf);
                }
                if ((lpBuf = apxRegistryGetStringW(hRegserv, APXREG_PARAMSOFTWARE,
                                                   _s_stop, L"Image")) != NULL) {
                    SetDlgItemTextW(hDlg, IDC_PPSIMAGE, lpBuf);
                    apxFree(lpBuf);
                }
                if ((lpBuf = apxRegistryGetStringW(hRegserv, APXREG_PARAMSOFTWARE,
                                                   _s_stop, L"WorkingPath")) != NULL) {
                    SetDlgItemTextW(hDlg, IDC_PPSWPATH, lpBuf);
                    apxFree(lpBuf);
                }
                if ((lpBuf = apxRegistryGetStringW(hRegserv, APXREG_PARAMSOFTWARE,
                                                   _s_stop, L"Method")) != NULL) {
                    SetDlgItemTextW(hDlg, IDC_PPSMETHOD, lpBuf);
                    apxFree(lpBuf);
                }
                if ((lpBuf = apxRegistryGetMzStrW(hRegserv, APXREG_PARAMSOFTWARE,
                                               _s_stop, L"Params", NULL, NULL)) != NULL) {
                    b = apxMszToCRLFW(hPool, lpBuf);
                    SetDlgItemTextW(hDlg, IDC_PPSARGS, b);
                    apxFree(lpBuf);
                    apxFree(b);
                }
                v = apxRegistryGetNumberW(hRegserv, APXREG_PARAMSOFTWARE,
                                          _s_stop, L"Timeout");
                {
                    CHAR bn[32];
                    wsprintfA(bn, "%d", v);
                    SetDlgItemTextA(hDlg, IDC_PPSTIMEOUT, bn);
                }
                if ((lpBuf = apxRegistryGetStringW(hRegserv, APXREG_PARAMSOFTWARE,
                                                   _s_stop, L"Mode")) != NULL) {
                    if (!lstrcmpiW(lpBuf, L"jvm")) {
                        ComboBox_SetCurSel(GetDlgItem(hDlg, IDC_PPSMODE), 1);

                    }
                    else if (!lstrcmpiW(lpBuf, _s_java)) {
                        ComboBox_SetCurSel(GetDlgItem(hDlg, IDC_PPSMODE), 2);
                        EnableWindow(GetDlgItem(hDlg, IDC_PPSMETHOD), FALSE);
                    }
                    else {
                        ComboBox_SetCurSel(GetDlgItem(hDlg, IDC_PPSMODE), 0);
                        EnableWindow(GetDlgItem(hDlg, IDC_PPSCLASS), FALSE);
                        EnableWindow(GetDlgItem(hDlg, IDC_PPSIMAGE), TRUE);
                        EnableWindow(GetDlgItem(hDlg, IDC_PPSBIMAGE), TRUE);
                        EnableWindow(GetDlgItem(hDlg, IDC_PPSMETHOD), FALSE);
                    }
                    apxFree(lpBuf);
                }
            }
        break;
        case WM_COMMAND:
            switch (LOWORD(wParam)) {
                case IDC_PPSBWPATH:
                    lpBuf = apxBrowseForFolderW(hDlg, apxLoadResourceW(IDS_PPWPATH, 0));
                    if (lpBuf) {
                        SetDlgItemTextW(hDlg, IDC_PPSWPATH, lpBuf);
                        apxFree(lpBuf);
                        PropSheet_Changed(GetParent(hDlg), hDlg);
                        SET_BIT_FLAG(_propertyChanged, 6);
                    }
                break;
                case IDC_PPSBIMAGE:
                    lpBuf = apxGetFileNameW(hDlg, apxLoadResourceW(IDS_PPIMAGE, 0),
                                            apxLoadResourceW(IDS_EXEFILES, 1), NULL,
                                            NULL, TRUE, NULL);
                    if (lpBuf) {
                        SetDlgItemTextW(hDlg, IDC_PPSIMAGE, lpBuf);
                        apxFree(lpBuf);
                        PropSheet_Changed(GetParent(hDlg), hDlg);
                        SET_BIT_FLAG(_propertyChanged, 6);
                    }
                break;
                case IDC_PPSCLASS:
                case IDC_PPSMETHOD:
                case IDC_PPSTIMEOUT:
                case IDC_PPSARGS:
                case IDC_PPSIMAGE:
                case IDC_PPSWPATH:
                    if (HIWORD(wParam) == EN_CHANGE) {
                        PropSheet_Changed(GetParent(hDlg), hDlg);
                        SET_BIT_FLAG(_propertyChanged, 6);
                    }
                break;
                case IDC_PPSMODE:
                    if (HIWORD(wParam) == CBN_SELCHANGE) {
                    	int i;
                    	PropSheet_Changed(GetParent(hDlg), hDlg);
                        SET_BIT_FLAG(_propertyChanged, 6);
                        i = ComboBox_GetCurSel(GetDlgItem(hDlg, IDC_PPSMODE));
                        if (i == 0) {
                            EnableWindow(GetDlgItem(hDlg, IDC_PPSCLASS), FALSE);
                            EnableWindow(GetDlgItem(hDlg, IDC_PPSIMAGE), TRUE);
                            EnableWindow(GetDlgItem(hDlg, IDC_PPSBIMAGE), TRUE);
                            EnableWindow(GetDlgItem(hDlg, IDC_PPSMETHOD), FALSE);
                        }
                        else if (i == 1) {
                            EnableWindow(GetDlgItem(hDlg, IDC_PPSCLASS), TRUE);
                            EnableWindow(GetDlgItem(hDlg, IDC_PPSIMAGE), FALSE);
                            EnableWindow(GetDlgItem(hDlg, IDC_PPSBIMAGE), FALSE);
                            EnableWindow(GetDlgItem(hDlg, IDC_PPSMETHOD), TRUE);
                        } else {
                            EnableWindow(GetDlgItem(hDlg, IDC_PPSCLASS), TRUE);
                            EnableWindow(GetDlgItem(hDlg, IDC_PPSIMAGE), FALSE);
                            EnableWindow(GetDlgItem(hDlg, IDC_PPSBIMAGE), FALSE);
                            EnableWindow(GetDlgItem(hDlg, IDC_PPSMETHOD), FALSE);
                        }

                    }
                break;

            }
        break;
        case WM_NOTIFY:
            lpShn = (LPPSHNOTIFY )lParam;
            switch (lpShn->hdr.code) {
                case PSN_APPLY:   /* sent when OK or Apply button pressed */
                    if (__generalStopSave(hDlg))
                        PropSheet_UnChanged(GetParent(hDlg), hDlg);
                    else {
                        SET_BIT_FLAG(_propertyChanged, 6);
                        SetWindowLong(hDlg, DWLP_MSGRESULT,
                                      PSNRET_INVALID_NOCHANGEPAGE);
                        return TRUE;
                    }

                break;
            }
        break;

        default:
        break;
    }
    return FALSE;
}