// ============================================================================
//  $Id: TRecordDisplayComponent.hh,v 1.2 2004/03/07 10:30:27 goiwai Exp $
//  $Name: CLDAQ-1-14-06 $
//  $Log: TRecordDisplayComponent.hh,v $
//  Revision 1.2  2004/03/07 10:30:27  goiwai
//  ROOTに組みこむためのおまじないマクロを埋めこみました。
//  全てにおいて完全に動作するわけではありません。
//
//  Revision 1.1  2004/03/01 02:36:25  goiwai
//  RecordDisplay用のクラス群を置きました.
//  お蔵入りになってたものに手直しを加えたものですが,
//  まだ不充分な点も在ります.徐々に修正していきたいと思います.
//  DataRecordオブジェクトを表示するためのツール群なのでRecordDisplayと呼
//  んでいます,多分にオフライン要素が強いです.
//  オンラインよりにしたものを後でEventDisplay(Eventを表示)としてコミット
//  します.
//
// ============================================================================
#ifdef __CLDAQ_ROOT_USE
#ifndef CLDAQ__TRECORDDISPLAYCOMPONENT_HH
#define CLDAQ__TRECORDDISPLAYCOMPONENT_HH

#include <TGFrame.h>
#include "Tglobals.h"

class TRecordDisplay;
class TGCompositeFrame;

class TRecordDisplayComponent
{

  protected:
    TRecordDisplay* theRecordDisplay;
    TGCompositeFrame* theParentFrame;
    Tbool theFinishBuild;

  public:
    TRecordDisplayComponent( TRecordDisplay* evd );
    TRecordDisplayComponent( TRecordDisplay* evd, TGCompositeFrame* frame );

  protected:
    virtual ~TRecordDisplayComponent();

  public:
    virtual Tvoid Build() = 0;

  public:
    Tbool IsBuild() const;
    const TRecordDisplay* GetRecordDisplay() const;
    virtual Tvoid SetRecordDisplay( TRecordDisplay* evd );
    const TGCompositeFrame* GetParentFrame() const;
    virtual Tvoid SetParentFrame( TGCompositeFrame* frame );

#ifdef __CLDAQ_ROOT_DLL
    ClassDef(TRecordDisplayComponent,0)
#endif

};

inline Tbool TRecordDisplayComponent::IsBuild() const
{
  return theFinishBuild;
}

inline const TRecordDisplay* TRecordDisplayComponent::GetRecordDisplay() const
{
  return theRecordDisplay;
}

inline Tvoid TRecordDisplayComponent::SetRecordDisplay( TRecordDisplay* evd )
{
  theRecordDisplay = evd;
  return;
}

inline const TGCompositeFrame* TRecordDisplayComponent::GetParentFrame() const
{
  return theParentFrame;
}

inline Tvoid TRecordDisplayComponent::SetParentFrame( TGCompositeFrame* frame )
{
  theParentFrame = frame;
  if ( IsBuild() ) {
    Build();
  }
  return;
}

#endif
#endif
