//---------------------------------------------------------------------------

#ifndef ChatServerMainFormH
#define ChatServerMainFormH
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include "IdBaseComponent.hpp"
#include "IdComponent.hpp"
#include "IdContext.hpp"
#include "IdCustomTCPServer.hpp"
#include "IdTCPServer.hpp"
#include <ExtCtrls.hpp>
#include <ComCtrls.hpp>
//---------------------------------------------------------------------------

enum TDirection
{
  dirSEND,
  dirRECV,
  dirNEITHER
};

class TfrmChatServerMain : public TForm
{
__published:  // IDE-managed Components
  TPanel *pnlBottom;
  TLabeledEdit *ledtCommand;
  TButton *btnBroadcast;
  TCheckBox *chkInsertLinesAtTop;
  TPanel *Panel1;
  TLabeledEdit *ledtPort;
  TButton *btnStart;
  TIdTCPServer *tcpServer;
  TRichEdit *mmoHistory;
  TStatusBar *StatusBar1;
  void __fastcall btnStartClick(TObject *Sender);
  void __fastcall FormCreate(TObject *Sender);
  void __fastcall tcpServerExecute(TIdContext *AContext);
  void __fastcall tcpServerConnect(TIdContext *AContext);
  void __fastcall tcpServerDisconnect(TIdContext *AContext);
  void __fastcall tcpServerAfterBind(TObject *Sender);
  void __fastcall btnBroadcastClick(TObject *Sender);

private:
  void UpdateOutput(const String& s, TDirection dir = dirNEITHER);
  void BroadcastMessage(const String& s);

public:
  __fastcall TfrmChatServerMain(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TfrmChatServerMain *frmChatServerMain;
//---------------------------------------------------------------------------
#endif