|
//------------------------------------------------------------------------------
// $Workfile: TreeInserter.cpp $
// $Header: /SbjDev/SbjCore/TreeInserter.cpp 2 11/12/08 2:22p Steve $
//
// Copyright � 2008 SbjCat
// All rights reserved.
//
//
// *** Authors ***
// Steve Johnson
//
// $Revision: 2 $
//
//-----------------------------------------------------------------------------
#include "StdAfx.h"
#include "TreeInserter.h"
#include "TreeInsertHandler.h"
#include "TreeController.h"
#include "TreeItemController.h"
#include <stack>
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
namespace SbjCore
{
namespace Mvc
{
namespace TreeView
{
struct InserterImpl
{
Controller* pTheTreeController;
std::stack<HTREEITEM> htiParents;
int nExpandLevel;
int nCurLevel;
ItemController* pTheFirstInsertion;
HTREEITEM htiAfter;
InserterImpl(Controller* p, HTREEITEM htiParent, HTREEITEM htiA) :
pTheTreeController(p),
nExpandLevel(p->GetExpandLevels()),
nCurLevel(0),
pTheFirstInsertion(NULL),
htiAfter(htiA)
{
htiParents.push(htiParent);
}
~InserterImpl()
{
}
};
Inserter::Inserter(const SbjCore::Mvc::Model::Controller* pModelCtrlr, Controller* pCtrlr, HTREEITEM htiParent /*= TVI_ROOT*/, HTREEITEM htiAfter /*= TVI_LAST*/) :
SbjCore::Mvc::Model::Action(pModelCtrlr, NULL, RUNTIME_CLASS(InsertHandler)),
m_pImpl(new InserterImpl(pCtrlr, htiParent, htiAfter))
{
}
Inserter::~Inserter()
{
try
{
delete m_pImpl;
}
catch (...)
{
ASSERT(FALSE);
}
}
Controller* Inserter::GetTreeController()
{
return m_pImpl->pTheTreeController;
}
void Inserter::SetFirstInsertion(ItemController* p)
{
m_pImpl->pTheFirstInsertion = p;
}
ItemController* Inserter::GetFirstInsertion()
{
return m_pImpl->pTheFirstInsertion;
}
HTREEITEM Inserter::GetCurParent()
{
return m_pImpl->htiParents.top();
}
void Inserter::PushParent(HTREEITEM hti)
{
m_pImpl->htiParents.push(hti);
}
void Inserter::PopParent()
{
m_pImpl->htiParents.pop();
}
void Inserter::IncLevel()
{
m_pImpl->nCurLevel++;
}
void Inserter::DecLevel()
{
m_pImpl->nCurLevel--;
}
bool Inserter::ExpandParent() const
{
return (m_pImpl->nCurLevel < m_pImpl->nExpandLevel);
}
HTREEITEM Inserter::GetItemAfter() const
{
return m_pImpl->htiAfter;
}
}
}
}
//*** Modification History ***
// $Log: /SbjDev/SbjCore/TreeInserter.cpp $
//
// 2 11/12/08 2:22p Steve
// Finished Generalization of Model v2.0.1
//
// 1 10/29/08 11:42a Steve
//
// 4 10/14/08 1:12p Steve
// Implemented Deletes
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.
Real name is Steve Johnson. Programming since 1979. Started on a Heathkit Micro with a DEC LSI-11 and UCSD Pascal. Moved to PCs & DOS as soon as Turbo Pascal became available. Did some Assembly, ISR, TSR etc. All this while working for a Manufacturing Co. for 8 years. Had my own solo Co. doing barcode labeling software for 4 years (terrible business man, all I wanted to do was code). Since then working for various software companies. Moved to Windows around the time of 3.1 with Borland C then C++. Then on to VC++ and MFC, and just about anything I could get my hands on or had to learn for my job, and been at it ever since. Of course recently I've been playing with .NET, ASP, C#, WPF etc.