#ifndef ROOT_TPaveText
#define ROOT_TPaveText

//+SEQ,CopyRight,T=NOINCLUDE.

//////////////////////////////////////////////////////////////////////////
//                                                                      //
// TPaveText                                                            //
//                                                                      //
// PaveText   A Pave with several lines of text.                        //
//                                                                      //
//////////////////////////////////////////////////////////////////////////

#ifndef ROOT_TPave
//*KEEP,TPave.
#include "TPave.h"
//*KEND.
#endif
#ifndef ROOT_TText
//*KEEP,TText.
#include "TText.h"
//*KEND.
#endif
#ifndef ROOT_TLine
//*KEEP,TLine.
#include "TLine.h"
//*KEND.
#endif


class TPaveText : public TPave, public TAttText {

protected:
        TString    fLabel;          //Label written at the top of the pavetext
        Int_t      fLongest;        //Length of the longest line
        Float_t    fMargin;         //Text margin
        TList      *fLines;         //List of labels

public:
        TPaveText();
        TPaveText(Coord_t x1, Coord_t y1,Coord_t x2 ,Coord_t y2, Option_t *option="br");
        TPaveText(const TPaveText &pavetext);
        virtual ~TPaveText();
        virtual TBox    *AddBox(Float_t x1, Float_t y1, Float_t x2, Float_t y2);
        virtual TLine   *AddLine(Float_t x1=0, Float_t y1=0, Float_t x2=0, Float_t y2=0);
        virtual TText   *AddText(Float_t x1, Float_t y1, const Text_t *label);
        virtual TText   *AddText(const Text_t *label);
        virtual void     Clear(Option_t *option="");  // *MENU*
                void     Copy(TObject &pavetext);
        virtual void     DeleteText(); // *MENU*
        virtual void     Draw(Option_t *option="");
        virtual void     DrawFile(const Text_t *filename, Option_t *option="");
        virtual void     EditText(); // *MENU*
        const  Text_t   *GetLabel() const {return fLabel.Data();}
        virtual TText   *GetLine(Int_t number);
        virtual TText   *GetLineWith(const Text_t *text);
        virtual TList   *GetListOfLines() {return fLines;}
              Float_t    GetMargin() {return fMargin;}
        virtual TObject *GetObject(Float_t &ymouse, Float_t &yobj);
        virtual Int_t    GetSize();
        virtual void     InsertLine(); // *MENU*
        virtual void     InsertText(const Text_t *label); // *MENU*
        virtual void     Paint(Option_t *option="");
        virtual void     PaintPrimitives(Int_t mode);
        virtual void     Print(Option_t *option="");
        virtual void     ReadFile(const Text_t *filename, Option_t *option="", Int_t nlines=50, Int_t fromline=0); // *MENU*
        virtual void     SaveLines(ofstream &out, const char *name);
        virtual void     SavePrimitive(ofstream &out, Option_t *option);
        virtual void     SetAllWith(const Text_t *text, Option_t *option, Float_t value); // *MENU*
        virtual void     SetLabel(const Text_t *label) {fLabel = label;} // *MENU*
        virtual void     SetMargin(Float_t margin=0.05) {fMargin=margin;} // *MENU*

        ClassDef(TPaveText,2)  //PaveText. A Pave with several lines of text.
};

#endif