#include #include #include #include RangeEditDialog::RangeEditDialog(void) { mInitHandler.setCallback(this,&RangeEditDialog::initHandler); mCreateHandler.setCallback(this,&RangeEditDialog::createHandler); mCloseHandler.setCallback(this,&RangeEditDialog::closeHandler); mDestroyHandler.setCallback(this,&RangeEditDialog::destroyHandler); mCommandHandler.setCallback(this,&RangeEditDialog::commandHandler); insertHandler(VectorHandler::InitDialogHandler,&mInitHandler); insertHandler(VectorHandler::CreateHandler,&mCreateHandler); insertHandler(VectorHandler::CloseHandler,&mCloseHandler); insertHandler(VectorHandler::CommandHandler,&mCommandHandler); insertHandler(VectorHandler::DestroyHandler,&mDestroyHandler); } RangeEditDialog::RangeEditDialog(const RangeEditDialog &someRangeEditDialog) { // private implementation *this=someRangeEditDialog; } RangeEditDialog::~RangeEditDialog() { removeHandler(VectorHandler::InitDialogHandler,&mInitHandler); removeHandler(VectorHandler::CreateHandler,&mCreateHandler); removeHandler(VectorHandler::CloseHandler,&mCloseHandler); removeHandler(VectorHandler::CommandHandler,&mCommandHandler); removeHandler(VectorHandler::DestroyHandler,&mDestroyHandler); } RangeEditDialog &RangeEditDialog::operator=(const RangeEditDialog &someRangeEditDialog) { // private implementation return *this; } bool RangeEditDialog::perform(GUIWindow &parentWindow,const Range &range,int maxRange) { mRange=range; mMaxRange=maxRange; return ::DialogBoxParam(processInstance(),(LPSTR)"RANGEEDITDIALOG",(HWND)parentWindow,DWindow::DlgProc,(LPARAM)(DWindow*)this); } CallbackData::ReturnType RangeEditDialog::initHandler(CallbackData &someCallbackData) { if(mRange.getRangeName().isNull()&&!mRange.getBeginRange()&&!mRange.getEndRange())setCaption("Insert Range"); setData(); return (CallbackData::ReturnType)false; } CallbackData::ReturnType RangeEditDialog::createHandler(CallbackData &someCallbackData) { return (CallbackData::ReturnType)FALSE; } CallbackData::ReturnType RangeEditDialog::closeHandler(CallbackData &someCallbackData) { return (CallbackData::ReturnType)FALSE; } CallbackData::ReturnType RangeEditDialog::destroyHandler(CallbackData &someCallbackData) { return (CallbackData::ReturnType)FALSE; } CallbackData::ReturnType RangeEditDialog::commandHandler(CallbackData &someCallbackData) { switch(someCallbackData.wmCommandID()) { case IDCANCEL : endDialog(false); break; case IDOK : getData(); if(!isValid())errorMessage(); else endDialog(true); break; } return (CallbackData::ReturnType)FALSE; } void RangeEditDialog::setData(void)const { setText(RANGEEDIT_NAME,mRange.getRangeName()); setText(RANGEEDIT_BEGIN,String().fromInt(mRange.getBeginRange())); setText(RANGEEDIT_END,String().fromInt(mRange.getEndRange())); } void RangeEditDialog::getData(void) { String strName; String strBegin; String strEnd; getText(RANGEEDIT_NAME,strName); mRange.setRangeName(strName); getText(RANGEEDIT_BEGIN,strBegin); mRange.setBeginRange(strBegin.toInt()); getText(RANGEEDIT_END,strEnd); mRange.setEndRange(strEnd.toInt()); } bool RangeEditDialog::isValid(void) { if(mRange.getRangeName().isNull()) { mLastError="Range name cannot be empty."; return false; } if(mRange.getBeginRange()<0) { mLastError="Begin range position must be greater than zero."; return false; } if(mRange.getBeginRange()>mRange.getEndRange()) { mLastError="Begin range position must be smaller than end range position."; return false; } if(mRange.getEndRange()>=mMaxRange) { mLastError="End range position must be less than "+String().fromInt(mMaxRange); return false; } return true; } void RangeEditDialog::errorMessage(void) { MessageBox::messageBox(*this,"Invalid range.",mLastError.str()); }