/********************************************************************
*
* Created: 28/3/2014 11:48
*
* File: fsCTextEntryComponent.h
*
* Author: Mick Waites
*
* Purpose: Text box which allows text entry
*
*********************************************************************/
#ifndef fsCTextEntryComponenthdr
#define fsCTextEntryComponenthdr
#include <fsRenderer/src/components/fsCTextSpriteComponent.h>
#include "../../../../fsIMessageListener.h"
struct fsPoint;
class fsCTextEntry;
class fsCTextEntryComponent : public fsCTextSpriteComponent, public fsIMessageListener
{
friend class fsCComponentFactory;
public:
static const fsCUniqueId mTypeId;
static const fsCUniqueId mTextEntryEnterPressedMsg;
const fsStr& enteredTextGet() const;
protected:
static fsIComponent* create(fsCEntity* pParent);
void resetDo() override;
void renderDo() override;
void updateDo(fsS32 pDeltaMs) override;
void textSetDo(const fsStr& pText) override;
void initialiseFromVariableTableDo(const fsCVariableTable& pVars) override;
void listenersRegisterDo() override;
void listenersDeregisterDo() override;
fsBool messageProcessDo(const fsCUniqueId& pMessageType,
const fsIMessageDispatcher::sMessageParameters& pParam) override;
fsCTextEntryComponent(fsCEntity* pParent);
virtual ~fsCTextEntryComponent();<--- Destructor in derived class
private:
void textInit();
void caretEntityCreate();
void caretPositionSet();
void typedCharacterHandle(fsS32 pTypedChar);
fsBool onTapProcess(const fsPoint& pTouchedPos);
fsCEntity* mCaretAnimEnt;
fsStr mTypedText;
fsS32 mMaxStringLength;
std::shared_ptr<fsCTextEntry> mImpl;
};
#endif