#include #include #include #include #include #include #include #include CallbackData::ReturnType CalcDlg::initHandler(CallbackData &/*someCallbackData*/) { mlpGraphWindow=new GraphWindow(*this,Rect(3,254,558,146)); mlpCalcThread=new CalcThread(); mlpCalcSheet=new FPSheet(*this,360,(Factor-IssBal)+1,Rect(xPos,yPos,cxPos,cyPos),mFont); mlpCalcSheet->show(); setColumnTitles(); setColumnTypes(); return (CallbackData::ReturnType)FALSE; } CallbackData::ReturnType CalcDlg::destroyHandler(CallbackData &/*someCallbackData*/) { if(mlpCalcThread){delete mlpCalcThread;mlpCalcThread=0;} if(mlpCalcSheet){delete mlpCalcSheet;mlpCalcSheet=0;} if(mlpGraphWindow){delete mlpGraphWindow;mlpGraphWindow=0;} return (CallbackData::ReturnType)FALSE; } CallbackData::ReturnType CalcDlg::closeHandler(CallbackData &/*someCallbackData*/) { endDialog(TRUE); return (CallbackData::ReturnType)FALSE; } CallbackData::ReturnType CalcDlg::commandHandler(CallbackData &someCallbackData) { switch(someCallbackData.wmCommandID()) { case IDCANCEL : endDialog(FALSE); break; case IDOK : generateFlows(); break; case CALC_PREPAYMENTS : if(sendMessage(CALC_PREPAYMENTS,BM_GETCHECK,0,0L)) { handlePrepayments(); sendMessage(CALC_PREPAYMENTS,BM_SETCHECK,0,0L); } break; case CALC_TERM : break; case CALC_COUPON : break; case CALC_PRINCIPAL : break; case CALC_CALCULATE : generateFlows(); break; } return (CallbackData::ReturnType)FALSE; } void CalcDlg::setColumnTitles(void) { mlpCalcSheet->setColumnTitle(IssBal,String("IssBal")); mlpCalcSheet->setColumnTitle(SMM,String("SMM")); mlpCalcSheet->setColumnTitle(MtgPay,String("MtgPay")); mlpCalcSheet->setColumnTitle(NetIntPay,String("NetIntPay")); mlpCalcSheet->setColumnTitle(GrossInt,String("GrossInt")); mlpCalcSheet->setColumnTitle(SchPrn,String("SchPrn")); mlpCalcSheet->setColumnTitle(Prepay,String("Prepay")); mlpCalcSheet->setColumnTitle(TotPrin,String("TotPrin")); mlpCalcSheet->setColumnTitle(Cashflow,String("Cashflow")); mlpCalcSheet->setColumnTitle(Factor,String("Factor")); mlpCalcSheet->setColumnWidth(IssBal,9); mlpCalcSheet->setColumnWidth(GrossInt,9); mlpCalcSheet->setColumnWidth(Factor,9); } void CalcDlg::setColumnTypes(void) { Block columnTypes; columnTypes.insert(&ColumnType(IssBal,ColumnType::Money,"#########.##")); columnTypes.insert(&ColumnType(SMM,ColumnType::Float,"#.########")); columnTypes.insert(&ColumnType(MtgPay,ColumnType::Money,"#########.##")); columnTypes.insert(&ColumnType(NetIntPay,ColumnType::Money,"#########.##")); columnTypes.insert(&ColumnType(GrossInt,ColumnType::Money,"#########.##")); columnTypes.insert(&ColumnType(SchPrn,ColumnType::Money,"#########.##")); columnTypes.insert(&ColumnType(Prepay,ColumnType::Money,"#########.##")); columnTypes.insert(&ColumnType(TotPrin,ColumnType::Money,"#########.##")); columnTypes.insert(&ColumnType(Cashflow,ColumnType::Money,"#########.##")); columnTypes.insert(&ColumnType(Factor,ColumnType::Float,"#.#########")); mlpCalcSheet->setColumnType(columnTypes); } void CalcDlg::handlePrepayments(void) { PPYDlg ppyDlg; if(ppyDlg.createDialog(*this,mPrePay))generateFlows(); } void CalcDlg::generateFlows(void) { mlpCalcThread->startCalc(*this); }