#include #include #include #include #include #include #include RangeDialog::RangeDialog(void) { mInitHandler.setCallback(this,&RangeDialog::initHandler); mCreateHandler.setCallback(this,&RangeDialog::createHandler); mCloseHandler.setCallback(this,&RangeDialog::closeHandler); mDestroyHandler.setCallback(this,&RangeDialog::destroyHandler); mCommandHandler.setCallback(this,&RangeDialog::commandHandler); insertHandler(VectorHandler::InitDialogHandler,&mInitHandler); insertHandler(VectorHandler::CreateHandler,&mCreateHandler); insertHandler(VectorHandler::CloseHandler,&mCloseHandler); insertHandler(VectorHandler::CommandHandler,&mCommandHandler); insertHandler(VectorHandler::DestroyHandler,&mDestroyHandler); } RangeDialog::RangeDialog(const RangeDialog &someRangeDialog) { // private implementation *this=someRangeDialog; } RangeDialog::~RangeDialog() { removeHandler(VectorHandler::InitDialogHandler,&mInitHandler); removeHandler(VectorHandler::CreateHandler,&mCreateHandler); removeHandler(VectorHandler::CloseHandler,&mCloseHandler); removeHandler(VectorHandler::CommandHandler,&mCommandHandler); removeHandler(VectorHandler::DestroyHandler,&mDestroyHandler); } RangeDialog &RangeDialog::operator=(const RangeDialog &someRangeDialog) { // private implementation return *this; } bool RangeDialog::perform(GUIWindow &parentWindow,const TabRanges &ranges,int maxRange,bool isSelect) { Rect clientRect; parentWindow.clientRect(clientRect); mDisplayPoint.x((clientRect.right()-clientRect.left())/2); mDisplayPoint.y((clientRect.bottom()-clientRect.top())/2); mTabRanges=ranges; mMaxRange=maxRange; mIsSelection=isSelect; return ::DialogBoxParam(processInstance(),(LPSTR)"RANGEDIALOG",(HWND)parentWindow,DWindow::DlgProc,(LPARAM)(DWindow*)this); } CallbackData::ReturnType RangeDialog::initHandler(CallbackData &someCallbackData) { Block stops; mDisplayPoint.x(mDisplayPoint.x()-(width()/2)); mDisplayPoint.y(mDisplayPoint.y()-(height()/2)); move(mDisplayPoint); mRangeList=::new OwnerDrawListAltColor(*this,getItem(RANGE_LIST),RANGE_LIST); mRangeList.disposition(PointerDisposition::Delete); stops.insert(&PureDWORD(35)); stops.insert(&PureDWORD(55)); mRangeList->setTabStops(stops); setRangeList(); if(mIsSelection) { enable(RANGE_INSERT,false); enable(RANGE_DELETE,false); setCaption("Range Select"); } return (CallbackData::ReturnType)false; } CallbackData::ReturnType RangeDialog::createHandler(CallbackData &someCallbackData) { return (CallbackData::ReturnType)FALSE; } CallbackData::ReturnType RangeDialog::closeHandler(CallbackData &someCallbackData) { return (CallbackData::ReturnType)FALSE; } CallbackData::ReturnType RangeDialog::destroyHandler(CallbackData &someCallbackData) { return (CallbackData::ReturnType)FALSE; } CallbackData::ReturnType RangeDialog::commandHandler(CallbackData &someCallbackData) { switch(someCallbackData.wmCommandID()) { case IDCANCEL : endDialog(false); break; case IDOK : if(mIsSelection)handleRangeSelection(); endDialog(true); break; case RANGE_INSERT : handleRangeInsert(); break; case RANGE_DELETE : handleRangeDelete(); break; } if(LBN_DBLCLK==someCallbackData.wmCommandCommand()) { if(mIsSelection) { handleRangeSelection(); endDialog(true); } else handleRangeEditSelection(); } return (CallbackData::ReturnType)FALSE; } void RangeDialog::setRangeList(void) { for(int index=0;indexaddString(range.toTabbedString()); } mRangeList->setCurrent(0); return; } void RangeDialog::handleRangeSelection(void) { mSelection=mRangeList->getCurrent(); } void RangeDialog::handleRangeEditSelection(void) { RangeEditDialog rangeEditDialog; int currSel; currSel=mRangeList->getCurrent(); if(!rangeEditDialog.perform(*this,mTabRanges[currSel],mMaxRange))return; Range range=rangeEditDialog.getRange(); mTabRanges.remove(currSel); mTabRanges.insert(&range); mRangeList->deleteString(currSel); mRangeList->insertString(range.toTabbedString()); } void RangeDialog::handleRangeInsert(void) { RangeEditDialog rangeEditDialog; Range range; if(!rangeEditDialog.perform(*this,range,mMaxRange))return; range=rangeEditDialog.getRange(); mTabRanges.insert(&range); mRangeList->insertString(range.toTabbedString()); } void RangeDialog::handleRangeDelete(void) { int currSel; if(-1==(currSel=mRangeList->getCurrent()))return; if(IDCANCEL==MessageBox::messageBox(*this,"Confirm Delete","Delete Range Item"))return; mRangeList->deleteString(currSel); mTabRanges.remove(currSel); currSel--; if(currSel<0)mRangeList->setCurrent(0); else mRangeList->setCurrent(currSel); }