#ifndef _COMMON_OWNERDRAWLISTALTCOLOR_HPP_
#define _COMMON_OWNERDRAWLISTALTCOLOR_HPP_
#ifndef _COMMON_OWNERDRAWLIST_HPP_
#include <common/odlist.hpp>
#endif
#ifndef _COMMON_BRUSH_HPP_
#include <common/brush.hpp>
#endif

class OwnerDrawListAltColor : public OwnerDrawList
{
public:
  OwnerDrawListAltColor(GUIWindow &parentWnd,HWND hControlWnd,UINT controlID,const RGBColor &primColor=RGBColor(255,255,255),const RGBColor &altColor=RGBColor(192,220,192),const RGBColor &bkGndSelColor=RGBColor(128,192,255));  
	OwnerDrawListAltColor(GUIWindow &parentWnd,const Rect &initRect,int controlID,const RGBColor &primColor=RGBColor(255,255,255),const RGBColor &altColor=RGBColor(192,220,192),const RGBColor &bkGndSelColor=RGBColor(128,192,255)); 
	virtual ~OwnerDrawListAltColor();
	const RGBColor &bkGndSelColor(void)const;
	void bkGndSelColor(const RGBColor &bkGndSelColor);
	const RGBColor &primColor(void)const;
	void primColor(const RGBColor &selColor);
	const RGBColor &altColor(void)const;
	void altColor(const RGBColor &altColor);
protected:
  virtual WORD handleDraw(const DrawItem &drawItem);
	virtual WORD handleMeasureItem(MeasureItem &measureItem);
	virtual LPARAM handleControlColor(PureDevice &pureDevice,Control &wndListBox);
  virtual void drawEntire(const DrawItem &drawItem);
	virtual void handleResize(WORD width,WORD height);
private:
	OwnerDrawListAltColor &operator=(const OwnerDrawListAltColor &someOwnerDrawListAltColor);
	WORD yIndent(void)const;
	void yIndent(WORD yIndent);

	RGBColor mBkGndSelColor;
	RGBColor mPrimColor;
	RGBColor mAltColor;
	Brush mBkGndSelBrush;
	Brush mPrimBrush;
	Brush mAltBrush;
	WORD myIndent;
};

inline
WORD OwnerDrawListAltColor::yIndent(void)const
{
  return myIndent;
}

inline
void OwnerDrawListAltColor::yIndent(WORD yIndent)
{
  myIndent=yIndent;
}

inline
const RGBColor &OwnerDrawListAltColor::bkGndSelColor(void)const
{
  return mBkGndSelColor;
}

inline
void OwnerDrawListAltColor::bkGndSelColor(const RGBColor &bkGndSelColor)
{
  mBkGndSelColor=bkGndSelColor;
}

inline
const RGBColor &OwnerDrawListAltColor::primColor(void)const
{
  return mPrimColor;
}

inline
void OwnerDrawListAltColor::primColor(const RGBColor &primColor)
{
  mPrimColor=primColor;
}

inline
const RGBColor &OwnerDrawListAltColor::altColor(void)const
{
  return mAltColor;
}

inline
void OwnerDrawListAltColor::altColor(const RGBColor &altColor)
{
  mAltColor=altColor;
}
#endif
