void EditCtrl::OnChar( KeyboardEvent const & p_event )
	{
		eKEYBOARD_KEY l_code = p_event.GetKey();

		if ( l_code >= 0x20 && l_code <= 255 && l_code != eKEY_DELETE )
		{
			DoAddCharAtCaret( p_event.GetChar() );
			m_signals[eEDIT_EVENT_UPDATED]( m_caption );
		}
	}
	void EditCtrl::OnKeyDown( KeyboardEvent const & p_event )
	{
		if ( !p_event.IsCtrlDown() && !p_event.IsAltDown() )
		{
			eKEYBOARD_KEY l_code = p_event.GetKey();

			if ( l_code == eKEY_BACKSPACE )
			{
				DoDeleteCharBeforeCaret();
				m_signals[eEDIT_EVENT_UPDATED]( m_caption );
			}
			else if ( l_code == eKEY_DELETE )
			{
				DoDeleteCharAtCaret();
				m_signals[eEDIT_EVENT_UPDATED]( m_caption );
			}
			else if ( l_code == eKEY_LEFT && m_caretIt != m_caption.begin() )
			{
				m_caretIt--;
				DoUpdateCaption();
			}
			else if ( l_code == eKEY_RIGHT && m_caretIt != m_caption.end() )
			{
				m_caretIt++;
				DoUpdateCaption();
			}
			else if ( l_code == eKEY_HOME && m_caretIt != m_caption.begin() )
			{
				m_caretIt = m_caption.begin();
				DoUpdateCaption();
			}
			else if ( l_code == eKEY_END && m_caretIt != m_caption.end() )
			{
				m_caretIt = m_caption.end();
				DoUpdateCaption();
			}
		}
	}