INT_PTR CALLBACK __startProperty()

in src/native/windows/apps/prunmgr/prunmgr.c [1270:1418]


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

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

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

                if ((lpBuf = apxRegistryGetStringW(hRegserv, APXREG_PARAMSOFTWARE,
                                                   _s_start, L"Class")) != NULL) {
                    SetDlgItemTextW(hDlg, IDC_PPRCLASS, lpBuf);
                    apxFree(lpBuf);
                }
                if ((lpBuf = apxRegistryGetStringW(hRegserv, APXREG_PARAMSOFTWARE,
                                                   _s_start, L"Image")) != NULL) {
                    SetDlgItemTextW(hDlg, IDC_PPRIMAGE, lpBuf);
                    apxFree(lpBuf);
                }
                if ((lpBuf = apxRegistryGetStringW(hRegserv, APXREG_PARAMSOFTWARE,
                                                   _s_start, L"WorkingPath")) != NULL) {
                    SetDlgItemTextW(hDlg, IDC_PPRWPATH, lpBuf);
                    apxFree(lpBuf);
                }
                if ((lpBuf = apxRegistryGetStringW(hRegserv, APXREG_PARAMSOFTWARE,
                                                   _s_start, L"Method")) != NULL) {
                    SetDlgItemTextW(hDlg, IDC_PPRMETHOD, lpBuf);
                    apxFree(lpBuf);
                }
                if ((lpBuf = apxRegistryGetMzStrW(hRegserv, APXREG_PARAMSOFTWARE,
                                               _s_start, L"Params", NULL, NULL)) != NULL) {
                    b = apxMszToCRLFW(hPool, lpBuf);
                    SetDlgItemTextW(hDlg, IDC_PPRARGS, b);
                    apxFree(lpBuf);
                    apxFree(b);
                }
                if ((lpBuf = apxRegistryGetStringW(hRegserv, APXREG_PARAMSOFTWARE,
                                                   _s_start, L"Mode")) != NULL) {
                    if (!lstrcmpiW(lpBuf, L"jvm")) {
                        ComboBox_SetCurSel(GetDlgItem(hDlg, IDC_PPRMODE), 1);
                    }
                    else if (!lstrcmpiW(lpBuf, _s_java)) {
                        ComboBox_SetCurSel(GetDlgItem(hDlg, IDC_PPRMODE), 2);
                        EnableWindow(GetDlgItem(hDlg, IDC_PPRMETHOD), FALSE);
                    }
                    else {
                        ComboBox_SetCurSel(GetDlgItem(hDlg, IDC_PPRMODE), 0);
                        EnableWindow(GetDlgItem(hDlg, IDC_PPRCLASS), FALSE);
                        EnableWindow(GetDlgItem(hDlg, IDC_PPRIMAGE), TRUE);
                        EnableWindow(GetDlgItem(hDlg, IDC_PPRBIMAGE), TRUE);
                        EnableWindow(GetDlgItem(hDlg, IDC_PPRMETHOD), FALSE);
                    }
                    apxFree(lpBuf);
                }
            }
        break;
        case WM_COMMAND:
            switch (LOWORD(wParam)) {
                case IDC_PPRBWPATH:
                    lpBuf = apxBrowseForFolderW(hDlg, apxLoadResourceW(IDS_PPWPATH, 0));
                    if (lpBuf) {
                        SetDlgItemTextW(hDlg, IDC_PPRWPATH, lpBuf);
                        apxFree(lpBuf);
                        PropSheet_Changed(GetParent(hDlg), hDlg);
                        SET_BIT_FLAG(_propertyChanged, 5);
                    }
                break;
                case IDC_PPRBIMAGE:
                    lpBuf = apxGetFileNameW(hDlg, apxLoadResourceW(IDS_PPIMAGE, 0),
                                            apxLoadResourceW(IDS_EXEFILES, 1), NULL,
                                            NULL, TRUE, NULL);
                    if (lpBuf) {
                        SetDlgItemTextW(hDlg, IDC_PPRIMAGE, lpBuf);
                        apxFree(lpBuf);
                        PropSheet_Changed(GetParent(hDlg), hDlg);
                        SET_BIT_FLAG(_propertyChanged, 5);
                    }
                break;
                case IDC_PPRCLASS:
                case IDC_PPRMETHOD:
                case IDC_PPRARGS:
                case IDC_PPRIMAGE:
                case IDC_PPRWPATH:
                    if (HIWORD(wParam) == EN_CHANGE) {
                        PropSheet_Changed(GetParent(hDlg), hDlg);
                        SET_BIT_FLAG(_propertyChanged, 5);
                    }
                break;
                case IDC_PPRMODE:
                    if (HIWORD(wParam) == CBN_SELCHANGE) {
                    	int i;
                        PropSheet_Changed(GetParent(hDlg), hDlg);
                        SET_BIT_FLAG(_propertyChanged, 5);
                        i = ComboBox_GetCurSel(GetDlgItem(hDlg, IDC_PPRMODE));
                        if (i == 0) {
                            EnableWindow(GetDlgItem(hDlg, IDC_PPRCLASS), FALSE);
                            EnableWindow(GetDlgItem(hDlg, IDC_PPRIMAGE), TRUE);
                            EnableWindow(GetDlgItem(hDlg, IDC_PPRBIMAGE), TRUE);
                            EnableWindow(GetDlgItem(hDlg, IDC_PPRMETHOD), FALSE);
                        }
                        else if (i == 1) {
                            EnableWindow(GetDlgItem(hDlg, IDC_PPRCLASS), TRUE);
                            EnableWindow(GetDlgItem(hDlg, IDC_PPRIMAGE), FALSE);
                            EnableWindow(GetDlgItem(hDlg, IDC_PPRBIMAGE), FALSE);
                            EnableWindow(GetDlgItem(hDlg, IDC_PPRMETHOD), TRUE);
                        } else {
                            EnableWindow(GetDlgItem(hDlg, IDC_PPRCLASS), TRUE);
                            EnableWindow(GetDlgItem(hDlg, IDC_PPRIMAGE), FALSE);
                            EnableWindow(GetDlgItem(hDlg, IDC_PPRBIMAGE), FALSE);
                            EnableWindow(GetDlgItem(hDlg, IDC_PPRMETHOD), FALSE);
                        }
                    }
                break;

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

                break;
            }
        break;

        default:
        break;
    }
    return FALSE;
}