#ifndef _COMMON_MENUITEM_HPP_
#define _COMMON_MENUITEM_HPP_
#ifndef _COMMON_WINDOWS_HPP_
#include <common/windows.hpp>
#endif
#ifndef _COMMON_STRING_HPP_
#include <common/string.hpp>
#endif

class MenuItem
{
public:
	MenuItem(void);
	MenuItem(const String &itemString,UINT itemID);
	MenuItem(const MenuItem &someMenuItem);
	MenuItem &operator=(const MenuItem &someMenuItem);
	WORD operator==(const MenuItem &someMenuItem)const;
	String itemString(void)const;
	void itemString(const String &itemString);
	UINT itemID(void)const;
	void itemID(UINT itemID);
private:
	String mItemString;
	UINT mItemID;
};

inline
MenuItem::MenuItem(void)
: mItemID(0)
{
}

inline
MenuItem::MenuItem(const String &itemString,UINT itemID)
: mItemString(itemString), mItemID(itemID)
{
}

inline
MenuItem::MenuItem(const MenuItem &someMenuItem)
{
  *this=someMenuItem;
}

inline
MenuItem &MenuItem::operator=(const MenuItem &someMenuItem)
{
	itemString(someMenuItem.itemString());
	itemID(someMenuItem.itemID());
	return *this;
}

inline
WORD MenuItem::operator==(const MenuItem &someMenuItem)const
{
	return (itemString()==someMenuItem.itemString()&&
          itemID()==someMenuItem.itemID());
}

inline
String MenuItem::itemString(void)const
{
	return mItemString;
}

inline
void MenuItem::itemString(const String &itemString)
{
	mItemString=itemString;
}

inline
UINT MenuItem::itemID(void)const
{
	return mItemID;
}

inline
void MenuItem::itemID(UINT itemID)
{
  mItemID=itemID;
}
#endif
