123 lines
3.3 KiB
C++
123 lines
3.3 KiB
C++
#include <imagelst/ftree.hpp>
|
|
#include <imagelst/tvmsghdr.hpp>
|
|
#include <imagelst/tvdisp.hpp>
|
|
#include <imagelst/tvkey.hpp>
|
|
#include <common/window.hpp>
|
|
#include <common/dwindow.hpp>
|
|
#include <common/rect.hpp>
|
|
|
|
FolderTree::FolderTree(GUIWindow &parentWindow,const Rect &winRect,int controlID,RGBColor bkColor)
|
|
: TreeView(parentWindow,winRect,controlID,TreeView::TreeHasLines|TreeView::TreeHasButtons|TreeView::TreeLinesAtRoot|TreeView::TreeShowSelAlways),
|
|
ImageList(parentWindow.processInstance(),"LIST",16,RGBColor(0,0,255))
|
|
{
|
|
setBkColor(bkColor);
|
|
setImageList(*this);
|
|
initHandlers();
|
|
}
|
|
|
|
FolderTree::~FolderTree()
|
|
{
|
|
}
|
|
|
|
void FolderTree::insertHandler(HandlerType handlerType,PureCallback *lpCallback)
|
|
{
|
|
mEventHandlers[(int)handlerType]=CallbackPointer(lpCallback);
|
|
}
|
|
|
|
void FolderTree::removeHandler(HandlerType handlerType)
|
|
{
|
|
mEventHandlers[(int)handlerType]=CallbackPointer();
|
|
}
|
|
|
|
void FolderTree::callHandler(HandlerType handlerType,CallbackData &someCallbackData)
|
|
{
|
|
mEventHandlers[(int)handlerType].callback(someCallbackData);
|
|
}
|
|
|
|
void FolderTree::initHandlers(void)
|
|
{
|
|
for(int handlerIndex=0;handlerIndex<=KeyDownHandler;handlerIndex++)
|
|
mEventHandlers.insert(&CallbackPointer());
|
|
}
|
|
|
|
// virual overloads
|
|
|
|
WORD FolderTree::tvnSelChanging(const TreeViewMessageHeader &treeViewMessageHeader)
|
|
{
|
|
CallbackData callbackData(0,treeViewMessageHeader.itemOld().lParam());
|
|
callHandler(SelChangingHandler,callbackData);
|
|
return FALSE;
|
|
}
|
|
|
|
WORD FolderTree::tvnSelChanged(const TreeViewMessageHeader &treeViewMessageHeader)
|
|
{
|
|
CallbackData callbackData(0,treeViewMessageHeader.itemNew().lParam());
|
|
callHandler(SelChangedHandler,callbackData);
|
|
return FALSE;
|
|
}
|
|
|
|
WORD FolderTree::tvnItemExpanding(const TreeViewMessageHeader &treeViewMessageHeader)
|
|
{
|
|
CallbackData callbackData(0,(LPARAM)&treeViewMessageHeader);
|
|
callHandler(ItemExpandingHandler,callbackData);
|
|
return FALSE;
|
|
}
|
|
|
|
WORD FolderTree::tvnItemExpanded(const TreeViewMessageHeader &treeViewMessageHeader)
|
|
{
|
|
CallbackData callbackData(0,(LPARAM)&treeViewMessageHeader);
|
|
callHandler(ItemExpandedHandler,callbackData);
|
|
return FALSE;
|
|
}
|
|
|
|
WORD FolderTree::tvnGetDispInfo(TreeViewDisplayInfo &treeViewDisplayInfo)
|
|
{
|
|
TreeViewItem tvItem(treeViewDisplayInfo.item());
|
|
|
|
if(treeViewDisplayInfo.item().state()&TVIS_EXPANDED)
|
|
{tvItem.image(FolderOpen);tvItem.selectedImage(FolderOpen);}
|
|
else
|
|
{tvItem.image(FolderClosed);tvItem.selectedImage(FolderClosed);}
|
|
treeViewDisplayInfo.item(tvItem);
|
|
return TRUE;
|
|
}
|
|
|
|
WORD FolderTree::tvnSetDispInfo(TreeViewDisplayInfo &/*treeViewDisplayInfo*/)
|
|
{
|
|
return FALSE;
|
|
}
|
|
|
|
WORD FolderTree::tvnBeginDrag(const TreeViewMessageHeader &treeViewMessageHeader)
|
|
{
|
|
CallbackData callbackData(0,(LPARAM)&treeViewMessageHeader);
|
|
callHandler(BeginDragHandler,callbackData);
|
|
return FALSE;
|
|
}
|
|
|
|
WORD FolderTree::tvnBeginRDrag(const TreeViewMessageHeader &/*treeViewMessageHeader*/)
|
|
{
|
|
return FALSE;
|
|
}
|
|
|
|
WORD FolderTree::tvnDeleteItem(const TreeViewMessageHeader &/*treeViewMessageHeader*/)
|
|
{
|
|
return FALSE;
|
|
}
|
|
|
|
WORD FolderTree::tvnBeginLabelEdit(const TreeViewDisplayInfo &/*treeViewDisplayInfo*/)
|
|
{
|
|
return FALSE;
|
|
}
|
|
|
|
WORD FolderTree::tvnEndLabelEdit(const TreeViewDisplayInfo &/*treeViewDisplayInfo*/)
|
|
{
|
|
return FALSE;
|
|
}
|
|
|
|
WORD FolderTree::tvnKeyDown(const TreeViewKeyDown &treeViewKeyDown)
|
|
{
|
|
CallbackData callbackData(0,(LPARAM)&treeViewKeyDown);
|
|
callHandler(KeyDownHandler,callbackData);
|
|
return FALSE;
|
|
}
|